[6/8] gdiplus: added GdipTranslateMatrix

Evan Stade estade at gmail.com
Tue Jul 17 21:31:27 CDT 2007


Hi,

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

-- 
Evan Stade
-------------- next part --------------
diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec
index 85b2458..b644410 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 f8e0d2f..dbbe494 100644
--- a/dlls/gdiplus/matrix.c
+++ b/dlls/gdiplus/matrix.c
@@ -132,3 +132,22 @@ GpStatus WINGDIPAPI GdipTransformMatrixP
 
     return Ok;
 }
+
+GpStatus WINGDIPAPI GdipTranslateMatrix(GpMatrix *matrix, REAL offsetX,
+    REAL offsetY, GpMatrixOrder order)
+{
+    REAL translate[6] = {1.0,0.0,0.0,1.0,0.0,0.0};
+
+    if(!matrix)
+        return InvalidParameter;
+
+    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 a81ca98..cd892dc 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