From d5d2d02cfdabb176108337d766fee959f8560c3f Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Sat, 29 May 2010 10:43:02 -0500 Subject: [PATCH 1/7] windowscodecs: Add support for decoding 48-bit TIFF images. --- dlls/windowscodecs/regsvr.c | 1 + dlls/windowscodecs/tiffformat.c | 26 +++++++++++++++++--------- 2 files changed, 18 insertions(+), 9 deletions(-) diff --git a/dlls/windowscodecs/regsvr.c b/dlls/windowscodecs/regsvr.c index d6b910d..0288633 100644 --- a/dlls/windowscodecs/regsvr.c +++ b/dlls/windowscodecs/regsvr.c @@ -895,6 +895,7 @@ static GUID const * const tiff_formats[] = { &GUID_WICPixelFormat32bppBGR, &GUID_WICPixelFormat32bppBGRA, &GUID_WICPixelFormat32bppPBGRA, + &GUID_WICPixelFormat48bppRGB, NULL }; diff --git a/dlls/windowscodecs/tiffformat.c b/dlls/windowscodecs/tiffformat.c index d069fd1..9318ac2 100644 --- a/dlls/windowscodecs/tiffformat.c +++ b/dlls/windowscodecs/tiffformat.c @@ -257,9 +257,11 @@ static HRESULT tiff_get_decode_info(TIFF *tiff, tiff_decode_info *decode_info) } break; case 2: /* RGB */ - if (bps != 8) + ret = pTIFFGetField(tiff, TIFFTAG_PLANARCONFIG, &planar); + if (!ret) planar = 1; + if (planar != 1) { - FIXME("unhandled RGB bit count %u\n", bps); + FIXME("unhandled planar configuration %u\n", planar); return E_FAIL; } ret = pTIFFGetField(tiff, TIFFTAG_SAMPLESPERPIXEL, &samples); @@ -268,16 +270,22 @@ static HRESULT tiff_get_decode_info(TIFF *tiff, tiff_decode_info *decode_info) FIXME("unhandled RGB sample count %u\n", samples); return E_FAIL; } - ret = pTIFFGetField(tiff, TIFFTAG_PLANARCONFIG, &planar); - if (!ret) planar = 1; - if (planar != 1) + + decode_info->bpp = bps * samples; + + switch(bps) { - FIXME("unhandled planar configuration %u\n", planar); + case 8: + decode_info->reverse_bgr = 1; + decode_info->format = &GUID_WICPixelFormat24bppBGR; + break; + case 16: + decode_info->format = &GUID_WICPixelFormat48bppRGB; + break; + default: + FIXME("unhandled RGB bit count %u\n", bps); return E_FAIL; } - decode_info->bpp = bps * samples; - decode_info->reverse_bgr = 1; - decode_info->format = &GUID_WICPixelFormat24bppBGR; break; case 3: /* RGB Palette */ decode_info->indexed = 1; -- 1.7.0.4