50 hi_axiom(holds_invariant());
53 [[nodiscard]]
constexpr box_constraints internalize_margins()
const noexcept
56 r.padding += r.margins;
58 r.minimum.width() += r.margins.left() + r.margins.right();
59 r.preferred.width() += r.margins.left() + r.margins.right();
60 r.maximum.width() += r.margins.left() + r.margins.right();
62 r.minimum.height() += r.margins.bottom() + r.margins.top();
63 r.preferred.height() += r.margins.bottom() + r.margins.top();
64 r.maximum.height() += r.margins.bottom() + r.margins.top();
67 hi_axiom(r.holds_invariant());
73 hi_assert(new_minimum <= new_maximum);
77 inplace_max(r.minimum, new_minimum);
78 inplace_min(r.maximum, new_maximum);
80 inplace_max(r.preferred, r.minimum);
81 inplace_max(r.maximum, r.preferred);
82 hi_axiom(r.holds_invariant());
95 hi_axiom(holds_invariant());
106 [[nodiscard]]
constexpr bool holds_invariant()
const noexcept
111 if (minimum > preferred or preferred > maximum) {
120 inplace_max(r.minimum, rhs);
121 inplace_max(r.preferred, rhs);
122 inplace_max(r.maximum, rhs);
124 hi_axiom(r.holds_invariant());
135 [[nodiscard]]
friend constexpr box_constraints
max(box_constraints
const& lhs, box_constraints
const& rhs)
noexcept
138 inplace_max(r.minimum, rhs.minimum);
139 inplace_max(r.preferred, rhs.preferred);
140 inplace_max(r.maximum, rhs.maximum);
141 inplace_max(r.margins, rhs.margins);
142 inplace_max(r.padding, rhs.padding);
144 hi_axiom(r.holds_invariant());
148 template<std::convertible_to<box_constra
ints>... Args>
152 return max(first, max(second, third, args...));
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:135