Module: wine Branch: master Commit: f515878cad07f3e5f41411cd75eff5326e644fd0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f515878cad07f3e5f41411cd75...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Wed Sep 13 15:12:39 2017 -0500
windowscodecs: Implement IWICBitmapFrameEncode::SetPalette in BMP encoder.
Signed-off-by: Vincent Povirk vincent@codeweavers.com Signed-off-by: Alexandre Julliard julliard@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;