1 2 #ifndef _SDL_pixels_h 3 #define _SDL_pixels_h 4 5 #include "begin_code.h" 6 7 #ifdef __cplusplus 8 extern "C" { 9 #endif 10 11 #define SDL_ALPHA_OPAQUE 255 12 #define SDL_ALPHA_TRANSPARENT 0 13 14 enum 15 { 16 SDL_PIXELTYPE_UNKNOWN, 17 SDL_PIXELTYPE_INDEX1, 18 SDL_PIXELTYPE_INDEX4, 19 SDL_PIXELTYPE_INDEX8, 20 SDL_PIXELTYPE_PACKED8, 21 SDL_PIXELTYPE_PACKED16, 22 SDL_PIXELTYPE_PACKED32, 23 SDL_PIXELTYPE_ARRAYU8, 24 SDL_PIXELTYPE_ARRAYU16, 25 SDL_PIXELTYPE_ARRAYU32, 26 SDL_PIXELTYPE_ARRAYF16, 27 SDL_PIXELTYPE_ARRAYF32 28 }; 29 30 enum 31 { 32 SDL_BITMAPORDER_NONE, 33 SDL_BITMAPORDER_4321, 34 SDL_BITMAPORDER_1234 35 }; 36 37 enum 38 { 39 SDL_PACKEDORDER_NONE, 40 SDL_PACKEDORDER_XRGB, 41 SDL_PACKEDORDER_RGBX, 42 SDL_PACKEDORDER_ARGB, 43 SDL_PACKEDORDER_RGBA, 44 SDL_PACKEDORDER_XBGR, 45 SDL_PACKEDORDER_BGRX, 46 SDL_PACKEDORDER_ABGR, 47 SDL_PACKEDORDER_BGRA 48 }; 49 50 enum 51 { 52 SDL_ARRAYORDER_NONE, 53 SDL_ARRAYORDER_RGB, 54 SDL_ARRAYORDER_RGBA, 55 SDL_ARRAYORDER_ARGB, 56 SDL_ARRAYORDER_BGR, 57 SDL_ARRAYORDER_BGRA, 58 SDL_ARRAYORDER_ABGR 59 }; 60 61 enum 62 { 63 SDL_PACKEDLAYOUT_NONE, 64 SDL_PACKEDLAYOUT_332, 65 SDL_PACKEDLAYOUT_4444, 66 SDL_PACKEDLAYOUT_1555, 67 SDL_PACKEDLAYOUT_5551, 68 SDL_PACKEDLAYOUT_565, 69 SDL_PACKEDLAYOUT_8888, 70 SDL_PACKEDLAYOUT_2101010, 71 SDL_PACKEDLAYOUT_1010102 72 }; 73 74 #define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D) 75 76 #define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \ 77 ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \ 78 ((bits) << 8) | ((bytes) << 0)) 79 80 #define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F) 81 #define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F) 82 #define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F) 83 #define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F) 84 #define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF) 85 #define SDL_BYTESPERPIXEL(X) \ 86 (SDL_ISPIXELFORMAT_FOURCC(X) ? \ 87 ((((X) == SDL_PIXELFORMAT_YUY2) || \ 88 ((X) == SDL_PIXELFORMAT_UYVY) || \ 89 ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF)) 90 91 #define SDL_ISPIXELFORMAT_INDEXED(format) \ 92 (!SDL_ISPIXELFORMAT_FOURCC(format) && \ 93 ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \ 94 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \ 95 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8))) 96 97 #define SDL_ISPIXELFORMAT_ALPHA(format) \ 98 (!SDL_ISPIXELFORMAT_FOURCC(format) && \ 99 ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \ 100 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \ 101 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \ 102 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) 103 104 #define SDL_ISPIXELFORMAT_FOURCC(format) \ 105 ((format) && (SDL_PIXELFLAG(format) != 1)) 106 107 enum 108 { 109 SDL_PIXELFORMAT_UNKNOWN, 110 SDL_PIXELFORMAT_INDEX1LSB = 111 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, 112 1, 0), 113 SDL_PIXELFORMAT_INDEX1MSB = 114 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, 115 1, 0), 116 SDL_PIXELFORMAT_INDEX4LSB = 117 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, 118 4, 0), 119 SDL_PIXELFORMAT_INDEX4MSB = 120 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, 121 4, 0), 122 SDL_PIXELFORMAT_INDEX8 = 123 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), 124 SDL_PIXELFORMAT_RGB332 = 125 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, 126 SDL_PACKEDLAYOUT_332, 8, 1), 127 SDL_PIXELFORMAT_RGB444 = 128 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, 129 SDL_PACKEDLAYOUT_4444, 12, 2), 130 SDL_PIXELFORMAT_RGB555 = 131 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, 132 SDL_PACKEDLAYOUT_1555, 15, 2), 133 SDL_PIXELFORMAT_BGR555 = 134 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, 135 SDL_PACKEDLAYOUT_1555, 15, 2), 136 SDL_PIXELFORMAT_ARGB4444 = 137 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, 138 SDL_PACKEDLAYOUT_4444, 16, 2), 139 SDL_PIXELFORMAT_RGBA4444 = 140 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, 141 SDL_PACKEDLAYOUT_4444, 16, 2), 142 SDL_PIXELFORMAT_ABGR4444 = 143 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, 144 SDL_PACKEDLAYOUT_4444, 16, 2), 145 SDL_PIXELFORMAT_BGRA4444 = 146 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, 147 SDL_PACKEDLAYOUT_4444, 16, 2), 148 SDL_PIXELFORMAT_ARGB1555 = 149 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, 150 SDL_PACKEDLAYOUT_1555, 16, 2), 151 SDL_PIXELFORMAT_RGBA5551 = 152 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, 153 SDL_PACKEDLAYOUT_5551, 16, 2), 154 SDL_PIXELFORMAT_ABGR1555 = 155 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, 156 SDL_PACKEDLAYOUT_1555, 16, 2), 157 SDL_PIXELFORMAT_BGRA5551 = 158 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, 159 SDL_PACKEDLAYOUT_5551, 16, 2), 160 SDL_PIXELFORMAT_RGB565 = 161 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, 162 SDL_PACKEDLAYOUT_565, 16, 2), 163 SDL_PIXELFORMAT_BGR565 = 164 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, 165 SDL_PACKEDLAYOUT_565, 16, 2), 166 SDL_PIXELFORMAT_RGB24 = 167 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, 168 24, 3), 169 SDL_PIXELFORMAT_BGR24 = 170 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, 171 24, 3), 172 SDL_PIXELFORMAT_RGB888 = 173 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, 174 SDL_PACKEDLAYOUT_8888, 24, 4), 175 SDL_PIXELFORMAT_RGBX8888 = 176 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, 177 SDL_PACKEDLAYOUT_8888, 24, 4), 178 SDL_PIXELFORMAT_BGR888 = 179 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, 180 SDL_PACKEDLAYOUT_8888, 24, 4), 181 SDL_PIXELFORMAT_BGRX8888 = 182 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, 183 SDL_PACKEDLAYOUT_8888, 24, 4), 184 SDL_PIXELFORMAT_ARGB8888 = 185 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, 186 SDL_PACKEDLAYOUT_8888, 32, 4), 187 SDL_PIXELFORMAT_RGBA8888 = 188 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, 189 SDL_PACKEDLAYOUT_8888, 32, 4), 190 SDL_PIXELFORMAT_ABGR8888 = 191 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, 192 SDL_PACKEDLAYOUT_8888, 32, 4), 193 SDL_PIXELFORMAT_BGRA8888 = 194 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, 195 SDL_PACKEDLAYOUT_8888, 32, 4), 196 SDL_PIXELFORMAT_ARGB2101010 = 197 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, 198 SDL_PACKEDLAYOUT_2101010, 32, 4), 199 200 SDL_PIXELFORMAT_YV12 = 201 SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), 202 SDL_PIXELFORMAT_IYUV = 203 SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), 204 SDL_PIXELFORMAT_YUY2 = 205 SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), 206 SDL_PIXELFORMAT_UYVY = 207 SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), 208 SDL_PIXELFORMAT_YVYU = 209 SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U') 210 }; 211 212 typedef struct SDL_Color 213 { 214 Uint8 r; 215 Uint8 g; 216 Uint8 b; 217 Uint8 a; 218 } SDL_Color; 219 #define SDL_Colour SDL_Color 220 221 typedef struct SDL_Palette 222 { 223 int ncolors; 224 SDL_Color *colors; 225 Uint32 version; 226 int refcount; 227 } SDL_Palette; 228 229 typedef struct SDL_PixelFormat 230 { 231 Uint32 format; 232 SDL_Palette *palette; 233 Uint8 BitsPerPixel; 234 Uint8 BytesPerPixel; 235 Uint8 padding[2]; 236 Uint32 Rmask; 237 Uint32 Gmask; 238 Uint32 Bmask; 239 Uint32 Amask; 240 Uint8 Rloss; 241 Uint8 Gloss; 242 Uint8 Bloss; 243 Uint8 Aloss; 244 Uint8 Rshift; 245 Uint8 Gshift; 246 Uint8 Bshift; 247 Uint8 Ashift; 248 int refcount; 249 struct SDL_PixelFormat *next; 250 } SDL_PixelFormat; 251 252 extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); 253 254 typedef SDL_bool SDLCALL tSDL_PixelFormatEnumToMasks(Uint32 format, 255 int *bpp, 256 Uint32 * Rmask, 257 Uint32 * Gmask, 258 Uint32 * Bmask, 259 Uint32 * Amask); 260 261 typedef Uint32 SDLCALL tSDL_MasksToPixelFormatEnum(int bpp, 262 Uint32 Rmask, 263 Uint32 Gmask, 264 Uint32 Bmask, 265 Uint32 Amask); 266 267 typedef SDL_PixelFormat * SDLCALL tSDL_AllocFormat(Uint32 pixel_format); 268 269 typedef void SDLCALL tSDL_FreeFormat(SDL_PixelFormat *format); 270 271 typedef SDL_Palette * SDLCALL tSDL_AllocPalette(int ncolors); 272 273 typedef int SDLCALL tSDL_SetPixelFormatPalette(SDL_PixelFormat * format, 274 SDL_Palette *palette); 275 276 typedef int SDLCALL tSDL_SetPaletteColors(SDL_Palette * palette, 277 const SDL_Color * colors, 278 int firstcolor, int ncolors); 279 280 typedef void SDLCALL tSDL_FreePalette(SDL_Palette * palette); 281 282 typedef Uint32 SDLCALL tSDL_MapRGB(const SDL_PixelFormat * format, 283 Uint8 r, Uint8 g, Uint8 b); 284 285 typedef Uint32 SDLCALL tSDL_MapRGBA(const SDL_PixelFormat * format, 286 Uint8 r, Uint8 g, Uint8 b, 287 Uint8 a); 288 289 typedef void SDLCALL tSDL_GetRGB(Uint32 pixel, 290 const SDL_PixelFormat * format, 291 Uint8 * r, Uint8 * g, Uint8 * b); 292 293 typedef void SDLCALL tSDL_GetRGBA(Uint32 pixel, 294 const SDL_PixelFormat * format, 295 Uint8 * r, Uint8 * g, Uint8 * b, 296 Uint8 * a); 297 298 typedef void SDLCALL tSDL_CalculateGammaRamp(float gamma, Uint16 * ramp); 299 300 extern tSDL_PixelFormatEnumToMasks *SDL_PixelFormatEnumToMasks; 301 extern tSDL_MasksToPixelFormatEnum *SDL_MasksToPixelFormatEnum; 302 extern tSDL_AllocFormat *SDL_AllocFormat; 303 extern tSDL_FreeFormat *SDL_FreeFormat; 304 extern tSDL_AllocPalette *SDL_AllocPalette; 305 extern tSDL_SetPixelFormatPalette *SDL_SetPixelFormatPalette; 306 extern tSDL_SetPaletteColors *SDL_SetPaletteColors; 307 extern tSDL_FreePalette *SDL_FreePalette; 308 extern tSDL_MapRGB *SDL_MapRGB; 309 extern tSDL_MapRGBA *SDL_MapRGBA; 310 extern tSDL_GetRGB *SDL_GetRGB; 311 extern tSDL_GetRGBA *SDL_GetRGBA; 312 extern tSDL_CalculateGammaRamp *SDL_CalculateGammaRamp; 313 314 #ifdef __cplusplus 315 } 316 #endif 317 #include "close_code.h" 318 319 #endif 320 321