7#include "../geometry/module.hpp"
8#include "../utility/module.hpp"
13namespace hi {
inline namespace v1 {
50 [[nodiscard]]
constexpr box_constraints internalize_margins()
const noexcept
53 r.padding += r.margins;
55 r.minimum.width() += r.margins.left() + r.margins.right();
56 r.preferred.width() += r.margins.left() + r.margins.right();
57 r.maximum.width() += r.margins.left() + r.margins.right();
59 r.minimum.height() += r.margins.bottom() + r.margins.top();
60 r.preferred.height() += r.margins.bottom() + r.margins.top();
61 r.maximum.height() += r.margins.bottom() + r.margins.top();
74 inplace_max(r.minimum, new_minimum);
75 inplace_min(r.maximum, new_maximum);
77 inplace_max(r.preferred, r.minimum);
78 inplace_max(r.maximum, r.preferred);
103 [[nodiscard]]
constexpr bool holds_invariant()
const noexcept
108 if (minimum > preferred or preferred > maximum) {
117 inplace_max(r.minimum, rhs);
118 inplace_max(r.preferred, rhs);
119 inplace_max(r.maximum, rhs);
135 inplace_max(r.minimum, rhs.minimum);
136 inplace_max(r.preferred, rhs.preferred);
137 inplace_max(r.maximum, rhs.maximum);
138 inplace_max(r.margins, rhs.margins);
139 inplace_max(r.padding, rhs.padding);
145 template<std::convertible_to<box_constra
ints>... Args>
149 return max(first, max(second, third, args...));
#define hi_assert(expression,...)
Assert if expression is true.
Definition assert.hpp:199
#define hi_axiom(expression,...)
Specify an axiom; an expression that is true.
Definition assert.hpp:253
@ flush
Align the text naturally based on the writing direction of each paragraph.
@ justified
Stretch the text to be flush to both sides.
DOXYGEN BUG.
Definition algorithm.hpp:13
geometry/margins.hpp
Definition cache.hpp:11
Horizontal/Vertical alignment combination.
Definition alignment.hpp:239
A high-level geometric extent.
Definition extent2.hpp:26
constexpr float & width() noexcept
Access the x-as-width element from the extent.
Definition extent2.hpp:101
constexpr float & height() noexcept
Access the y-as-height element from the extent.
Definition extent2.hpp:112
The left, bottom, right and top margins.
Definition margins.hpp:20
2D constraints.
Definition box_constraints.hpp:22
friend constexpr box_constraints max(box_constraints const &lhs, box_constraints const &rhs) noexcept
Makes a constraint that encompasses both given constraints.
Definition box_constraints.hpp:132