12enum class arrangement :
bool { column, row };
14enum class vertical_alignment { top, middle, bottom };
16enum class horizontal_alignment {
left, center,
right };
30inline alignment operator|(vertical_alignment lhs, horizontal_alignment rhs)
noexcept
33 case vertical_alignment::top:
35 case horizontal_alignment::left:
return alignment::top_left;
36 case horizontal_alignment::center:
return alignment::top_center;
37 case horizontal_alignment::right:
return alignment::top_right;
38 default: tt_no_default();
40 case vertical_alignment::middle:
42 case horizontal_alignment::left:
return alignment::middle_left;
43 case horizontal_alignment::center:
return alignment::middle_center;
44 case horizontal_alignment::right:
return alignment::middle_right;
45 default: tt_no_default();
47 case vertical_alignment::bottom:
49 case horizontal_alignment::left:
return alignment::bottom_left;
50 case horizontal_alignment::center:
return alignment::bottom_center;
51 case horizontal_alignment::right:
return alignment::bottom_right;
52 default: tt_no_default();
54 default: tt_no_default();
58inline alignment operator|(horizontal_alignment lhs, vertical_alignment rhs)
noexcept
63inline bool operator==(alignment lhs, horizontal_alignment rhs)
noexcept
66 case horizontal_alignment::left:
67 return lhs == alignment::top_left || lhs == alignment::middle_left || lhs == alignment::bottom_left;
69 case horizontal_alignment::center:
70 return lhs == alignment::top_center || lhs == alignment::middle_center || lhs == alignment::bottom_center;
72 case horizontal_alignment::right:
73 return lhs == alignment::top_right || lhs == alignment::middle_right || lhs == alignment::bottom_right;
75 default: tt_no_default();
79inline bool operator==(alignment lhs, vertical_alignment rhs)
noexcept
82 case vertical_alignment::top:
return lhs == alignment::top_left || lhs == alignment::top_center || lhs == alignment::top_right;
84 case vertical_alignment::middle:
85 return lhs == alignment::middle_left || lhs == alignment::middle_center || lhs == alignment::middle_right;
87 case vertical_alignment::bottom:
88 return lhs == alignment::bottom_left || lhs == alignment::bottom_center || lhs == alignment::bottom_right;
90 default: tt_no_default();
94inline bool operator!=(alignment lhs, horizontal_alignment rhs)
noexcept
99inline bool operator!=(alignment lhs, vertical_alignment rhs)
noexcept
101 return !(lhs == rhs);
105 vertical_alignment alignment;
115 constexpr relative_base_line(vertical_alignment alignment,
float offset = 0.0f,
float priority = 100.0f) noexcept :
116 alignment(alignment), offset(offset), priority(priority)
126 constexpr float position(
float bottom,
float top)
const noexcept
129 case vertical_alignment::bottom:
return bottom + offset;
130 case vertical_alignment::top:
return top + offset;
131 case vertical_alignment::middle:
return (bottom + top) * 0.5f + offset;
138 return this->priority == rhs.priority;
143 return this->priority <=> rhs.priority;
Definition alignment.hpp:104
constexpr relative_base_line() noexcept
Constructs a low-priority base line in the middle.
Definition alignment.hpp:122
constexpr float position(float bottom, float top) const noexcept
Get a base-line position.
Definition alignment.hpp:126