HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
unorm_a2bgr10_pack.hpp
Go to the documentation of this file.
1// Copyright Take Vos 2020-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 "../macros.hpp"
12#include <hikocpu/hikocpu.hpp>
13#include <algorithm>
14#include <bit>
15#include <cstdint>
16
17hi_export_module(hikogui.image.unorm_a2bgr10_pack);
18
19hi_export namespace hi::inline v1 {
20
21//[[nodiscard]] constexpr uint32_t make_unorm_a2bgr10_pack_value(f32x4 const &rhs) noexcept
22//{
23// auto const r = static_cast<uint32_t>(std::clamp(rhs.r, 0.0f, 1.0f) * 1023.0f);
24// auto const g = static_cast<uint32_t>(std::clamp(rhs.g, 0.0f, 1.0f) * 1023.0f);
25// auto const b = static_cast<uint32_t>(std::clamp(rhs.b, 0.0f, 1.0f) * 1023.0f);
26// auto const a = static_cast<uint32_t>(std::clamp(rhs.a, 0.0f, 1.0f) * 3.0f);
27// return (a << 30) | (b << 20) | (g << 10) | r;
28//}
29
35 uint32_t value;
36
37 unorm_a2bgr10_pack() = default;
38 unorm_a2bgr10_pack(unorm_a2bgr10_pack const &rhs) noexcept = default;
39 unorm_a2bgr10_pack(unorm_a2bgr10_pack &&rhs) noexcept = default;
40 unorm_a2bgr10_pack &operator=(unorm_a2bgr10_pack const &rhs) noexcept = default;
41 unorm_a2bgr10_pack &operator=(unorm_a2bgr10_pack &&rhs) noexcept = default;
42 ~unorm_a2bgr10_pack() = default;
43
44 //explicit unorm_a2bgr10_pack(f32x4 const &rhs) noexcept : value(make_unorm_a2bgr10_pack_value(rhs)) {}
45
46 //unorm_a2bgr10_pack &operator=(f32x4 const &rhs) noexcept
47 //{
48 // value = make_unorm_a2bgr10_pack_value(rhs);
49 // return *this;
50 //}
51
52 explicit operator f32x4() const noexcept
53 {
54 return f32x4{
55 static_cast<float>((value >> 20) & 0x3ff) / 1023.0f,
56 static_cast<float>((value >> 10) & 0x3ff) / 1023.0f,
57 static_cast<float>(value & 0x3ff) / 1023.0f,
58 static_cast<float>(value >> 30) / 3.0f};
59 }
60};
61
62} // namespace hi::inline v1
DOXYGEN BUG.
Definition algorithm_misc.hpp:20
1 x uint2_t, 3 x uint10_t pixel packed format.
Definition unorm_a2bgr10_pack.hpp:34