8 typedef std::vector<table_row> vector;
16 css_length css_height;
31 table_row(int h, element::ptr& row)
42 css_height = row->get_css_height();
46 table_row(const table_row& val)
48 min_height = val.min_height;
51 border_bottom = val.border_bottom;
52 border_top = val.border_top;
54 css_height = val.css_height;
58 table_row(table_row&& val)
60 min_height = val.min_height;
63 border_bottom = val.border_bottom;
64 border_top = val.border_top;
66 css_height = val.css_height;
67 el_row = std::move(val.el_row);
73 typedef std::vector<table_column> vector;
96 table_column(int min_w, int max_w)
108 table_column(const table_column& val)
112 border_left = val.border_left;
113 border_right = val.border_right;
114 max_width = val.max_width;
115 min_width = val.min_width;
117 css_width = val.css_width;
121 class table_column_accessor
124 virtual int& get(table_column& col) = 0;
127 class table_column_accessor_max_width : public table_column_accessor
130 virtual int& get(table_column& col);
133 class table_column_accessor_min_width : public table_column_accessor
136 virtual int& get(table_column& col);
139 class table_column_accessor_width : public table_column_accessor
142 virtual int& get(table_column& col);
171 table_cell(const table_cell& val)
174 colspan = val.colspan;
175 rowspan = val.rowspan;
178 min_width = val.min_width;
179 min_height = val.min_height;
180 max_width = val.max_width;
181 max_height = val.max_height;
182 borders = val.borders;
185 table_cell(const table_cell&& val)
187 el = std::move(val.el);
188 colspan = val.colspan;
189 rowspan = val.rowspan;
192 min_width = val.min_width;
193 min_height = val.min_height;
194 max_width = val.max_width;
195 max_height = val.max_height;
196 borders = val.borders;
203 typedef std::vector< std::vector<table_cell> > rows;
208 table_column::vector m_columns;
209 table_row::vector m_rows;
219 void begin_row(element::ptr& row);
220 void add_cell(element::ptr& el);
221 bool is_rowspanned(int r, int c);
223 table_cell* cell(int t_col, int t_row);
224 table_column& column(int c) { return m_columns[c]; }
225 table_row& row(int r) { return m_rows[r]; }
227 int rows_count() { return m_rows_count; }
228 int cols_count() { return m_cols_count; }
230 void distribute_max_width(int width, int start, int end);
231 void distribute_min_width(int width, int start, int end);
232 void distribute_width(int width, int start, int end);
233 void distribute_width(int width, int start, int end, table_column_accessor* acc);
234 int calc_table_width(int block_width, bool is_auto, int& min_table_width, int& max_table_width);
235 void calc_horizontal_positions(margins& table_borders, border_collapse bc, int bdr_space_x);
236 void calc_vertical_positions(margins& table_borders, border_collapse bc, int bdr_space_y);
237 void calc_rows_height(int blockHeight, int borderSpacingY);