draw_page


Description:

public virtual signal void draw_page (PrintContext context, int page_nr)

Emitted for every page that is printed.

The signal handler must render the page_nr's page onto the cairo context obtained from context using [ method@Gtk.PrintContext.get_cairo_context].

```c static void draw_page (GtkPrintOperation *operation, GtkPrintContext *context, int page_nr, gpointer user_data) { cairo_t *cr; PangoLayout *layout; double width, text_height; int layout_height; PangoFontDescription *desc;

cr = gtk_print_context_get_cairo_context (context); width = gtk_print_context_get_width (context);

cairo_rectangle (cr, 0, 0, width, HEADER_HEIGHT);

cairo_set_source_rgb (cr, 0.8, 0.8, 0.8); cairo_fill (cr);

layout = gtk_print_context_create_pango_layout (context);

desc = pango_font_description_from_string ("sans 14"); pango_layout_set_font_description (layout, desc); pango_font_description_free (desc);

pango_layout_set_text (layout, "some text", -1); pango_layout_set_width (layout, width * PANGO_SCALE); pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER);

pango_layout_get_size (layout, NULL, &layout_height); text_height = (double)layout_height / PANGO_SCALE;

cairo_move_to (cr, width / 2, (HEADER_HEIGHT - text_height) / 2); pango_cairo_show_layout (cr, layout);

g_object_unref (layout); } ```

Use [method@Gtk.PrintOperation.set_use_full_page] and [method@Gtk.PrintOperation.set_unit] before starting the print operation to set up the transformation of the cairo context according to your needs.

Parameters:

context

the `GtkPrintContext` for the current operation

page_nr

the number of the currently printed page (0-based)