HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
src
hikogui
image
srgb_abgr8_pack.hpp
Go to the documentation of this file.
1
// Copyright Take Vos 2020-2022.
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 "
sfloat_rgba16.hpp
"
12
#include "../color/module.hpp"
13
#include <algorithm>
14
15
namespace
hi::inline
v1
{
16
21
class
srgb_abgr8_pack
{
22
uint32_t v = {};
23
24
public
:
25
constexpr
srgb_abgr8_pack
() =
default
;
26
constexpr
srgb_abgr8_pack
(
srgb_abgr8_pack
const
&rhs)
noexcept
=
default
;
27
constexpr
srgb_abgr8_pack
(
srgb_abgr8_pack
&&rhs)
noexcept
=
default
;
28
constexpr
srgb_abgr8_pack
&operator=(
srgb_abgr8_pack
const
&rhs)
noexcept
=
default
;
29
constexpr
srgb_abgr8_pack
&operator=(
srgb_abgr8_pack
&&rhs)
noexcept
=
default
;
30
31
constexpr
srgb_abgr8_pack
(uint32_t
const
&rhs) noexcept : v(rhs) {}
32
constexpr
srgb_abgr8_pack
&operator=(uint32_t
const
&rhs)
noexcept
33
{
34
v = rhs;
35
return
*
this
;
36
}
37
constexpr
operator
uint32_t()
noexcept
38
{
39
return
v;
40
}
41
42
//constexpr srgb_abgr8_pack(sfloat_rgba16 const &rhs) noexcept
43
//{
44
// hilet &rhs_v = rhs.get();
45
//
46
// hilet r = sRGB_linear16_to_gamma8(rhs_v[0].get());
47
// hilet g = sRGB_linear16_to_gamma8(rhs_v[1].get());
48
// hilet b = sRGB_linear16_to_gamma8(rhs_v[2].get());
49
// hilet a = static_cast<uint8_t>(std::clamp(rhs_v[3] * 255.0f, 0.0f, 255.0f));
50
// v = (static_cast<uint32_t>(a) << 24) | (static_cast<uint32_t>(b) << 16) | (static_cast<uint32_t>(g) << 8) |
51
// static_cast<uint32_t>(r);
52
//}
53
54
//constexpr srgb_abgr8_pack &operator=(sfloat_rgba16 const &rhs) noexcept
55
//{
56
// hilet &rhs_v = rhs.get();
57
//
58
// hilet r = sRGB_linear16_to_gamma8(rhs_v[0]);
59
// hilet g = sRGB_linear16_to_gamma8(rhs_v[1]);
60
// hilet b = sRGB_linear16_to_gamma8(rhs_v[2]);
61
// hilet a = static_cast<uint8_t>(std::clamp(rhs_v[3] * 255.0f, 0.0f, 255.0f));
62
// v = (static_cast<uint32_t>(a) << 24) | (static_cast<uint32_t>(b) << 16) | (static_cast<uint32_t>(g) << 8) |
63
// static_cast<uint32_t>(r);
64
// return *this;
65
//}
66
67
[[nodiscard]]
constexpr
friend
bool
operator==(
srgb_abgr8_pack
const
&lhs,
srgb_abgr8_pack
const
&rhs)
noexcept
=
default
;
68
69
[[nodiscard]]
constexpr
friend
srgb_abgr8_pack
makeTransparent(
srgb_abgr8_pack
const
&rhs)
noexcept
70
{
71
return
{rhs.v & 0x00ffffff};
72
}
73
};
74
75
//inline void fill(pixmap<srgb_abgr8_pack> &dst, pixmap<sfloat_rgba16> const &src) noexcept
76
//{
77
// hi_assert(dst.width >= src.width);
78
// hi_assert(dst.height >= src.height);
79
//
80
// for (auto rowNr = 0; rowNr < src.height; rowNr++) {
81
// hilet srcRow = src.at(rowNr);
82
// auto dstRow = dst.at(rowNr);
83
// for (auto columnNr = 0; columnNr < src.width; columnNr++) {
84
// dstRow[columnNr] = srcRow[columnNr];
85
// }
86
// }
87
//}
88
89
}
// namespace hi::inline v1
sfloat_rgba16.hpp
Defines the sfloat_rgba16.
v1
DOXYGEN BUG.
Definition
algorithm.hpp:13
v1::srgb_abgr8_pack
4 x uint8_t pixel packed format with sRGB transfer function.
Definition
srgb_abgr8_pack.hpp:21
Generated on Mon Apr 22 2024 12:52:19 for HikoGUI by
1.10.0