From af1e168bbbbaddbf564c661111a74064fbbb5334 Mon Sep 17 00:00:00 2001 From: Behdad Esfahbod Date: Fri, 9 May 2008 15:25:40 +0200 Subject: [PATCH] [cairo-meta/analysis-surface] Make width/height of -1,-1 mean unbounded surface --- src/cairo-analysis-surface.c | 15 +++++++++++---- src/cairo-meta-surface.c | 3 +++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/src/cairo-analysis-surface.c b/src/cairo-analysis-surface.c index c6253803f..2dc149d45 100644 --- a/src/cairo-analysis-surface.c +++ b/src/cairo-analysis-surface.c @@ -673,10 +673,17 @@ _cairo_analysis_surface_create (cairo_surface_t *target, _cairo_region_init (&surface->supported_region); _cairo_region_init (&surface->fallback_region); - surface->current_clip.x = 0; - surface->current_clip.y = 0; - surface->current_clip.width = width; - surface->current_clip.height = height; + if (width == -1 && height == -1) { + surface->current_clip.x = CAIRO_RECT_INT_MIN; + surface->current_clip.y = CAIRO_RECT_INT_MIN; + surface->current_clip.width = CAIRO_RECT_INT_MAX - CAIRO_RECT_INT_MIN; + surface->current_clip.height = CAIRO_RECT_INT_MAX - CAIRO_RECT_INT_MIN; + } else { + surface->current_clip.x = 0; + surface->current_clip.y = 0; + surface->current_clip.width = width; + surface->current_clip.height = height; + } return &surface->base; } diff --git a/src/cairo-meta-surface.c b/src/cairo-meta-surface.c index 61c9b5d3e..f7ce2d701 100644 --- a/src/cairo-meta-surface.c +++ b/src/cairo-meta-surface.c @@ -570,6 +570,9 @@ _cairo_meta_surface_get_extents (void *abstract_surface, { cairo_meta_surface_t *surface = abstract_surface; + if (surface->width_pixels == -1 && surface->height_pixels == -1) + return CAIRO_INT_STATUS_UNSUPPORTED; + rectangle->x = 0; rectangle->y = 0; rectangle->width = surface->width_pixels;