gdiplus: GdipLoadImageFromStream should use well-known pixel format constants when possible.

This commit is contained in:
Andrey Turkin 2009-01-15 12:39:47 +03:00 committed by Alexandre Julliard
parent d20ab01ed2
commit 1138c28eeb
1 changed files with 29 additions and 1 deletions

View File

@ -1068,7 +1068,35 @@ GpStatus WINGDIPAPI GdipLoadImageFromStream(IStream* stream, GpImage **image)
else else
GetDIBits(hdc, hbm, 0, 0, NULL, pbmi, DIB_RGB_COLORS); GetDIBits(hdc, hbm, 0, 0, NULL, pbmi, DIB_RGB_COLORS);
(*((GpBitmap**) image))->format = (bmch->bcBitCount << 8) | PixelFormatGDI; switch(bmch->bcBitCount)
{
case 1:
(*((GpBitmap**) image))->format = PixelFormat1bppIndexed;
break;
case 4:
(*((GpBitmap**) image))->format = PixelFormat4bppIndexed;
break;
case 8:
(*((GpBitmap**) image))->format = PixelFormat8bppIndexed;
break;
case 16:
(*((GpBitmap**) image))->format = PixelFormat16bppRGB565;
break;
case 24:
(*((GpBitmap**) image))->format = PixelFormat24bppRGB;
break;
case 32:
(*((GpBitmap**) image))->format = PixelFormat32bppRGB;
break;
case 48:
(*((GpBitmap**) image))->format = PixelFormat48bppRGB;
break;
default:
FIXME("Bit depth %d is not fully supported yet\n", bmch->bcBitCount);
(*((GpBitmap**) image))->format = (bmch->bcBitCount << 8) | PixelFormatGDI;
break;
}
GdipFree(pbmi); GdipFree(pbmi);
} }
else if(type == PICTYPE_METAFILE || type == PICTYPE_ENHMETAFILE){ else if(type == PICTYPE_METAFILE || type == PICTYPE_ENHMETAFILE){