[2/10] gdiplus: added GdipTranslateMatrix [try2]

Evan Stade estade at gmail.com
Wed Jul 18 21:38:38 CDT 2007


Hi,

 dlls/gdiplus/gdiplus.spec |    2 +-
 dlls/gdiplus/matrix.c     |   23 +++++++++++++++++++++++
 include/gdiplusflat.h     |    1 +
 3 files changed, 25 insertions(+), 1 deletions(-)

-- 
Evan Stade
-------------- next part --------------
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index f081ad9..60e623c 100644
--- a/dlls/gdiplus/gdiplus.spec
+++ b/dlls/gdiplus/gdiplus.spec
@@ -591,7 +591,7 @@
 @ stub GdipTranslateClip
 @ stub GdipTranslateClipI
 @ stub GdipTranslateLineTransform
-@ stub GdipTranslateMatrix
+@ stdcall GdipTranslateMatrix(ptr long long long)
 @ stub GdipTranslatePathGradientTransform
 @ stub GdipTranslatePenTransform
 @ stub GdipTranslateRegion
diff --git a/dlls/gdiplus/matrix.c b/dlls/gdiplus/matrix.c
index 5b4d4a4..b9aa761 100644
--- a/dlls/gdiplus/matrix.c
+++ b/dlls/gdiplus/matrix.c
@@ -134,3 +134,26 @@ GpStatus WINGDIPAPI GdipTransformMatrixP
 
     return Ok;
 }
+
+GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix *matrix, REAL offsetX,
+    REAL offsetY, GpMatrixOrder order)
+{
+    REAL translate[6];
+
+    if(!matrix)
+        return InvalidParameter;
+
+    translate[0] = 1.0;
+    translate[1] = 0.0;
+    translate[2] = 0.0;
+    translate[3] = 1.0;
+    translate[4] = offsetX;
+    translate[5] = offsetY;
+
+    if(order == MatrixOrderAppend)
+        matrix_multiply(matrix->matrix, translate, matrix->matrix);
+    else
+        matrix_multiply(translate, matrix->matrix, matrix->matrix);
+
+    return Ok;
+}
diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h
index 16026dc..09e5a09 100644
--- a/include/gdiplusflat.h
+++ b/include/gdiplusflat.h
@@ -90,6 +90,7 @@ GpStatus WINGDIPAPI GdipDeleteMatrix(GpM
 GpStatus WINGDIPAPI GdipMultiplyMatrix(GpMatrix*,GpMatrix*,GpMatrixOrder);
 GpStatus WINGDIPAPI GdipScaleMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
 GpStatus WINGDIPAPI GdipTransformMatrixPoints(GpMatrix*,GpPointF*,INT);
+GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix*,REAL,REAL,GpMatrixOrder);
 
 GpStatus WINGDIPAPI GdipCreatePathIter(GpPathIterator**,GpPath*);
 GpStatus WINGDIPAPI GdipDeletePathIter(GpPathIterator*);
-- 
1.4.1


More information about the wine-patches mailing list