1 2@c %start of fragment 3 4@node GtkPrintContext 5@chapter GtkPrintContext 6Encapsulates context for drawing pages 7 8@section Overview 9A GtkPrintContext encapsulates context information that is required when drawing 10pages for printing, such as the cairo context and important parameters like page 11size and resolution. It also lets you easily create @code{<pango-layout>} and 12@code{<pango-context>} objects that match the font metrics of the cairo surface. 13 14GtkPrintContext objects gets passed to the ::begin-print, ::end-print, 15::request-page-setup and ::draw-page signals on the 16@code{<gtk-print-operation>}. 17 18@example 19 20static void 21draw_page (GtkPrintOperation *operation, 22 GtkPrintContext *context, 23 int page_nr) 24@{ 25 cairo_t *cr; 26 PangoLayout *layout; 27 PangoFontDescription *desc; 28 29 cr = gtk_print_context_get_cairo_context (context); 30 31 /* Draw a red rectangle, as wide as the paper (inside the margins) */ 32 cairo_set_source_rgb (cr, 1.0, 0, 0); 33 cairo_rectangle (cr, 0, 0, gtk_print_context_get_width (context), 50); 34 35 cairo_fill (cr); 36 37 /* Draw some lines */ 38 cairo_move_to (cr, 20, 10); 39 cairo_line_to (cr, 40, 20); 40 cairo_arc (cr, 60, 60, 20, 0, M_PI); 41 cairo_line_to (cr, 80, 20); 42 43 cairo_set_source_rgb (cr, 0, 0, 0); 44 cairo_set_line_width (cr, 5); 45 cairo_set_line_cap (cr, CAIRO_LINE_CAP_ROUND); 46 cairo_set_line_join (cr, CAIRO_LINE_JOIN_ROUND); 47 48 cairo_stroke (cr); 49 50 /* Draw some text */ 51 layout = gtk_print_context_create_layout (context); 52 pango_layout_set_text (layout, "Hello World! Printing is easy", -1); 53 desc = pango_font_description_from_string ("sans 28"); 54 pango_layout_set_font_description (layout, desc); 55 pango_font_description_free (desc); 56 57 cairo_move_to (cr, 30, 20); 58 pango_cairo_layout_path (cr, layout); 59 60 /* Font Outline */ 61 cairo_set_source_rgb (cr, 0.93, 1.0, 0.47); 62 cairo_set_line_width (cr, 0.5); 63 cairo_stroke_preserve (cr); 64 65 /* Font Fill */ 66 cairo_set_source_rgb (cr, 0, 0.0, 1.0); 67 cairo_fill (cr); 68 69 g_object_unref (layout); 70@} 71@end example 72 73Printing support was added in GTK+ 2.10. 74 75@section Usage 76@include defuns-gtkprintcontext.xml.texi 77 78@c %end of fragment 79