6161 ) \
6262
6363namespace ekg::layout {
64- /* *
65- * The between widgets offset: Auto-scaled & pixel-fixed.
66- **/
67- extern float offset;
68-
69- /* *
70- * Column and row store extent values, used to calculate
71- * the remains size for `ekg::dock::fill`.
72- **/
73- struct extent_t {
74- public:
75- int64_t end_index {};
76- int64_t begin_index {};
77- int64_t count {};
78- float extent {};
79- };
80-
81- extern ekg::layout::extent_t h_extent;
82- extern ekg::layout::extent_t v_extent;
83-
84- struct fill_align_t {
85- public:
86- bool was_last_fill_found {};
87- bool was_found {};
88- bool must_calculate_pixel_perfect {};
89- bool was_pixel_perfect_calculated {};
90-
91- float align {static_cast <float >(UINT32_MAX)}; // idk may i duwmb
92- int64_t index {};
93- int64_t end_fill_index {};
94- };
95-
96- /* *
97- * The between rects from widgets can be docknized
98- * and return a rect mask (the bouding limits of docknization action).
99- *
100- * The use is simple:
101- * set a preset,
102- * insert dock rects (rect with dock),
103- * docknize,
104- * get the rect mask.
105- **/
106- struct mask {
107- public:
108- struct rect {
109- public:
110- ekg::rect *p_rect {};
111- ekg::flags flags {};
112- };
64+ class mask {
11365 protected:
114- std::vector<ekg::layout::mask::rect> dock_rect_list {};
66+ std::vector<ekg::rect_descriptor_t > rect_descriptor_list {};
11567 float respective_all {};
11668 float respective_center {};
117- ekg::axis axis {};
118- ekg::vec3 offset {};
119- ekg::rect mask {};
120- ekg::layout::extent_t v_extent {};
121- ekg::layout::extent_t h_extent {};
122- protected:
123- void extentnize (
124- float &extent,
125- ekg::flags flag_ok,
126- ekg::flags flag_stop,
127- int64_t &begin_and_count,
128- ekg::axis axis
129- );
69+ ekg::flags_t axis {};
70+ ekg::vec3_t <float > offset {};
71+ ekg::rect_t <float > mask {};
13072 public:
131- void preset (const ekg::vec3 &mask_offset, ekg::axis mask_axis, float initial_respective_size = 0 .0f );
132- void insert (const ekg::layout::mask::rect &dock_rect);
73+ void preset (
74+ ekg::vec3_t <float > offset,
75+ ekg::flags_t axis,
76+ float initial_respective_size = 0 .0f
77+ );
78+
79+ void insert (
80+ ekg::rect_descriptor_t rect_descriptor
81+ );
82+
13383 void docknize ();
134- ekg::rect &get_rect ();
84+ ekg::rect_t < float > &get_rect ();
13585 };
13686
137- /* *
138- * Obtain the remain extent size, from the latest widget index.
139- **/
140- void extentnize (
141- float &extent,
142- fill_align_t *p_fill_align,
143- ekg::ui::abstract_widget *p_widget,
144- ekg::flags flag_ok,
145- ekg::flags flag_stop,
146- int64_t &begin_and_count,
147- ekg::axis axis
148- );
149-
15087 /* *
15188 * A mid-functional feature to process dock position from widgets.
15289 * Note: Recursive.
15390 **/
15491 void docknize (
15592 ekg::ui::abstract_widget *p_parent_widget
15693 );
157-
158- /* *
159- * Estimate height from a container children list.
160- * Note: Recursive.
161- **/
162- float height (
163- ekg::ui::abstract_widget *p_parent_widget
164- );
16594}
16695
167- #endif
96+ #endif
0 commit comments