From cd4d20eff09f3367a5ec69481f27a06adb6bc630 Mon Sep 17 00:00:00 2001 From: Søren Sandmann Pedersen Date: Sat, 14 Aug 2010 05:11:58 -0400 Subject: row type in overlapped --- region-iter.c | 46 +++++++++++++++++++++++----------------------- 1 file changed, 23 insertions(+), 23 deletions(-) diff --git a/region-iter.c b/region-iter.c index 39477c7..c3b78f1 100644 --- a/region-iter.c +++ b/region-iter.c @@ -159,47 +159,49 @@ overlapped_iter_init (overlapped_iter_t *iter, } static void -overlapped_iter_get_rows (overlapped_iter_t *iter, - const pixman_box32_t **row1_begin, const pixman_box32_t **row1_end, - const pixman_box32_t **row2_begin, const pixman_box32_t **row2_end, - int *y1, int *y2) +overlapped_iter_get_rows (overlapped_iter_t *iter, row_t *row1, row_t *row2) { - *row1_begin = iter->row1.first; - *row1_end = iter->row1.last; - *row2_begin = iter->row2.first; - *row2_end = iter->row2.last; + int y1, y2; + + row1->first = iter->row1.first; + row1->last = iter->row1.last; + row2->first = iter->row2.first; + row2->last = iter->row2.last; if (iter->row1.y1 < iter->row2.y1) { - *y1 = iter->row1.y1; - *y2 = iter->row2.y1; + y1 = iter->row1.y1; + y2 = iter->row2.y1; iter->row1.y1 = iter->row2.y1; } else if (iter->row2.y1 < iter->row1.y1) { - *y1 = iter->row2.y1; - *y2 = iter->row1.y1; + y1 = iter->row2.y1; + y2 = iter->row1.y1; iter->row2.y1 = iter->row1.y1; } else if (iter->row1.y2 < iter->row2.y2) { - *y1 = iter->row1.y1; - *y2 = iter->row1.y2; + y1 = iter->row1.y1; + y2 = iter->row1.y2; iter->row1.y1 = iter->row1.y2; iter->row2.y1 = iter->row1.y2; } else { - *y1 = iter->row2.y1; - *y2 = iter->row2.y2; + y1 = iter->row2.y1; + y2 = iter->row2.y2; iter->row2.y1 = iter->row2.y2; iter->row1.y1 = iter->row2.y2; } + row1->y1 = row2->y1 = y1; + row2->y2 = row2->y2 = y2; + if (iter->row1.y1 == iter->row1.y2) region_iter_get_row (&iter->iter1, &iter->row1); @@ -346,31 +348,29 @@ region_op (pixman_region32_t *dst, ops_t op) { overlapped_iter_t iter; - int y1, y2; + row_t row1, row2; overlapped_iter_init (&iter, src1, src2); do { - const pixman_box32_t *row1_begin, *row1_end; - const pixman_box32_t *row2_begin, *row2_end; segment_iter_t seg_iter; segment_type_t type; int x1, x2; - overlapped_iter_get_rows (&iter, &row1_begin, &row1_end, &row2_begin, &row2_end, &y1, &y2); + overlapped_iter_get_rows (&iter, &row1, &row2); - segment_iter_init (&seg_iter, row1_begin, row1_end, row2_begin, row2_end); + segment_iter_init (&seg_iter, row1.first, row1.last, row2.first, row2.last); while (segment_iter_get_segment (&seg_iter, &x1, &x2, &type)) { if (op & (1 << type)) { printf ("box at %d %d %d %d %s\n", - x1, y1, x2, y2, (x1 == x2 || y1 == y2)? "[empty]" : ""); + x1, row1.y1, x2, row1.y2, (x1 == x2 || row1.y1 == row2.y2)? "[empty]" : ""); } } } - while (y1 != INT_MAX); + while (row1.y1 != INT_MAX); } static void -- cgit v1.2.3