From 8216ba1cbd27c5428970b8d393722d0f4343efed Mon Sep 17 00:00:00 2001 From: Vladimir Vukicevic Date: Wed, 20 Jun 2007 15:13:30 -0400 Subject: [PATCH] Add pixman_region_init_rects() --- pixman/pixman-region.c | 27 +++++++++++++++++++++++++++ pixman/pixman.h | 3 ++- 2 files changed, 29 insertions(+), 1 deletion(-) diff --git a/pixman/pixman-region.c b/pixman/pixman-region.c index 7a0f9da..08ce2e2 100644 --- a/pixman/pixman-region.c +++ b/pixman/pixman-region.c @@ -2468,3 +2468,30 @@ pixman_region_selfcheck (reg) } } +pixman_bool_t +pixman_region_init_rects (pixman_region16_t *region, + pixman_box16_t *boxes, int count) +{ + int overlap; + + if (count == 1) { + pixman_region_init_rect(region, + boxes[0].x1, + boxes[0].y1, + boxes[0].x2 - boxes[0].x1, + boxes[0].y2 - boxes[0].y1); + return TRUE; + } + + pixman_region_init(region); + if (!pixman_rect_alloc(region, count)) + return FALSE; + + /* Copy in the rects */ + memcpy (PIXREGION_RECTS(region), boxes, sizeof(pixman_box16_t) * count); + region->data->numRects = count; + + /* Validate */ + region->extents.x1 = region->extents.x2 = 0; + return pixman_region_validate (region, &overlap); +} diff --git a/pixman/pixman.h b/pixman/pixman.h index 0014cef..cd64c8d 100644 --- a/pixman/pixman.h +++ b/pixman/pixman.h @@ -288,7 +288,8 @@ pixman_bool_t pixman_region_equal (pixman_region16_t *region1, pixman_region16_t *region2); pixman_bool_t pixman_region_selfcheck (pixman_region16_t *region); void pixman_region_reset(pixman_region16_t *region, pixman_box16_t *box); - +pixman_bool_t pixman_region_init_rects (pixman_region16_t *region, + pixman_box16_t *boxes, int count); /* Copy / Fill */ pixman_bool_t pixman_blt (uint32_t *src_bits, -- 2.7.4