windowscodecs: Simplify the BMP GetSize code and fix for top-down dibs.
This commit is contained in:
parent
02d0462f06
commit
07538b79cb
|
@ -118,36 +118,24 @@ static ULONG WINAPI BmpFrameDecode_Release(IWICBitmapFrameDecode *iface)
|
||||||
return ref;
|
return ref;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT BmpHeader_GetSize(BITMAPV5HEADER *bih, UINT *puiWidth, UINT *puiHeight)
|
|
||||||
{
|
|
||||||
switch (bih->bV5Size)
|
|
||||||
{
|
|
||||||
case sizeof(BITMAPCOREHEADER):
|
|
||||||
{
|
|
||||||
BITMAPCOREHEADER *bch = (BITMAPCOREHEADER*)bih;
|
|
||||||
*puiWidth = bch->bcWidth;
|
|
||||||
*puiHeight = bch->bcHeight;
|
|
||||||
return S_OK;
|
|
||||||
}
|
|
||||||
case sizeof(BITMAPCOREHEADER2):
|
|
||||||
case sizeof(BITMAPINFOHEADER):
|
|
||||||
case sizeof(BITMAPV4HEADER):
|
|
||||||
case sizeof(BITMAPV5HEADER):
|
|
||||||
*puiWidth = bih->bV5Width;
|
|
||||||
*puiHeight = bih->bV5Height;
|
|
||||||
return S_OK;
|
|
||||||
default:
|
|
||||||
return E_FAIL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static HRESULT WINAPI BmpFrameDecode_GetSize(IWICBitmapFrameDecode *iface,
|
static HRESULT WINAPI BmpFrameDecode_GetSize(IWICBitmapFrameDecode *iface,
|
||||||
UINT *puiWidth, UINT *puiHeight)
|
UINT *puiWidth, UINT *puiHeight)
|
||||||
{
|
{
|
||||||
BmpFrameDecode *This = (BmpFrameDecode*)iface;
|
BmpFrameDecode *This = (BmpFrameDecode*)iface;
|
||||||
TRACE("(%p,%p,%p)\n", iface, puiWidth, puiHeight);
|
TRACE("(%p,%p,%p)\n", iface, puiWidth, puiHeight);
|
||||||
|
|
||||||
return BmpHeader_GetSize(&This->bih, puiWidth, puiHeight);
|
if (This->bih.bV5Size == sizeof(BITMAPCOREHEADER))
|
||||||
|
{
|
||||||
|
BITMAPCOREHEADER *bch = (BITMAPCOREHEADER*)&This->bih;
|
||||||
|
*puiWidth = bch->bcWidth;
|
||||||
|
*puiHeight = bch->bcHeight;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
*puiWidth = This->bih.bV5Width;
|
||||||
|
*puiHeight = abs(This->bih.bV5Height);
|
||||||
|
}
|
||||||
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
static HRESULT WINAPI BmpFrameDecode_GetPixelFormat(IWICBitmapFrameDecode *iface,
|
static HRESULT WINAPI BmpFrameDecode_GetPixelFormat(IWICBitmapFrameDecode *iface,
|
||||||
|
|
Loading…
Reference in New Issue