static cairo_surface_t * _cairo_boilerplate_win32_printing_get_image_surface (cairo_surface_t *surface, int page, int width, int height) { win32_target_closure_t *ptc = cairo_surface_get_user_data (surface, &win32_closure_key); char *filename; cairo_status_t status; /* XXX test paginated interface */ if (page != 0) return cairo_boilerplate_surface_create_in_error (CAIRO_STATUS_SURFACE_TYPE_MISMATCH); xasprintf (&filename, "%s.png", ptc->filename); status = _cairo_boilerplate_win32_printing_surface_write_to_png (surface, filename); if (status) return cairo_boilerplate_surface_create_in_error (status); surface = cairo_boilerplate_get_image_surface_from_png (filename, width, height, ptc->target == NULL); remove (filename); free (filename); return surface; }
static cairo_surface_t * _cairo_boilerplate_ps_get_image_surface (cairo_surface_t *surface, int page, int width, int height) { ps_target_closure_t *ptc = cairo_surface_get_user_data (surface, &ps_closure_key); char *filename; cairo_status_t status; if (page == 0) xasprintf (&filename, "%s.png", ptc->filename); else xasprintf (&filename, "%s-%%05d.png", ptc->filename); status = _cairo_boilerplate_ps_surface_write_to_png (surface, filename); if (status) return cairo_boilerplate_surface_create_in_error (status); if (page != 0) { free (filename); xasprintf (&filename, "%s-%05d.png", ptc->filename, page); } surface = cairo_boilerplate_get_image_surface_from_png (filename, width, height, ptc->target == NULL); remove (filename); free (filename); return surface; }