cairo_surface_t * cairo_skia_surface_get_image (cairo_surface_t *surface) { if (surface->type != CAIRO_SURFACE_TYPE_SKIA) return NULL; cairo_skia_surface_t *esurf = (cairo_skia_surface_t *) surface; return &_get_image_surface (esurf)->base; }
static cairo_status_t _cairo_skia_surface_acquire_source_image (void *asurface, cairo_image_surface_t **image_out, void **image_extra) { cairo_skia_surface_t *surface = (cairo_skia_surface_t *) asurface; cairo_image_surface_t *image = _get_image_surface (surface); if (unlikely (image->base.status)) return image->base.status; surface->bitmap->lockPixels (); *image_out = image; *image_extra = NULL; return CAIRO_STATUS_SUCCESS; }
static cairo_status_t _cairo_xcb_surface_acquire_source_image (void *abstract_surface, cairo_image_surface_t **image_out, void **image_extra) { cairo_xcb_surface_t *surface = abstract_surface; cairo_image_surface_t *image; cairo_status_t status; status = _get_image_surface (surface, NULL, &image, NULL); if (status) return status; *image_out = image; *image_extra = NULL; return CAIRO_STATUS_SUCCESS; }
static cairo_status_t _cairo_xcb_surface_acquire_dest_image (void *abstract_surface, cairo_rectangle_int16_t *interest_rect, cairo_image_surface_t **image_out, cairo_rectangle_int16_t *image_rect_out, void **image_extra) { cairo_xcb_surface_t *surface = abstract_surface; cairo_image_surface_t *image; cairo_status_t status; status = _get_image_surface (surface, interest_rect, &image, image_rect_out); if (status) return status; *image_out = image; *image_extra = NULL; return CAIRO_STATUS_SUCCESS; }
static cairo_status_t _cairo_skia_surface_acquire_dest_image (void *asurface, cairo_rectangle_int_t *interest_rect, cairo_image_surface_t **image_out, cairo_rectangle_int_t *image_rect, void **image_extra) { cairo_skia_surface_t *surface = (cairo_skia_surface_t *) asurface; cairo_image_surface_t *image = _get_image_surface (surface); if (unlikely (image->base.status)) return image->base.status; image_rect->x = 0; image_rect->y = 0; image_rect->width = image->width; image_rect->height = image->height; surface->bitmap->lockPixels (); *image_out = image; *image_extra = NULL; return CAIRO_STATUS_SUCCESS; }