Module: wine Branch: master Commit: 0ae0c0c09e8a1309c74027092d00ac24ea58cdb0 URL: http://source.winehq.org/git/wine.git/?a=commit;h=0ae0c0c09e8a1309c74027092d...
Author: Vincent Povirk vincent@codeweavers.com Date: Sat May 8 12:53:07 2010 -0500
gdiplus: Implement GdipSetImageAttributesWrapMode.
---
dlls/gdiplus/gdiplus_private.h | 2 ++ dlls/gdiplus/graphics.c | 11 ++++++++++- dlls/gdiplus/imageattributes.c | 13 +++++++------ 3 files changed, 19 insertions(+), 7 deletions(-)
diff --git a/dlls/gdiplus/gdiplus_private.h b/dlls/gdiplus/gdiplus_private.h index 2313cd5..eafed7c 100644 --- a/dlls/gdiplus/gdiplus_private.h +++ b/dlls/gdiplus/gdiplus_private.h @@ -296,6 +296,8 @@ struct color_remap_table{
struct GpImageAttributes{ WrapMode wrap; + ARGB outside_color; + BOOL clamp; struct color_key colorkeys[ColorAdjustTypeCount]; struct color_matrix colormatrices[ColorAdjustTypeCount]; struct color_remap_table colorremaptables[ColorAdjustTypeCount]; diff --git a/dlls/gdiplus/graphics.c b/dlls/gdiplus/graphics.c index 790e0fb..879646a 100644 --- a/dlls/gdiplus/graphics.c +++ b/dlls/gdiplus/graphics.c @@ -2049,6 +2049,16 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image
stride = sizeof(ARGB) * (dst_area.right - dst_area.left);
+ if (imageAttributes && + (imageAttributes->wrap != WrapModeClamp || + imageAttributes->outside_color != 0x00000000 || + imageAttributes->clamp)) + { + static int fixme; + if (!fixme++) + FIXME("Image wrap mode not implemented\n"); + } + for (x=dst_area.left; x<dst_area.right; x++) { for (y=dst_area.top; y<dst_area.bottom; y++) @@ -2069,7 +2079,6 @@ GpStatus WINGDIPAPI GdipDrawImagePointsRect(GpGraphics *graphics, GpImage *image
if (src_x < src_area.left || src_x >= src_area.right || src_y < src_area.top || src_y >= src_area.bottom) - /* FIXME: Use wrapmode */ *src_color = 0; else GdipBitmapGetPixel(bitmap, src_x, src_y, src_color); diff --git a/dlls/gdiplus/imageattributes.c b/dlls/gdiplus/imageattributes.c index 1a7118d..c157af3 100644 --- a/dlls/gdiplus/imageattributes.c +++ b/dlls/gdiplus/imageattributes.c @@ -53,6 +53,8 @@ GpStatus WINGDIPAPI GdipCreateImageAttributes(GpImageAttributes **imageattr) *imageattr = GdipAlloc(sizeof(GpImageAttributes)); if(!*imageattr) return OutOfMemory;
+ (*imageattr)->wrap = WrapModeClamp; + TRACE("<-- %p\n", *imageattr);
return Ok; @@ -120,17 +122,16 @@ GpStatus WINGDIPAPI GdipSetImageAttributesColorMatrix(GpImageAttributes *imageat GpStatus WINGDIPAPI GdipSetImageAttributesWrapMode(GpImageAttributes *imageAttr, WrapMode wrap, ARGB argb, BOOL clamp) { - static int calls; - TRACE("(%p,%u,%08x,%i)\n", imageAttr, wrap, argb, clamp);
- if(!imageAttr) + if(!imageAttr || wrap > WrapModeClamp) return InvalidParameter;
- if(!(calls++)) - FIXME("not implemented\n"); + imageAttr->wrap = wrap; + imageAttr->outside_color = argb; + imageAttr->clamp = clamp;
- return NotImplemented; + return Ok; }
GpStatus WINGDIPAPI GdipSetImageAttributesCachedBackground(GpImageAttributes *imageAttr,