Evan Stade : gdiplus: Added GdipTransformMatrixPoints test.

Alexandre Julliard julliard at wine.codeweavers.com
Thu Jul 12 08:32:42 CDT 2007


Module: wine
Branch: master
Commit: 37d91b04f3b7abf2c6876c75d7e3e0bfdd422dd2
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=37d91b04f3b7abf2c6876c75d7e3e0bfdd422dd2

Author: Evan Stade <estade at gmail.com>
Date:   Wed Jul 11 18:08:01 2007 -0700

gdiplus: Added GdipTransformMatrixPoints test.

---

 dlls/gdiplus/tests/matrix.c |   49 +++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 49 insertions(+), 0 deletions(-)

diff --git a/dlls/gdiplus/tests/matrix.c b/dlls/gdiplus/tests/matrix.c
index d6fc0ed..ff8a47f 100644
--- a/dlls/gdiplus/tests/matrix.c
+++ b/dlls/gdiplus/tests/matrix.c
@@ -19,6 +19,7 @@
  */
 
 #include <stdarg.h>
+#include <math.h>
 
 #include "windef.h"
 #include "gdiplus.h"
@@ -42,6 +43,53 @@ static void test_constructor_destructor(void)
     expect(Ok, status);
 }
 
+typedef struct{
+    REAL X;
+    REAL Y;
+} real_point;
+
+static real_point transform_points[] = {
+    {1000.00, 2600.00}, /*0*/
+    {855.00, 2390.00}, /*1*/
+    {700.00, 2200.00}, /*2*/
+    {565.00, 1970.00}, /*3*/
+    {400.00, 1800.00}, /*4*/
+    {275.00, 1550.00}, /*5*/
+    {100.00, 1400.00}, /*6*/
+    {-15.00, 1130.00}, /*7*/
+    {-200.00, 1000.00}, /*8*/
+    {-305.00, 710.00} /*9*/
+    };
+
+static void test_transform(void)
+{
+    GpStatus status;
+    GpMatrix *matrix = NULL;
+    GpPointF pts[10];
+    INT i;
+    BOOL match;
+
+    for(i = 0; i < 10; i ++){
+        pts[i].X = i * 5.0 * (REAL)(i % 2);
+        pts[i].Y = 50.0 - i * 5.0;
+    }
+
+    GdipCreateMatrix2(1.0, -2.0, 30.0, 40.0, -500.0, 600.0, &matrix);
+
+    status = GdipTransformMatrixPoints(matrix, pts, 10);
+    expect(Ok, status);
+
+    for(i = 0; i < 10; i ++){
+        match = fabs(transform_points[i].X - pts[i].X) < 2.0
+            && fabs(transform_points[i].Y -  pts[i].Y) < 2.0;
+
+        ok(match, "Expected #%d to be (%.2f, %.2f) but got (%.2f, %.2f)\n", i,
+           transform_points[i].X, transform_points[i].Y, pts[i].X, pts[i].Y);
+    }
+
+    GdipDeleteMatrix(matrix);
+}
+
 START_TEST(matrix)
 {
     struct GdiplusStartupInput gdiplusStartupInput;
@@ -55,6 +103,7 @@ START_TEST(matrix)
     GdiplusStartup(&gdiplusToken, &gdiplusStartupInput, NULL);
 
     test_constructor_destructor();
+    test_transform();
 
     GdiplusShutdown(gdiplusToken);
 }




More information about the wine-cvs mailing list