22 using array_type = simd<float, 4>;
23 using value_type = array_type::value_type;
30 [[nodiscard]]
constexpr margins() noexcept : _v() {}
31 [[nodiscard]]
constexpr margins(
float margin) noexcept : _v(margin, margin, margin, margin) {}
32 [[nodiscard]]
constexpr margins(
float left,
float bottom,
float right,
float top) noexcept :
33 _v(left, bottom, right, top)
36 [[nodiscard]]
constexpr explicit margins(array_type v) noexcept : _v(v) {}
38 [[nodiscard]]
constexpr explicit operator array_type()
const noexcept
43 [[nodiscard]]
constexpr float left()
const noexcept
48 [[nodiscard]]
constexpr float& left()
noexcept
53 [[nodiscard]]
constexpr float bottom()
const noexcept
58 [[nodiscard]]
constexpr float& bottom()
noexcept
63 [[nodiscard]]
constexpr float right()
const noexcept
68 [[nodiscard]]
constexpr float& right()
noexcept
73 [[nodiscard]]
constexpr float top()
const noexcept
78 [[nodiscard]]
constexpr float& top()
noexcept
84 [[nodiscard]]
constexpr friend float get(
margins const& rhs)
noexcept
86 return get<I>(rhs._v);
89 [[nodiscard]]
constexpr float operator[](
std::size_t i)
const noexcept
102 return margins{max(lhs._v, rhs._v)};
105 [[nodiscard]]
constexpr friend bool operator==(
margins const& lhs,
margins const& rhs)
noexcept
107 return equal(lhs._v, rhs._v);