Module: wine Branch: master Commit: 07538b79cbec7c398de9707eea4ef21a376cd90b URL: http://source.winehq.org/git/wine.git/?a=commit;h=07538b79cbec7c398de9707eea...
Author: Vincent Povirk vincent@codeweavers.com Date: Wed Jul 1 15:53:47 2009 -0500
windowscodecs: Simplify the BMP GetSize code and fix for top-down dibs.
---
dlls/windowscodecs/bmpdecode.c | 36 ++++++++++++------------------------ 1 files changed, 12 insertions(+), 24 deletions(-)
diff --git a/dlls/windowscodecs/bmpdecode.c b/dlls/windowscodecs/bmpdecode.c index 46b2527..8391a1b 100644 --- a/dlls/windowscodecs/bmpdecode.c +++ b/dlls/windowscodecs/bmpdecode.c @@ -118,36 +118,24 @@ static ULONG WINAPI BmpFrameDecode_Release(IWICBitmapFrameDecode *iface) 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, UINT *puiWidth, UINT *puiHeight) { BmpFrameDecode *This = (BmpFrameDecode*)iface; 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,