Commit d7379712 authored by Vincent Povirk's avatar Vincent Povirk Committed by Alexandre Julliard

gdiplus: Rewrite GdipCreateMatrix3.

parent 9fd1e236
...@@ -85,20 +85,20 @@ GpStatus WINGDIPAPI GdipCreateMatrix2(REAL m11, REAL m12, REAL m21, REAL m22, ...@@ -85,20 +85,20 @@ GpStatus WINGDIPAPI GdipCreateMatrix2(REAL m11, REAL m12, REAL m21, REAL m22,
GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *rect, GpStatus WINGDIPAPI GdipCreateMatrix3(GDIPCONST GpRectF *rect,
GDIPCONST GpPointF *pt, GpMatrix **matrix) GDIPCONST GpPointF *pt, GpMatrix **matrix)
{ {
REAL m11, m12, m21, m22, dx, dy;
TRACE("(%p, %p, %p)\n", rect, pt, matrix); TRACE("(%p, %p, %p)\n", rect, pt, matrix);
if(!matrix || !pt) if(!matrix || !pt)
return InvalidParameter; return InvalidParameter;
*matrix = GdipAlloc(sizeof(GpMatrix)); m11 = (pt[1].X - pt[0].X) / rect->Width;
if(!*matrix) return OutOfMemory; m21 = (pt[2].X - pt[0].X) / rect->Height;
dx = pt[0].X - m11 * rect->X - m21 * rect->Y;
memcpy((*matrix)->matrix, rect, 4 * sizeof(REAL)); 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; return GdipCreateMatrix2(m11, m12, m21, m22, dx, dy, matrix);
(*matrix)->matrix[5] = pt->Y;
return Ok;
} }
GpStatus WINGDIPAPI GdipCreateMatrix3I(GDIPCONST GpRect *rect, GDIPCONST GpPoint *pt, GpStatus WINGDIPAPI GdipCreateMatrix3I(GDIPCONST GpRect *rect, GDIPCONST GpPoint *pt,
......
...@@ -249,12 +249,12 @@ static void test_constructor3(void) ...@@ -249,12 +249,12 @@ static void test_constructor3(void)
stat = GdipGetMatrixElements(matrix, values); stat = GdipGetMatrixElements(matrix, values);
expect(Ok, stat); expect(Ok, stat);
todo_wine expectf(1.0, values[0]); expectf(1.0, values[0]);
todo_wine expectf(0.0, values[1]); expectf(0.0, values[1]);
todo_wine expectf(0.0, values[2]); expectf(0.0, values[2]);
todo_wine expectf(1.0, values[3]); expectf(1.0, values[3]);
todo_wine expectf(0.0, values[4]); expectf(0.0, values[4]);
todo_wine expectf(0.0, values[5]); expectf(0.0, values[5]);
GdipDeleteMatrix(matrix); GdipDeleteMatrix(matrix);
...@@ -271,12 +271,12 @@ static void test_constructor3(void) ...@@ -271,12 +271,12 @@ static void test_constructor3(void)
stat = GdipGetMatrixElements(matrix, values); stat = GdipGetMatrixElements(matrix, values);
expect(Ok, stat); expect(Ok, stat);
todo_wine expectf(2.0, values[0]); expectf(2.0, values[0]);
todo_wine expectf(0.0, values[1]); expectf(0.0, values[1]);
todo_wine expectf(0.0, values[2]); expectf(0.0, values[2]);
todo_wine expectf(1.0, values[3]); expectf(1.0, values[3]);
todo_wine expectf(0.0, values[4]); expectf(0.0, values[4]);
todo_wine expectf(0.0, values[5]); expectf(0.0, values[5]);
GdipDeleteMatrix(matrix); GdipDeleteMatrix(matrix);
...@@ -293,12 +293,12 @@ static void test_constructor3(void) ...@@ -293,12 +293,12 @@ static void test_constructor3(void)
stat = GdipGetMatrixElements(matrix, values); stat = GdipGetMatrixElements(matrix, values);
expect(Ok, stat); expect(Ok, stat);
todo_wine expectf(1.0, values[0]); expectf(1.0, values[0]);
todo_wine expectf(1.0, values[1]); expectf(1.0, values[1]);
todo_wine expectf(0.0, values[2]); expectf(0.0, values[2]);
todo_wine expectf(1.0, values[3]); expectf(1.0, values[3]);
todo_wine expectf(0.0, values[4]); expectf(0.0, values[4]);
todo_wine expectf(0.0, values[5]); expectf(0.0, values[5]);
GdipDeleteMatrix(matrix);} GdipDeleteMatrix(matrix);}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment