Vincent Povirk wrote:

From 1de9b2291bf9a5617ca1e3b0cba5f1260889c259 Mon Sep 17 00:00:00 2001
From: Vincent Povirk <vinc...@codeweavers.com>
Date: Mon, 23 Mar 2009 16:34:12 -0500
Subject: [PATCH] gdiplus: implement GdipTransformPoints


It's a strange way to check enumeration with integer comparison, isn't it?
And not clear in this particular case.

+    if (stat == Ok)
+    {
+        unitscale = convert_unit(graphics->hdc, graphics->unit);
+
+        if(graphics->unit != UnitDisplay)
+            unitscale *= graphics->scale;
+
+        if (src_space <= CoordinateSpaceWorld && dst_space >= 
CoordinateSpacePage)
+            GdipMultiplyMatrix(matrix, graphics->worldtrans, 
MatrixOrderAppend);
+        if (src_space <= CoordinateSpacePage && dst_space >= 
CoordinateSpaceDevice)
+            GdipScaleMatrix(matrix, unitscale, unitscale, MatrixOrderAppend);
+
+        if (dst_space <= CoordinateSpacePage && src_space >= 
CoordinateSpaceDevice)
+            GdipScaleMatrix(matrix, 1.0/unitscale, 1.0/unitscale, 
MatrixOrderAppend);
+        if (dst_space <= CoordinateSpaceWorld && src_space >= 
CoordinateSpacePage)
+        {
+            GpMatrix *inverted_transform;
+            stat = GdipCloneMatrix(graphics->worldtrans, &inverted_transform);
+            if (stat == Ok)
+            {
+                GdipInvertMatrix(inverted_transform);
+                GdipMultiplyMatrix(matrix, inverted_transform, 
MatrixOrderAppend);
+                GdipDeleteMatrix(inverted_transform);
+            }
+
Maybe it's better to use 'switch' for source coords with falling and ifs inside cases for destination.

<= CoordinateSpaceWorld is just CoordinateSpaceWorld
>= CoordinateSpaceDevice - is CoordinateSpaceDevice.



Reply via email to