diff options
Diffstat (limited to 'boilerplate/cairo-boilerplate-skia.c')
-rw-r--r-- | boilerplate/cairo-boilerplate-skia.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/boilerplate/cairo-boilerplate-skia.c b/boilerplate/cairo-boilerplate-skia.c new file mode 100644 index 000000000..c06e7f054 --- /dev/null +++ b/boilerplate/cairo-boilerplate-skia.c @@ -0,0 +1,55 @@ + +#include "cairo-boilerplate-private.h" + +#include <cairo-skia.h> + +static cairo_surface_t * +_cairo_boilerplate_skia_create_surface (const char *name, + cairo_content_t content, + double width, + double height, + double max_width, + double max_height, + cairo_boilerplate_mode_t mode, + void **closure) +{ + cairo_format_t format; + + *closure = NULL; + + if (content == CAIRO_CONTENT_COLOR_ALPHA) { + format = CAIRO_FORMAT_ARGB32; + } else if (content == CAIRO_CONTENT_COLOR) { + format = CAIRO_FORMAT_RGB24; + } else { + return NULL; + } + + return cairo_skia_surface_create (format, width, height); +} + +static const cairo_boilerplate_target_t targets[] = { + { + "skia", "skia", NULL, NULL, + CAIRO_SURFACE_TYPE_SKIA, CAIRO_CONTENT_COLOR_ALPHA, 0, + "cairo_skia_surface_create", + _cairo_boilerplate_skia_create_surface, + cairo_surface_create_similar, + NULL, NULL, + _cairo_boilerplate_get_image_surface, + cairo_surface_write_to_png, + NULL, NULL, NULL, TRUE, FALSE, FALSE + }, + { + "skia", "skia", NULL, NULL, + CAIRO_SURFACE_TYPE_SKIA, CAIRO_CONTENT_COLOR, 0, + "cairo_skia_surface_create", + _cairo_boilerplate_skia_create_surface, + cairo_surface_create_similar, + NULL, NULL, + _cairo_boilerplate_get_image_surface, + cairo_surface_write_to_png, + NULL, NULL, NULL, FALSE, FALSE, FALSE + }, +}; +CAIRO_BOILERPLATE (skia, targets) |