Haio 0.2.X
Homebrew Asset IO/CDN
Loading...
Searching...
No Matches
rgba8888.cpp
Go to the documentation of this file.
2
3namespace Haio::Codecs {
4
5/**
6 * @addtogroup move
7 * @{
8 */
9/** one sample becomes three, opaque. grey is grey in every channel */
10template <>
11Result<void> Move<Color::GRAY8, Color::RGBA8888>(Bytes src, std::span<uint8_t> dst, Size size) {
12 const auto pixels = static_cast<size_t>(size.width) * static_cast<size_t>(size.height);
13 if (src.size() < pixels || dst.size() < pixels * 4) {
14 HAIO_FAIL(InvalidInput, "gray8 to rgba8888 got a buffer that is too small");
15 }
16 for (size_t at = 0, to = 0; at < pixels; at++, to += 4) {
17 const auto level = src[at];
18 dst[to + 0] = level;
19 dst[to + 1] = level;
20 dst[to + 2] = level;
21 dst[to + 3] = 0xFF;
22 }
23 return {};
24}
25/** @} */
26
27/**
28 * @addtogroup convert
29 * @{
30 */
31template <>
33 return convertVia<Color::GRAY8, Color::RGBA8888>(std::move(src));
34}
35/** @} */
36
37}
Result< Image< Color::RGBA8888 > > Convert< Color::GRAY8, Color::RGBA8888 >(Image< Color::GRAY8 > src)
Definition rgba8888.cpp:32
Result< void > Move< Color::GRAY8, Color::RGBA8888 >(Bytes src, std::span< uint8_t > dst, Size size)
Definition rgba8888.cpp:11
#define HAIO_FAIL(why, message)
Result< Image< To > > convertVia(Image< From > src)
std::expected< T, Error > Result
std::span< const uint8_t > Bytes