Vincent Povirk : gdiplus: Implement GdipSetImageAttributesWrapMode.
Alexandre Julliard
julliard at winehq.org
Mon May 10 11:59:10 CDT 2010
Module: wine
Branch: master
Commit: 0ae0c0c09e8a1309c74027092d00ac24ea58cdb0
URL: http://source.winehq.org/git/wine.git/?a=commit;h=0ae0c0c09e8a1309c74027092d00ac24ea58cdb0
Author: Vincent Povirk <vincent at 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,
More information about the wine-cvs
mailing list