summaryrefslogtreecommitdiff
path: root/src/cairo-region.c
diff options
context:
space:
mode:
authorSøren Sandmann Pedersen <sandmann@redhat.com>2009-02-17 06:06:40 -0500
committerSøren Sandmann Pedersen <sandmann@daimi.au.dk>2009-03-28 18:01:19 -0400
commitdf883aa937d2f3ecf52048b60caff48b1c9edac9 (patch)
tree58aaecc32c7417e43b77700f67bb4d2aa94462ad /src/cairo-region.c
parentebd0e685ae2d76c3af96d748a33a7194c70749f3 (diff)
downloadcairo-df883aa937d2f3ecf52048b60caff48b1c9edac9.tar.gz
[region] Add a cairo_region_overlap_t type
Diffstat (limited to 'src/cairo-region.c')
-rw-r--r--src/cairo-region.c33
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 (&region->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 (&region->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 (&region->rgn, &pbox);
+ return CAIRO_REGION_OVERLAP_OUT;
}