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 "../SIMD/module.hpp"
12#include <algorithm>
13
14namespace hi::inline v1 {
15
16//[[nodiscard]] constexpr uint32_t make_unorm_a2bgr10_pack_value(f32x4 const &rhs) noexcept
17//{
18// hilet r = static_cast<uint32_t>(std::clamp(rhs.r, 0.0f, 1.0f) * 1023.0f);
19// hilet g = static_cast<uint32_t>(std::clamp(rhs.g, 0.0f, 1.0f) * 1023.0f);
20// hilet b = static_cast<uint32_t>(std::clamp(rhs.b, 0.0f, 1.0f) * 1023.0f);
21// hilet a = static_cast<uint32_t>(std::clamp(rhs.a, 0.0f, 1.0f) * 3.0f);
22// return (a << 30) | (b << 20) | (g << 10) | r;
23//}
24
30 uint32_t value;
31
32 unorm_a2bgr10_pack() = default;
33 unorm_a2bgr10_pack(unorm_a2bgr10_pack const &rhs) noexcept = default;
34 unorm_a2bgr10_pack(unorm_a2bgr10_pack &&rhs) noexcept = default;
35 unorm_a2bgr10_pack &operator=(unorm_a2bgr10_pack const &rhs) noexcept = default;
36 unorm_a2bgr10_pack &operator=(unorm_a2bgr10_pack &&rhs) noexcept = default;
37 ~unorm_a2bgr10_pack() = default;
38
39 //explicit unorm_a2bgr10_pack(f32x4 const &rhs) noexcept : value(make_unorm_a2bgr10_pack_value(rhs)) {}
40
41 //unorm_a2bgr10_pack &operator=(f32x4 const &rhs) noexcept
42 //{
43 // value = make_unorm_a2bgr10_pack_value(rhs);
44 // return *this;
45 //}
46
47 explicit operator f32x4() const noexcept
48 {
49 return f32x4{
50 static_cast<float>((value >> 20) & 0x3ff) / 1023.0f,
51 static_cast<float>((value >> 10) & 0x3ff) / 1023.0f,
52 static_cast<float>(value & 0x3ff) / 1023.0f,
53 static_cast<float>(value >> 30) / 3.0f};
54 }
55};
56
57} // namespace hi::inline v1
DOXYGEN BUG.
Definition algorithm.hpp:13
1 x uint2_t, 3 x uint10_t pixel packed format.
Definition unorm_a2bgr10_pack.hpp:29