Module: wine Branch: master Commit: 477874797c089172b322b1ba2a2184349645aa9a URL: http://source.winehq.org/git/wine.git/?a=commit;h=477874797c089172b322b1ba2a...
Author: Evan Stade estade@gmail.com Date: Thu Jul 19 18:22:21 2007 -0700
gdiplus: Added GdipTranslateMatrix.
---
dlls/gdiplus/gdiplus.spec | 2 +- dlls/gdiplus/matrix.c | 23 +++++++++++++++++++++++ include/gdiplusflat.h | 1 + 3 files changed, 25 insertions(+), 1 deletions(-)
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 8c90211..9d3a78f 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 16026dc..09e5a09 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*);