HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
corner_radii.hpp
Go to the documentation of this file.
1// Copyright Take Vos 2021.
2// Distributed under the Boost Software License, Version 1.0.
3// (See accompanying file LICENSE_1_0.txt or copy at https://www.boost.org/LICENSE_1_0.txt)
4
9#pragma once
10
11namespace hi {
12inline namespace v1 {
13
18public:
19 constexpr corner_radii(corner_radii const &) noexcept = default;
20 constexpr corner_radii(corner_radii &&) noexcept = default;
21 constexpr corner_radii &operator=(corner_radii const &) noexcept = default;
22 constexpr corner_radii &operator=(corner_radii &&) noexcept = default;
23
24 [[nodiscard]] constexpr corner_radii() noexcept : corner_radii(-std::numeric_limits<float>::infinity()) {}
25 [[nodiscard]] constexpr corner_radii(float radius) noexcept : _v(radius, radius, radius, radius) {}
26 [[nodiscard]] constexpr corner_radii(float lb, float rb, float lt, float rt) noexcept : _v(lb, rb, lt, rt) {}
27
32 [[nodiscard]] constexpr explicit corner_radii(f32x4 v) noexcept : _v(v) {}
33
34 [[nodiscard]] constexpr explicit operator f32x4() const noexcept
35 {
36 return _v;
37 }
38
39 [[nodiscard]] constexpr float left_bottom() const noexcept
40 {
41 return _v.x();
42 }
43
44 [[nodiscard]] constexpr float right_bottom() const noexcept
45 {
46 return _v.y();
47 }
48
49 [[nodiscard]] constexpr float left_top() const noexcept
50 {
51 return _v.z();
52 }
53
54 [[nodiscard]] constexpr float right_top() const noexcept
55 {
56 return _v.w();
57 }
58
64 template<int I>
65 [[nodiscard]] constexpr friend float get(corner_radii const &rhs) noexcept
66 {
67 return get<I>(rhs._v);
68 }
69
75 [[nodiscard]] constexpr float operator[](std::size_t i) const noexcept
76 {
77 return _v[i];
78 }
79
80 [[nodiscard]] constexpr friend corner_radii operator+(corner_radii const &lhs, float rhs) noexcept
81 {
82 return corner_radii{f32x4{lhs} + rhs};
83 }
84
85 [[nodiscard]] constexpr friend corner_radii operator-(corner_radii const &lhs, float rhs) noexcept
86 {
87 return corner_radii{f32x4{lhs} - rhs};
88 }
89
90private:
91 f32x4 _v;
92};
93
94}} // namespace hi::inline v1
95
DOXYGEN BUG.
Definition algorithm.hpp:15
geometry/margins.hpp
Definition assert.hpp:18
The 4 radiuses of the corners of a quad or rectangle.
Definition corner_radii.hpp:17
constexpr friend float get(corner_radii const &rhs) noexcept
Get the corner radius by index.
Definition corner_radii.hpp:65
constexpr float operator[](std::size_t i) const noexcept
Get the corner radius by index.
Definition corner_radii.hpp:75
constexpr corner_radii(f32x4 v) noexcept
Construct a corner_radii from a numeric_array.
Definition corner_radii.hpp:32