HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
sfloat_rgba32.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
11#include "../geometry/geometry.hpp"
12#include "../color/color.hpp"
13#include "../macros.hpp"
14#include <hikocpu/hikocpu.hpp>
15#include <algorithm>
16#include <array>
17#include <bit>
18#include <cstdint>
19
20hi_export_module(hikogui.image.sfloat_srgb32);
21
22hi_export namespace hi::inline v1 {
23
29 // Red, Green, Blue, Alpha in binary32 (native endian).
31
32public:
33 sfloat_rgba32() = default;
34 sfloat_rgba32(sfloat_rgba32 const &rhs) noexcept = default;
35 sfloat_rgba32(sfloat_rgba32 &&rhs) noexcept = default;
36 sfloat_rgba32 &operator=(sfloat_rgba32 const &rhs) noexcept = default;
37 sfloat_rgba32 &operator=(sfloat_rgba32 &&rhs) noexcept = default;
38
39 sfloat_rgba32(f32x4 const &rhs) noexcept : v(static_cast<std::array<float, 4>>(rhs)) {}
40
41 sfloat_rgba32 &operator=(f32x4 const &rhs) noexcept
42 {
43 v = static_cast<std::array<float, 4>>(rhs);
44 return *this;
45 }
46
47 operator f32x4() const noexcept
48 {
49 return f32x4{v};
50 }
51
52 sfloat_rgba32(point3 const &rhs) noexcept : sfloat_rgba32(f32x4{rhs}) {}
53
54 sfloat_rgba32(aarectangle const &rhs) noexcept : sfloat_rgba32(f32x4{rhs}) {}
55
56 sfloat_rgba32(corner_radii const &rhs) noexcept : sfloat_rgba32(f32x4{rhs}) {}
57
58 operator aarectangle() const noexcept
59 {
60 return aarectangle{f32x4{v}};
61 }
62
63 [[nodiscard]] friend bool operator==(sfloat_rgba32 const &lhs, sfloat_rgba32 const &rhs) noexcept = default;
64};
65
66} // namespace hi::inline v1
Defined the color type.
DOXYGEN BUG.
Definition algorithm_misc.hpp:20
A high-level geometric point Part of the high-level vec, point, mat and color types.
Definition point3.hpp:29
4 x float32 pixel format.
Definition sfloat_rgba32.hpp:28