mirror of
https://github.com/reactos/reactos.git
synced 2025-02-22 16:36:33 +00:00
[[WIN32K]
Fix biCompression filed in the DIBSECTION structure, returned by BITMAP_GetObject. Fixes K-Meleon toobar. Kudos for the fix go to Rafał Harabień. See issue #5940 for more details. svn path=/trunk/; revision=50896
This commit is contained in:
parent
5b6ab375ee
commit
e1d7a14438
1 changed files with 40 additions and 30 deletions
|
@ -920,36 +920,46 @@ BITMAP_GetObject(SURFACE *psurf, INT Count, LPVOID buffer)
|
|||
pds->dsBmih.biHeight = pds->dsBm.bmHeight;
|
||||
pds->dsBmih.biPlanes = pds->dsBm.bmPlanes;
|
||||
pds->dsBmih.biBitCount = pds->dsBm.bmBitsPixel;
|
||||
if(psurf->ppal->flFlags & PAL_BITFIELDS)
|
||||
{
|
||||
pds->dsBmih.biCompression = BI_BITFIELDS;
|
||||
}
|
||||
else
|
||||
{
|
||||
switch (psurf->SurfObj.iBitmapFormat)
|
||||
{
|
||||
case BMF_1BPP:
|
||||
case BMF_4BPP:
|
||||
case BMF_8BPP:
|
||||
case BMF_16BPP:
|
||||
case BMF_24BPP:
|
||||
case BMF_32BPP:
|
||||
pds->dsBmih.biCompression = BI_RGB;
|
||||
break;
|
||||
case BMF_4RLE:
|
||||
pds->dsBmih.biCompression = BI_RLE4;
|
||||
break;
|
||||
case BMF_8RLE:
|
||||
pds->dsBmih.biCompression = BI_RLE8;
|
||||
break;
|
||||
case BMF_JPEG:
|
||||
pds->dsBmih.biCompression = BI_JPEG;
|
||||
break;
|
||||
case BMF_PNG:
|
||||
pds->dsBmih.biCompression = BI_PNG;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch (psurf->SurfObj.iBitmapFormat)
|
||||
{
|
||||
case BMF_1BPP:
|
||||
case BMF_4BPP:
|
||||
case BMF_8BPP:
|
||||
case BMF_24BPP:
|
||||
pds->dsBmih.biCompression = BI_RGB;
|
||||
break;
|
||||
|
||||
case BMF_16BPP:
|
||||
if (psurf->ppal->flFlags & PAL_RGB16_555)
|
||||
pds->dsBmih.biCompression = BI_RGB;
|
||||
else
|
||||
pds->dsBmih.biCompression = BI_BITFIELDS;
|
||||
break;
|
||||
|
||||
case BMF_32BPP:
|
||||
if (psurf->ppal->flFlags & PAL_RGB)
|
||||
pds->dsBmih.biCompression = BI_RGB;
|
||||
else
|
||||
pds->dsBmih.biCompression = BI_BITFIELDS;
|
||||
break;
|
||||
|
||||
case BMF_4RLE:
|
||||
pds->dsBmih.biCompression = BI_RLE4;
|
||||
break;
|
||||
case BMF_8RLE:
|
||||
pds->dsBmih.biCompression = BI_RLE8;
|
||||
break;
|
||||
case BMF_JPEG:
|
||||
pds->dsBmih.biCompression = BI_JPEG;
|
||||
break;
|
||||
case BMF_PNG:
|
||||
pds->dsBmih.biCompression = BI_PNG;
|
||||
break;
|
||||
default:
|
||||
ASSERT(FALSE); /* this shouldn't happen */
|
||||
}
|
||||
|
||||
pds->dsBmih.biSizeImage = psurf->SurfObj.cjBits;
|
||||
pds->dsBmih.biXPelsPerMeter = 0;
|
||||
pds->dsBmih.biYPelsPerMeter = 0;
|
||||
|
|
Loading…
Reference in a new issue