2 typedef unsigned int COLOROPTYPE [4];
3 typedef void (*PIXELGETPROC) (
const unsigned char* bits, COLOROPTYPE col);
4 typedef void (*PIXELSETPROC) (
unsigned char* bits,
const COLOROPTYPE col);
24 void argb_get (
const unsigned char* bits, COLOROPTYPE col)
32 void argb_set (
unsigned char* bits,
const COLOROPTYPE col)
40 void rgb8_get (
const unsigned char* bits, COLOROPTYPE col)
47 void rgb8_set (
unsigned char* bits,
const COLOROPTYPE col)
54 void r5g6b5_get (
const unsigned char* bits, COLOROPTYPE col)
57 memcpy(&b, bits,
sizeof(
short));
63 void r5g6b5_set (
unsigned char* bits,
const COLOROPTYPE col)
69 memcpy(bits, &c,
sizeof(
short));
72 void x1r5g5b5_get (
const unsigned char* bits, COLOROPTYPE col)
75 memcpy(&c, bits,
sizeof(
short));
81 void x1r5g5b5_set (
unsigned char* bits,
const COLOROPTYPE col)
87 memcpy(bits, &c,
sizeof(
short));
90 void a8_get (
const unsigned char* bits, COLOROPTYPE col)
93 col[1] = col[2] = col[0];
96 void a8_set (
unsigned char* bits,
const COLOROPTYPE col)
102 const static float one_over_255 = 1.0/255.0;
104 void frgb_get (
const unsigned char* bits, COLOROPTYPE col)
106 const float* fbits = (
const float*)bits;
107 col[0] = (
unsigned int)(fbits[0]*255.0);
108 col[1] = (
unsigned int)(fbits[1]*255.0);
109 col[2] = (
unsigned int)(fbits[2]*255.0);
112 void frgb_set (
unsigned char* bits,
const COLOROPTYPE col)
114 float* fbits = (
float*)bits;
115 fbits[0] = float(col[0])*one_over_255;
116 fbits[1] = float(col[1])*one_over_255;
117 fbits[2] = float(col[2])*one_over_255;
120 void frgba_get (
const unsigned char* bits, COLOROPTYPE col)
122 const float* fbits = (
const float*)bits;
123 col[0] = (
unsigned int)(fbits[0]*255.0);
124 col[1] = (
unsigned int)(fbits[1]*255.0);
125 col[2] = (
unsigned int)(fbits[2]*255.0);
126 col[3] = (
unsigned int)(fbits[3]*255.0);
129 void frgba_set (
unsigned char* bits,
const COLOROPTYPE col)
131 float* fbits = (
float*)bits;
132 fbits[0] = float(col[0])*one_over_255;
133 fbits[1] = float(col[1])*one_over_255;
134 fbits[2] = float(col[2])*one_over_255;
135 fbits[3] = float(col[3])*one_over_255;
139 void fa_get (
const unsigned char* bits, COLOROPTYPE col)
141 const float* fbits = (
const float*)bits;
142 col[0] = (
unsigned int)(fbits[0]*255.0);
143 col[1] = col[2] = col[0];
146 void fa_set (
unsigned char* bits,
const COLOROPTYPE col)
148 float* fbits = (
float*)bits;
149 fbits[0] = float(col[0])*one_over_255;
153 inline void zero_color(COLOROPTYPE x)
155 x[0] = x[1] = x[2] = x[3] = 0;
158 inline void add_color(COLOROPTYPE x,
const COLOROPTYPE a)
166 inline void shift_right_color(COLOROPTYPE x,
unsigned int shift)
168 x[0] = x[0] >> shift;
169 x[1] = x[1] >> shift;
170 x[2] = x[2] >> shift;
171 x[3] = x[3] >> shift;