[3/3] gdiplus: Implement path gradient transform setters.

Vincent Povirk madewokherd at gmail.com
Wed Apr 4 09:19:37 CDT 2012


-------------- next part --------------
From 1375eac68f1953cd67d32f9dcce4bae762820910 Mon Sep 17 00:00:00 2001
From: Vincent Povirk <vincent at codeweavers.com>
Date: Sat, 31 Mar 2012 13:30:44 -0500
Subject: [PATCH 3/3] gdiplus: Implement path gradient transform setters.

---
 dlls/gdiplus/brush.c      |   52 +++++++++++++++++++++++---------------------
 dlls/gdiplus/gdiplus.spec |    2 +-
 2 files changed, 28 insertions(+), 26 deletions(-)

diff --git a/dlls/gdiplus/brush.c b/dlls/gdiplus/brush.c
index 359f4973..ac5328e 100644
--- a/dlls/gdiplus/brush.c
+++ b/dlls/gdiplus/brush.c
@@ -1656,14 +1656,14 @@ GpStatus WINGDIPAPI GdipSetPathGradientWrapMode(GpPathGradient *grad,
 GpStatus WINGDIPAPI GdipSetPathGradientTransform(GpPathGradient *grad,
     GpMatrix *matrix)
 {
-    static int calls;
-
     TRACE("(%p,%p)\n", grad, matrix);
 
-    if(!(calls++))
-        FIXME("not implemented\n");
+    if (!grad || !matrix)
+        return InvalidParameter;
 
-    return NotImplemented;
+    memcpy(grad->transform, matrix, sizeof(GpMatrix));
+
+    return Ok;
 }
 
 GpStatus WINGDIPAPI GdipGetPathGradientTransform(GpPathGradient *grad,
@@ -1682,53 +1682,55 @@ GpStatus WINGDIPAPI GdipGetPathGradientTransform(GpPathGradient *grad,
 GpStatus WINGDIPAPI GdipMultiplyPathGradientTransform(GpPathGradient *grad,
     GDIPCONST GpMatrix *matrix, GpMatrixOrder order)
 {
-    static int calls;
-
     TRACE("(%p,%p,%i)\n", grad, matrix, order);
 
-    if(!(calls++))
-        FIXME("not implemented\n");
+    if (!grad)
+        return InvalidParameter;
 
-    return NotImplemented;
+    return GdipMultiplyMatrix(grad->transform, matrix, order);
+}
+
+GpStatus WINGDIPAPI GdipResetPathGradientTransform(GpPathGradient *grad)
+{
+    TRACE("(%p)\n", grad);
+
+    if (!grad)
+        return InvalidParameter;
+
+    return GdipSetMatrixElements(grad->transform, 1.0, 0.0, 0.0, 1.0, 0.0, 0.0);
 }
 
 GpStatus WINGDIPAPI GdipRotatePathGradientTransform(GpPathGradient *grad,
     REAL angle, GpMatrixOrder order)
 {
-    static int calls;
-
     TRACE("(%p,%0.2f,%i)\n", grad, angle, order);
 
-    if(!(calls++))
-        FIXME("not implemented\n");
+    if (!grad)
+        return InvalidParameter;
 
-    return NotImplemented;
+    return GdipRotateMatrix(grad->transform, angle, order);
 }
 
 GpStatus WINGDIPAPI GdipScalePathGradientTransform(GpPathGradient *grad,
     REAL sx, REAL sy, GpMatrixOrder order)
 {
-    static int calls;
-
     TRACE("(%p,%0.2f,%0.2f,%i)\n", grad, sx, sy, order);
 
-    if(!(calls++))
-        FIXME("not implemented\n");
+    if (!grad)
+        return InvalidParameter;
 
-    return NotImplemented;
+    return GdipScaleMatrix(grad->transform, sx, sy, order);
 }
 
 GpStatus WINGDIPAPI GdipTranslatePathGradientTransform(GpPathGradient *grad,
     REAL dx, REAL dy, GpMatrixOrder order)
 {
-    static int calls;
-
     TRACE("(%p,%0.2f,%0.2f,%i)\n", grad, dx, dy, order);
 
-    if(!(calls++))
-        FIXME("not implemented\n");
+    if (!grad)
+        return InvalidParameter;
 
-    return NotImplemented;
+    return GdipTranslateMatrix(grad->transform, dx, dy, order);
 }
 
 GpStatus WINGDIPAPI GdipSetSolidFillColor(GpSolidFill *sf, ARGB argb)
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 535ecab..01e8dd7 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -459,7 +459,7 @@
 459 stdcall GdipResetLineTransform(ptr)
 460 stdcall GdipResetPageTransform(ptr)
 461 stdcall GdipResetPath(ptr)
-462 stub GdipResetPathGradientTransform
+462 stdcall GdipResetPathGradientTransform(ptr)
 463 stdcall GdipResetPenTransform(ptr)
 464 stdcall GdipResetTextureTransform(ptr)
 465 stdcall GdipResetWorldTransform(ptr)
-- 
1.7.9.1


More information about the wine-patches mailing list