From: Søren Sandmann Pedersen <s...@redhat.com>

The computation of the extents rectangle is moved to its own
function.
---
 pixman/pixman-trap.c |   93 ++++++++++++++++++++++++++++---------------------
 1 files changed, 53 insertions(+), 40 deletions(-)

diff --git a/pixman/pixman-trap.c b/pixman/pixman-trap.c
index 35128ee..f633738 100644
--- a/pixman/pixman-trap.c
+++ b/pixman/pixman-trap.c
@@ -387,6 +387,56 @@ pixman_rasterize_trapezoid (pixman_image_t *          
image,
     }
 }
 
+static pixman_bool_t
+get_trap_extents (pixman_op_t op, const pixman_trapezoid_t *traps, int n_traps,
+                 pixman_box32_t *box)
+{
+    int i;
+
+    box->x1 = INT32_MAX;
+    box->y1 = INT32_MAX;
+    box->x2 = INT32_MIN;
+    box->y2 = INT32_MIN;
+       
+    for (i = 0; i < n_traps; ++i)
+    {
+       const pixman_trapezoid_t *trap = &(traps[i]);
+       int y1, y2;
+           
+       if (!pixman_trapezoid_valid (trap))
+           continue;
+           
+       y1 = pixman_fixed_to_int (trap->top);
+       if (y1 < box->y1)
+           box->y1 = y1;
+           
+       y2 = pixman_fixed_to_int (pixman_fixed_ceil (trap->bottom));
+       if (y2 > box->y2)
+           box->y2 = y2;
+           
+#define EXTEND_MIN(x)                                                  \
+       if (pixman_fixed_to_int ((x)) < box->x1)                        \
+           box->x1 = pixman_fixed_to_int ((x));
+#define EXTEND_MAX(x)                                                  \
+       if (pixman_fixed_to_int (pixman_fixed_ceil ((x))) > box->x2)    \
+           box->x2 = pixman_fixed_to_int (pixman_fixed_ceil ((x)));
+           
+#define EXTEND(x)                                                      \
+       EXTEND_MIN(x);                                                  \
+       EXTEND_MAX(x);
+           
+       EXTEND(trap->left.p1.x);
+       EXTEND(trap->left.p2.x);
+       EXTEND(trap->right.p1.x);
+       EXTEND(trap->right.p2.x);
+    }
+       
+    if (box->x1 >= box->x2 || box->y1 >= box->y2)
+       return FALSE;
+
+    return TRUE;
+}
+
 /*
  * pixman_composite_trapezoids()
  *
@@ -439,46 +489,9 @@ pixman_composite_trapezoids (pixman_op_t           op,
     {
        pixman_image_t *tmp;
        pixman_box32_t box;
-       
-       box.x1 = INT32_MAX;
-       box.y1 = INT32_MAX;
-       box.x2 = INT32_MIN;
-       box.y2 = INT32_MIN;
-       
-       for (i = 0; i < n_traps; ++i)
-       {
-           const pixman_trapezoid_t *trap = &(traps[i]);
-           int y1, y2;
-           
-           if (!pixman_trapezoid_valid (trap))
-               continue;
-           
-           y1 = pixman_fixed_to_int (trap->top);
-           if (y1 < box.y1)
-               box.y1 = y1;
-           
-           y2 = pixman_fixed_to_int (pixman_fixed_ceil (trap->bottom));
-           if (y2 > box.y2)
-               box.y2 = y2;
-           
-#define EXTEND_MIN(x)                                                  \
-           if (pixman_fixed_to_int ((x)) < box.x1)                     \
-               box.x1 = pixman_fixed_to_int ((x));
-#define EXTEND_MAX(x)                                                  \
-           if (pixman_fixed_to_int (pixman_fixed_ceil ((x))) > box.x2) \
-               box.x2 = pixman_fixed_to_int (pixman_fixed_ceil ((x)));
-           
-#define EXTEND(x)                                                      \
-           EXTEND_MIN(x);                                              \
-           EXTEND_MAX(x);
-           
-           EXTEND(trap->left.p1.x);
-           EXTEND(trap->left.p2.x);
-           EXTEND(trap->right.p1.x);
-           EXTEND(trap->right.p2.x);
-       }
-       
-       if (box.x1 >= box.x2 || box.y1 >= box.y2)
+       int i;
+
+       if (!get_trap_extents (op, traps, n_traps, &box))
            return;
        
        tmp = pixman_image_create_bits (
-- 
1.7.4

_______________________________________________
Pixman mailing list
Pixman@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/pixman

Reply via email to