summaryrefslogtreecommitdiff
path: root/src/cairo-image-surface.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2011-08-04 00:19:42 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2011-08-13 09:54:28 +0100
commite849e7c9291d57c3749f499c7e410e7be452b455 (patch)
tree55ad2ecfa2bb0c786c3e8acd12d228570a9a2054 /src/cairo-image-surface.c
parentee001b0b9fcafe14e0650d7b5c6f5e133f9d1e46 (diff)
downloadcairo-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.c47
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)
{