HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
src
hikogui
geometry
corner_radii.hpp
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
5
#pragma once
6
7
namespace
hi::inline v1 {
8
9
class
corner_radii
{
10
public
:
11
constexpr
corner_radii
(
corner_radii
const
&)
noexcept
=
default
;
12
constexpr
corner_radii
(
corner_radii
&&)
noexcept
=
default
;
13
constexpr
corner_radii
&operator=(
corner_radii
const
&)
noexcept
=
default
;
14
constexpr
corner_radii
&operator=(
corner_radii
&&)
noexcept
=
default
;
15
16
[[nodiscard]]
constexpr
corner_radii
() noexcept :
corner_radii
(-
std::numeric_limits<float>::infinity
()) {}
17
[[nodiscard]]
constexpr
corner_radii
(
float
radius) noexcept : _v(radius, radius, radius, radius) {}
18
[[nodiscard]]
constexpr
corner_radii
(
float
lb,
float
rb,
float
lt,
float
rt) noexcept : _v(lb, rb, lt, rt) {}
19
[[nodiscard]]
constexpr
explicit
corner_radii
(
f32x4
v) noexcept : _v(v) {}
20
21
[[nodiscard]]
constexpr
explicit
operator
f32x4
()
const
noexcept
22
{
23
return
_v;
24
}
25
26
[[nodiscard]]
constexpr
float
left_bottom()
const
noexcept
27
{
28
return
_v.x();
29
}
30
31
[[nodiscard]]
constexpr
float
right_bottom()
const
noexcept
32
{
33
return
_v.y();
34
}
35
36
[[nodiscard]]
constexpr
float
left_top()
const
noexcept
37
{
38
return
_v.z();
39
}
40
41
[[nodiscard]]
constexpr
float
right_top()
const
noexcept
42
{
43
return
_v.w();
44
}
45
46
template
<
int
I>
47
[[nodiscard]]
constexpr
friend
float
get(
corner_radii
const
&rhs)
noexcept
48
{
49
return
get<I>(rhs._v);
50
}
51
52
[[nodiscard]]
constexpr
float
operator[](
std::size_t
i)
const
noexcept
53
{
54
return
_v[i];
55
}
56
57
[[nodiscard]]
constexpr
friend
corner_radii
operator+(
corner_radii
const
&lhs,
float
rhs)
noexcept
58
{
59
return
corner_radii
{
f32x4
{lhs} + rhs};
60
//auto r = corner_radii{};
61
//
62
//for (std::size_t i = 0; i != lhs._v.size(); ++i) {
63
// if (lhs._v[i] >= 0) {
64
// r._v[i] = std::max(0.0f, lhs._v[i] + rhs);
65
// } else {
66
// r._v[i] = std::min(0.0f, lhs._v[i] - rhs);
67
// }
68
//}
69
//
70
//return r;
71
}
72
73
[[nodiscard]]
constexpr
friend
corner_radii
operator-(
corner_radii
const
&lhs,
float
rhs)
noexcept
74
{
75
return
corner_radii
{
f32x4
{lhs} - rhs};
76
//return lhs + -rhs;
77
}
78
79
private
:
80
f32x4
_v;
81
};
82
83
}
// namespace hi::inline v1
v1::corner_radii
Definition
corner_radii.hpp:9
v1::numeric_array< float, 4 >
std::numeric_limits
std::size_t
Generated on Mon Apr 22 2024 12:52:40 for HikoGUI by
1.10.0