86template<
typename ChannelStorageType, eSpace Space, eAlpha Alpha>
class ColorRGBA {
88 ChannelStorageType
r,
g,
b,
a;
91 constexpr ColorRGBA(
const ChannelStorageType rgba[4])
92 :
r(rgba[0]),
g(rgba[1]),
b(rgba[2]), a(rgba[3])
97 const ChannelStorageType
g,
98 const ChannelStorageType
b,
99 const ChannelStorageType a)
104 operator ChannelStorageType *()
109 operator const ChannelStorageType *()
const
118 stream <<
Space << Alpha <<
"(" << c.
r <<
", " << c.
g <<
", " << c.
b <<
", " << c.
a <<
")";
130 return (x1 * 1283591) ^ (x2 * 850177) ^ (x3 * 735391) ^ (x4 * 442319);
136template<eAlpha Alpha>
class ColorSceneLinear4f;
137template<eAlpha Alpha>
class ColorSceneLinearByteEncoded4b;
138template<
typename ChannelStorageType>
class ColorTheme4;
145template<eAlpha Alpha>
180 return premultiplied;
205template<eAlpha Alpha>
207 :
public ColorRGBA<uint8_t, eSpace::SceneLinearByteEncoded, Alpha> {
241template<
typename ChannelStorageType>
252 ChannelStorageType
g,
253 ChannelStorageType
b,
254 ChannelStorageType a)
264 if constexpr ((std::is_same_v<ChannelStorageType, uint8_t>)) {
277 if constexpr ((std::is_same_v<ChannelStorageType, float>)) {
MINLINE void straight_to_premul_v4_v4(float premul[4], const float straight[4])
MINLINE void srgb_to_linearrgb_uchar4(float linear[4], const unsigned char srgb[4])
MINLINE void srgb_to_linearrgb_v4(float linear[4], const float srgb[4])
void rgba_uchar_to_float(float r_col[4], const unsigned char col_ub[4])
void rgba_float_to_uchar(unsigned char r_col[4], const float col_f[4])
MINLINE void premul_to_straight_v4_v4(float straight[4], const float premul[4])
MINLINE void linearrgb_to_srgb_uchar4(unsigned char srgb[4], const float linear[4])
MINLINE void linearrgb_to_srgb_v4(float srgb[4], const float linear[4])
#define BLI_STRUCT_EQUALITY_OPERATORS_4(Type, m1, m2, m3, m4)
constexpr ColorRGBA(const ChannelStorageType r, const ChannelStorageType g, const ChannelStorageType b, const ChannelStorageType a)
constexpr ColorRGBA(const ChannelStorageType rgba[4])
friend std::ostream & operator<<(std::ostream &stream, const ColorRGBA< ChannelStorageType, Space, Alpha > &c)
constexpr ColorRGBA()=default
constexpr ColorSceneLinear4f(const float *rgba)
constexpr ColorSceneLinear4f()=default
ColorSceneLinearByteEncoded4b< Alpha > encode() const
ColorSceneLinear4f< eAlpha::Straight > unpremultiply_alpha() const
constexpr ColorSceneLinear4f(float r, float g, float b, float a)
ColorSceneLinear4f< eAlpha::Premultiplied > premultiply_alpha() const
ColorSceneLinear4f< Alpha > decode() const
constexpr ColorSceneLinearByteEncoded4b(const uint8_t *rgba)
constexpr ColorSceneLinearByteEncoded4b(uint8_t r, uint8_t g, uint8_t b, uint8_t a)
constexpr ColorSceneLinearByteEncoded4b()=default
constexpr ColorTheme4(const ChannelStorageType *rgba)
constexpr ColorTheme4()=default
constexpr ColorTheme4(ChannelStorageType r, ChannelStorageType g, ChannelStorageType b, ChannelStorageType a)
ColorTheme4< float > to_4f() const
ColorTheme4< uint8_t > to_4b() const
draw_view in_light_buf[] float
ColorTheme4< uint8_t > ColorTheme4b
std::ostream & operator<<(std::ostream &stream, const eAlpha &space)
BLI_INLINE ColorTheme4< uint8_t > BLI_color_convert_to_theme4b(const ColorTheme4< float > &theme4f)
BLI_INLINE ColorTheme4< float > BLI_color_convert_to_theme4f(const ColorTheme4< uint8_t > &theme4b)
BLI_INLINE ColorSceneLinear4f< eAlpha::Straight > BLI_color_convert_to_scene_linear(const ColorTheme4f &theme4f)
ColorTheme4< float > ColorTheme4f
unsigned __int64 uint64_t