@@ -40,51 +40,62 @@ void ekg::ui::reload(
4040 label.rect
4141 );
4242
43- ekg::axis pick_axis {
44- ekg::axis::horizontal
45- };
46-
47- ekg::draw::font &draw_font {
48- ekg::draw::get_font_renderer (label.font_size )
49- };
50-
51- label.widget .rect_text .w = draw_font.get_text_width (label.text .get ());
52- label.widget .rect_text .h = draw_font.get_text_height ();
53-
54- ekg::aligned_t aligned_dimension {};
55- ekg::align_rect_dimension (
56- pick_axis,
57- label.widget .rect_text ,
58- ekg::dpi.min_sizes ,
59- aligned_dimension
60- );
61-
62- label.rect .scaled_height = ekg::max<ekg::pixel_thickness_t >(1 , label.rect .scaled_height );
63- label.rect .h = aligned_dimension.h * label.rect .scaled_height ;
64-
65- ekg::layout::mask mask {};
66- mask.preset (
67- {
68- aligned_dimension.offset ,
69- aligned_dimension.offset ,
70- label.rect .h
71- },
72- pick_axis,
73- label.rect .w
74- );
75-
76- mask.insert (
77- {
78- .p_rect = &label.widget .rect_text ,
79- .dock = label.dock_text
43+ switch (label.mode ) {
44+ case ekg::label_t ::mode::text: {
45+ ekg::axis pick_axis {
46+ ekg::axis::horizontal
47+ };
48+
49+ ekg::draw::font &draw_font {
50+ ekg::draw::get_font_renderer (label.font_size )
51+ };
52+
53+ label.widget .rect_text .w = draw_font.get_text_width (label.text .get ());
54+ label.widget .rect_text .h = draw_font.get_text_height ();
55+
56+ ekg::aligned_t aligned_dimension {};
57+ ekg::align_rect_dimension (
58+ pick_axis,
59+ label.widget .rect_text ,
60+ ekg::dpi.min_sizes ,
61+ aligned_dimension
62+ );
63+
64+ label.rect .scaled_height = ekg::max<ekg::pixel_thickness_t >(1 , label.rect .scaled_height );
65+ label.rect .h = aligned_dimension.h * label.rect .scaled_height ;
66+
67+ ekg::layout::mask mask {};
68+ mask.preset (
69+ {
70+ aligned_dimension.offset ,
71+ aligned_dimension.offset ,
72+ label.rect .h
73+ },
74+ pick_axis,
75+ label.rect .w
76+ );
77+
78+ mask.insert (
79+ {
80+ .p_rect = &label.widget .rect_text ,
81+ .dock = label.dock_text
82+ }
83+ );
84+
85+ mask.docknize ();
86+
87+ if (property.widget .should_refresh_size ) {
88+ label.rect .w = ekg::max (ekg::dpi.min_sizes , mask.get_rect ().w );
89+ property.widget .should_refresh_size = false ;
90+ }
91+
92+ break ;
8093 }
81- );
8294
83- mask.docknize ();
84-
85- if (property.widget .should_refresh_size ) {
86- label.rect .w = ekg::max (ekg::dpi.min_sizes , mask.get_rect ().w );
87- property.widget .should_refresh_size = false ;
95+ case ekg::label_t ::mode::separator: {
96+ label.rect .h = static_cast <ekg::pixel_t >(label.color_scheme .separator_thickness );
97+ break ;
98+ }
8899 }
89100}
90101
@@ -146,26 +157,38 @@ void ekg::ui::buffering(
146157 ekg::always_parented
147158 );
148159
149- ekg::draw::rect (
150- rect_abs,
151- label.color_scheme .background ,
152- ekg::draw::mode::fill,
153- label.layers [ekg::layer::bg]
154- );
155-
156- ekg::draw::get_font_renderer (label.font_size )
157- .blit (
158- label.text .get (),
159- rect_abs.x + label.widget .rect_text .x , rect_abs.y + label.widget .rect_text .y ,
160- label.color_scheme .text_foreground
160+ switch (label.mode ) {
161+ case ekg::label_t ::mode::text:
162+ ekg::draw::rect (
163+ rect_abs,
164+ label.color_scheme .background ,
165+ ekg::draw::mode::fill,
166+ label.layers [ekg::layer::bg]
161167 );
162168
163- ekg::draw::rect (
164- rect_abs,
165- label.color_scheme .outline ,
166- ekg::draw::mode::outline,
167- label.layers [ekg::layer::outline]
168- );
169+ ekg::draw::get_font_renderer (label.font_size )
170+ .blit (
171+ label.text .get (),
172+ rect_abs.x + label.widget .rect_text .x , rect_abs.y + label.widget .rect_text .y ,
173+ label.color_scheme .text_foreground
174+ );
175+
176+ ekg::draw::rect (
177+ rect_abs,
178+ label.color_scheme .outline ,
179+ ekg::draw::mode::outline,
180+ label.layers [ekg::layer::outline]
181+ );
182+ break ;
183+ case ekg::label_t ::mode::separator:
184+ ekg::draw::rect (
185+ rect_abs,
186+ label.color_scheme .text_foreground ,
187+ ekg::draw::mode::fill,
188+ ekg::at_t ::not_found
189+ );
190+ break ;
191+ }
169192
170193 ekg_draw_allocator_pass ();
171194}
0 commit comments