20 std::tr1::uint32_t rep;
21 #ifdef GOSU_IS_LITTLE_ENDIAN
22 enum { RED_OFFSET = 0, GREEN_OFFSET = 8, BLUE_OFFSET = 16, ALPHA_OFFSET = 24 };
24 enum { RED_OFFSET = 24, GREEN_OFFSET = 16, BLUE_OFFSET = 8, ALPHA_OFFSET = 0 };
39 *
this =
Color((argb >> 24) & 0xff, (argb >> 16) & 0xff,
40 (argb >> 8) & 0xff, (argb >> 0) & 0xff);
45 *
this =
Color(0xff, red, green, blue);
50 rep = (alpha << ALPHA_OFFSET) | (red << RED_OFFSET) |
51 (green << GREEN_OFFSET) | (blue << BLUE_OFFSET);
63 return static_cast<Channel>(rep >> RED_OFFSET);
68 return static_cast<Channel>(rep >> GREEN_OFFSET);
73 return static_cast<Channel>(rep >> BLUE_OFFSET);
78 return static_cast<Channel>(rep >> ALPHA_OFFSET);
83 rep &= ~(0xff << RED_OFFSET);
84 rep |= value << RED_OFFSET;
89 rep &= ~(0xff << GREEN_OFFSET);
90 rep |= value << GREEN_OFFSET;
95 rep &= ~(0xff << BLUE_OFFSET);
96 rep |= value << BLUE_OFFSET;
101 rep &= ~(0xff << ALPHA_OFFSET);
102 rep |= value << ALPHA_OFFSET;
118 double value()
const;
124 std::tr1::uint32_t
argb()
const
130 std::tr1::uint32_t
bgr()
const
136 std::tr1::uint32_t
abgr()
const
142 std::tr1::uint32_t
gl()
const
164 return a.
gl() < b.
gl();
169 return a.
gl() == b.
gl();
174 return a.
gl() != b.
gl();
181 Color
interpolate(Color a, Color b,
double weight = 0.5);