From: Vladimir Vukicevic Date: Wed, 20 Jun 2007 19:13:30 +0000 (-0400) Subject: Add pixman_region_init_rects() X-Git-Tag: 1.0_branch~1457 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=8216ba1cbd27c5428970b8d393722d0f4343efed;p=profile%2Fivi%2Fpixman.git Add pixman_region_init_rects() --- 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,