Module: wine Branch: master Commit: 65b3d01fae0a501b2f69553250ed356631df336b URL: http://source.winehq.org/git/wine.git/?a=commit;h=65b3d01fae0a501b2f69553250...
Author: Sergio Gómez Del Real sdelreal@codeweavers.com Date: Wed Dec 6 10:52:24 2017 -0500
ole32: Add support for saving DIBs to CONTENTS streams.
Signed-off-by: Sergio Gómez Del Real sdelreal@codeweavers.com Signed-off-by: Huw Davies huw@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
---
dlls/ole32/datacache.c | 13 +++++++++++++ 1 file changed, 13 insertions(+)
diff --git a/dlls/ole32/datacache.c b/dlls/ole32/datacache.c index f46f712..945d2fe 100644 --- a/dlls/ole32/datacache.c +++ b/dlls/ole32/datacache.c @@ -823,6 +823,19 @@ static HRESULT save_dib(DataCacheEntry *entry, BOOL contents, IStream *stream) if (hr == S_OK && data_size) hr = IStream_Write(stream, bmi, data_size, NULL); } + else + { + BITMAPFILEHEADER bmp_fhdr; + + bmp_fhdr.bfType = 0x4d42; + bmp_fhdr.bfSize = data_size + sizeof(BITMAPFILEHEADER); + bmp_fhdr.bfReserved1 = bmp_fhdr.bfReserved2 = 0; + if (data_size) + bmp_fhdr.bfOffBits = bitmap_info_size(bmi, DIB_RGB_COLORS) + sizeof(BITMAPFILEHEADER); + hr = IStream_Write(stream, &bmp_fhdr, sizeof(BITMAPFILEHEADER), NULL); + if (hr == S_OK && data_size) + hr = IStream_Write(stream, bmi, data_size, NULL); + }
end: if (bmi) GlobalUnlock(entry->stgmedium.u.hGlobal);