summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <ssp@redhat.com>2010-08-14 05:11:58 -0400
committerSøren Sandmann Pedersen <ssp@redhat.com>2010-08-14 05:11:58 -0400
commitcd4d20eff09f3367a5ec69481f27a06adb6bc630 (patch)
treee39dc8727ad90ca0fbfb52450b2eda705da59db5
parent0a9bf70c593d4133ad614789c7e7790de0c19776 (diff)
row type in overlapped
-rw-r--r--region-iter.c46
1 files 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