diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2011-08-04 00:19:42 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2011-08-13 09:54:28 +0100 |
commit | e849e7c9291d57c3749f499c7e410e7be452b455 (patch) | |
tree | 55ad2ecfa2bb0c786c3e8acd12d228570a9a2054 /src/cairo-image-surface.c | |
parent | ee001b0b9fcafe14e0650d7b5c6f5e133f9d1e46 (diff) | |
download | cairo-e849e7c9291d57c3749f499c7e410e7be452b455.tar.gz |
image: move surface definition to new header for subclassing
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'src/cairo-image-surface.c')
-rw-r--r-- | src/cairo-image-surface.c | 47 |
1 files changed, 27 insertions, 20 deletions
diff --git a/src/cairo-image-surface.c b/src/cairo-image-surface.c index c2afbab68..7d8a303d8 100644 --- a/src/cairo-image-surface.c +++ b/src/cairo-image-surface.c @@ -44,6 +44,7 @@ #include "cairo-composite-rectangles-private.h" #include "cairo-default-context-private.h" #include "cairo-error-private.h" +#include "cairo-image-surface-private.h" #include "cairo-paginated-private.h" #include "cairo-pattern-private.h" #include "cairo-recording-surface-private.h" @@ -144,13 +145,33 @@ _cairo_content_from_pixman_format (pixman_format_code_t pixman_format) return content; } +void +_cairo_image_surface_init (cairo_image_surface_t *surface, + pixman_image_t *pixman_image, + pixman_format_code_t pixman_format) +{ + surface->pixman_image = pixman_image; + + surface->pixman_format = pixman_format; + surface->format = _cairo_format_from_pixman_format (pixman_format); + surface->data = (uint8_t *) pixman_image_get_data (pixman_image); + surface->owns_data = FALSE; + surface->transparency = CAIRO_IMAGE_UNKNOWN; + surface->color = CAIRO_IMAGE_UNKNOWN_COLOR; + + surface->width = pixman_image_get_width (pixman_image); + surface->height = pixman_image_get_height (pixman_image); + surface->stride = pixman_image_get_stride (pixman_image); + surface->depth = pixman_image_get_depth (pixman_image); + + surface->base.is_clear = surface->width == 0 || surface->height == 0; +} + cairo_surface_t * _cairo_image_surface_create_for_pixman_image (pixman_image_t *pixman_image, pixman_format_code_t pixman_format) { cairo_image_surface_t *surface; - int width = pixman_image_get_width (pixman_image); - int height = pixman_image_get_height (pixman_image); surface = malloc (sizeof (cairo_image_surface_t)); if (unlikely (surface == NULL)) @@ -161,21 +182,7 @@ _cairo_image_surface_create_for_pixman_image (pixman_image_t *pixman_image, NULL, /* device */ _cairo_content_from_pixman_format (pixman_format)); - surface->pixman_image = pixman_image; - - surface->pixman_format = pixman_format; - surface->format = _cairo_format_from_pixman_format (pixman_format); - surface->data = (uint8_t *) pixman_image_get_data (pixman_image); - surface->owns_data = FALSE; - surface->transparency = CAIRO_IMAGE_UNKNOWN; - surface->color = CAIRO_IMAGE_UNKNOWN_COLOR; - - surface->width = width; - surface->height = height; - surface->stride = pixman_image_get_stride (pixman_image); - surface->depth = pixman_image_get_depth (pixman_image); - - surface->base.is_clear = width == 0 || height == 0; + _cairo_image_surface_init (surface, pixman_image, pixman_format); return &surface->base; } @@ -760,7 +767,7 @@ _cairo_image_surface_unmap_image (void *abstract_surface, return CAIRO_INT_STATUS_SUCCESS; } -static cairo_status_t +cairo_status_t _cairo_image_surface_finish (void *abstract_surface) { cairo_image_surface_t *surface = abstract_surface; @@ -3387,7 +3394,7 @@ _clip_and_composite_trapezoids (cairo_image_surface_t *dst, } /* high level image interface */ -static cairo_bool_t +cairo_bool_t _cairo_image_surface_get_extents (void *abstract_surface, cairo_rectangle_int_t *rectangle) { @@ -4281,7 +4288,7 @@ _cairo_image_surface_glyphs (void *abstract_surface, return status; } -static void +void _cairo_image_surface_get_font_options (void *abstract_surface, cairo_font_options_t *options) { |