diff options
author | Søren Sandmann Pedersen <ssp@redhat.com> | 2010-11-07 01:13:03 -0500 |
---|---|---|
committer | Søren Sandmann Pedersen <ssp@redhat.com> | 2010-11-07 01:13:03 -0500 |
commit | 0362a8361f2bed7156d2507f240300e83f65095e (patch) | |
tree | 953f9f5d137b1bfe737f8b607240dcb9d7cf6b61 | |
parent | 942d027a9dd49d881ca95a65c9f0187ce9d86882 (diff) |
boolean
-rw-r--r-- | region-iter.c | 27 |
1 files changed, 14 insertions, 13 deletions
diff --git a/region-iter.c b/region-iter.c index bf1751c..b46fcaa 100644 --- a/region-iter.c +++ b/region-iter.c @@ -92,7 +92,7 @@ region_iter_init (region_iter_t *iter, pixman_region32_t *region) } } -static void +static pixman_bool_t region_iter_get_row (region_iter_t *iter, row_t *row) { /* We always want an initial row of 0 boxes, so we @@ -108,11 +108,16 @@ region_iter_get_row (region_iter_t *iter, row_t *row) iter->y = iter->first->y1; iter->first_row = FALSE; + + return TRUE; } else { const pixman_box32_t *box; + if (iter->first == &sentinel) + return FALSE; + for (box = iter->first; box != iter->last; box++) { if (box->y1 != iter->y) @@ -135,6 +140,8 @@ region_iter_get_row (region_iter_t *iter, row_t *row) { iter->first = box; } + + return TRUE; } } @@ -383,13 +390,12 @@ dump_region (const char *title, pixman_region32_t *region) row_t row; printf ("-=- %s\n", title); + region_iter_init (&iter, region); - do + while (region_iter_get_row (&iter, &row)) { int n_boxes; - region_iter_get_row (&iter, &row); - if (row.first == &sentinel) n_boxes = 0; else @@ -397,7 +403,6 @@ dump_region (const char *title, pixman_region32_t *region) printf ("Row of %d boxes %d %d\n", n_boxes, row.y1, row.y2); } - while (row.y1 != INT_MAX); } typedef struct corner_t corner_t; @@ -448,9 +453,9 @@ region_path (pixman_region32_t *region, int *n) corners = NULL; n_corners = 0; - + region_iter_get_row (&iter, &row1); - do + while (region_iter_get_row (&iter, &row2)) { segment_iter_t seg_iter; segment_type_t type; @@ -467,7 +472,6 @@ region_path (pixman_region32_t *region, int *n) n_active = 0; current = 0; - region_iter_get_row (&iter, &row2); segment_iter_init (&seg_iter, &row1, &row2); while (segment_iter_get_segment (&seg_iter, &x1, &x2, &type)) { @@ -535,7 +539,7 @@ region_path (pixman_region32_t *region, int *n) free (old_active); row1 = row2; - } while (row1.y2 != INT_MAX); + } *n = n_corners; @@ -553,14 +557,11 @@ dump_corners (corner_t *corners, int n_corners) { corner_t *corner = &(corners[i]); - if (corner->next == -1) - printf ("%p has no next\n", corner); - while (corner->next != -1) { int next = corner->next; - printf (" %p Corner: %d %d\n", corner, corner->x, corner->y); + printf (" %p Corner: %d %d\n", corner, corner->x, corner->y); corner->next = -1; corner = &(corners[next]); |