Module: wine Branch: master Commit: b5dfd48bc8077e132cdf481dac95da1a6521578c URL: http://source.winehq.org/git/wine.git/?a=commit;h=b5dfd48bc8077e132cdf481dac...
Author: Ludger Sprenker ludger@sprenker.net Date: Mon Apr 1 22:28:12 2013 +0200
windowscodecs: Add initializations for tiff encoder options.
---
dlls/windowscodecs/tests/converter.c | 2 +- dlls/windowscodecs/tiffformat.c | 29 ++++++++++++++++++++++++++++- 2 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/dlls/windowscodecs/tests/converter.c b/dlls/windowscodecs/tests/converter.c index 5b8f6e4..b77e455 100644 --- a/dlls/windowscodecs/tests/converter.c +++ b/dlls/windowscodecs/tests/converter.c @@ -499,7 +499,7 @@ static void test_encoder_properties(const CLSID* clsid_encoder, IPropertyBag2 *o }
if (clsid_encoder == &CLSID_WICTiffEncoder) - todo_wine test_specific_encoder_properties(options, testdata_tiff_props, all_props, cProperties2); + test_specific_encoder_properties(options, testdata_tiff_props, all_props, cProperties2);
for (i=0; i < cProperties2; i++) { diff --git a/dlls/windowscodecs/tiffformat.c b/dlls/windowscodecs/tiffformat.c index 0fcb81a..62f1ad7 100644 --- a/dlls/windowscodecs/tiffformat.c +++ b/dlls/windowscodecs/tiffformat.c @@ -54,6 +54,9 @@ static CRITICAL_SECTION_DEBUG init_tiff_cs_debug = }; static CRITICAL_SECTION init_tiff_cs = { &init_tiff_cs_debug, -1, 0, 0, 0, 0 };
+static const WCHAR wszTiffCompressionMethod[] = {'T','i','f','f','C','o','m','p','r','e','s','s','i','o','n','M','e','t','h','o','d',0}; +static const WCHAR wszCompressionQuality[] = {'C','o','m','p','r','e','s','s','i','o','n','Q','u','a','l','i','t','y',0}; + static void *libtiff_handle; #define MAKE_FUNCPTR(f) static typeof(f) * p##f MAKE_FUNCPTR(TIFFClientOpen); @@ -1909,7 +1912,31 @@ static HRESULT WINAPI TiffEncoder_CreateNewFrame(IWICBitmapEncoder *iface,
if (SUCCEEDED(hr)) { - hr = CreatePropertyBag2(NULL, 0, ppIEncoderOptions); + PROPBAG2 opts[2]= {{0}}; + opts[0].pstrName = (LPOLESTR)wszTiffCompressionMethod; + opts[0].vt = VT_UI1; + opts[0].dwType = PROPBAG2_TYPE_DATA; + + opts[1].pstrName = (LPOLESTR)wszCompressionQuality; + opts[1].vt = VT_R4; + opts[1].dwType = PROPBAG2_TYPE_DATA; + + hr = CreatePropertyBag2(opts, 2, ppIEncoderOptions); + + if (SUCCEEDED(hr)) + { + VARIANT v; + VariantInit(&v); + V_VT(&v) = VT_UI1; + V_UNION(&v, bVal) = WICTiffCompressionDontCare; + hr = IPropertyBag2_Write(*ppIEncoderOptions, 1, opts, &v); + VariantClear(&v); + if (FAILED(hr)) + { + IPropertyBag2_Release(*ppIEncoderOptions); + *ppIEncoderOptions = NULL; + } + } }
if (SUCCEEDED(hr))