HikoGUI
Select Version:
main (latest dev)
0.8.1 (latest)
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.3
0.2.2
0.2.1
0.2.0
0.1.0
theme-value
theme-tag
text
ranged-int
phrase-mask-chars
new-window-widget
msvs-bug-20230517
msvs-bug-20230503
msvs-bug-20230428
msvc-c1001-20231106
msvc-bug-20230706
msvc-bug-20221214
modules-part1
label-delegate
bug-msvs-20220928
attribute-parser
⚠️ This documents the
main
development branch of HikoGUI. It might differ from release versions.
A low latency retained GUI
Toggle main menu visibility
Main Page
Related Pages
Topics
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
r
s
t
u
v
w
x
Functions
a
b
c
d
e
f
g
h
i
l
m
n
o
p
r
s
t
u
v
w
Variables
c
d
g
i
l
o
p
r
s
t
x
Typedefs
Enumerations
a
b
c
d
f
g
h
k
l
p
s
t
u
v
w
Concepts
Data Structures
Data Structures
Data Structure Index
Class Hierarchy
Data Fields
All
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Functions
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
~
Variables
_
a
b
c
d
e
f
g
h
i
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Typedefs
Related Symbols
a
b
c
d
e
f
g
h
i
m
n
o
p
r
s
t
Files
File List
Globals
All
Functions
Macros
•
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Modules
Pages
Concepts
Loading...
Searching...
No Matches
src
hikogui
image
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
17
hi_export_module(hikogui.image.unorm_a2bgr10_pack);
18
19
hi_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
34
struct
unorm_a2bgr10_pack
{
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
};
34
struct
unorm_a2bgr10_pack
{
…
};
61
62
}
// namespace hi::inline v1
v1
DOXYGEN BUG.
Definition
algorithm_misc.hpp:20
v1::unorm_a2bgr10_pack
1 x uint2_t, 3 x uint10_t pixel packed format.
Definition
unorm_a2bgr10_pack.hpp:34
Generated on Mon Apr 22 2024 12:51:37 for HikoGUI by
1.10.0