46 #define SDL_ALPHA_OPAQUE 255
47 #define SDL_ALPHA_TRANSPARENT 0
53 SDL_PIXELTYPE_UNKNOWN,
57 SDL_PIXELTYPE_PACKED8,
58 SDL_PIXELTYPE_PACKED16,
59 SDL_PIXELTYPE_PACKED32,
60 SDL_PIXELTYPE_ARRAYU8,
61 SDL_PIXELTYPE_ARRAYU16,
62 SDL_PIXELTYPE_ARRAYU32,
63 SDL_PIXELTYPE_ARRAYF16,
64 SDL_PIXELTYPE_ARRAYF32
106 SDL_PACKEDLAYOUT_NONE,
107 SDL_PACKEDLAYOUT_332,
108 SDL_PACKEDLAYOUT_4444,
109 SDL_PACKEDLAYOUT_1555,
110 SDL_PACKEDLAYOUT_5551,
111 SDL_PACKEDLAYOUT_565,
112 SDL_PACKEDLAYOUT_8888,
113 SDL_PACKEDLAYOUT_2101010,
114 SDL_PACKEDLAYOUT_1010102
117 #define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D)
119 #define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \
120 ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \
121 ((bits) << 8) | ((bytes) << 0))
123 #define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F)
124 #define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F)
125 #define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F)
126 #define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F)
127 #define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF)
128 #define SDL_BYTESPERPIXEL(X) \
129 (SDL_ISPIXELFORMAT_FOURCC(X) ? \
130 ((((X) == SDL_PIXELFORMAT_YUY2) || \
131 ((X) == SDL_PIXELFORMAT_UYVY) || \
132 ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF))
134 #define SDL_ISPIXELFORMAT_INDEXED(format) \
135 (!SDL_ISPIXELFORMAT_FOURCC(format) && \
136 ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \
137 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \
138 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8)))
140 #define SDL_ISPIXELFORMAT_PACKED(format) \
141 (!SDL_ISPIXELFORMAT_FOURCC(format) && \
142 ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED8) || \
143 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED16) || \
144 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_PACKED32)))
146 #define SDL_ISPIXELFORMAT_ARRAY(format) \
147 (!SDL_ISPIXELFORMAT_FOURCC(format) && \
148 ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU8) || \
149 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU16) || \
150 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYU32) || \
151 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF16) || \
152 (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_ARRAYF32)))
154 #define SDL_ISPIXELFORMAT_ALPHA(format) \
155 ((SDL_ISPIXELFORMAT_PACKED(format) && \
156 ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \
157 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \
158 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \
159 (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) || \
160 (SDL_ISPIXELFORMAT_ARRAY(format) && \
161 ((SDL_PIXELORDER(format) == SDL_ARRAYORDER_ARGB) || \
162 (SDL_PIXELORDER(format) == SDL_ARRAYORDER_RGBA) || \
163 (SDL_PIXELORDER(format) == SDL_ARRAYORDER_ABGR) || \
164 (SDL_PIXELORDER(format) == SDL_ARRAYORDER_BGRA))))
167 #define SDL_ISPIXELFORMAT_FOURCC(format) \
168 ((format) && (SDL_PIXELFLAG(format) != 1))
173 SDL_PIXELFORMAT_UNKNOWN,
174 SDL_PIXELFORMAT_INDEX1LSB =
175 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0,
177 SDL_PIXELFORMAT_INDEX1MSB =
178 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0,
180 SDL_PIXELFORMAT_INDEX4LSB =
181 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0,
183 SDL_PIXELFORMAT_INDEX4MSB =
184 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0,
186 SDL_PIXELFORMAT_INDEX8 =
187 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1),
188 SDL_PIXELFORMAT_RGB332 =
189 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB,
190 SDL_PACKEDLAYOUT_332, 8, 1),
191 SDL_PIXELFORMAT_XRGB4444 =
192 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
193 SDL_PACKEDLAYOUT_4444, 12, 2),
194 SDL_PIXELFORMAT_RGB444 = SDL_PIXELFORMAT_XRGB4444,
195 SDL_PIXELFORMAT_XBGR4444 =
196 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
197 SDL_PACKEDLAYOUT_4444, 12, 2),
198 SDL_PIXELFORMAT_BGR444 = SDL_PIXELFORMAT_XBGR4444,
199 SDL_PIXELFORMAT_XRGB1555 =
200 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
201 SDL_PACKEDLAYOUT_1555, 15, 2),
202 SDL_PIXELFORMAT_RGB555 = SDL_PIXELFORMAT_XRGB1555,
203 SDL_PIXELFORMAT_XBGR1555 =
204 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
205 SDL_PACKEDLAYOUT_1555, 15, 2),
206 SDL_PIXELFORMAT_BGR555 = SDL_PIXELFORMAT_XBGR1555,
207 SDL_PIXELFORMAT_ARGB4444 =
208 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
209 SDL_PACKEDLAYOUT_4444, 16, 2),
210 SDL_PIXELFORMAT_RGBA4444 =
211 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
212 SDL_PACKEDLAYOUT_4444, 16, 2),
213 SDL_PIXELFORMAT_ABGR4444 =
214 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
215 SDL_PACKEDLAYOUT_4444, 16, 2),
216 SDL_PIXELFORMAT_BGRA4444 =
217 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
218 SDL_PACKEDLAYOUT_4444, 16, 2),
219 SDL_PIXELFORMAT_ARGB1555 =
220 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB,
221 SDL_PACKEDLAYOUT_1555, 16, 2),
222 SDL_PIXELFORMAT_RGBA5551 =
223 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA,
224 SDL_PACKEDLAYOUT_5551, 16, 2),
225 SDL_PIXELFORMAT_ABGR1555 =
226 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR,
227 SDL_PACKEDLAYOUT_1555, 16, 2),
228 SDL_PIXELFORMAT_BGRA5551 =
229 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA,
230 SDL_PACKEDLAYOUT_5551, 16, 2),
231 SDL_PIXELFORMAT_RGB565 =
232 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB,
233 SDL_PACKEDLAYOUT_565, 16, 2),
234 SDL_PIXELFORMAT_BGR565 =
235 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR,
236 SDL_PACKEDLAYOUT_565, 16, 2),
237 SDL_PIXELFORMAT_RGB24 =
238 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0,
240 SDL_PIXELFORMAT_BGR24 =
241 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0,
243 SDL_PIXELFORMAT_XRGB8888 =
244 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB,
245 SDL_PACKEDLAYOUT_8888, 24, 4),
246 SDL_PIXELFORMAT_RGB888 = SDL_PIXELFORMAT_XRGB8888,
247 SDL_PIXELFORMAT_RGBX8888 =
248 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX,
249 SDL_PACKEDLAYOUT_8888, 24, 4),
250 SDL_PIXELFORMAT_XBGR8888 =
251 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR,
252 SDL_PACKEDLAYOUT_8888, 24, 4),
253 SDL_PIXELFORMAT_BGR888 = SDL_PIXELFORMAT_XBGR8888,
254 SDL_PIXELFORMAT_BGRX8888 =
255 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX,
256 SDL_PACKEDLAYOUT_8888, 24, 4),
257 SDL_PIXELFORMAT_ARGB8888 =
258 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
259 SDL_PACKEDLAYOUT_8888, 32, 4),
260 SDL_PIXELFORMAT_RGBA8888 =
261 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA,
262 SDL_PACKEDLAYOUT_8888, 32, 4),
263 SDL_PIXELFORMAT_ABGR8888 =
264 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR,
265 SDL_PACKEDLAYOUT_8888, 32, 4),
266 SDL_PIXELFORMAT_BGRA8888 =
267 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA,
268 SDL_PACKEDLAYOUT_8888, 32, 4),
269 SDL_PIXELFORMAT_ARGB2101010 =
270 SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB,
271 SDL_PACKEDLAYOUT_2101010, 32, 4),
274 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
275 SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_RGBA8888,
276 SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_ARGB8888,
277 SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_BGRA8888,
278 SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_ABGR8888,
280 SDL_PIXELFORMAT_RGBA32 = SDL_PIXELFORMAT_ABGR8888,
281 SDL_PIXELFORMAT_ARGB32 = SDL_PIXELFORMAT_BGRA8888,
282 SDL_PIXELFORMAT_BGRA32 = SDL_PIXELFORMAT_ARGB8888,
283 SDL_PIXELFORMAT_ABGR32 = SDL_PIXELFORMAT_RGBA8888,
287 SDL_DEFINE_PIXELFOURCC(
'Y',
'V',
'1',
'2'),
289 SDL_DEFINE_PIXELFOURCC(
'I',
'Y',
'U',
'V'),
291 SDL_DEFINE_PIXELFOURCC(
'Y',
'U',
'Y',
'2'),
293 SDL_DEFINE_PIXELFOURCC(
'U',
'Y',
'V',
'Y'),
295 SDL_DEFINE_PIXELFOURCC(
'Y',
'V',
'Y',
'U'),
297 SDL_DEFINE_PIXELFOURCC(
'N',
'V',
'1',
'2'),
299 SDL_DEFINE_PIXELFOURCC(
'N',
'V',
'2',
'1'),
301 SDL_DEFINE_PIXELFOURCC(
'O',
'E',
'S',
' ')
311 #define SDL_Colour SDL_Color
420 int firstcolor,
int ncolors);
435 Uint8 r, Uint8 g, Uint8 b);
443 Uint8 r, Uint8 g, Uint8 b,
453 Uint8 * r, Uint8 * g, Uint8 * b);
462 Uint8 * r, Uint8 * g, Uint8 * b,
DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, const SDL_PixelFormat *format, Uint8 *r, Uint8 *g, Uint8 *b, Uint8 *a)
Get the RGBA components from a pixel of the specified format.
struct SDL_PixelFormat SDL_PixelFormat
DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat *format, Uint8 r, Uint8 g, Uint8 b)
Maps an RGB triple to an opaque pixel value for a given pixel format.
DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, const SDL_PixelFormat *format, Uint8 *r, Uint8 *g, Uint8 *b)
Get the RGB components from a pixel of the specified format.
DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette *palette)
Free a palette created with SDL_AllocPalette().
SDL_PixelType
Definition: SDL_pixels.h:52
DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette *palette, const SDL_Color *colors, int firstcolor, int ncolors)
Set a range of colors in a palette.
SDL_PackedLayout
Definition: SDL_pixels.h:105
SDL_BitmapOrder
Definition: SDL_pixels.h:69
DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, Uint32 Rmask, Uint32 Gmask, Uint32 Bmask, Uint32 Amask)
Convert a bpp and RGBA masks to an enumerated pixel format.
DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format)
Free an SDL_PixelFormat structure.
DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 *ramp)
Calculate a 256 entry gamma ramp for a gamma value.
SDL_ArrayOrder
Definition: SDL_pixels.h:93
DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat *format, Uint8 r, Uint8 g, Uint8 b, Uint8 a)
Maps an RGBA quadruple to a pixel value for a given pixel format.
SDL_PixelFormatEnum
Definition: SDL_pixels.h:172
@ SDL_PIXELFORMAT_EXTERNAL_OES
Definition: SDL_pixels.h:300
@ SDL_PIXELFORMAT_YVYU
Definition: SDL_pixels.h:294
@ SDL_PIXELFORMAT_UYVY
Definition: SDL_pixels.h:292
@ SDL_PIXELFORMAT_YV12
Definition: SDL_pixels.h:286
@ SDL_PIXELFORMAT_YUY2
Definition: SDL_pixels.h:290
@ SDL_PIXELFORMAT_NV12
Definition: SDL_pixels.h:296
@ SDL_PIXELFORMAT_NV21
Definition: SDL_pixels.h:298
@ SDL_PIXELFORMAT_IYUV
Definition: SDL_pixels.h:288
DECLSPEC SDL_PixelFormat *SDLCALL SDL_AllocFormat(Uint32 pixel_format)
Create an SDL_PixelFormat structure from a pixel format enum.
DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors)
Create a palette structure with the specified number of color entries.
DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, int *bpp, Uint32 *Rmask, Uint32 *Gmask, Uint32 *Bmask, Uint32 *Amask)
Convert one of the enumerated pixel formats to a bpp and RGBA masks.
SDL_PackedOrder
Definition: SDL_pixels.h:77
DECLSPEC const char *SDLCALL SDL_GetPixelFormatName(Uint32 format)
Get the human readable name of a pixel format.
DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat *format, SDL_Palette *palette)
Set the palette for a pixel format structure.
Definition: SDL_pixels.h:305
Definition: SDL_pixels.h:314