HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
sfloat_rgb32.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 "../macros.hpp"
13#include <hikocpu/hikocpu.hpp>
14#include <algorithm>
15#include <array>
16#include <bit>
17#include <cstdint>
18
19hi_export_module(hikogui.image.sfloat_rgb32);
20
21hi_export namespace hi::inline v1 {
22
28 // Red, Green, Blue in binary32 (native endian).
30
31public:
32 sfloat_rgb32() = default;
33 sfloat_rgb32(sfloat_rgb32 const &rhs) noexcept = default;
34 sfloat_rgb32(sfloat_rgb32 &&rhs) noexcept = default;
35 sfloat_rgb32 &operator=(sfloat_rgb32 const &rhs) noexcept = default;
36 sfloat_rgb32 &operator=(sfloat_rgb32 &&rhs) noexcept = default;
37
38 sfloat_rgb32(f32x4 const &rhs) noexcept : v{rhs.r(), rhs.g(), rhs.b()} {}
39
40 sfloat_rgb32 &operator=(f32x4 const &rhs) noexcept
41 {
42 v = {rhs.r(), rhs.g(), rhs.b()};
43 return *this;
44 }
45
46 operator f32x4() const noexcept
47 {
48 return f32x4{std::get<0>(v), std::get<1>(v), std::get<2>(v), 0.0f};
49 }
50
51 sfloat_rgb32(point3 const &rhs) noexcept : sfloat_rgb32(static_cast<f32x4>(rhs)) {}
52
53 sfloat_rgb32 &operator=(point3 const &rhs) noexcept
54 {
55 return *this = static_cast<f32x4>(rhs);
56 }
57
58 operator point3() const noexcept
59 {
60 return point3{f32x4{*this}};
61 }
62
63 [[nodiscard]] friend bool operator==(sfloat_rgb32 const &lhs, sfloat_rgb32 const &rhs) noexcept = default;
64};
65
66} // namespace hi::inline v1
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
3 x float32 pixel format.
Definition sfloat_rgb32.hpp:27