Module: wine Branch: master Commit: e598538930f9306c424c3131d7531357554359c9 URL: http://source.winehq.org/git/wine.git/?a=commit;h=e598538930f9306c424c3131d7...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Wed Sep 13 15:12:41 2017 -0500
windowscodecs: Implement IWICBitmapFrameEncode::SetPalette in the TIFF encoder.
Signed-off-by: Vincent Povirk vincent@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/windowscodecs/tiffformat.c | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-)
diff --git a/dlls/windowscodecs/tiffformat.c b/dlls/windowscodecs/tiffformat.c index d14a4b0..0d6618b 100644 --- a/dlls/windowscodecs/tiffformat.c +++ b/dlls/windowscodecs/tiffformat.c @@ -1441,6 +1441,8 @@ typedef struct TiffFrameEncode { UINT width, height; double xres, yres; UINT lines_written; + WICColor palette[256]; + UINT colors; } TiffFrameEncode;
static inline TiffFrameEncode *impl_from_IWICBitmapFrameEncode(IWICBitmapFrameEncode *iface) @@ -1602,10 +1604,24 @@ static HRESULT WINAPI TiffFrameEncode_SetColorContexts(IWICBitmapFrameEncode *if }
static HRESULT WINAPI TiffFrameEncode_SetPalette(IWICBitmapFrameEncode *iface, - IWICPalette *pIPalette) + IWICPalette *palette) { - FIXME("(%p,%p): stub\n", iface, pIPalette); - return WINCODEC_ERR_UNSUPPORTEDOPERATION; + TiffFrameEncode *This = impl_from_IWICBitmapFrameEncode(iface); + HRESULT hr; + + TRACE("(%p,%p)\n", iface, palette); + + if (!palette) return E_INVALIDARG; + + EnterCriticalSection(&This->parent->lock); + + if (This->initialized) + hr = IWICPalette_GetColors(palette, 256, This->palette, &This->colors); + else + hr = WINCODEC_ERR_NOTINITIALIZED; + + LeaveCriticalSection(&This->parent->lock); + return hr; }
static HRESULT WINAPI TiffFrameEncode_SetThumbnail(IWICBitmapFrameEncode *iface, @@ -1974,6 +1990,7 @@ static HRESULT WINAPI TiffEncoder_CreateNewFrame(IWICBitmapEncoder *iface, result->xres = 0.0; result->yres = 0.0; result->lines_written = 0; + result->colors = 0;
IWICBitmapEncoder_AddRef(iface); *ppIFrameEncode = &result->IWICBitmapFrameEncode_iface;