diff options
author | Søren Sandmann Pedersen <sandmann@redhat.com> | 2009-02-17 06:06:40 -0500 |
---|---|---|
committer | Søren Sandmann Pedersen <sandmann@daimi.au.dk> | 2009-03-28 18:01:19 -0400 |
commit | df883aa937d2f3ecf52048b60caff48b1c9edac9 (patch) | |
tree | 58aaecc32c7417e43b77700f67bb4d2aa94462ad /src/cairo-region.c | |
parent | ebd0e685ae2d76c3af96d748a33a7194c70749f3 (diff) | |
download | cairo-df883aa937d2f3ecf52048b60caff48b1c9edac9.tar.gz |
[region] Add a cairo_region_overlap_t type
Diffstat (limited to 'src/cairo-region.c')
-rw-r--r-- | src/cairo-region.c | 33 |
1 files changed, 24 insertions, 9 deletions
diff --git a/src/cairo-region.c b/src/cairo-region.c index 5f53bc923..b951e6341 100644 --- a/src/cairo-region.c +++ b/src/cairo-region.c @@ -279,19 +279,34 @@ _cairo_region_translate (cairo_region_t *region, pixman_region32_translate (®ion->rgn, x, y); } -pixman_region_overlap_t +cairo_region_overlap_t _cairo_region_contains_rectangle (cairo_region_t *region, const cairo_rectangle_int_t *rect) { pixman_box32_t pbox; + pixman_region_overlap_t poverlap; - if (region->status) - return PIXMAN_REGION_OUT; - - pbox.x1 = rect->x; - pbox.y1 = rect->y; - pbox.x2 = rect->x + rect->width; - pbox.y2 = rect->y + rect->height; + if (!region->status) + { + pbox.x1 = rect->x; + pbox.y1 = rect->y; + pbox.x2 = rect->x + rect->width; + pbox.y2 = rect->y + rect->height; + + poverlap = pixman_region32_contains_rectangle (®ion->rgn, &pbox); + + switch (poverlap) + { + case PIXMAN_REGION_OUT: + return CAIRO_REGION_OVERLAP_OUT; + + case PIXMAN_REGION_IN: + return CAIRO_REGION_OVERLAP_IN; + + case PIXMAN_REGION_PART: + return CAIRO_REGION_OVERLAP_PART; + } + } - return pixman_region32_contains_rectangle (®ion->rgn, &pbox); + return CAIRO_REGION_OVERLAP_OUT; } |