1.10
widgetflags.h
1/*
2 * Copyright (C) 2018 Microchip Technology Inc. All rights reserved.
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6#ifndef EGT_WIDGETFLAGS_H
7#define EGT_WIDGETFLAGS_H
8
14#include <cassert>
15#include <cstdint>
16#include <egt/bitfields.h>
17#include <egt/detail/enum.h>
18#include <egt/detail/meta.h>
19#include <iosfwd>
20#include <memory>
21
22namespace egt
23{
24inline namespace v1
25{
26
30class HorizontalBitField;
31class VerticalBitField;
32class ExpandBitField;
33class HVBitField;
34class HExpandBitField;
35class VExpandBitField;
36class AlignFlag;
37class AlginFlags;
38
40{
41public:
42 constexpr HorizontalBitField(uint32_t halign)
43 : BitField(halign_mask, halign << halign_offset)
44 {}
45
46 constexpr bool operator==(const HorizontalBitField& rhs) const
47 {
48 return static_cast<const BitField*>(this)->operator==(rhs);
49 }
50
51private:
52 constexpr static const uint32_t halign_offset = 0;
53 constexpr static const uint32_t halign_mask = (0x3u << halign_offset);
54
55 constexpr HorizontalBitField(const BitField& field)
56 : BitField(field)
57 {}
58
59 friend constexpr HVBitField operator|(const HorizontalBitField& lhs, const VerticalBitField& rhs);
60 friend constexpr HVBitField operator|(const VerticalBitField& lhs, const HorizontalBitField& rhs);
61 friend constexpr HExpandBitField operator|(const HorizontalBitField& lhs, const ExpandBitField& rhs);
62 friend constexpr HExpandBitField operator|(const ExpandBitField& lhs, const HorizontalBitField& rhs);
63 friend constexpr AlignFlag operator|(const HorizontalBitField& lhs, const VExpandBitField& rhs);
64 friend constexpr AlignFlag operator|(const VExpandBitField& lhs, const HorizontalBitField& rhs);
65 friend class HVBitField; /* HVBitField::HVBitField(uint32_t, uint32_t); */
66 friend class AlignFlag; /* AlignFlag::AlignFlag(const HorizontalBitField&) */
67 friend class AlignFlags; /* AlignFlags::AlignFlags(const HorizontalBitFields&) */
68};
69
71{
72public:
73 constexpr VerticalBitField(uint32_t valgin)
74 : BitField(valign_mask, valgin << valign_offset)
75 {}
76
77 constexpr bool operator==(const VerticalBitField& rhs) const
78 {
79 return static_cast<const BitField*>(this)->operator==(rhs);
80 }
81
82private:
83 constexpr static const uint32_t valign_offset = 2;
84 constexpr static const uint32_t valign_mask = (0x3u << valign_offset);
85
86 constexpr VerticalBitField(const BitField& field)
87 : BitField(field)
88 {}
89
90 friend constexpr HVBitField operator|(const HorizontalBitField& lhs, const VerticalBitField& rhs);
91 friend constexpr HVBitField operator|(const VerticalBitField& lhs, const HorizontalBitField& rhs);
92 friend constexpr VExpandBitField operator|(const VerticalBitField& lhs, const ExpandBitField& rhs);
93 friend constexpr VExpandBitField operator|(const ExpandBitField& lhs, const VerticalBitField& rhs);
94 friend constexpr AlignFlag operator|(const VerticalBitField& lhs, const HExpandBitField& rhs);
95 friend constexpr AlignFlag operator|(const HExpandBitField& lhs, const VerticalBitField& rhs);
96 friend class HVBitField; /* HVBitField::HVBitField(uint32_t, uint32_t) */
97 friend class AlignFlag; /* AlignFlag::AlignFlag(const VerticalBitField&) */
98 friend class AlignFlags; /* AlignFlags::AlignFlags(const VerticalBitFields&) */
99};
100
102{
103public:
104 constexpr ExpandBitField(uint32_t expand)
105 : BitField(expand << expand_offset)
106 {}
107
108 constexpr bool operator==(const ExpandBitField& rhs) const
109 {
110 return static_cast<const BitField*>(this)->operator==(rhs);
111 }
112
113private:
114 constexpr static const uint32_t expand_offset = 4;
115
116 constexpr ExpandBitField(const BitField& field)
117 : BitField(field)
118 {}
119
120 friend constexpr ExpandBitField operator|(const ExpandBitField& lhs, const ExpandBitField& rhs);
121 friend constexpr HExpandBitField operator|(const HorizontalBitField& lhs, const ExpandBitField& rhs);
122 friend constexpr HExpandBitField operator|(const ExpandBitField& lhs, const HorizontalBitField& rhs);
123 friend constexpr HExpandBitField operator|(const ExpandBitField& lhs, const HExpandBitField& rhs);
124 friend constexpr HExpandBitField operator|(const HExpandBitField& lhs, const ExpandBitField& rhs);
125 friend constexpr VExpandBitField operator|(const VerticalBitField& lhs, const ExpandBitField& rhs);
126 friend constexpr VExpandBitField operator|(const ExpandBitField& lhs, const VerticalBitField& rhs);
127 friend constexpr VExpandBitField operator|(const ExpandBitField& lhs, const VExpandBitField& rhs);
128 friend constexpr VExpandBitField operator|(const VExpandBitField& lhs, const ExpandBitField& rhs);
129 friend constexpr AlignFlag operator|(const ExpandBitField& lhs, const HVBitField& rhs);
130 friend constexpr AlignFlag operator|(const HVBitField& lhs, const ExpandBitField& rhs);
131 friend constexpr AlignFlag operator|(const ExpandBitField& lhs, const AlignFlag& rhs);
132 friend constexpr AlignFlag operator|(const AlignFlag& lhs, const ExpandBitField& rhs);
133 friend class AlignFlag; /* AlignFlag::AlignFlag(const ExpandBitField&) */
134 friend class AlignFlags; /* AlignFlags::AlignFlags(const ExpandBitFields&) */
135};
136
137class HVBitField : private BitField
138{
139public:
140 constexpr HVBitField(uint32_t halign, uint32_t valign)
141 : BitField(HorizontalBitField::halign_mask | VerticalBitField::valign_mask,
142 (halign << HorizontalBitField::halign_offset) | (valign << VerticalBitField::valign_offset))
143 {}
144
145 constexpr bool operator==(const HVBitField& rhs) const
146 {
147 return static_cast<const BitField*>(this)->operator==(rhs);
148 }
149
150private:
151 constexpr HVBitField(const BitField& field)
152 : BitField(field)
153 {}
154
155 friend constexpr HVBitField operator|(const HorizontalBitField& lhs, const VerticalBitField& rhs);
156 friend constexpr HVBitField operator|(const VerticalBitField& lhs, const HorizontalBitField& rhs);
157 friend constexpr AlignFlag operator|(const ExpandBitField& lhs, const HVBitField& rhs);
158 friend constexpr AlignFlag operator|(const HVBitField& lhs, const ExpandBitField& rhs);
159 friend class AlignFlag; /* AlignFlag::AlignFlag(const HVBitField&) */
160 friend class AlignFlags; /* AlignFlags::AlignFlags(const HVBitFields&) */
161};
162
164{
165private:
166 constexpr HExpandBitField(const BitField& field)
167 : BitField(field)
168 {}
169
170 friend constexpr HExpandBitField operator|(const HorizontalBitField& lhs, const ExpandBitField& rhs);
171 friend constexpr HExpandBitField operator|(const ExpandBitField& lhs, const HorizontalBitField& rhs);
172 friend constexpr HExpandBitField operator|(const ExpandBitField& lhs, const HExpandBitField& rhs);
173 friend constexpr HExpandBitField operator|(const HExpandBitField& lhs, const ExpandBitField& rhs);
174 friend constexpr AlignFlag operator|(const VerticalBitField& lhs, const HExpandBitField& rhs);
175 friend constexpr AlignFlag operator|(const HExpandBitField& lhs, const VerticalBitField& rhs);
176 friend class AlignFlag; /* AlignFlag::AlignFlag(const HExpandBitField&) */
177 friend class AlignFlags; /* AlignFlags::AlignFlags(const HExpandBitFields&) */
178};
179
181{
182private:
183 constexpr VExpandBitField(const BitField& field)
184 : BitField(field)
185 {}
186
187 friend constexpr VExpandBitField operator|(const VerticalBitField& lhs, const ExpandBitField& rhs);
188 friend constexpr VExpandBitField operator|(const ExpandBitField& lhs, const VerticalBitField& rhs);
189 friend constexpr VExpandBitField operator|(const ExpandBitField& lhs, const VExpandBitField& rhs);
190 friend constexpr VExpandBitField operator|(const VExpandBitField& lhs, const ExpandBitField& rhs);
191 friend constexpr AlignFlag operator|(const HorizontalBitField& lhs, const VExpandBitField& rhs);
192 friend constexpr AlignFlag operator|(const VExpandBitField& lhs, const HorizontalBitField& rhs);
193 friend class AlignFlag; /* AlignFlag::AlignFlag(const VExpandBitField&) */
194 friend class AlignFlags; /* AlignFlags::AlignFlags(const VExpandBitFields&) */
195};
196
197constexpr ExpandBitField operator|(const ExpandBitField& lhs, const ExpandBitField& rhs)
198{
199 return static_cast<const BitField&>(lhs).operator | (rhs);
200}
201
203{
204 return static_cast<const BitField&>(lhs).operator | (rhs);
205}
206
208{
209 return static_cast<const BitField&>(lhs).operator | (rhs);
210}
211
213{
214 return static_cast<const BitField&>(lhs).operator | (rhs);
215}
216
218{
219 return static_cast<const BitField&>(lhs).operator | (rhs);
220}
221
223{
224 return static_cast<const BitField&>(lhs).operator | (rhs);
225}
226
228{
229 return static_cast<const BitField&>(lhs).operator | (rhs);
230}
231
233{
234 return static_cast<const BitField&>(lhs).operator | (rhs);
235}
236
238{
239 return static_cast<const BitField&>(lhs).operator | (rhs);
240}
241
243{
244 return static_cast<const BitField&>(lhs).operator | (rhs);
245}
246
248{
249 return static_cast<const BitField&>(lhs).operator | (rhs);
250}
251
252class AlignFlag : private BitField
253{
254public:
255 constexpr AlignFlag(const HorizontalBitField& field)
256 : BitField(field)
257 {}
258
259 constexpr AlignFlag(const VerticalBitField& field)
260 : BitField(field)
261 {}
262
263 constexpr AlignFlag(const ExpandBitField& field)
264 : BitField(field)
265 {}
266
267 constexpr AlignFlag(const HVBitField& field)
268 : BitField(field)
269 {}
270
271 constexpr AlignFlag(const HExpandBitField& field)
272 : BitField(field)
273 {}
274
275 constexpr AlignFlag(const VExpandBitField& field)
276 : BitField(field)
277 {}
278
279 constexpr bool operator==(const AlignFlag& rhs) const
280 {
281 return static_cast<const BitField*>(this)->operator==(rhs);
282 }
283
284 constexpr bool equals(const AlignFlag& rhs) const
285 {
286 return static_cast<const BitField*>(this)->operator==(rhs);
287 }
288
292
294 static constexpr VerticalBitField top = VerticalBitField(2);
296
298
302
303private:
304 constexpr AlignFlag(const BitField& field)
305 : BitField(field)
306 {}
307
308 friend constexpr AlignFlag operator|(const HorizontalBitField& lhs, const VExpandBitField& rhs);
309 friend constexpr AlignFlag operator|(const VExpandBitField& lhs, const HorizontalBitField& rhs);
310 friend constexpr AlignFlag operator|(const VerticalBitField& lhs, const HExpandBitField& rhs);
311 friend constexpr AlignFlag operator|(const HExpandBitField& lhs, const VerticalBitField& rhs);
312 friend constexpr AlignFlag operator|(const ExpandBitField& lhs, const HVBitField& rhs);
313 friend constexpr AlignFlag operator|(const HVBitField& lhs, const ExpandBitField& rhs);
314 friend constexpr AlignFlag operator|(const ExpandBitField& lhs, const AlignFlag& rhs);
315 friend constexpr AlignFlag operator|(const AlignFlag& lhs, const ExpandBitField& rhs);
316 friend class BitFields<AlignFlag>;
317};
318
319constexpr AlignFlag operator|(const HorizontalBitField& lhs, const VExpandBitField& rhs)
320{
321 return static_cast<const BitField&>(lhs).operator | (rhs);
322}
323
324constexpr AlignFlag operator|(const VExpandBitField& lhs, const HorizontalBitField& rhs)
325{
326 return static_cast<const BitField&>(lhs).operator | (rhs);
327}
328
329constexpr AlignFlag operator|(const VerticalBitField& lhs, const HExpandBitField& rhs)
330{
331 return static_cast<const BitField&>(lhs).operator | (rhs);
332}
333
334constexpr AlignFlag operator|(const HExpandBitField& lhs, const VerticalBitField& rhs)
335{
336 return static_cast<const BitField&>(lhs).operator | (rhs);
337}
338
339constexpr AlignFlag operator|(const ExpandBitField& lhs, const HVBitField& rhs)
340{
341 return static_cast<const BitField&>(lhs).operator | (rhs);
342}
343
344constexpr AlignFlag operator|(const HVBitField& lhs, const ExpandBitField& rhs)
345{
346 return static_cast<const BitField&>(lhs).operator | (rhs);
347}
348
349constexpr AlignFlag operator|(const ExpandBitField& lhs, const AlignFlag& rhs)
350{
351 return static_cast<const BitField&>(lhs).operator | (rhs);
352}
353
354constexpr AlignFlag operator|(const AlignFlag& lhs, const ExpandBitField& rhs)
355{
356 return static_cast<const BitField&>(lhs).operator | (rhs);
357}
358
359std::list<AlignFlag> get(const BitFields<AlignFlag>& fields);
360
362template<>
363EGT_API const std::pair<HorizontalBitField, char const*> detail::EnumStrings<HorizontalBitField>::data[3];
364
365template<>
366EGT_API const std::pair<VerticalBitField, char const*> detail::EnumStrings<VerticalBitField>::data[3];
367
368template<>
369EGT_API const std::pair<ExpandBitField, char const*> detail::EnumStrings<ExpandBitField>::data[3];
370
371template<>
372EGT_API const std::pair<HVBitField, char const*> detail::EnumStrings<HVBitField>::data[1];
373
374template<>
375EGT_API const std::pair<AlignFlag, char const*> detail::EnumStrings<AlignFlag>::data[10];
376
378class AlignFlags : public BitFields<AlignFlag>
379{
380public:
382
383 constexpr AlignFlags(const HorizontalBitField& field)
384 : BitFields(static_cast<const AlignFlag&>(field))
385 {}
386
387 constexpr AlignFlags(const VerticalBitField& field)
388 : BitFields(static_cast<const AlignFlag&>(field))
389 {}
390
391 constexpr AlignFlags(const ExpandBitField& field)
392 : BitFields(static_cast<const AlignFlag&>(field))
393 {}
394
395 constexpr AlignFlags(const HVBitField& field)
396 : BitFields(static_cast<const AlignFlag&>(field))
397 {}
398
399 constexpr AlignFlags(const HExpandBitField& field)
400 : BitFields(static_cast<const AlignFlag&>(field))
401 {}
402
403 constexpr AlignFlags(const VExpandBitField& field)
404 : BitFields(static_cast<const AlignFlag&>(field))
405 {}
406
407 constexpr AlignFlags(const BitFields<AlignFlag>& base)
408 : BitFields(base)
409 {}
410
411 using BitFields<AlignFlag>::operator|;
412};
413
415template<class T>
416T& center(T& widget)
417{
418 widget.align(widget.align() | AlignFlag::center);
419 return widget;
420}
421
423template<class T>
424const std::shared_ptr<T>& center(const std::shared_ptr<T>& widget)
425{
426 assert(widget);
427 widget->align(widget->align() | AlignFlag::center);
428 return widget;
429}
430
432template<class T>
433std::shared_ptr<T>& center(std::shared_ptr<T>& widget)
434{
435 assert(widget);
436 widget->align(widget->align() | AlignFlag::center);
437 return widget;
438}
439
441template<class T>
442T& left(T& widget)
443{
444 widget.align(widget.align() | AlignFlag::left);
445 return widget;
446}
447
449template<class T>
450const std::shared_ptr<T>& left(const std::shared_ptr<T>& widget)
451{
452 assert(widget);
453 widget->align(widget->align() | AlignFlag::left);
454 return widget;
455}
456
458template<class T>
459std::shared_ptr<T>& left(std::shared_ptr<T>& widget)
460{
461 assert(widget);
462 widget->align(widget->align() | AlignFlag::left);
463 return widget;
464}
465
467template<class T>
468T& right(T& widget)
469{
470 widget.align(widget.align() | AlignFlag::right);
471 return widget;
472}
473
475template<class T>
476const std::shared_ptr<T>& right(const std::shared_ptr<T>& widget)
477{
478 assert(widget);
479 widget->align(widget->align() | AlignFlag::right);
480 return widget;
481}
482
484template<class T>
485std::shared_ptr<T>& right(std::shared_ptr<T>& widget)
486{
487 assert(widget);
488 widget->align(widget->align() | AlignFlag::right);
489 return widget;
490}
491
493template<class T>
494T& top(T& widget)
495{
496 widget.align(widget.align() | AlignFlag::top);
497 return widget;
498}
499
501template<class T>
502const std::shared_ptr<T>& top(const std::shared_ptr<T>& widget)
503{
504 assert(widget);
505 widget->align(widget->align() | AlignFlag::top);
506 return widget;
507}
508
510template<class T>
511std::shared_ptr<T>& top(std::shared_ptr<T>& widget)
512{
513 assert(widget);
514 widget->align(widget->align() | AlignFlag::top);
515 return widget;
516}
517
519template<class T>
520T& bottom(T& widget)
521{
522 widget.align(widget.align() | AlignFlag::bottom);
523 return widget;
524}
525
527template<class T>
528const std::shared_ptr<T>& bottom(const std::shared_ptr<T>& widget)
529{
530 assert(widget);
531 widget->align(widget->align() | AlignFlag::bottom);
532 return widget;
533}
534
536template<class T>
537std::shared_ptr<T>& bottom(std::shared_ptr<T>& widget)
538{
539 assert(widget);
540 widget->align(widget->align() | AlignFlag::bottom);
541 return widget;
542}
543
545template<class T>
546T& expand_horizontal(T& widget)
547{
548 widget.align(widget.align() | AlignFlag::expand_horizontal);
549 return widget;
550}
551
553template<class T>
554const std::shared_ptr<T>& expand_horizontal(const std::shared_ptr<T>& widget)
555{
556 assert(widget);
557 widget->align(widget->align() | AlignFlag::expand_horizontal);
558 return widget;
559}
560
562template<class T>
563std::shared_ptr<T>& expand_horizontal(std::shared_ptr<T>& widget)
564{
565 assert(widget);
566 widget->align(widget->align() | AlignFlag::expand_horizontal);
567 return widget;
568}
569
571template<class T>
572T& expand_vertical(T& widget)
573{
574 widget.align(widget.align() | AlignFlag::expand_vertical);
575 return widget;
576}
577
579template<class T>
580const std::shared_ptr<T>& expand_vertical(const std::shared_ptr<T>& widget)
581{
582 assert(widget);
583 widget->align(widget->align() | AlignFlag::expand_vertical);
584 return widget;
585}
586
588template<class T>
589std::shared_ptr<T>& expand_vertical(std::shared_ptr<T>& widget)
590{
591 assert(widget);
592 widget->align(widget->align() | AlignFlag::expand_vertical);
593 return widget;
594}
595
597template<class T>
598T& expand(T& widget)
599{
600 widget.align(widget.align() | AlignFlag::expand);
601 return widget;
602}
603
605template<class T>
606const std::shared_ptr<T>& expand(const std::shared_ptr<T>& widget)
607{
608 assert(widget);
609 widget->align(widget->align() | AlignFlag::expand);
610 return widget;
611}
612
614template<class T>
615std::shared_ptr<T>& expand(std::shared_ptr<T>& widget)
616{
617 assert(widget);
618 widget->align(widget->align() | AlignFlag::expand);
619 return widget;
620}
621
623template<class T>
624T& align(T& widget, const AlignFlags& a)
625{
626 widget.align(a);
627 return widget;
628}
629
631template<class T>
632const std::shared_ptr<T>& align(const std::shared_ptr<T>& widget, const AlignFlags& a)
633{
634 assert(widget);
635 widget->align(a);
636 return widget;
637}
638
640template<class T>
641std::shared_ptr<T>& align(std::shared_ptr<T>& widget, const AlignFlags& a)
642{
643 assert(widget);
644 widget->align(a);
645 return widget;
646}
647
651enum class Orientation : uint32_t
652{
654 vertical,
655 flex,
656 none,
657};
658
660template<>
661EGT_API const std::pair<Orientation, char const*> detail::EnumStrings<Orientation>::data[4];
662
666enum class Justification : uint32_t
667{
668 start,
669 middle,
670 ending,
671 justify,
672 none,
673};
674
676template<>
677EGT_API const std::pair<Justification, char const*> detail::EnumStrings<Justification>::data[5];
678
682enum class WindowHint : uint32_t
683{
687 automatic,
688
692 software,
693
697 overlay,
698
703
708};
709
711template<>
712EGT_API const std::pair<WindowHint, char const*> detail::EnumStrings<WindowHint>::data[5];
713
715EGT_API std::ostream& operator<<(std::ostream& os, const WindowHint& hint);
716
717}
718}
719
720#endif
Definition widgetflags.h:253
constexpr bool equals(const AlignFlag &rhs) const
Definition widgetflags.h:284
constexpr AlignFlag(const VerticalBitField &field)
Definition widgetflags.h:259
static constexpr ExpandBitField expand
Definition widgetflags.h:301
friend constexpr AlignFlag operator|(const HorizontalBitField &lhs, const VExpandBitField &rhs)
Definition widgetflags.h:319
static constexpr HorizontalBitField center_horizontal
Definition widgetflags.h:289
static constexpr HorizontalBitField right
Definition widgetflags.h:291
static constexpr VerticalBitField bottom
Definition widgetflags.h:295
static constexpr HVBitField center
Definition widgetflags.h:297
static constexpr ExpandBitField expand_vertical
Definition widgetflags.h:300
constexpr bool operator==(const AlignFlag &rhs) const
Definition widgetflags.h:279
static constexpr VerticalBitField top
Definition widgetflags.h:294
constexpr AlignFlag(const HExpandBitField &field)
Definition widgetflags.h:271
constexpr AlignFlag(const ExpandBitField &field)
Definition widgetflags.h:263
static constexpr ExpandBitField expand_horizontal
Definition widgetflags.h:299
constexpr AlignFlag(const HorizontalBitField &field)
Definition widgetflags.h:255
constexpr AlignFlag(const VExpandBitField &field)
Definition widgetflags.h:275
static constexpr VerticalBitField center_vertical
Definition widgetflags.h:293
constexpr AlignFlag(const HVBitField &field)
Definition widgetflags.h:267
static constexpr HorizontalBitField left
Definition widgetflags.h:290
Alignment flags.
Definition widgetflags.h:379
constexpr AlignFlags(const ExpandBitField &field)
Definition widgetflags.h:391
constexpr AlignFlags(const VerticalBitField &field)
Definition widgetflags.h:387
constexpr AlignFlags(const BitFields< AlignFlag > &base)
Definition widgetflags.h:407
constexpr AlignFlags(const HExpandBitField &field)
Definition widgetflags.h:399
constexpr AlignFlags(const VExpandBitField &field)
Definition widgetflags.h:403
constexpr AlignFlags(const HorizontalBitField &field)
Definition widgetflags.h:383
constexpr AlignFlags(const HVBitField &field)
Definition widgetflags.h:395
Definition bitfields.h:31
Definition bitfields.h:65
constexpr BitFields() noexcept=default
Definition widgetflags.h:102
constexpr bool operator==(const ExpandBitField &rhs) const
Definition widgetflags.h:108
constexpr ExpandBitField(uint32_t expand)
Definition widgetflags.h:104
friend constexpr ExpandBitField operator|(const ExpandBitField &lhs, const ExpandBitField &rhs)
Definition widgetflags.h:197
Definition widgetflags.h:164
friend constexpr HExpandBitField operator|(const HorizontalBitField &lhs, const ExpandBitField &rhs)
Definition widgetflags.h:212
Definition widgetflags.h:138
constexpr bool operator==(const HVBitField &rhs) const
Definition widgetflags.h:145
constexpr HVBitField(uint32_t halign, uint32_t valign)
Definition widgetflags.h:140
friend constexpr HVBitField operator|(const HorizontalBitField &lhs, const VerticalBitField &rhs)
Definition widgetflags.h:202
Definition widgetflags.h:40
constexpr HorizontalBitField(uint32_t halign)
Definition widgetflags.h:42
friend constexpr HVBitField operator|(const HorizontalBitField &lhs, const VerticalBitField &rhs)
Definition widgetflags.h:202
constexpr bool operator==(const HorizontalBitField &rhs) const
Definition widgetflags.h:46
Definition widgetflags.h:181
friend constexpr VExpandBitField operator|(const VerticalBitField &lhs, const ExpandBitField &rhs)
Definition widgetflags.h:232
Definition widgetflags.h:71
constexpr VerticalBitField(uint32_t valgin)
Definition widgetflags.h:73
constexpr bool operator==(const VerticalBitField &rhs) const
Definition widgetflags.h:77
friend constexpr HVBitField operator|(const HorizontalBitField &lhs, const VerticalBitField &rhs)
Definition widgetflags.h:202
constexpr T bit(T n)
Utility to create a bit mask for the specified bit.
Definition meta.h:306
Justification
Generic justification of children flags.
Definition widgetflags.h:667
T & align(T &widget, const AlignFlags &a)
Helper to set alignment of a widget.
Definition widgetflags.h:624
WindowHint
Hint used for configuring Window backends.
Definition widgetflags.h:683
@ heo_overlay
Request specifically an HEO overlay plane.
@ automatic
Allow automatic detection of the window type to create.
@ overlay
Request an overlay plane.
@ cursor_overlay
Request a cursor overlay plane.
@ software
Request a software only implementation.
T & top(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:494
T & right(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:468
T & expand(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:598
T & expand_horizontal(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:546
T & expand_vertical(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:572
T & left(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:442
EGT_API std::ostream & operator<<(std::ostream &os, const Color &color)
Overloaded std::ostream insertion operator.
std::list< T > get(const BitFields< T > &fields)
T & center(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:416
T & bottom(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:520
Orientation
Generic orientation flags.
Definition widgetflags.h:652
Theme::BorderFlags operator|(Theme::BorderFlag lhs, Theme::BorderFlag rhs)
BorderFlags operator.
Definition theme.h:369
EGT framework namespace.
Definition animation.h:24
When using enum_to_string() and enum_from_string(), this type needs to be defined and specialized to ...
Definition enum.h:48