SDL standard library
SDL_pixels.h@0:dda4f4550403, 2016-09-07 (annotated)
- Committer:
- miruga27
- Date:
- Wed Sep 07 18:46:53 2016 +0000
- Revision:
- 0:dda4f4550403
7/09/2016;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
miruga27 | 0:dda4f4550403 | 1 | /* |
miruga27 | 0:dda4f4550403 | 2 | Simple DirectMedia Layer |
miruga27 | 0:dda4f4550403 | 3 | Copyright (C) 1997-2014 Sam Lantinga <slouken@libsdl.org> |
miruga27 | 0:dda4f4550403 | 4 | |
miruga27 | 0:dda4f4550403 | 5 | This software is provided 'as-is', without any express or implied |
miruga27 | 0:dda4f4550403 | 6 | warranty. In no event will the authors be held liable for any damages |
miruga27 | 0:dda4f4550403 | 7 | arising from the use of this software. |
miruga27 | 0:dda4f4550403 | 8 | |
miruga27 | 0:dda4f4550403 | 9 | Permission is granted to anyone to use this software for any purpose, |
miruga27 | 0:dda4f4550403 | 10 | including commercial applications, and to alter it and redistribute it |
miruga27 | 0:dda4f4550403 | 11 | freely, subject to the following restrictions: |
miruga27 | 0:dda4f4550403 | 12 | |
miruga27 | 0:dda4f4550403 | 13 | 1. The origin of this software must not be misrepresented; you must not |
miruga27 | 0:dda4f4550403 | 14 | claim that you wrote the original software. If you use this software |
miruga27 | 0:dda4f4550403 | 15 | in a product, an acknowledgment in the product documentation would be |
miruga27 | 0:dda4f4550403 | 16 | appreciated but is not required. |
miruga27 | 0:dda4f4550403 | 17 | 2. Altered source versions must be plainly marked as such, and must not be |
miruga27 | 0:dda4f4550403 | 18 | misrepresented as being the original software. |
miruga27 | 0:dda4f4550403 | 19 | 3. This notice may not be removed or altered from any source distribution. |
miruga27 | 0:dda4f4550403 | 20 | */ |
miruga27 | 0:dda4f4550403 | 21 | |
miruga27 | 0:dda4f4550403 | 22 | /** |
miruga27 | 0:dda4f4550403 | 23 | * \file SDL_pixels.h |
miruga27 | 0:dda4f4550403 | 24 | * |
miruga27 | 0:dda4f4550403 | 25 | * Header for the enumerated pixel format definitions. |
miruga27 | 0:dda4f4550403 | 26 | */ |
miruga27 | 0:dda4f4550403 | 27 | |
miruga27 | 0:dda4f4550403 | 28 | #ifndef _SDL_pixels_h |
miruga27 | 0:dda4f4550403 | 29 | #define _SDL_pixels_h |
miruga27 | 0:dda4f4550403 | 30 | |
miruga27 | 0:dda4f4550403 | 31 | #include "SDL_stdinc.h" |
miruga27 | 0:dda4f4550403 | 32 | |
miruga27 | 0:dda4f4550403 | 33 | #include "begin_code.h" |
miruga27 | 0:dda4f4550403 | 34 | /* Set up for C function definitions, even when using C++ */ |
miruga27 | 0:dda4f4550403 | 35 | #ifdef __cplusplus |
miruga27 | 0:dda4f4550403 | 36 | extern "C" { |
miruga27 | 0:dda4f4550403 | 37 | #endif |
miruga27 | 0:dda4f4550403 | 38 | |
miruga27 | 0:dda4f4550403 | 39 | /** |
miruga27 | 0:dda4f4550403 | 40 | * \name Transparency definitions |
miruga27 | 0:dda4f4550403 | 41 | * |
miruga27 | 0:dda4f4550403 | 42 | * These define alpha as the opacity of a surface. |
miruga27 | 0:dda4f4550403 | 43 | */ |
miruga27 | 0:dda4f4550403 | 44 | /* @{ */ |
miruga27 | 0:dda4f4550403 | 45 | #define SDL_ALPHA_OPAQUE 255 |
miruga27 | 0:dda4f4550403 | 46 | #define SDL_ALPHA_TRANSPARENT 0 |
miruga27 | 0:dda4f4550403 | 47 | /* @} */ |
miruga27 | 0:dda4f4550403 | 48 | |
miruga27 | 0:dda4f4550403 | 49 | /** Pixel type. */ |
miruga27 | 0:dda4f4550403 | 50 | enum |
miruga27 | 0:dda4f4550403 | 51 | { |
miruga27 | 0:dda4f4550403 | 52 | SDL_PIXELTYPE_UNKNOWN, |
miruga27 | 0:dda4f4550403 | 53 | SDL_PIXELTYPE_INDEX1, |
miruga27 | 0:dda4f4550403 | 54 | SDL_PIXELTYPE_INDEX4, |
miruga27 | 0:dda4f4550403 | 55 | SDL_PIXELTYPE_INDEX8, |
miruga27 | 0:dda4f4550403 | 56 | SDL_PIXELTYPE_PACKED8, |
miruga27 | 0:dda4f4550403 | 57 | SDL_PIXELTYPE_PACKED16, |
miruga27 | 0:dda4f4550403 | 58 | SDL_PIXELTYPE_PACKED32, |
miruga27 | 0:dda4f4550403 | 59 | SDL_PIXELTYPE_ARRAYU8, |
miruga27 | 0:dda4f4550403 | 60 | SDL_PIXELTYPE_ARRAYU16, |
miruga27 | 0:dda4f4550403 | 61 | SDL_PIXELTYPE_ARRAYU32, |
miruga27 | 0:dda4f4550403 | 62 | SDL_PIXELTYPE_ARRAYF16, |
miruga27 | 0:dda4f4550403 | 63 | SDL_PIXELTYPE_ARRAYF32 |
miruga27 | 0:dda4f4550403 | 64 | }; |
miruga27 | 0:dda4f4550403 | 65 | |
miruga27 | 0:dda4f4550403 | 66 | /** Bitmap pixel order, high bit -> low bit. */ |
miruga27 | 0:dda4f4550403 | 67 | enum |
miruga27 | 0:dda4f4550403 | 68 | { |
miruga27 | 0:dda4f4550403 | 69 | SDL_BITMAPORDER_NONE, |
miruga27 | 0:dda4f4550403 | 70 | SDL_BITMAPORDER_4321, |
miruga27 | 0:dda4f4550403 | 71 | SDL_BITMAPORDER_1234 |
miruga27 | 0:dda4f4550403 | 72 | }; |
miruga27 | 0:dda4f4550403 | 73 | |
miruga27 | 0:dda4f4550403 | 74 | /** Packed component order, high bit -> low bit. */ |
miruga27 | 0:dda4f4550403 | 75 | enum |
miruga27 | 0:dda4f4550403 | 76 | { |
miruga27 | 0:dda4f4550403 | 77 | SDL_PACKEDORDER_NONE, |
miruga27 | 0:dda4f4550403 | 78 | SDL_PACKEDORDER_XRGB, |
miruga27 | 0:dda4f4550403 | 79 | SDL_PACKEDORDER_RGBX, |
miruga27 | 0:dda4f4550403 | 80 | SDL_PACKEDORDER_ARGB, |
miruga27 | 0:dda4f4550403 | 81 | SDL_PACKEDORDER_RGBA, |
miruga27 | 0:dda4f4550403 | 82 | SDL_PACKEDORDER_XBGR, |
miruga27 | 0:dda4f4550403 | 83 | SDL_PACKEDORDER_BGRX, |
miruga27 | 0:dda4f4550403 | 84 | SDL_PACKEDORDER_ABGR, |
miruga27 | 0:dda4f4550403 | 85 | SDL_PACKEDORDER_BGRA |
miruga27 | 0:dda4f4550403 | 86 | }; |
miruga27 | 0:dda4f4550403 | 87 | |
miruga27 | 0:dda4f4550403 | 88 | /** Array component order, low byte -> high byte. */ |
miruga27 | 0:dda4f4550403 | 89 | enum |
miruga27 | 0:dda4f4550403 | 90 | { |
miruga27 | 0:dda4f4550403 | 91 | SDL_ARRAYORDER_NONE, |
miruga27 | 0:dda4f4550403 | 92 | SDL_ARRAYORDER_RGB, |
miruga27 | 0:dda4f4550403 | 93 | SDL_ARRAYORDER_RGBA, |
miruga27 | 0:dda4f4550403 | 94 | SDL_ARRAYORDER_ARGB, |
miruga27 | 0:dda4f4550403 | 95 | SDL_ARRAYORDER_BGR, |
miruga27 | 0:dda4f4550403 | 96 | SDL_ARRAYORDER_BGRA, |
miruga27 | 0:dda4f4550403 | 97 | SDL_ARRAYORDER_ABGR |
miruga27 | 0:dda4f4550403 | 98 | }; |
miruga27 | 0:dda4f4550403 | 99 | |
miruga27 | 0:dda4f4550403 | 100 | /** Packed component layout. */ |
miruga27 | 0:dda4f4550403 | 101 | enum |
miruga27 | 0:dda4f4550403 | 102 | { |
miruga27 | 0:dda4f4550403 | 103 | SDL_PACKEDLAYOUT_NONE, |
miruga27 | 0:dda4f4550403 | 104 | SDL_PACKEDLAYOUT_332, |
miruga27 | 0:dda4f4550403 | 105 | SDL_PACKEDLAYOUT_4444, |
miruga27 | 0:dda4f4550403 | 106 | SDL_PACKEDLAYOUT_1555, |
miruga27 | 0:dda4f4550403 | 107 | SDL_PACKEDLAYOUT_5551, |
miruga27 | 0:dda4f4550403 | 108 | SDL_PACKEDLAYOUT_565, |
miruga27 | 0:dda4f4550403 | 109 | SDL_PACKEDLAYOUT_8888, |
miruga27 | 0:dda4f4550403 | 110 | SDL_PACKEDLAYOUT_2101010, |
miruga27 | 0:dda4f4550403 | 111 | SDL_PACKEDLAYOUT_1010102 |
miruga27 | 0:dda4f4550403 | 112 | }; |
miruga27 | 0:dda4f4550403 | 113 | |
miruga27 | 0:dda4f4550403 | 114 | #define SDL_DEFINE_PIXELFOURCC(A, B, C, D) SDL_FOURCC(A, B, C, D) |
miruga27 | 0:dda4f4550403 | 115 | |
miruga27 | 0:dda4f4550403 | 116 | #define SDL_DEFINE_PIXELFORMAT(type, order, layout, bits, bytes) \ |
miruga27 | 0:dda4f4550403 | 117 | ((1 << 28) | ((type) << 24) | ((order) << 20) | ((layout) << 16) | \ |
miruga27 | 0:dda4f4550403 | 118 | ((bits) << 8) | ((bytes) << 0)) |
miruga27 | 0:dda4f4550403 | 119 | |
miruga27 | 0:dda4f4550403 | 120 | #define SDL_PIXELFLAG(X) (((X) >> 28) & 0x0F) |
miruga27 | 0:dda4f4550403 | 121 | #define SDL_PIXELTYPE(X) (((X) >> 24) & 0x0F) |
miruga27 | 0:dda4f4550403 | 122 | #define SDL_PIXELORDER(X) (((X) >> 20) & 0x0F) |
miruga27 | 0:dda4f4550403 | 123 | #define SDL_PIXELLAYOUT(X) (((X) >> 16) & 0x0F) |
miruga27 | 0:dda4f4550403 | 124 | #define SDL_BITSPERPIXEL(X) (((X) >> 8) & 0xFF) |
miruga27 | 0:dda4f4550403 | 125 | #define SDL_BYTESPERPIXEL(X) \ |
miruga27 | 0:dda4f4550403 | 126 | (SDL_ISPIXELFORMAT_FOURCC(X) ? \ |
miruga27 | 0:dda4f4550403 | 127 | ((((X) == SDL_PIXELFORMAT_YUY2) || \ |
miruga27 | 0:dda4f4550403 | 128 | ((X) == SDL_PIXELFORMAT_UYVY) || \ |
miruga27 | 0:dda4f4550403 | 129 | ((X) == SDL_PIXELFORMAT_YVYU)) ? 2 : 1) : (((X) >> 0) & 0xFF)) |
miruga27 | 0:dda4f4550403 | 130 | |
miruga27 | 0:dda4f4550403 | 131 | #define SDL_ISPIXELFORMAT_INDEXED(format) \ |
miruga27 | 0:dda4f4550403 | 132 | (!SDL_ISPIXELFORMAT_FOURCC(format) && \ |
miruga27 | 0:dda4f4550403 | 133 | ((SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX1) || \ |
miruga27 | 0:dda4f4550403 | 134 | (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX4) || \ |
miruga27 | 0:dda4f4550403 | 135 | (SDL_PIXELTYPE(format) == SDL_PIXELTYPE_INDEX8))) |
miruga27 | 0:dda4f4550403 | 136 | |
miruga27 | 0:dda4f4550403 | 137 | #define SDL_ISPIXELFORMAT_ALPHA(format) \ |
miruga27 | 0:dda4f4550403 | 138 | (!SDL_ISPIXELFORMAT_FOURCC(format) && \ |
miruga27 | 0:dda4f4550403 | 139 | ((SDL_PIXELORDER(format) == SDL_PACKEDORDER_ARGB) || \ |
miruga27 | 0:dda4f4550403 | 140 | (SDL_PIXELORDER(format) == SDL_PACKEDORDER_RGBA) || \ |
miruga27 | 0:dda4f4550403 | 141 | (SDL_PIXELORDER(format) == SDL_PACKEDORDER_ABGR) || \ |
miruga27 | 0:dda4f4550403 | 142 | (SDL_PIXELORDER(format) == SDL_PACKEDORDER_BGRA))) |
miruga27 | 0:dda4f4550403 | 143 | |
miruga27 | 0:dda4f4550403 | 144 | /* The flag is set to 1 because 0x1? is not in the printable ASCII range */ |
miruga27 | 0:dda4f4550403 | 145 | #define SDL_ISPIXELFORMAT_FOURCC(format) \ |
miruga27 | 0:dda4f4550403 | 146 | ((format) && (SDL_PIXELFLAG(format) != 1)) |
miruga27 | 0:dda4f4550403 | 147 | |
miruga27 | 0:dda4f4550403 | 148 | /* Note: If you modify this list, update SDL_GetPixelFormatName() */ |
miruga27 | 0:dda4f4550403 | 149 | enum |
miruga27 | 0:dda4f4550403 | 150 | { |
miruga27 | 0:dda4f4550403 | 151 | SDL_PIXELFORMAT_UNKNOWN, |
miruga27 | 0:dda4f4550403 | 152 | SDL_PIXELFORMAT_INDEX1LSB = |
miruga27 | 0:dda4f4550403 | 153 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_4321, 0, |
miruga27 | 0:dda4f4550403 | 154 | 1, 0), |
miruga27 | 0:dda4f4550403 | 155 | SDL_PIXELFORMAT_INDEX1MSB = |
miruga27 | 0:dda4f4550403 | 156 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX1, SDL_BITMAPORDER_1234, 0, |
miruga27 | 0:dda4f4550403 | 157 | 1, 0), |
miruga27 | 0:dda4f4550403 | 158 | SDL_PIXELFORMAT_INDEX4LSB = |
miruga27 | 0:dda4f4550403 | 159 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_4321, 0, |
miruga27 | 0:dda4f4550403 | 160 | 4, 0), |
miruga27 | 0:dda4f4550403 | 161 | SDL_PIXELFORMAT_INDEX4MSB = |
miruga27 | 0:dda4f4550403 | 162 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX4, SDL_BITMAPORDER_1234, 0, |
miruga27 | 0:dda4f4550403 | 163 | 4, 0), |
miruga27 | 0:dda4f4550403 | 164 | SDL_PIXELFORMAT_INDEX8 = |
miruga27 | 0:dda4f4550403 | 165 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_INDEX8, 0, 0, 8, 1), |
miruga27 | 0:dda4f4550403 | 166 | SDL_PIXELFORMAT_RGB332 = |
miruga27 | 0:dda4f4550403 | 167 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED8, SDL_PACKEDORDER_XRGB, |
miruga27 | 0:dda4f4550403 | 168 | SDL_PACKEDLAYOUT_332, 8, 1), |
miruga27 | 0:dda4f4550403 | 169 | SDL_PIXELFORMAT_RGB444 = |
miruga27 | 0:dda4f4550403 | 170 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, |
miruga27 | 0:dda4f4550403 | 171 | SDL_PACKEDLAYOUT_4444, 12, 2), |
miruga27 | 0:dda4f4550403 | 172 | SDL_PIXELFORMAT_RGB555 = |
miruga27 | 0:dda4f4550403 | 173 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, |
miruga27 | 0:dda4f4550403 | 174 | SDL_PACKEDLAYOUT_1555, 15, 2), |
miruga27 | 0:dda4f4550403 | 175 | SDL_PIXELFORMAT_BGR555 = |
miruga27 | 0:dda4f4550403 | 176 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, |
miruga27 | 0:dda4f4550403 | 177 | SDL_PACKEDLAYOUT_1555, 15, 2), |
miruga27 | 0:dda4f4550403 | 178 | SDL_PIXELFORMAT_ARGB4444 = |
miruga27 | 0:dda4f4550403 | 179 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, |
miruga27 | 0:dda4f4550403 | 180 | SDL_PACKEDLAYOUT_4444, 16, 2), |
miruga27 | 0:dda4f4550403 | 181 | SDL_PIXELFORMAT_RGBA4444 = |
miruga27 | 0:dda4f4550403 | 182 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, |
miruga27 | 0:dda4f4550403 | 183 | SDL_PACKEDLAYOUT_4444, 16, 2), |
miruga27 | 0:dda4f4550403 | 184 | SDL_PIXELFORMAT_ABGR4444 = |
miruga27 | 0:dda4f4550403 | 185 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, |
miruga27 | 0:dda4f4550403 | 186 | SDL_PACKEDLAYOUT_4444, 16, 2), |
miruga27 | 0:dda4f4550403 | 187 | SDL_PIXELFORMAT_BGRA4444 = |
miruga27 | 0:dda4f4550403 | 188 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, |
miruga27 | 0:dda4f4550403 | 189 | SDL_PACKEDLAYOUT_4444, 16, 2), |
miruga27 | 0:dda4f4550403 | 190 | SDL_PIXELFORMAT_ARGB1555 = |
miruga27 | 0:dda4f4550403 | 191 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ARGB, |
miruga27 | 0:dda4f4550403 | 192 | SDL_PACKEDLAYOUT_1555, 16, 2), |
miruga27 | 0:dda4f4550403 | 193 | SDL_PIXELFORMAT_RGBA5551 = |
miruga27 | 0:dda4f4550403 | 194 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_RGBA, |
miruga27 | 0:dda4f4550403 | 195 | SDL_PACKEDLAYOUT_5551, 16, 2), |
miruga27 | 0:dda4f4550403 | 196 | SDL_PIXELFORMAT_ABGR1555 = |
miruga27 | 0:dda4f4550403 | 197 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_ABGR, |
miruga27 | 0:dda4f4550403 | 198 | SDL_PACKEDLAYOUT_1555, 16, 2), |
miruga27 | 0:dda4f4550403 | 199 | SDL_PIXELFORMAT_BGRA5551 = |
miruga27 | 0:dda4f4550403 | 200 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_BGRA, |
miruga27 | 0:dda4f4550403 | 201 | SDL_PACKEDLAYOUT_5551, 16, 2), |
miruga27 | 0:dda4f4550403 | 202 | SDL_PIXELFORMAT_RGB565 = |
miruga27 | 0:dda4f4550403 | 203 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XRGB, |
miruga27 | 0:dda4f4550403 | 204 | SDL_PACKEDLAYOUT_565, 16, 2), |
miruga27 | 0:dda4f4550403 | 205 | SDL_PIXELFORMAT_BGR565 = |
miruga27 | 0:dda4f4550403 | 206 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED16, SDL_PACKEDORDER_XBGR, |
miruga27 | 0:dda4f4550403 | 207 | SDL_PACKEDLAYOUT_565, 16, 2), |
miruga27 | 0:dda4f4550403 | 208 | SDL_PIXELFORMAT_RGB24 = |
miruga27 | 0:dda4f4550403 | 209 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_RGB, 0, |
miruga27 | 0:dda4f4550403 | 210 | 24, 3), |
miruga27 | 0:dda4f4550403 | 211 | SDL_PIXELFORMAT_BGR24 = |
miruga27 | 0:dda4f4550403 | 212 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_ARRAYU8, SDL_ARRAYORDER_BGR, 0, |
miruga27 | 0:dda4f4550403 | 213 | 24, 3), |
miruga27 | 0:dda4f4550403 | 214 | SDL_PIXELFORMAT_RGB888 = |
miruga27 | 0:dda4f4550403 | 215 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XRGB, |
miruga27 | 0:dda4f4550403 | 216 | SDL_PACKEDLAYOUT_8888, 24, 4), |
miruga27 | 0:dda4f4550403 | 217 | SDL_PIXELFORMAT_RGBX8888 = |
miruga27 | 0:dda4f4550403 | 218 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBX, |
miruga27 | 0:dda4f4550403 | 219 | SDL_PACKEDLAYOUT_8888, 24, 4), |
miruga27 | 0:dda4f4550403 | 220 | SDL_PIXELFORMAT_BGR888 = |
miruga27 | 0:dda4f4550403 | 221 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_XBGR, |
miruga27 | 0:dda4f4550403 | 222 | SDL_PACKEDLAYOUT_8888, 24, 4), |
miruga27 | 0:dda4f4550403 | 223 | SDL_PIXELFORMAT_BGRX8888 = |
miruga27 | 0:dda4f4550403 | 224 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRX, |
miruga27 | 0:dda4f4550403 | 225 | SDL_PACKEDLAYOUT_8888, 24, 4), |
miruga27 | 0:dda4f4550403 | 226 | SDL_PIXELFORMAT_ARGB8888 = |
miruga27 | 0:dda4f4550403 | 227 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, |
miruga27 | 0:dda4f4550403 | 228 | SDL_PACKEDLAYOUT_8888, 32, 4), |
miruga27 | 0:dda4f4550403 | 229 | SDL_PIXELFORMAT_RGBA8888 = |
miruga27 | 0:dda4f4550403 | 230 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_RGBA, |
miruga27 | 0:dda4f4550403 | 231 | SDL_PACKEDLAYOUT_8888, 32, 4), |
miruga27 | 0:dda4f4550403 | 232 | SDL_PIXELFORMAT_ABGR8888 = |
miruga27 | 0:dda4f4550403 | 233 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ABGR, |
miruga27 | 0:dda4f4550403 | 234 | SDL_PACKEDLAYOUT_8888, 32, 4), |
miruga27 | 0:dda4f4550403 | 235 | SDL_PIXELFORMAT_BGRA8888 = |
miruga27 | 0:dda4f4550403 | 236 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_BGRA, |
miruga27 | 0:dda4f4550403 | 237 | SDL_PACKEDLAYOUT_8888, 32, 4), |
miruga27 | 0:dda4f4550403 | 238 | SDL_PIXELFORMAT_ARGB2101010 = |
miruga27 | 0:dda4f4550403 | 239 | SDL_DEFINE_PIXELFORMAT(SDL_PIXELTYPE_PACKED32, SDL_PACKEDORDER_ARGB, |
miruga27 | 0:dda4f4550403 | 240 | SDL_PACKEDLAYOUT_2101010, 32, 4), |
miruga27 | 0:dda4f4550403 | 241 | |
miruga27 | 0:dda4f4550403 | 242 | SDL_PIXELFORMAT_YV12 = /**< Planar mode: Y + V + U (3 planes) */ |
miruga27 | 0:dda4f4550403 | 243 | SDL_DEFINE_PIXELFOURCC('Y', 'V', '1', '2'), |
miruga27 | 0:dda4f4550403 | 244 | SDL_PIXELFORMAT_IYUV = /**< Planar mode: Y + U + V (3 planes) */ |
miruga27 | 0:dda4f4550403 | 245 | SDL_DEFINE_PIXELFOURCC('I', 'Y', 'U', 'V'), |
miruga27 | 0:dda4f4550403 | 246 | SDL_PIXELFORMAT_YUY2 = /**< Packed mode: Y0+U0+Y1+V0 (1 plane) */ |
miruga27 | 0:dda4f4550403 | 247 | SDL_DEFINE_PIXELFOURCC('Y', 'U', 'Y', '2'), |
miruga27 | 0:dda4f4550403 | 248 | SDL_PIXELFORMAT_UYVY = /**< Packed mode: U0+Y0+V0+Y1 (1 plane) */ |
miruga27 | 0:dda4f4550403 | 249 | SDL_DEFINE_PIXELFOURCC('U', 'Y', 'V', 'Y'), |
miruga27 | 0:dda4f4550403 | 250 | SDL_PIXELFORMAT_YVYU = /**< Packed mode: Y0+V0+Y1+U0 (1 plane) */ |
miruga27 | 0:dda4f4550403 | 251 | SDL_DEFINE_PIXELFOURCC('Y', 'V', 'Y', 'U') |
miruga27 | 0:dda4f4550403 | 252 | }; |
miruga27 | 0:dda4f4550403 | 253 | |
miruga27 | 0:dda4f4550403 | 254 | typedef struct SDL_Color |
miruga27 | 0:dda4f4550403 | 255 | { |
miruga27 | 0:dda4f4550403 | 256 | Uint8 r; |
miruga27 | 0:dda4f4550403 | 257 | Uint8 g; |
miruga27 | 0:dda4f4550403 | 258 | Uint8 b; |
miruga27 | 0:dda4f4550403 | 259 | Uint8 a; |
miruga27 | 0:dda4f4550403 | 260 | } SDL_Color; |
miruga27 | 0:dda4f4550403 | 261 | #define SDL_Colour SDL_Color |
miruga27 | 0:dda4f4550403 | 262 | |
miruga27 | 0:dda4f4550403 | 263 | typedef struct SDL_Palette |
miruga27 | 0:dda4f4550403 | 264 | { |
miruga27 | 0:dda4f4550403 | 265 | int ncolors; |
miruga27 | 0:dda4f4550403 | 266 | SDL_Color *colors; |
miruga27 | 0:dda4f4550403 | 267 | Uint32 version; |
miruga27 | 0:dda4f4550403 | 268 | int refcount; |
miruga27 | 0:dda4f4550403 | 269 | } SDL_Palette; |
miruga27 | 0:dda4f4550403 | 270 | |
miruga27 | 0:dda4f4550403 | 271 | /** |
miruga27 | 0:dda4f4550403 | 272 | * \note Everything in the pixel format structure is read-only. |
miruga27 | 0:dda4f4550403 | 273 | */ |
miruga27 | 0:dda4f4550403 | 274 | typedef struct SDL_PixelFormat |
miruga27 | 0:dda4f4550403 | 275 | { |
miruga27 | 0:dda4f4550403 | 276 | Uint32 format; |
miruga27 | 0:dda4f4550403 | 277 | SDL_Palette *palette; |
miruga27 | 0:dda4f4550403 | 278 | Uint8 BitsPerPixel; |
miruga27 | 0:dda4f4550403 | 279 | Uint8 BytesPerPixel; |
miruga27 | 0:dda4f4550403 | 280 | Uint8 padding[2]; |
miruga27 | 0:dda4f4550403 | 281 | Uint32 Rmask; |
miruga27 | 0:dda4f4550403 | 282 | Uint32 Gmask; |
miruga27 | 0:dda4f4550403 | 283 | Uint32 Bmask; |
miruga27 | 0:dda4f4550403 | 284 | Uint32 Amask; |
miruga27 | 0:dda4f4550403 | 285 | Uint8 Rloss; |
miruga27 | 0:dda4f4550403 | 286 | Uint8 Gloss; |
miruga27 | 0:dda4f4550403 | 287 | Uint8 Bloss; |
miruga27 | 0:dda4f4550403 | 288 | Uint8 Aloss; |
miruga27 | 0:dda4f4550403 | 289 | Uint8 Rshift; |
miruga27 | 0:dda4f4550403 | 290 | Uint8 Gshift; |
miruga27 | 0:dda4f4550403 | 291 | Uint8 Bshift; |
miruga27 | 0:dda4f4550403 | 292 | Uint8 Ashift; |
miruga27 | 0:dda4f4550403 | 293 | int refcount; |
miruga27 | 0:dda4f4550403 | 294 | struct SDL_PixelFormat *next; |
miruga27 | 0:dda4f4550403 | 295 | } SDL_PixelFormat; |
miruga27 | 0:dda4f4550403 | 296 | |
miruga27 | 0:dda4f4550403 | 297 | /** |
miruga27 | 0:dda4f4550403 | 298 | * \brief Get the human readable name of a pixel format |
miruga27 | 0:dda4f4550403 | 299 | */ |
miruga27 | 0:dda4f4550403 | 300 | extern DECLSPEC const char* SDLCALL SDL_GetPixelFormatName(Uint32 format); |
miruga27 | 0:dda4f4550403 | 301 | |
miruga27 | 0:dda4f4550403 | 302 | /** |
miruga27 | 0:dda4f4550403 | 303 | * \brief Convert one of the enumerated pixel formats to a bpp and RGBA masks. |
miruga27 | 0:dda4f4550403 | 304 | * |
miruga27 | 0:dda4f4550403 | 305 | * \return SDL_TRUE, or SDL_FALSE if the conversion wasn't possible. |
miruga27 | 0:dda4f4550403 | 306 | * |
miruga27 | 0:dda4f4550403 | 307 | * \sa SDL_MasksToPixelFormatEnum() |
miruga27 | 0:dda4f4550403 | 308 | */ |
miruga27 | 0:dda4f4550403 | 309 | extern DECLSPEC SDL_bool SDLCALL SDL_PixelFormatEnumToMasks(Uint32 format, |
miruga27 | 0:dda4f4550403 | 310 | int *bpp, |
miruga27 | 0:dda4f4550403 | 311 | Uint32 * Rmask, |
miruga27 | 0:dda4f4550403 | 312 | Uint32 * Gmask, |
miruga27 | 0:dda4f4550403 | 313 | Uint32 * Bmask, |
miruga27 | 0:dda4f4550403 | 314 | Uint32 * Amask); |
miruga27 | 0:dda4f4550403 | 315 | |
miruga27 | 0:dda4f4550403 | 316 | /** |
miruga27 | 0:dda4f4550403 | 317 | * \brief Convert a bpp and RGBA masks to an enumerated pixel format. |
miruga27 | 0:dda4f4550403 | 318 | * |
miruga27 | 0:dda4f4550403 | 319 | * \return The pixel format, or ::SDL_PIXELFORMAT_UNKNOWN if the conversion |
miruga27 | 0:dda4f4550403 | 320 | * wasn't possible. |
miruga27 | 0:dda4f4550403 | 321 | * |
miruga27 | 0:dda4f4550403 | 322 | * \sa SDL_PixelFormatEnumToMasks() |
miruga27 | 0:dda4f4550403 | 323 | */ |
miruga27 | 0:dda4f4550403 | 324 | extern DECLSPEC Uint32 SDLCALL SDL_MasksToPixelFormatEnum(int bpp, |
miruga27 | 0:dda4f4550403 | 325 | Uint32 Rmask, |
miruga27 | 0:dda4f4550403 | 326 | Uint32 Gmask, |
miruga27 | 0:dda4f4550403 | 327 | Uint32 Bmask, |
miruga27 | 0:dda4f4550403 | 328 | Uint32 Amask); |
miruga27 | 0:dda4f4550403 | 329 | |
miruga27 | 0:dda4f4550403 | 330 | /** |
miruga27 | 0:dda4f4550403 | 331 | * \brief Create an SDL_PixelFormat structure from a pixel format enum. |
miruga27 | 0:dda4f4550403 | 332 | */ |
miruga27 | 0:dda4f4550403 | 333 | extern DECLSPEC SDL_PixelFormat * SDLCALL SDL_AllocFormat(Uint32 pixel_format); |
miruga27 | 0:dda4f4550403 | 334 | |
miruga27 | 0:dda4f4550403 | 335 | /** |
miruga27 | 0:dda4f4550403 | 336 | * \brief Free an SDL_PixelFormat structure. |
miruga27 | 0:dda4f4550403 | 337 | */ |
miruga27 | 0:dda4f4550403 | 338 | extern DECLSPEC void SDLCALL SDL_FreeFormat(SDL_PixelFormat *format); |
miruga27 | 0:dda4f4550403 | 339 | |
miruga27 | 0:dda4f4550403 | 340 | /** |
miruga27 | 0:dda4f4550403 | 341 | * \brief Create a palette structure with the specified number of color |
miruga27 | 0:dda4f4550403 | 342 | * entries. |
miruga27 | 0:dda4f4550403 | 343 | * |
miruga27 | 0:dda4f4550403 | 344 | * \return A new palette, or NULL if there wasn't enough memory. |
miruga27 | 0:dda4f4550403 | 345 | * |
miruga27 | 0:dda4f4550403 | 346 | * \note The palette entries are initialized to white. |
miruga27 | 0:dda4f4550403 | 347 | * |
miruga27 | 0:dda4f4550403 | 348 | * \sa SDL_FreePalette() |
miruga27 | 0:dda4f4550403 | 349 | */ |
miruga27 | 0:dda4f4550403 | 350 | extern DECLSPEC SDL_Palette *SDLCALL SDL_AllocPalette(int ncolors); |
miruga27 | 0:dda4f4550403 | 351 | |
miruga27 | 0:dda4f4550403 | 352 | /** |
miruga27 | 0:dda4f4550403 | 353 | * \brief Set the palette for a pixel format structure. |
miruga27 | 0:dda4f4550403 | 354 | */ |
miruga27 | 0:dda4f4550403 | 355 | extern DECLSPEC int SDLCALL SDL_SetPixelFormatPalette(SDL_PixelFormat * format, |
miruga27 | 0:dda4f4550403 | 356 | SDL_Palette *palette); |
miruga27 | 0:dda4f4550403 | 357 | |
miruga27 | 0:dda4f4550403 | 358 | /** |
miruga27 | 0:dda4f4550403 | 359 | * \brief Set a range of colors in a palette. |
miruga27 | 0:dda4f4550403 | 360 | * |
miruga27 | 0:dda4f4550403 | 361 | * \param palette The palette to modify. |
miruga27 | 0:dda4f4550403 | 362 | * \param colors An array of colors to copy into the palette. |
miruga27 | 0:dda4f4550403 | 363 | * \param firstcolor The index of the first palette entry to modify. |
miruga27 | 0:dda4f4550403 | 364 | * \param ncolors The number of entries to modify. |
miruga27 | 0:dda4f4550403 | 365 | * |
miruga27 | 0:dda4f4550403 | 366 | * \return 0 on success, or -1 if not all of the colors could be set. |
miruga27 | 0:dda4f4550403 | 367 | */ |
miruga27 | 0:dda4f4550403 | 368 | extern DECLSPEC int SDLCALL SDL_SetPaletteColors(SDL_Palette * palette, |
miruga27 | 0:dda4f4550403 | 369 | const SDL_Color * colors, |
miruga27 | 0:dda4f4550403 | 370 | int firstcolor, int ncolors); |
miruga27 | 0:dda4f4550403 | 371 | |
miruga27 | 0:dda4f4550403 | 372 | /** |
miruga27 | 0:dda4f4550403 | 373 | * \brief Free a palette created with SDL_AllocPalette(). |
miruga27 | 0:dda4f4550403 | 374 | * |
miruga27 | 0:dda4f4550403 | 375 | * \sa SDL_AllocPalette() |
miruga27 | 0:dda4f4550403 | 376 | */ |
miruga27 | 0:dda4f4550403 | 377 | extern DECLSPEC void SDLCALL SDL_FreePalette(SDL_Palette * palette); |
miruga27 | 0:dda4f4550403 | 378 | |
miruga27 | 0:dda4f4550403 | 379 | /** |
miruga27 | 0:dda4f4550403 | 380 | * \brief Maps an RGB triple to an opaque pixel value for a given pixel format. |
miruga27 | 0:dda4f4550403 | 381 | * |
miruga27 | 0:dda4f4550403 | 382 | * \sa SDL_MapRGBA |
miruga27 | 0:dda4f4550403 | 383 | */ |
miruga27 | 0:dda4f4550403 | 384 | extern DECLSPEC Uint32 SDLCALL SDL_MapRGB(const SDL_PixelFormat * format, |
miruga27 | 0:dda4f4550403 | 385 | Uint8 r, Uint8 g, Uint8 b); |
miruga27 | 0:dda4f4550403 | 386 | |
miruga27 | 0:dda4f4550403 | 387 | /** |
miruga27 | 0:dda4f4550403 | 388 | * \brief Maps an RGBA quadruple to a pixel value for a given pixel format. |
miruga27 | 0:dda4f4550403 | 389 | * |
miruga27 | 0:dda4f4550403 | 390 | * \sa SDL_MapRGB |
miruga27 | 0:dda4f4550403 | 391 | */ |
miruga27 | 0:dda4f4550403 | 392 | extern DECLSPEC Uint32 SDLCALL SDL_MapRGBA(const SDL_PixelFormat * format, |
miruga27 | 0:dda4f4550403 | 393 | Uint8 r, Uint8 g, Uint8 b, |
miruga27 | 0:dda4f4550403 | 394 | Uint8 a); |
miruga27 | 0:dda4f4550403 | 395 | |
miruga27 | 0:dda4f4550403 | 396 | /** |
miruga27 | 0:dda4f4550403 | 397 | * \brief Get the RGB components from a pixel of the specified format. |
miruga27 | 0:dda4f4550403 | 398 | * |
miruga27 | 0:dda4f4550403 | 399 | * \sa SDL_GetRGBA |
miruga27 | 0:dda4f4550403 | 400 | */ |
miruga27 | 0:dda4f4550403 | 401 | extern DECLSPEC void SDLCALL SDL_GetRGB(Uint32 pixel, |
miruga27 | 0:dda4f4550403 | 402 | const SDL_PixelFormat * format, |
miruga27 | 0:dda4f4550403 | 403 | Uint8 * r, Uint8 * g, Uint8 * b); |
miruga27 | 0:dda4f4550403 | 404 | |
miruga27 | 0:dda4f4550403 | 405 | /** |
miruga27 | 0:dda4f4550403 | 406 | * \brief Get the RGBA components from a pixel of the specified format. |
miruga27 | 0:dda4f4550403 | 407 | * |
miruga27 | 0:dda4f4550403 | 408 | * \sa SDL_GetRGB |
miruga27 | 0:dda4f4550403 | 409 | */ |
miruga27 | 0:dda4f4550403 | 410 | extern DECLSPEC void SDLCALL SDL_GetRGBA(Uint32 pixel, |
miruga27 | 0:dda4f4550403 | 411 | const SDL_PixelFormat * format, |
miruga27 | 0:dda4f4550403 | 412 | Uint8 * r, Uint8 * g, Uint8 * b, |
miruga27 | 0:dda4f4550403 | 413 | Uint8 * a); |
miruga27 | 0:dda4f4550403 | 414 | |
miruga27 | 0:dda4f4550403 | 415 | /** |
miruga27 | 0:dda4f4550403 | 416 | * \brief Calculate a 256 entry gamma ramp for a gamma value. |
miruga27 | 0:dda4f4550403 | 417 | */ |
miruga27 | 0:dda4f4550403 | 418 | extern DECLSPEC void SDLCALL SDL_CalculateGammaRamp(float gamma, Uint16 * ramp); |
miruga27 | 0:dda4f4550403 | 419 | |
miruga27 | 0:dda4f4550403 | 420 | |
miruga27 | 0:dda4f4550403 | 421 | /* Ends C function definitions when using C++ */ |
miruga27 | 0:dda4f4550403 | 422 | #ifdef __cplusplus |
miruga27 | 0:dda4f4550403 | 423 | } |
miruga27 | 0:dda4f4550403 | 424 | #endif |
miruga27 | 0:dda4f4550403 | 425 | #include "close_code.h" |
miruga27 | 0:dda4f4550403 | 426 | |
miruga27 | 0:dda4f4550403 | 427 | #endif /* _SDL_pixels_h */ |
miruga27 | 0:dda4f4550403 | 428 | |
miruga27 | 0:dda4f4550403 | 429 | /* vi: set ts=4 sw=4 expandtab: */ |