Exemple #1
0
static void
xps_page_cb (GXPSPage *page, gdouble width, gdouble height, gpointer data)
{
	GError *error = NULL;
	TIFF *tif = data;
	cairo_surface_t *surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32, width / 96.0 * dpi, height / 96.0 * dpi);
	cairo_t *cr = cairo_create (surface);
	cairo_set_source_rgb (cr, 1, 1, 1);
	cairo_paint (cr);
	cairo_scale (cr, dpi / 96.0, dpi / 96.0);
	if (!gxps_page_render (page, cr, &error)) {
		g_warning ("Unable to render page: %s", error->message);
		g_clear_error (&error);
	}
	write_surface_to_tiff (surface, tif);
	cairo_destroy (cr);
	cairo_surface_destroy (surface);
}
Exemple #2
0
static void
page_changed_callback (GtkSpinButton *button,
		       GXPSView      *view)
{
	GXPSPage *xps_page;
	gint      page;
	gdouble   width, height;
	cairo_t  *cr;
	GError   *error = NULL;

	page = gtk_spin_button_get_value_as_int (button);

	xps_page = gxps_document_get_page (view->doc, page, &error);
	if (error) {
		g_printerr ("Error getting page %d: %s\n", page, error->message);
		g_error_free (error);

		return;
	}
	gxps_page_get_size (xps_page, &width, &height);

	cairo_surface_destroy (view->surface);
	view->surface = cairo_image_surface_create (CAIRO_FORMAT_ARGB32,
						    width, height);

	cr = cairo_create (view->surface);
	gxps_page_render (xps_page, cr, &error);
	if (error) {
		g_printerr ("Error rendering page: %d: %s\n", page, error->message);
		g_error_free (error);
	}
	cairo_destroy (cr);

	gtk_widget_set_size_request (view->darea, width, height);
	gtk_widget_queue_draw (view->darea);

	g_object_unref (xps_page);
}