HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
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
11namespace tt {
12
14 // Red, Green, Blue, Alpha in binary32 (native endian).
16
17public:
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}
Class which represents an axis-aligned rectangle.
Definition aarect.hpp:13
static tt_force_inline aarect p0p3(vec const &v) noexcept
Create aarect from packed p0p3 coordinates.
Definition aarect.hpp:75
Definition R32G32B32A32SFloat.hpp:13
A 4D vector.
Definition vec.hpp:37
T data(T... args)