25 using array_type = simd<float, 4>;
26 using value_type = array_type::value_type;
33 [[nodiscard]]
constexpr margins() noexcept : _v() {}
34 [[nodiscard]]
constexpr margins(
float margin) noexcept : _v(margin, margin, margin, margin) {}
35 [[nodiscard]]
constexpr margins(
float left,
float bottom,
float right,
float top) noexcept :
36 _v(left, bottom, right, top)
39 [[nodiscard]]
constexpr explicit margins(array_type v) noexcept : _v(v) {}
41 [[nodiscard]]
constexpr explicit operator array_type()
const noexcept
46 [[nodiscard]]
constexpr float left()
const noexcept
51 [[nodiscard]]
constexpr float& left()
noexcept
56 [[nodiscard]]
constexpr float bottom()
const noexcept
61 [[nodiscard]]
constexpr float& bottom()
noexcept
66 [[nodiscard]]
constexpr float right()
const noexcept
71 [[nodiscard]]
constexpr float& right()
noexcept
76 [[nodiscard]]
constexpr float top()
const noexcept
81 [[nodiscard]]
constexpr float& top()
noexcept
87 [[nodiscard]]
constexpr friend float get(
margins const& rhs)
noexcept
89 return get<I>(rhs._v);
92 [[nodiscard]]
constexpr float operator[](
std::size_t i)
const noexcept
105 return margins{max(lhs._v, rhs._v)};
108 [[nodiscard]]
constexpr friend bool operator==(
margins const& lhs,
margins const& rhs)
noexcept
110 return equal(lhs._v, rhs._v);