From 21085a4067d38719caa4a02c6dc1565f37628519 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Wed, 24 Jun 2009 16:20:29 -0500 Subject: [PATCH] windowscodecs: implement GetSize for BMP decoder --- dlls/windowscodecs/bmpdecode.c | 29 +++++++++++++++++++++++++++-- 1 files changed, 27 insertions(+), 2 deletions(-) diff --git a/dlls/windowscodecs/bmpdecode.c b/dlls/windowscodecs/bmpdecode.c index 5232f72..1b306e6 100644 --- a/dlls/windowscodecs/bmpdecode.c +++ b/dlls/windowscodecs/bmpdecode.c @@ -116,11 +116,36 @@ 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) { - FIXME("(%p,%p,%p): stub\n", iface, puiWidth, puiHeight); - return E_NOTIMPL; + BmpFrameDecode *This = (BmpFrameDecode*)iface; + TRACE("(%p,%p,%p)\n", iface, puiWidth, puiHeight); + + return BmpHeader_GetSize(&This->bih, puiWidth, puiHeight); } static HRESULT WINAPI BmpFrameDecode_GetPixelFormat(IWICBitmapFrameDecode *iface, -- 1.5.4.3