#ifndef __PIXEL_HPP #define __PIXEL_HPP #define PIXEL_RED (0x7C00) #define PIXEL_GREEN (0x03E0) #define PIXEL_BLUE (0x001F) #define PIXEL_WHITE (0xFFFF) #define PIXEL_BLEND(A,B) ((((Pixel)(A) & 0x7BDE)>>1) + (((Pixel)(B) & 0x7BDE) >> 1)) #define PIXEL_MASK 31 typedef unsigned short Pixel; /******************************************************************************* ** PixelCreate *******************************************************************************/ inline Pixel PixelCreate(int r, int g, int b) { return ((r & 31) << 10) | ((g & 31) << 5) | ((b & 31) << 0) ; } /******************************************************************************* ** PixelRed *******************************************************************************/ inline int PixelRed(Pixel p) { return (p >> 10) & 31; } /******************************************************************************* ** PixelGreen *******************************************************************************/ inline int PixelGreen(Pixel p) { return (p >> 5) & 31; } /******************************************************************************* ** PixelBlue *******************************************************************************/ inline int PixelBlue(Pixel p) { return (p >> 0) & 31; } /******************************************************************************* ** PixelSetRed *******************************************************************************/ inline void PixelSetRed(Pixel* pixel, int value) { *pixel = (*pixel & ~PIXEL_RED ) | (value << 10); } /******************************************************************************* ** PixelSetGreen *******************************************************************************/ inline void PixelSetGreen(Pixel* pixel, int value) { *pixel = (*pixel & ~PIXEL_GREEN) | (value << 5); } /******************************************************************************* ** PixelSetBlue *******************************************************************************/ inline void PixelSetBlue(Pixel* pixel, int value) { *pixel = (*pixel & ~PIXEL_BLUE ) | (value << 0); } /******************************************************************************* ** PixelZDepth *******************************************************************************/ inline float PixelZDepth(float z) { return 32000.0f / z; } #endif