Encapsulates context for drawing pages
A GtkPrintContext encapsulates context information that is required when drawing
pages for printing, such as the cairo context and important parameters like page
size and resolution. It also lets you easily create <pango-layout>
and
<pango-context>
objects that match the font metrics of the cairo surface.
GtkPrintContext objects gets passed to the ::begin-print, ::end-print,
::request-page-setup and ::draw-page signals on the
<gtk-print-operation>
.
static void draw_page (GtkPrintOperation *operation, GtkPrintContext *context, int page_nr) { cairo_t *cr; PangoLayout *layout; PangoFontDescription *desc; cr = gtk_print_context_get_cairo_context (context); /* Draw a red rectangle, as wide as the paper (inside the margins) */ cairo_set_source_rgb (cr, 1.0, 0, 0); cairo_rectangle (cr, 0, 0, gtk_print_context_get_width (context), 50); cairo_fill (cr); /* Draw some lines */ cairo_move_to (cr, 20, 10); cairo_line_to (cr, 40, 20); cairo_arc (cr, 60, 60, 20, 0, M_PI); cairo_line_to (cr, 80, 20); cairo_set_source_rgb (cr, 0, 0, 0); cairo_set_line_width (cr, 5); cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); cairo_stroke (cr); /* Draw some text */ layout = gtk_print_context_create_layout (context); pango_layout_set_text (layout, "Hello World! Printing is easy", -1); desc = pango_font_description_from_string ("sans 28"); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc); cairo_move_to (cr, 30, 20); pango_cairo_layout_path (cr, layout); /* Font Outline */ cairo_set_source_rgb (cr, 0.93, 1.0, 0.47); cairo_set_line_width (cr, 0.5); cairo_stroke_preserve (cr); /* Font Fill */ cairo_set_source_rgb (cr, 0, 0.0, 1.0); cairo_fill (cr); g_object_unref (layout); }
Printing support was added in GTK+ 2.10.
<gtk-print-context>
) ⇒ (ret cairo-t
)Obtains the cairo context that is associated with the
<gtk-print-context>
.
- context
- a
<gtk-print-context>
- ret
- the cairo context of context
Since 2.10
<gtk-print-context>
) (cr cairo-t
) (dpi_x double
) (dpi_y double
)Sets a new cairo context on a print context.
This function is intended to be used when implementing an internal print preview, it is not needed for printing, since GTK+ itself creates a suitable cairo context in that case.
- context
- a
<gtk-print-context>
- cr
- the cairo context
- dpi-x
- the horizontal resolution to use with cr
- dpi-y
- the vertical resolution to use with cr
Since 2.10
<gtk-print-context>
) ⇒ (ret <gtk-page-setup>
)Obtains the
<gtk-page-setup>
that determines the page dimensions of the<gtk-print-context>
.
- context
- a
<gtk-print-context>
- ret
- the page setup of context
Since 2.10
<gtk-print-context>
) ⇒ (ret double
)Obtains the width of the
<gtk-print-context>
, in pixels.
- context
- a
<gtk-print-context>
- ret
- the width of context
Since 2.10
<gtk-print-context>
) ⇒ (ret double
)Obtains the height of the
<gtk-print-context>
, in pixels.
- context
- a
<gtk-print-context>
- ret
- the height of context
Since 2.10
<gtk-print-context>
) ⇒ (ret double
)Obtains the horizontal resolution of the
<gtk-print-context>
, in dots per inch.
- context
- a
<gtk-print-context>
- ret
- the horizontal resolution of context
Since 2.10