Module: wine Branch: master Commit: f515878cad07f3e5f41411cd75eff5326e644fd0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f515878cad07f3e5f41411cd75... Author: Dmitry Timoshkov <dmitry(a)baikal.ru> Date: Wed Sep 13 15:12:39 2017 -0500 windowscodecs: Implement IWICBitmapFrameEncode::SetPalette in BMP encoder. Signed-off-by: Vincent Povirk <vincent(a)codeweavers.com> Signed-off-by: Alexandre Julliard <julliard(a)winehq.org> --- dlls/windowscodecs/bmpencode.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/dlls/windowscodecs/bmpencode.c b/dlls/windowscodecs/bmpencode.c index c09b542..48a8e27 100644 --- a/dlls/windowscodecs/bmpencode.c +++ b/dlls/windowscodecs/bmpencode.c @@ -67,6 +67,8 @@ typedef struct BmpFrameEncode { double xres, yres; UINT lineswritten; UINT stride; + WICColor palette[256]; + UINT colors; BOOL committed; } BmpFrameEncode; @@ -197,10 +199,18 @@ static HRESULT WINAPI BmpFrameEncode_SetColorContexts(IWICBitmapFrameEncode *ifa } static HRESULT WINAPI BmpFrameEncode_SetPalette(IWICBitmapFrameEncode *iface, - IWICPalette *pIPalette) + IWICPalette *palette) { - FIXME("(%p,%p): stub\n", iface, pIPalette); - return WINCODEC_ERR_UNSUPPORTEDOPERATION; + BmpFrameEncode *This = impl_from_IWICBitmapFrameEncode(iface); + + TRACE("(%p,%p)\n", iface, palette); + + if (!palette) return E_INVALIDARG; + + if (!This->initialized) + return WINCODEC_ERR_NOTINITIALIZED; + + return IWICPalette_GetColors(palette, 256, This->palette, &This->colors); } static HRESULT WINAPI BmpFrameEncode_SetThumbnail(IWICBitmapFrameEncode *iface, @@ -520,6 +530,7 @@ static HRESULT WINAPI BmpEncoder_CreateNewFrame(IWICBitmapEncoder *iface, encode->xres = 0.0; encode->yres = 0.0; encode->lineswritten = 0; + encode->colors = 0; encode->committed = FALSE; *ppIFrameEncode = &encode->IWICBitmapFrameEncode_iface;