Vincent Povirk : gdiplus: Implement path gradient transform setters.

Alexandre Julliard julliard at winehq.org
Wed Apr 4 13:07:07 CDT 2012


Module: wine
Branch: master
Commit: c374fe9bdbdf40b755596bcd07fcff62b6cbc924
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=c374fe9bdbdf40b755596bcd07fcff62b6cbc924

Author: Vincent Povirk <vincent at codeweavers.com>
Date:   Sat Mar 31 13:30:44 2012 -0500

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)




More information about the wine-cvs mailing list