From fe9f60e2196d2762c874740fff35dc0ed07ea5ad Mon Sep 17 00:00:00 2001 From: Max Horn Date: Mon, 17 Apr 2006 10:41:18 +0000 Subject: Add color conversion functions based on ColorMasks, to demonstrate how this would work svn-id: r21967 --- graphics/colormasks.h | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'graphics/colormasks.h') diff --git a/graphics/colormasks.h b/graphics/colormasks.h index 422af23d85..2e151fc67b 100644 --- a/graphics/colormasks.h +++ b/graphics/colormasks.h @@ -217,5 +217,34 @@ struct ColorMasks<8888> { }; }; +template +uint32 RGBToColor(uint8 r, uint8 g, uint8 b) { + return ((r << T::kRedShift) & T::kRedMask) | + ((g << T::kGreenShift) & T::kGreenMask) | + ((b << T::kBlueShift) & T::kBlueMask); +} + +template +uint32 ARGBToColor(uint8 a, uint8 r, uint8 g, uint8 b) { + return ((a << T::kAlphaShift) & T::kAlphaMask) | + ((r << T::kRedShift) & T::kRedMask) | + ((g << T::kGreenShift) & T::kGreenMask) | + ((b << T::kBlueShift) & T::kBlueMask); +} + +template +void colorToRGB(uint32 color, uint8 &r, uint8 &g, uint8 &b) { + r = ((color & T::kRedMask) >> T::kRedShift) << (8 - T::kRedBits); + g = ((color & T::kGreenMask) >> T::kGreenShift) << (8 - T::kGreenBits); + b = ((color & T::kBlueMask) >> T::kBlueShift) << (8 - T::kBlueBits); +} + +template +void colorToARGB(uint32 color, uint8 &a, uint8 &r, uint8 &g, uint8 &b) { + a = ((color & T::kAlphaMask) >> T::kAlphaShift) << (8 - T::kAlphaBits); + r = ((color & T::kRedMask) >> T::kRedShift) << (8 - T::kRedBits); + g = ((color & T::kGreenMask) >> T::kGreenShift) << (8 - T::kGreenBits); + b = ((color & T::kBlueMask) >> T::kBlueShift) << (8 - T::kBlueBits); +} #endif -- cgit v1.2.3