16 const DWORD
bits555[] = {0x007C00,0x0003E0,0x00001F};
17 const DWORD
bits565[] = {0x00F800,0x0007E0,0x00001F};
18 const DWORD
bits888[] = {0xFF0000,0x00FF00,0x0000FF};
28 }
BitCountMap[] = { &MEDIASUBTYPE_RGB1, 1,
"RGB Monochrome", L
"RGB Monochrome",
29 &MEDIASUBTYPE_RGB4, 4,
"RGB VGA", L
"RGB VGA",
30 &MEDIASUBTYPE_RGB8, 8,
"RGB 8", L
"RGB 8",
31 &MEDIASUBTYPE_RGB565, 16,
"RGB 565 (16 bit)", L
"RGB 565 (16 bit)",
32 &MEDIASUBTYPE_RGB555, 16,
"RGB 555 (16 bit)", L
"RGB 555 (16 bit)",
33 &MEDIASUBTYPE_RGB24, 24,
"RGB 24", L
"RGB 24",
34 &MEDIASUBTYPE_RGB32, 32,
"RGB 32", L
"RGB 32",
35 &MEDIASUBTYPE_ARGB32, 32,
"ARGB 32", L
"ARGB 32",
36 &MEDIASUBTYPE_Overlay, 0,
"Overlay", L
"Overlay",
37 &GUID_NULL, 0,
"UNKNOWN", L
"UNKNOWN"
42 STDAPI_(DWORD) GetBitmapSize(
const BITMAPINFOHEADER *pHeader)
44 return DIBSIZE(*pHeader);
51 STDAPI_(
const GUID) GetTrueColorType(
const BITMAPINFOHEADER *pbmiHeader)
53 BITMAPINFO *pbmInfo = (BITMAPINFO *) pbmiHeader;
54 ASSERT(pbmiHeader->biBitCount == 16);
58 if (pbmiHeader->biCompression == BI_RGB) {
59 return MEDIASUBTYPE_RGB555;
64 DWORD *pMask = (DWORD *) pbmInfo->bmiColors;
68 return MEDIASUBTYPE_RGB555;
75 pMask = (DWORD *) pbmInfo->bmiColors;
79 return MEDIASUBTYPE_RGB565;
93 STDAPI_(
const GUID) GetBitmapSubtype(
const BITMAPINFOHEADER *pbmiHeader)
99 if (pbmiHeader->biCompression != BI_RGB) {
100 if (pbmiHeader->biCompression != BI_BITFIELDS) {
101 FOURCCMap FourCCMap(pbmiHeader->biCompression);
102 return (
const GUID) FourCCMap;
108 switch(pbmiHeader->biBitCount) {
109 case 1 :
return MEDIASUBTYPE_RGB1;
110 case 4 :
return MEDIASUBTYPE_RGB4;
111 case 8 :
return MEDIASUBTYPE_RGB8;
112 case 16 :
return GetTrueColorType(pbmiHeader);
113 case 24 :
return MEDIASUBTYPE_RGB24;
114 case 32 :
return MEDIASUBTYPE_RGB32;
127 const GUID *pMediaSubtype;
135 if (IsEqualGUID(*pMediaSubtype,GUID_NULL)) {
138 if (IsEqualGUID(*pMediaSubtype,*
pSubtype)) {
153 const GUID *pMediaSubtype;
161 if (IsEqualGUID(*pMediaSubtype,*
pSubtype) ||
162 IsEqualGUID(*pMediaSubtype,GUID_NULL)
186 #ifndef GetSubtypeName
187 #error wxutil.h should have defined GetSubtypeName
189 #undef GetSubtypeName
213 STDAPI_(LONG) GetBitmapFormatSize(
const BITMAPINFOHEADER *pHeader)
216 LONG Size = SIZE_PREHEADER + pHeader->biSize;
218 ASSERT(pHeader->biSize >=
sizeof(BITMAPINFOHEADER));
226 ASSERT(pHeader->biBitCount <= iPALETTE || pHeader->biClrUsed == 0);
228 if (pHeader->biBitCount <= iPALETTE || pHeader->biClrUsed) {
229 LONG Entries = (DWORD) 1 << pHeader->biBitCount;
230 if (pHeader->biClrUsed) {
231 Entries = pHeader->biClrUsed;
233 Size += Entries *
sizeof(RGBQUAD);
240 if (pHeader->biCompression == BI_BITFIELDS) {
256 STDAPI_(BOOL) ContainsPalette(
const VIDEOINFOHEADER *pVideoInfo)
258 if (PALETTISED(pVideoInfo) == FALSE) {
259 if (pVideoInfo->bmiHeader.biClrUsed == 0) {
269 STDAPI_(
const RGBQUAD *) GetBitmapPalette(
const VIDEOINFOHEADER *pVideoInfo)
271 if (pVideoInfo->bmiHeader.biCompression == BI_BITFIELDS) {
272 return TRUECOLOR(pVideoInfo)->bmiColors;
274 return COLORS(pVideoInfo);