29 #ifndef PT_FORMS_TABLELAYOUT_H
30 #define PT_FORMS_TABLELAYOUT_H
32 #include <Pt/Forms/Api.h>
33 #include <Pt/Forms/Layout.h>
40 class PT_FORMS_API TableLayout :
public Layout
55 virtual ~TableLayout();
57 void addItem(Control& control, std::size_t row, std::size_t column);
59 void removeItem(Control& control);
61 void setColumn(std::size_t col, SizeMode mode,
double size = 0);
63 void setRow(std::size_t row, SizeMode mode,
double size = 0);
66 virtual void onRemoveControl(Control& control);
68 virtual Gfx::SizeF onMeasure(
const SizePolicy& policy);
70 virtual void onLayout(
const Gfx::RectF& rect);
81 SizeInfo(SizeMode m,
double size)
92 void setSize(
double s)
100 std::vector<SizeInfo> _columnSizes;
101 std::vector<SizeInfo> _rowSizes;
103 typedef std::vector<Control*> Row;
104 std::vector<Row> _rows;
129 void addItem(
Control& control, std::size_t row, std::size_t column);
131 void removeItem(
Control& control);
133 void setColumn(std::size_t col, SizeMode mode,
double size = 0);
135 void setRow(std::size_t row, SizeMode mode,
double size = 0);
138 virtual void onRemoveControl(
Control& control);
140 virtual Gfx::SizeF onMeasure(
const SizePolicy& policy);
142 virtual void onLayout(
const Gfx::RectF& rect);
153 SizeInfo(SizeMode m,
double size)
158 SizeMode mode()
const
169 typedef std::vector<Control*> Row;
171 Control* cell(std::size_t row, std::size_t column)
const;
173 SizeMode columnMode(std::size_t column)
const;
175 SizeMode rowMode(std::size_t row)
const;
177 void measureItem(
Control& item,
183 void computeTracks(std::vector<double>& tracks,
184 const std::vector<SizeInfo>& infos,
187 bool horizontal)
const;
190 std::vector<SizeInfo> _columnSizes;
191 std::vector<SizeInfo> _rowSizes;
192 std::vector<Row> _rows;