1.11
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
303
304private:
305 constexpr AlignFlag(const BitField& field)
306 : BitField(field)
307 {}
308
309 friend constexpr AlignFlag operator|(const HorizontalBitField& lhs, const VExpandBitField& rhs);
310 friend constexpr AlignFlag operator|(const VExpandBitField& lhs, const HorizontalBitField& rhs);
311 friend constexpr AlignFlag operator|(const VerticalBitField& lhs, const HExpandBitField& rhs);
312 friend constexpr AlignFlag operator|(const HExpandBitField& lhs, const VerticalBitField& rhs);
313 friend constexpr AlignFlag operator|(const ExpandBitField& lhs, const HVBitField& rhs);
314 friend constexpr AlignFlag operator|(const HVBitField& lhs, const ExpandBitField& rhs);
315 friend constexpr AlignFlag operator|(const ExpandBitField& lhs, const AlignFlag& rhs);
316 friend constexpr AlignFlag operator|(const AlignFlag& lhs, const ExpandBitField& rhs);
317 friend class BitFields<AlignFlag>;
318};
319
320constexpr AlignFlag operator|(const HorizontalBitField& lhs, const VExpandBitField& rhs)
321{
322 return static_cast<const BitField&>(lhs).operator | (rhs);
323}
324
325constexpr AlignFlag operator|(const VExpandBitField& lhs, const HorizontalBitField& rhs)
326{
327 return static_cast<const BitField&>(lhs).operator | (rhs);
328}
329
330constexpr AlignFlag operator|(const VerticalBitField& lhs, const HExpandBitField& rhs)
331{
332 return static_cast<const BitField&>(lhs).operator | (rhs);
333}
334
335constexpr AlignFlag operator|(const HExpandBitField& lhs, const VerticalBitField& rhs)
336{
337 return static_cast<const BitField&>(lhs).operator | (rhs);
338}
339
340constexpr AlignFlag operator|(const ExpandBitField& lhs, const HVBitField& rhs)
341{
342 return static_cast<const BitField&>(lhs).operator | (rhs);
343}
344
345constexpr AlignFlag operator|(const HVBitField& lhs, const ExpandBitField& rhs)
346{
347 return static_cast<const BitField&>(lhs).operator | (rhs);
348}
349
350constexpr AlignFlag operator|(const ExpandBitField& lhs, const AlignFlag& rhs)
351{
352 return static_cast<const BitField&>(lhs).operator | (rhs);
353}
354
355constexpr AlignFlag operator|(const AlignFlag& lhs, const ExpandBitField& rhs)
356{
357 return static_cast<const BitField&>(lhs).operator | (rhs);
358}
359
360std::list<AlignFlag> get(const BitFields<AlignFlag>& fields);
361
363template<>
364EGT_API const std::pair<HorizontalBitField, char const*> detail::EnumStrings<HorizontalBitField>::data[3];
365
366template<>
367EGT_API const std::pair<VerticalBitField, char const*> detail::EnumStrings<VerticalBitField>::data[3];
368
369template<>
370EGT_API const std::pair<ExpandBitField, char const*> detail::EnumStrings<ExpandBitField>::data[4];
371
372template<>
373EGT_API const std::pair<HVBitField, char const*> detail::EnumStrings<HVBitField>::data[1];
374
375template<>
376EGT_API const std::pair<AlignFlag, char const*> detail::EnumStrings<AlignFlag>::data[11];
377
379class AlignFlags : public BitFields<AlignFlag>
380{
381public:
383
384 constexpr AlignFlags(const HorizontalBitField& field)
385 : BitFields(static_cast<const AlignFlag&>(field))
386 {}
387
388 constexpr AlignFlags(const VerticalBitField& field)
389 : BitFields(static_cast<const AlignFlag&>(field))
390 {}
391
392 constexpr AlignFlags(const ExpandBitField& field)
393 : BitFields(static_cast<const AlignFlag&>(field))
394 {}
395
396 constexpr AlignFlags(const HVBitField& field)
397 : BitFields(static_cast<const AlignFlag&>(field))
398 {}
399
400 constexpr AlignFlags(const HExpandBitField& field)
401 : BitFields(static_cast<const AlignFlag&>(field))
402 {}
403
404 constexpr AlignFlags(const VExpandBitField& field)
405 : BitFields(static_cast<const AlignFlag&>(field))
406 {}
407
408 constexpr AlignFlags(const BitFields<AlignFlag>& base)
409 : BitFields(base)
410 {}
411
412 using BitFields<AlignFlag>::operator|;
413};
414
416template<class T>
417T& center(T& widget)
418{
419 widget.align(widget.align() | AlignFlag::center);
420 return widget;
421}
422
424template<class T>
425const std::shared_ptr<T>& center(const std::shared_ptr<T>& widget)
426{
427 assert(widget);
428 widget->align(widget->align() | AlignFlag::center);
429 return widget;
430}
431
433template<class T>
434std::shared_ptr<T>& center(std::shared_ptr<T>& widget)
435{
436 assert(widget);
437 widget->align(widget->align() | AlignFlag::center);
438 return widget;
439}
440
442template<class T>
443T& left(T& widget)
444{
445 widget.align(widget.align() | AlignFlag::left);
446 return widget;
447}
448
450template<class T>
451const std::shared_ptr<T>& left(const std::shared_ptr<T>& widget)
452{
453 assert(widget);
454 widget->align(widget->align() | AlignFlag::left);
455 return widget;
456}
457
459template<class T>
460std::shared_ptr<T>& left(std::shared_ptr<T>& widget)
461{
462 assert(widget);
463 widget->align(widget->align() | AlignFlag::left);
464 return widget;
465}
466
468template<class T>
469T& right(T& widget)
470{
471 widget.align(widget.align() | AlignFlag::right);
472 return widget;
473}
474
476template<class T>
477const std::shared_ptr<T>& right(const std::shared_ptr<T>& widget)
478{
479 assert(widget);
480 widget->align(widget->align() | AlignFlag::right);
481 return widget;
482}
483
485template<class T>
486std::shared_ptr<T>& right(std::shared_ptr<T>& widget)
487{
488 assert(widget);
489 widget->align(widget->align() | AlignFlag::right);
490 return widget;
491}
492
494template<class T>
495T& top(T& widget)
496{
497 widget.align(widget.align() | AlignFlag::top);
498 return widget;
499}
500
502template<class T>
503const std::shared_ptr<T>& top(const std::shared_ptr<T>& widget)
504{
505 assert(widget);
506 widget->align(widget->align() | AlignFlag::top);
507 return widget;
508}
509
511template<class T>
512std::shared_ptr<T>& top(std::shared_ptr<T>& widget)
513{
514 assert(widget);
515 widget->align(widget->align() | AlignFlag::top);
516 return widget;
517}
518
520template<class T>
521T& bottom(T& widget)
522{
523 widget.align(widget.align() | AlignFlag::bottom);
524 return widget;
525}
526
528template<class T>
529const std::shared_ptr<T>& bottom(const std::shared_ptr<T>& widget)
530{
531 assert(widget);
532 widget->align(widget->align() | AlignFlag::bottom);
533 return widget;
534}
535
537template<class T>
538std::shared_ptr<T>& bottom(std::shared_ptr<T>& widget)
539{
540 assert(widget);
541 widget->align(widget->align() | AlignFlag::bottom);
542 return widget;
543}
544
546template<class T>
547T& expand_horizontal(T& widget)
548{
549 widget.align(widget.align() | AlignFlag::expand_horizontal);
550 return widget;
551}
552
554template<class T>
555const std::shared_ptr<T>& expand_horizontal(const std::shared_ptr<T>& widget)
556{
557 assert(widget);
558 widget->align(widget->align() | AlignFlag::expand_horizontal);
559 return widget;
560}
561
563template<class T>
564std::shared_ptr<T>& expand_horizontal(std::shared_ptr<T>& widget)
565{
566 assert(widget);
567 widget->align(widget->align() | AlignFlag::expand_horizontal);
568 return widget;
569}
570
572template<class T>
573T& expand_vertical(T& widget)
574{
575 widget.align(widget.align() | AlignFlag::expand_vertical);
576 return widget;
577}
578
580template<class T>
581const std::shared_ptr<T>& expand_vertical(const std::shared_ptr<T>& widget)
582{
583 assert(widget);
584 widget->align(widget->align() | AlignFlag::expand_vertical);
585 return widget;
586}
587
589template<class T>
590std::shared_ptr<T>& expand_vertical(std::shared_ptr<T>& widget)
591{
592 assert(widget);
593 widget->align(widget->align() | AlignFlag::expand_vertical);
594 return widget;
595}
596
598template<class T>
599T& expand(T& widget)
600{
601 widget.align(widget.align() | AlignFlag::expand);
602 return widget;
603}
604
606template<class T>
607const std::shared_ptr<T>& expand(const std::shared_ptr<T>& widget)
608{
609 assert(widget);
610 widget->align(widget->align() | AlignFlag::expand);
611 return widget;
612}
613
615template<class T>
616std::shared_ptr<T>& expand(std::shared_ptr<T>& widget)
617{
618 assert(widget);
619 widget->align(widget->align() | AlignFlag::expand);
620 return widget;
621}
622
624template<class T>
625T& keep_ratio(T& widget)
626{
627 widget.align(widget.align() | AlignFlag::keep_ratio);
628 return widget;
629}
630
632template<class T>
633const std::shared_ptr<T>& keep_ratio(const std::shared_ptr<T>& widget)
634{
635 assert(widget);
636 widget->align(widget->align() | AlignFlag::keep_ratio);
637 return widget;
638}
639
641template<class T>
642std::shared_ptr<T>& keep_ratio(std::shared_ptr<T>& widget)
643{
644 assert(widget);
645 widget->align(widget->align() | AlignFlag::keep_ratio);
646 return widget;
647}
648
650template<class T>
651T& align(T& widget, const AlignFlags& a)
652{
653 widget.align(a);
654 return widget;
655}
656
658template<class T>
659const std::shared_ptr<T>& align(const std::shared_ptr<T>& widget, const AlignFlags& a)
660{
661 assert(widget);
662 widget->align(a);
663 return widget;
664}
665
667template<class T>
668std::shared_ptr<T>& align(std::shared_ptr<T>& widget, const AlignFlags& a)
669{
670 assert(widget);
671 widget->align(a);
672 return widget;
673}
674
678enum class Orientation : uint32_t
679{
681 vertical,
682 flex,
683 none,
684};
685
687template<>
688EGT_API const std::pair<Orientation, char const*> detail::EnumStrings<Orientation>::data[4];
689
693enum class Justification : uint32_t
694{
695 start,
696 middle,
697 ending,
698 justify,
699 none,
700};
701
703template<>
704EGT_API const std::pair<Justification, char const*> detail::EnumStrings<Justification>::data[5];
705
709enum class WindowHint : uint32_t
710{
714 automatic,
715
719 software,
720
724 overlay,
725
730
735};
736
738template<>
739EGT_API const std::pair<WindowHint, char const*> detail::EnumStrings<WindowHint>::data[5];
740
742EGT_API std::ostream& operator<<(std::ostream& os, const WindowHint& hint);
743
744}
745}
746
747#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:320
static constexpr HorizontalBitField center_horizontal
Definition widgetflags.h:289
static constexpr ExpandBitField keep_ratio
Definition widgetflags.h:302
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:380
constexpr AlignFlags(const ExpandBitField &field)
Definition widgetflags.h:392
constexpr AlignFlags(const VerticalBitField &field)
Definition widgetflags.h:388
constexpr AlignFlags(const BitFields< AlignFlag > &base)
Definition widgetflags.h:408
constexpr AlignFlags(const HExpandBitField &field)
Definition widgetflags.h:400
constexpr AlignFlags(const VExpandBitField &field)
Definition widgetflags.h:404
constexpr AlignFlags(const HorizontalBitField &field)
Definition widgetflags.h:384
constexpr AlignFlags(const HVBitField &field)
Definition widgetflags.h:396
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:694
T & align(T &widget, const AlignFlags &a)
Helper to set alignment of a widget.
Definition widgetflags.h:651
WindowHint
Hint used for configuring Window backends.
Definition widgetflags.h:710
@ 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:495
T & right(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:469
T & expand(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:599
T & expand_horizontal(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:547
T & expand_vertical(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:573
T & left(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:443
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:417
T & bottom(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:521
Orientation
Generic orientation flags.
Definition widgetflags.h:679
T & keep_ratio(T &widget)
Helper to set alignment of a widget.
Definition widgetflags.h:625
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