HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
src
TTauri
Foundation
R32G32B32A32SFloat.hpp
1
// Copyright 2020 Pokitec
2
// All rights reserved.
3
4
#pragma once
5
6
#include "TTauri/Foundation/vec.hpp"
7
#include <immintrin.h>
8
#include <emmintrin.h>
9
#include <algorithm>
10
11
namespace
tt {
12
13
class
R32G32B32A32SFloat
{
14
// Red, Green, Blue, Alpha in binary32 (native endian).
15
std::array<float,4>
v;
16
17
public
:
18
tt_force_inline
R32G32B32A32SFloat
() =
default
;
19
tt_force_inline
R32G32B32A32SFloat
(
R32G32B32A32SFloat
const
&rhs)
noexcept
=
default
;
20
tt_force_inline
R32G32B32A32SFloat
(
R32G32B32A32SFloat
&&rhs)
noexcept
=
default
;
21
tt_force_inline
R32G32B32A32SFloat
&operator=(
R32G32B32A32SFloat
const
&rhs)
noexcept
=
default
;
22
tt_force_inline
R32G32B32A32SFloat
&operator=(
R32G32B32A32SFloat
&&rhs)
noexcept
=
default
;
23
24
tt_force_inline
R32G32B32A32SFloat
(
vec
const
&rhs)
noexcept
{
25
_mm_storeu_ps(v.
data
(), rhs);
26
}
27
28
tt_force_inline
R32G32B32A32SFloat
&operator=(
vec
const
&rhs)
noexcept
{
29
_mm_storeu_ps(v.
data
(), rhs);
30
return
*
this
;
31
}
32
33
tt_force_inline
operator
vec
()
const
noexcept
{
34
return
_mm_loadu_ps(v.
data
());
35
}
36
37
tt_force_inline
R32G32B32A32SFloat
(
aarect
const
&rhs)
noexcept
{
38
_mm_storeu_ps(v.
data
(), rhs.v);
39
}
40
41
tt_force_inline
R32G32B32A32SFloat
&operator=(
aarect
const
&rhs)
noexcept
{
42
_mm_storeu_ps(v.
data
(), rhs.v);
43
return
*
this
;
44
}
45
46
tt_force_inline
operator
aarect
()
const
noexcept
{
47
return
aarect::p0p3
(_mm_loadu_ps(v.
data
()));
48
}
49
50
[[nodiscard]] tt_force_inline
friend
bool
operator==(
R32G32B32A32SFloat
const
&lhs,
R32G32B32A32SFloat
const
&rhs)
noexcept
{
51
return
lhs.v == rhs.v;
52
}
53
[[nodiscard]] tt_force_inline
friend
bool
operator!=(
R32G32B32A32SFloat
const
&lhs,
R32G32B32A32SFloat
const
&rhs)
noexcept
{
54
return
!(lhs == rhs);
55
}
56
};
57
58
}
tt::aarect
Class which represents an axis-aligned rectangle.
Definition
aarect.hpp:13
tt::aarect::p0p3
static tt_force_inline aarect p0p3(vec const &v) noexcept
Create aarect from packed p0p3 coordinates.
Definition
aarect.hpp:75
tt::R32G32B32A32SFloat
Definition
R32G32B32A32SFloat.hpp:13
tt::vec
A 4D vector.
Definition
vec.hpp:37
std::array
std::array::data
T data(T... args)
Generated on Mon Apr 22 2024 12:53:56 for HikoGUI by
1.10.0