Advanced Multi-Physics (AMP)
On-Line Documentation
RGBA.h
Go to the documentation of this file.
1#ifndef included_AMP_RGBA
2#define included_AMP_RGBA
3
4#include <cstdint>
5
6
7namespace AMP {
8
9
10class ARGB32;
11
12
14constexpr uint32_t store( uint8_t a, uint8_t b, uint8_t c, uint8_t d )
15{
16 return ( (uint32_t) a ) << 24 | ( (uint32_t) b ) << 16 | ( (uint32_t) c ) << 8 | d;
17}
18
19
21class RGBA32 final
22{
23public:
24 constexpr RGBA32() : data( 0xFF ){};
25 constexpr explicit RGBA32( uint8_t x ) : data( store( x, x, x, 255 ) ){};
26 constexpr explicit RGBA32( uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255 )
27 : data( store( r, g, b, a ) )
28 {
29 }
30 constexpr explicit RGBA32( uint32_t x ) : data( x ) {}
31 constexpr explicit RGBA32( ARGB32 x );
32 constexpr uint8_t red() const { return ( data & 0xFF000000 ) >> 24; }
33 constexpr uint8_t green() const { return ( data & 0xFF0000 ) >> 16; }
34 constexpr uint8_t blue() const { return ( data & 0xFF00 ) >> 8; }
35 constexpr uint8_t alpha() const { return data & 0xFF; }
36 constexpr operator uint32_t() { return data; }
37 constexpr operator uint8_t() { return red() * 0.299 + green() * 0.587 + blue() * 0.114; }
38 constexpr operator uint16_t() { return red() * 76.843 + green() * 150.859 + blue() * 29.298; }
39 constexpr operator float() { return operator double(); }
40 constexpr operator double()
41 {
42 return red() * 0.001172549019608 + green() * 0.002301960784314 + blue() * 0.000447058823529;
43 }
44 constexpr bool operator==( const RGBA32 &rhs ) const { return data == rhs.data; }
45
46private:
47 uint32_t data; // Store data as 32-bit unsigned integer
48};
49
50
52class ARGB32 final
53{
54public:
55 constexpr ARGB32() : data( 0xFF000000 ){};
56 constexpr explicit ARGB32( uint8_t x ) : data( store( 255, x, x, x ) ){};
57 constexpr explicit ARGB32( uint8_t r, uint8_t g, uint8_t b, uint8_t a = 255 )
58 : data( store( a, r, g, b ) )
59 {
60 }
61 constexpr explicit ARGB32( uint32_t x ) : data( x ) {}
62 constexpr explicit ARGB32( RGBA32 x );
63 constexpr uint8_t alpha() const { return ( data & 0xFF000000 ) >> 24; }
64 constexpr uint8_t red() const { return ( data & 0xFF0000 ) >> 16; }
65 constexpr uint8_t green() const { return ( data & 0xFF00 ) >> 8; }
66 constexpr uint8_t blue() const { return data & 0xFF; }
67 constexpr operator uint32_t() { return data; }
68 constexpr operator uint8_t() { return red() * 0.299 + green() * 0.587 + blue() * 0.114; }
69 constexpr operator uint16_t() { return red() * 76.843 + green() * 150.859 + blue() * 29.298; }
70 constexpr operator float() { return operator double(); }
71 constexpr operator double()
72 {
73 return red() * 0.001172549019608 + green() * 0.002301960784314 + blue() * 0.000447058823529;
74 }
75 constexpr bool operator==( const ARGB32 &rhs ) const { return data == rhs.data; }
76
77private:
78 uint32_t data;
79};
80
81
83using RGB = ARGB32;
84
85
87constexpr RGBA32::RGBA32( ARGB32 x ) : data( store( x.red(), x.green(), x.blue(), x.alpha() ) ) {}
88constexpr ARGB32::ARGB32( RGBA32 x ) : data( store( x.alpha(), x.red(), x.green(), x.blue() ) ) {}
89
90
91} // namespace AMP
92
93#endif
Structure to store RGBA data.
Definition RGBA.h:53
constexpr uint8_t red() const
Definition RGBA.h:64
constexpr uint8_t blue() const
Definition RGBA.h:66
uint32_t data
Definition RGBA.h:78
constexpr ARGB32()
Definition RGBA.h:55
constexpr ARGB32(uint8_t r, uint8_t g, uint8_t b, uint8_t a=255)
Definition RGBA.h:57
constexpr ARGB32(uint32_t x)
Definition RGBA.h:61
constexpr uint8_t green() const
Definition RGBA.h:65
constexpr uint8_t alpha() const
Definition RGBA.h:63
constexpr ARGB32(uint8_t x)
Definition RGBA.h:56
constexpr bool operator==(const ARGB32 &rhs) const
Definition RGBA.h:75
Structure to store RGBA data.
Definition RGBA.h:22
constexpr RGBA32()
Definition RGBA.h:24
constexpr uint8_t green() const
Definition RGBA.h:33
constexpr uint8_t alpha() const
Definition RGBA.h:35
constexpr RGBA32(uint32_t x)
Definition RGBA.h:30
uint32_t data
Definition RGBA.h:47
constexpr uint8_t blue() const
Definition RGBA.h:34
constexpr uint8_t red() const
Definition RGBA.h:32
constexpr RGBA32(uint8_t x)
Definition RGBA.h:25
constexpr bool operator==(const RGBA32 &rhs) const
Definition RGBA.h:44
constexpr RGBA32(uint8_t r, uint8_t g, uint8_t b, uint8_t a=255)
Definition RGBA.h:26
constexpr uint32_t store(uint8_t a, uint8_t b, uint8_t c, uint8_t d)
Helper function to convert 4 uint8_t to uint32_t.
Definition RGBA.h:14



Advanced Multi-Physics (AMP)
Oak Ridge National Laboratory
Idaho National Laboratory
Los Alamos National Laboratory
This page automatically produced from the
source code by doxygen
Last updated: Tue Mar 10 2026 13:06:40.
Comments on this page