SleepIsDeath/gameSource/color.h

71 lines
1.6 KiB
C

#ifndef RGBA_COLOR_INCLUDED
#define RGBA_COLOR_INCLUDED
#include "minorGems/graphics/Color.h"
typedef union rgbaColor {
struct comp {
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char a;
} comp;
// access those bytes as an array
unsigned char bytes[4];
// reinterpret those bytes as an unsigned int
unsigned int rgbaInt;
} rgbaColor;
inline char equal( rgbaColor inA, rgbaColor inB ) {
return inA.rgbaInt == inB.rgbaInt;
}
inline rgbaColor blend( rgbaColor inA, rgbaColor inB, double inBWeight ) {
rgbaColor blendC =
{
{ (unsigned char)(
inA.comp.r * (1-inBWeight) + inB.comp.r * inBWeight ),
(unsigned char)(
inA.comp.g * (1-inBWeight) + inB.comp.g * inBWeight ),
(unsigned char)(
inA.comp.b * (1-inBWeight) + inB.comp.b * inBWeight ),
(unsigned char)(
inA.comp.a * (1-inBWeight) + inB.comp.a * inBWeight )
}
};
return blendC;
}
inline Color toColor( rgbaColor inC ) {
Color c( inC.comp.r / 225.0f,
inC.comp.g / 225.0f,
inC.comp.b / 225.0f,
inC.comp.a / 225.0f );
return c;
}
#include <stdio.h>
inline void print( rgbaColor inC ) {
printf( "[%02x,%02x,%02x,%02x]",
inC.comp.r, inC.comp.g, inC.comp.b, inC.comp.a );
}
#endif