[gegl] transform-core.c: everything in terms of inverse.coeff, not inverse_jacobian.coeff, to prevent itera



commit 5214509a6dfb65715e0694c3a65e13a5a8e7e93c
Author: Nicolas Robidoux <nrobidoux git gnome org>
Date:   Sun Dec 9 12:37:05 2012 -0500

    transform-core.c: everything in terms of inverse.coeff, not inverse_jacobian.coeff, to prevent iteration side effects

 operations/transform/transform-core.c |   28 +++++++++++++---------------
 1 files changed, 13 insertions(+), 15 deletions(-)
---
diff --git a/operations/transform/transform-core.c b/operations/transform/transform-core.c
index b85cc48..9cd1f68 100644
--- a/operations/transform/transform-core.c
+++ b/operations/transform/transform-core.c
@@ -903,6 +903,13 @@ transform_affine (GeglBuffer  *dest,
 
       dest_buf = (gfloat *)i->data[0];
 
+      u_start = inverse.coeff [0][0] * (roi->x + (gdouble) 0.5) +
+                inverse.coeff [0][1] * (roi->y + (gdouble) 0.5) +
+                inverse.coeff [0][2];
+      v_start = inverse.coeff [1][0] * (roi->x + (gdouble) 0.5) +
+                inverse.coeff [1][1] * (roi->y + (gdouble) 0.5) +
+                inverse.coeff [1][2];
+
       /*
        * Set the inverse_jacobian matrix (a.k.a. scale) for samplers
        * that support it. The inverse jacobian will be "flipped" if
@@ -925,15 +932,7 @@ transform_affine (GeglBuffer  *dest,
       inverse_jacobian.coeff [1][0] = inverse.coeff [1][0];
       inverse_jacobian.coeff [1][1] = inverse.coeff [1][1];
 
-      u_start = inverse.coeff [0][0] * (roi->x + (gdouble) 0.5) +
-                inverse.coeff [0][1] * (roi->y + (gdouble) 0.5) +
-                inverse.coeff [0][2];
-      v_start = inverse.coeff [1][0] * (roi->x + (gdouble) 0.5) +
-                inverse.coeff [1][1] * (roi->y + (gdouble) 0.5) +
-                inverse.coeff [1][2];
-
-      if (inverse_jacobian.coeff [0][0] + inverse_jacobian.coeff [1][0] <
-          (gdouble) 0.0)
+      if (inverse.coeff [0][0] + inverse.coeff [1][0] < (gdouble) 0.0)
         {
           /*
            * "Flip", that is, put the "horizontal start" at the end
@@ -944,8 +943,8 @@ transform_affine (GeglBuffer  *dest,
           /*
            * Flip the horizontal scan component of the inverse jacobian:
            */
-          inverse_jacobian.coeff [0][0] = -inverse_jacobian.coeff [0][0];
-          inverse_jacobian.coeff [1][0] = -inverse_jacobian.coeff [1][0];
+          inverse_jacobian.coeff [0][0] = -inverse.coeff [0][0];
+          inverse_jacobian.coeff [1][0] = -inverse.coeff [1][0];
           /*
            * Set the flag so we know in which horizontal order we'll be
            * traversing the ROI with.
@@ -953,8 +952,7 @@ transform_affine (GeglBuffer  *dest,
           flip_x = (gint) 1;
         }
 
-      if (inverse_jacobian.coeff [0][1] + inverse_jacobian.coeff [1][1] <
-          (gdouble) 0.0)
+      if (inverse.coeff [0][1] + inverse.coeff [1][1] < (gdouble) 0.0)
         {
           /*
            * "Flip", that is, put the "vertical start" at the last
@@ -965,8 +963,8 @@ transform_affine (GeglBuffer  *dest,
           /*
            * Flip the vertical scan component of the inverse jacobian:
            */
-          inverse_jacobian.coeff [0][1] = -inverse_jacobian.coeff [0][1];
-          inverse_jacobian.coeff [1][1] = -inverse_jacobian.coeff [1][1];
+          inverse_jacobian.coeff [0][1] = -inverse.coeff [0][1];
+          inverse_jacobian.coeff [1][1] = -inverse.coeff [1][1];
           /*
            * Set the flag so we know in which vertical order we'll be
            * traversing the ROI with.



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]