/** * gtk_print_operation_preview_end_preview: * @preview: a #GtkPrintOperationPreview * * Ends a preview. * * This function must be called to finish a custom print preview. * * Since: 2.10 */ void gtk_print_operation_preview_end_preview (GtkPrintOperationPreview *preview) { g_return_if_fail (GTK_IS_PRINT_OPERATION_PREVIEW (preview)); GTK_PRINT_OPERATION_PREVIEW_GET_IFACE (preview)->end_preview (preview); }
/** * gtk_print_operation_preview_is_selected: * @preview: a #GtkPrintOperationPreview * @page_nr: a page number * * Returns whether the given page is included in the set of pages that * have been selected for printing. * * Returns: %TRUE if the page has been selected for printing * * Since: 2.10 */ gboolean gtk_print_operation_preview_is_selected (GtkPrintOperationPreview *preview, gint page_nr) { g_return_val_if_fail (GTK_IS_PRINT_OPERATION_PREVIEW (preview), FALSE); return GTK_PRINT_OPERATION_PREVIEW_GET_IFACE (preview)->is_selected (preview, page_nr); }
/** * gtk_print_operation_preview_render_page: * @preview: a #GtkPrintOperationPreview * @page_nr: the page to render * * Renders a page to the preview, using the print context that * was passed to the GtkPrintOperation::preview handler together * with @preview. * * Note that this function requires a suitable cairo context to * be associated with the print context. * * Since: 2.10 */ void gtk_print_operation_preview_render_page (GtkPrintOperationPreview *preview, gint page_nr) { g_return_if_fail (GTK_IS_PRINT_OPERATION_PREVIEW (preview)); GTK_PRINT_OPERATION_PREVIEW_GET_IFACE (preview)->render_page (preview, page_nr); }
GtkWidget * soli_print_preview_new (GtkPrintOperation *operation, GtkPrintOperationPreview *gtk_preview, GtkPrintContext *context) { SoliPrintPreview *preview; cairo_surface_t *surface; cairo_t *cr; gdouble dpi_x, dpi_y; g_return_val_if_fail (GTK_IS_PRINT_OPERATION (operation), NULL); g_return_val_if_fail (GTK_IS_PRINT_OPERATION_PREVIEW (gtk_preview), NULL); preview = g_object_new (SOLI_TYPE_PRINT_PREVIEW, NULL); preview->operation = g_object_ref (operation); preview->gtk_preview = g_object_ref (gtk_preview); preview->context = g_object_ref (context); /* FIXME: is this legal?? */ gtk_print_operation_set_unit (operation, GTK_UNIT_POINTS); g_signal_connect_object (gtk_preview, "ready", G_CALLBACK (preview_ready), preview, 0); /* FIXME: we need a cr to paginate... but we can't get the drawing * area surface because it's not there yet... for now I create * a dummy pdf surface. * gtk_print_context_set_cairo_context() should be called in the * got-page-size handler. */ surface = create_preview_surface (preview, &dpi_x, &dpi_y); cr = cairo_create (surface); gtk_print_context_set_cairo_context (context, cr, dpi_x, dpi_y); cairo_destroy (cr); cairo_surface_destroy (surface); return GTK_WIDGET (preview); }