CSS describes two ways of tqlayouting tables. Auto tqlayout (the NS4 compliant HTML table tqlayout) and fixed tqlayout. The fixed tqlayout strategy is described in detail in the CSS specs and will not be repeated here. Due to the fact that two tqlayout strategies exist, it is rather natural to encapsulate the tqlayouting 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-tqlayout 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:
foo
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 tqlayouting algorithm (AutoTableLayout) ------------------------------------------------------------------ The table tqlayout algorithm computes a set of tqlayout hints from the informations in the table cells, 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 tqlayout 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 tqlayout()). A set of hinted widths are used to determine the final table tqlayout in the tqlayouting 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 tqlayouted. The tqlayouting 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: -----------------