Module: wine Branch: master Commit: 87f8e560c2fac142075fd17f1dd452eda68243cc URL: http://source.winehq.org/git/wine.git/?a=commit;h=87f8e560c2fac142075fd17f1d...
Author: Dmitry Timoshkov dmitry@baikal.ru Date: Tue Jul 17 15:00:21 2012 +0900
gdiplus: Pass complete palette info to convert_pixels().
---
dlls/gdiplus/gdiplus_private.h | 2 +- dlls/gdiplus/graphics.c | 2 +- dlls/gdiplus/image.c | 10 ++++++---- 3 files changed, 8 insertions(+), 6 deletions(-)
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h index b7c808d..03942c0 100644 --- a/dlls/gdiplus/gdiplus_private.h +++ b/dlls/gdiplus/gdiplus_private.h @@ -120,7 +120,7 @@ extern void convert_32bppARGB_to_32bppPARGB(UINT width, UINT height,
extern GpStatus convert_pixels(INT width, INT height, INT dst_stride, BYTE *dst_bits, PixelFormat dst_format, - INT src_stride, const BYTE *src_bits, PixelFormat src_format, ARGB *src_palette) DECLSPEC_HIDDEN; + INT src_stride, const BYTE *src_bits, PixelFormat src_format, ColorPalette *palette) DECLSPEC_HIDDEN;
struct GpPen{ UINT style; diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 577824e..59dd77b 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -3274,7 +3274,7 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image convert_pixels(bitmap->width, bitmap->height, bitmap->width*4, temp_bits, dst_format, bitmap->stride, bitmap->bits, bitmap->format, - bitmap->image.palette ? bitmap->image.palette->Entries : NULL); + bitmap->image.palette); } else { diff --git a/dlls/gdiplus/image.c b/dlls/gdiplus/image.c index 464de94..f9781ef 100644 --- a/dlls/gdiplus/image.c +++ b/dlls/gdiplus/image.c @@ -501,7 +501,8 @@ GpStatus WINGDIPAPI GdipBitmapSetPixel(GpBitmap* bitmap, INT x, INT y,
GpStatus convert_pixels(INT width, INT height, INT dst_stride, BYTE *dst_bits, PixelFormat dst_format, - INT src_stride, const BYTE *src_bits, PixelFormat src_format, ARGB *src_palette) + INT src_stride, const BYTE *src_bits, PixelFormat src_format, + ColorPalette *palette) { INT x, y;
@@ -518,9 +519,10 @@ GpStatus convert_pixels(INT width, INT height, for (x=0; x<width; x++) \ for (y=0; y<height; y++) { \ BYTE index; \ - BYTE *color; \ + ARGB argb; \ + BYTE *color = (BYTE *)&argb; \ getpixel_function(&index, src_bits+src_stride*y, x); \ - color = (BYTE*)(&src_palette[index]); \ + argb = (palette && index < palette->Count) ? palette->Entries[index] : 0; \ setpixel_function(color[2], color[1], color[0], color[3], dst_bits+dst_stride*y, x); \ } \ return Ok; \ @@ -1012,7 +1014,7 @@ GpStatus WINGDIPAPI GdipBitmapLockBits(GpBitmap* bitmap, GDIPCONST GpRect* rect, lockeddata->Stride, lockeddata->Scan0, format, bitmap->stride, bitmap->bits + bitmap->stride * act_rect.Y + PIXELFORMATBPP(bitmap->format) * act_rect.X / 8, - bitmap->format, bitmap->image.palette ? bitmap->image.palette->Entries : NULL); + bitmap->format, bitmap->image.palette);
if (stat != Ok) {