From 78c3aa78d2c90e411778c42839b6a424df9f22ba Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Wed, 24 Jun 2009 16:32:19 -0500 Subject: [PATCH] windowscodecs: Implement GetResolution for BMP decoder. --- dlls/windowscodecs/bmpdecode.c | 26 ++++++++++++++++++++++++-- 1 file changed, 24 insertions(+), 2 deletions(-) diff --git a/dlls/windowscodecs/bmpdecode.c b/dlls/windowscodecs/bmpdecode.c index 7db5dfbfeaf..afe48814e26 100644 --- a/dlls/windowscodecs/bmpdecode.c +++ b/dlls/windowscodecs/bmpdecode.c @@ -155,11 +155,33 @@ static HRESULT WINAPI BmpFrameDecode_GetPixelFormat(IWICBitmapFrameDecode *iface return E_NOTIMPL; } +static HRESULT BmpHeader_GetResolution(BITMAPV5HEADER *bih, double *pDpiX, double *pDpiY) +{ + switch (bih->bV5Size) + { + case sizeof(BITMAPCOREHEADER): + *pDpiX = 96.0; + *pDpiY = 96.0; + return S_OK; + case sizeof(BITMAPCOREHEADER2): + case sizeof(BITMAPINFOHEADER): + case sizeof(BITMAPV4HEADER): + case sizeof(BITMAPV5HEADER): + *pDpiX = bih->bV5XPelsPerMeter * 0.0254; + *pDpiY = bih->bV5YPelsPerMeter * 0.0254; + return S_OK; + default: + return E_FAIL; + } +} + static HRESULT WINAPI BmpFrameDecode_GetResolution(IWICBitmapFrameDecode *iface, double *pDpiX, double *pDpiY) { - FIXME("(%p,%p,%p): stub\n", iface, pDpiX, pDpiY); - return E_NOTIMPL; + BmpFrameDecode *This = (BmpFrameDecode*)iface; + TRACE("(%p,%p,%p)\n", iface, pDpiX, pDpiY); + + return BmpHeader_GetResolution(&This->bih, pDpiX, pDpiY); } static HRESULT WINAPI BmpFrameDecode_CopyPalette(IWICBitmapFrameDecode *iface,