From 7b601148d5ca0e6185fb0602d3f517ce1872e756 Mon Sep 17 00:00:00 2001 From: Evan Stade Date: Tue, 31 Jul 2007 19:15:44 -0700 Subject: [PATCH] gdiplus: Added GdipCreateMatrix3. --- dlls/gdiplus/gdiplus.spec | 2 +- dlls/gdiplus/matrix.c | 17 +++++++++++++++++ include/gdiplusflat.h | 2 ++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/dlls/gdiplus/gdiplus.spec b/dlls/gdiplus/gdiplus.spec index 37d7dfffe51..0b570271614 100644 --- a/dlls/gdiplus/gdiplus.spec +++ b/dlls/gdiplus/gdiplus.spec @@ -105,7 +105,7 @@ @ stub GdipCreateLineBrushFromRectWithAngleI @ stub GdipCreateLineBrushI @ stdcall GdipCreateMatrix2(long long long long long long ptr) -@ stub GdipCreateMatrix3 +@ stdcall GdipCreateMatrix3(ptr ptr ptr) @ stub GdipCreateMatrix3I @ stdcall GdipCreateMatrix(ptr) @ stdcall GdipCreateMetafileFromEmf(ptr long ptr) diff --git a/dlls/gdiplus/matrix.c b/dlls/gdiplus/matrix.c index 3f96e4f9f08..1c4738e15f8 100644 --- a/dlls/gdiplus/matrix.c +++ b/dlls/gdiplus/matrix.c @@ -70,6 +70,23 @@ GpStatus WINGDIPAPI GdipCreateMatrix2(REAL m11, REAL m12, REAL m21, REAL m22, return Ok; } +GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *rect, + GDIPCONST GpPointF *pt, GpMatrix **matrix) +{ + if(!matrix) + return InvalidParameter; + + *matrix = GdipAlloc(sizeof(GpMatrix)); + if(!*matrix) return OutOfMemory; + + memcpy((*matrix)->matrix, rect, 4 * sizeof(REAL)); + + (*matrix)->matrix[4] = pt->X; + (*matrix)->matrix[5] = pt->Y; + + return Ok; +} + GpStatus WINGDIPAPI GdipCloneMatrix(GpMatrix *matrix, GpMatrix **clone) { if(!matrix || !clone) diff --git a/include/gdiplusflat.h b/include/gdiplusflat.h index 214055062f2..4906160831e 100644 --- a/include/gdiplusflat.h +++ b/include/gdiplusflat.h @@ -114,6 +114,8 @@ GpStatus WINGDIPAPI GdipTransformPath(GpPath*,GpMatrix*); GpStatus WINGDIPAPI GdipCloneMatrix(GpMatrix*,GpMatrix**); GpStatus WINGDIPAPI GdipCreateMatrix2(REAL,REAL,REAL,REAL,REAL,REAL,GpMatrix**); +GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *,GDIPCONST GpPointF*, + GpMatrix**); GpStatus WINGDIPAPI GdipCreateMatrix(GpMatrix**); GpStatus WINGDIPAPI GdipDeleteMatrix(GpMatrix*); GpStatus WINGDIPAPI GdipGetMatrixElements(GDIPCONST GpMatrix*,REAL*);