diff options
author | Adrian Johnson <ajohnson@redneon.com> | 2010-11-20 00:50:04 +1030 |
---|---|---|
committer | Adrian Johnson <ajohnson@redneon.com> | 2010-11-20 00:50:04 +1030 |
commit | e7c5f470436220668e50201d775a9fec47162a67 (patch) | |
tree | 6bd5bab9cdb2bff0c1b46ad630e7c65234315f28 /src/cairo-paginated-surface.c | |
parent | 6e3e329170ab4b96bc0d587c8071e869e228e758 (diff) | |
download | cairo-e7c5f470436220668e50201d775a9fec47162a67.tar.gz |
PS/PDF: Fix regression when changing page size to a larger size
https://bugs.freedesktop.org/show_bug.cgi?id=24691
Diffstat (limited to 'src/cairo-paginated-surface.c')
-rw-r--r-- | src/cairo-paginated-surface.c | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/src/cairo-paginated-surface.c b/src/cairo-paginated-surface.c index af4790e7e..9e65f7ba0 100644 --- a/src/cairo-paginated-surface.c +++ b/src/cairo-paginated-surface.c @@ -151,6 +151,34 @@ _cairo_paginated_surface_get_target (cairo_surface_t *surface) return paginated_surface->target; } +cairo_status_t +_cairo_paginated_surface_set_size (cairo_surface_t *surface, + int width, + int height) +{ + cairo_paginated_surface_t *paginated_surface; + cairo_status_t status; + cairo_rectangle_t recording_extents; + + assert (_cairo_surface_is_paginated (surface)); + + paginated_surface = (cairo_paginated_surface_t *) surface; + + recording_extents.x = 0; + recording_extents.y = 0; + recording_extents.width = width; + recording_extents.height = height; + + cairo_surface_destroy (paginated_surface->recording_surface); + paginated_surface->recording_surface = cairo_recording_surface_create (paginated_surface->content, + &recording_extents); + status = paginated_surface->recording_surface->status; + if (unlikely (status)) + return _cairo_surface_set_error (surface, status); + + return CAIRO_STATUS_SUCCESS; +} + static cairo_status_t _cairo_paginated_surface_finish (void *abstract_surface) { |