From 477874797c089172b322b1ba2a2184349645aa9a Mon Sep 17 00:00:00 2001 From: Evan Stade Date: Thu, 19 Jul 2007 18:22:21 -0700 Subject: [PATCH] gdiplus: Added GdipTranslateMatrix. --- dlls/gdiplus/gdiplus.spec | 2 +- dlls/gdiplus/matrix.c | 23 +++++++++++++++++++++++ include/gdiplusflat.h | 1 + 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index f081ad9e57d..60e623c43a3 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 8c90211850f..9d3a78f1a7a 100644 --- a/dlls/gdiplus/matrix.c +++ b/dlls/gdiplus/matrix.c @@ -136,3 +136,26 @@ GpStatus WINGDIPAPI GdipTransformMatrixPoints(GpMatrix *matrix, GpPointF *pts, 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 16026dc7d89..09e5a091cfb 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -90,6 +90,7 @@ GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*); 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*);