Module: wine Branch: master Commit: d7379712e7cf65b99e7d44f1232edad796043abe URL: http://source.winehq.org/git/wine.git/?a=commit;h=d7379712e7cf65b99e7d44f123...
Author: Vincent Povirk vincent@codeweavers.com Date: Sun Jan 16 10:59:50 2011 -0600
gdiplus: Rewrite GdipCreateMatrix3.
---
dlls/gdiplus/matrix.c | 16 ++++++++-------- dlls/gdiplus/tests/matrix.c | 36 ++++++++++++++++++------------------ 2 files changed, 26 insertions(+), 26 deletions(-)
diff --git a/dlls/gdiplus/matrix.c b/dlls/gdiplus/matrix.c index a6724d3..3798bd2 100644 --- a/dlls/gdiplus/matrix.c +++ b/dlls/gdiplus/matrix.c @@ -85,20 +85,20 @@ GpStatus WINGDIPAPI GdipCreateMatrix2(REAL m11, REAL m12, REAL m21, REAL m22, GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *rect, GDIPCONST GpPointF *pt, GpMatrix **matrix) { + REAL m11, m12, m21, m22, dx, dy; TRACE("(%p, %p, %p)\n", rect, pt, matrix);
if(!matrix || !pt) return InvalidParameter;
- *matrix = GdipAlloc(sizeof(GpMatrix)); - if(!*matrix) return OutOfMemory; - - memcpy((*matrix)->matrix, rect, 4 * sizeof(REAL)); + m11 = (pt[1].X - pt[0].X) / rect->Width; + m21 = (pt[2].X - pt[0].X) / rect->Height; + dx = pt[0].X - m11 * rect->X - m21 * rect->Y; + m12 = (pt[1].Y - pt[0].Y) / rect->Width; + m22 = (pt[2].Y - pt[0].Y) / rect->Height; + dy = pt[0].Y - m12 * rect->X - m22 * rect->Y;
- (*matrix)->matrix[4] = pt->X; - (*matrix)->matrix[5] = pt->Y; - - return Ok; + return GdipCreateMatrix2(m11, m12, m21, m22, dx, dy, matrix); }
GpStatus WINGDIPAPI GdipCreateMatrix3I(GDIPCONST GpRect *rect, GDIPCONST GpPoint *pt, diff --git a/dlls/gdiplus/tests/matrix.c b/dlls/gdiplus/tests/matrix.c index b9992c3..cf8f158 100644 --- a/dlls/gdiplus/tests/matrix.c +++ b/dlls/gdiplus/tests/matrix.c @@ -249,12 +249,12 @@ static void test_constructor3(void) stat = GdipGetMatrixElements(matrix, values); expect(Ok, stat);
- todo_wine expectf(1.0, values[0]); - todo_wine expectf(0.0, values[1]); - todo_wine expectf(0.0, values[2]); - todo_wine expectf(1.0, values[3]); - todo_wine expectf(0.0, values[4]); - todo_wine expectf(0.0, values[5]); + expectf(1.0, values[0]); + expectf(0.0, values[1]); + expectf(0.0, values[2]); + expectf(1.0, values[3]); + expectf(0.0, values[4]); + expectf(0.0, values[5]);
GdipDeleteMatrix(matrix);
@@ -271,12 +271,12 @@ static void test_constructor3(void) stat = GdipGetMatrixElements(matrix, values); expect(Ok, stat);
- todo_wine expectf(2.0, values[0]); - todo_wine expectf(0.0, values[1]); - todo_wine expectf(0.0, values[2]); - todo_wine expectf(1.0, values[3]); - todo_wine expectf(0.0, values[4]); - todo_wine expectf(0.0, values[5]); + expectf(2.0, values[0]); + expectf(0.0, values[1]); + expectf(0.0, values[2]); + expectf(1.0, values[3]); + expectf(0.0, values[4]); + expectf(0.0, values[5]);
GdipDeleteMatrix(matrix);
@@ -293,12 +293,12 @@ static void test_constructor3(void) stat = GdipGetMatrixElements(matrix, values); expect(Ok, stat);
- todo_wine expectf(1.0, values[0]); - todo_wine expectf(1.0, values[1]); - todo_wine expectf(0.0, values[2]); - todo_wine expectf(1.0, values[3]); - todo_wine expectf(0.0, values[4]); - todo_wine expectf(0.0, values[5]); + expectf(1.0, values[0]); + expectf(1.0, values[1]); + expectf(0.0, values[2]); + expectf(1.0, values[3]); + expectf(0.0, values[4]); + expectf(0.0, values[5]);
GdipDeleteMatrix(matrix);}