diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2010-03-26 19:37:08 +0000 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2010-05-12 20:54:49 +0100 |
commit | bd672d080ca0036ef1b88d26583e6af36f541461 (patch) | |
tree | 78504de713e643fc0909fc1c3e9fbfb30f9b28af /src/cairo-boxes.c | |
parent | c8fba4960339797521afbf8068fcbe62d064f5dc (diff) |
drm: code dump, sorry.
Lots upon lots of tiny fixes mixed in with experimental code. :(
Diffstat (limited to 'src/cairo-boxes.c')
-rw-r--r-- | src/cairo-boxes.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/cairo-boxes.c b/src/cairo-boxes.c index ca265365..31bfc0e4 100644 --- a/src/cairo-boxes.c +++ b/src/cairo-boxes.c @@ -240,6 +240,37 @@ _cairo_boxes_add (cairo_boxes_t *boxes, } void +_cairo_boxes_extents (const cairo_boxes_t *boxes, + cairo_rectangle_int_t *extents) +{ + const struct _cairo_boxes_chunk *chunk; + cairo_box_t box; + int i; + + box.p1.y = box.p1.x = INT_MAX; + box.p2.y = box.p2.x = INT_MIN; + + for (chunk = &boxes->chunks; chunk != NULL; chunk = chunk->next) { + const cairo_box_t *b = chunk->base; + for (i = 0; i < chunk->count; i++) { + if (b[i].p1.x < box.p1.x) + box.p1.x = b[i].p1.x; + + if (b[i].p1.y < box.p1.y) + box.p1.y = b[i].p1.y; + + if (b[i].p2.x > box.p2.x) + box.p2.x = b[i].p2.x; + + if (b[i].p2.y > box.p2.y) + box.p2.y = b[i].p2.y; + } + } + + _cairo_box_round_to_rectangle (&box, extents); +} + +void _cairo_boxes_clear (cairo_boxes_t *boxes) { struct _cairo_boxes_chunk *chunk, *next; |