summaryrefslogtreecommitdiff
path: root/src/cairo-boxes.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2010-03-26 19:37:08 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2010-05-12 20:54:49 +0100
commitbd672d080ca0036ef1b88d26583e6af36f541461 (patch)
tree78504de713e643fc0909fc1c3e9fbfb30f9b28af /src/cairo-boxes.c
parentc8fba4960339797521afbf8068fcbe62d064f5dc (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.c31
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;