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