diff options
author | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
---|---|---|
committer | toma <toma@283d02a7-25f6-0310-bc7c-ecb5cbfe19da> | 2009-11-25 17:56:58 +0000 |
commit | ce4a32fe52ef09d8f5ff1dd22c001110902b60a2 (patch) | |
tree | 5ac38a06f3dde268dc7927dc155896926aaf7012 /khtml/rendering/table_layout.txt | |
download | tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.tar.gz tdelibs-ce4a32fe52ef09d8f5ff1dd22c001110902b60a2.zip |
Copy the KDE 3.5 branch to branches/trinity for new KDE 3.5 features.
BUG:215923
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1054174 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'khtml/rendering/table_layout.txt')
-rw-r--r-- | khtml/rendering/table_layout.txt | 74 |
1 files changed, 74 insertions, 0 deletions
diff --git a/khtml/rendering/table_layout.txt b/khtml/rendering/table_layout.txt new file mode 100644 index 000000000..14a74bd1e --- /dev/null +++ b/khtml/rendering/table_layout.txt @@ -0,0 +1,74 @@ +CSS describes two ways of layouting tables. Auto layout (the NS4 +compliant HTML table layout) and fixed layout. The fixed layout +strategy is described in detail in the CSS specs and will not be +repeated here. + +Due to the fact that two layout strategies exist, it is rather natural +to encapsulate the layouting process in a TableLayout class. Two types +(FixedTableLayout and AutoTableLayout) exist. AutoTableLayout is the +default and also need a quirks flags for NS compatibility +mode. FixedTableLayout will be used if a style rule sets the +table-layout property to fixed. + +The grid of table cells is stored in each table section, as spans +can't pass section borders. Changing the number of cols in the grid +has to be done by the table to keep all grids (for all sections) in +sync. The grid only stores effective columns. The table below would +only result in one column being allocated in the grid: + +<table><tr><td colspan=1000>foo</td></tr></table> + +Once a colspan get's used, the column is split into its subparts. To +do this, the table has to store the colspans of effective columns in a +structure. + + + + +NS & Mozilla compliant table layouting algorithm (AutoTableLayout) +------------------------------------------------------------------ + +The table layout algorithm computes a set of layout hints from the +informations in the table cells, <col> elements and style +sheets. Hints from different sources are treated a bit differently in +the collection stage. + +In addition certain operations are only done in quirks (NS4 compat) +mode. + +Resizing the table doesn't require you to build up this information +again. All that is needed is a list of layout hints for each column. + +The algorithm below describes to the best of our knowledge the way +table alyouting is handled in a NS compatible way. + +There are two stages, the collection stage (assocaited with +calcMinMaxWidth() in khtml) and the stage assigning width to cells +(associated with layout()). + +A set of hinted widths are used to determine the final table layout in +the layouting stage. + +enum hintType { + MinWidth, + DesiredWidth, + FixedWidth, + MinWidthAdjusted, + DesiredWidthAdjusted, + FixedWidthAdjusted, + PercentWidth, + PercentWidthAdjusted, + ProportionalWidth +}; + +One width (in pixels) for each hintType describes how the column +wishes to be layouted. The layouting stage operates only on an array +of hints for each column. + +An additional totalCellSpacing variable is used to know about the +remaining width to distribute. + +Collection stage: +----------------- + + |