gtk.print_context

Module for [PrintContext] class

Types 3

A [gtk.print_context.PrintContext] encapsulates context information that is required when drawing pages for printing.

This includes the cairo context and important parameters like page size and resolution. It also lets you easily create [pango.layout.Layout] and [pango.context.Context] objects that match the font metrics of the cairo surface.

[gtk.print_context.PrintContext] objects get passed to the signal@Gtk.PrintOperation::begin-print, signal@Gtk.PrintOperation::end-print, signal@Gtk.PrintOperation::request-page-setup and signal@Gtk.PrintOperation::draw-page signals on the [gtk.print_operation.PrintOperation] object.

Using GtkPrintContext in a ::draw-page callback

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_pango_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);
}

Methods
GType _gType() @property
PrintContext self()Returns `this`, for use in `with` statements.
PrintContextGidBuilder builder()Get builder for [gtk.print_context.PrintContext] Returns: New builder object
pango.context.Context createPangoContext()Creates a new [pango.context.Context] that can be used with the [gtk.print_context.PrintContext]. Returns: a new Pango context for context
pango.layout.Layout createPangoLayout()Creates a new [pango.layout.Layout] that is suitable for use with the [gtk.print_context.PrintContext]. Returns: a new Pango layout for context
cairo.context.Context getCairoContext()Obtains the cairo context that is associated with the [gtk.print_context.PrintContext]. Returns: the cairo context of context
double getDpiX()Obtains the horizontal resolution of the [gtk.print_context.PrintContext], in dots per inch. Returns: the horizontal resolution of context
double getDpiY()Obtains the vertical resolution of the [gtk.print_context.PrintContext], in dots per inch. Returns: the vertical resolution of context
bool getHardMargins(out double top, out double bottom, out double left, out double right)Obtains the hardware printer margins of the [gtk.print_context.PrintContext], in units.
double getHeight()Obtains the height of the [gtk.print_context.PrintContext], in pixels. Returns: the height of context
gtk.page_setup.PageSetup getPageSetup()Obtains the [gtk.pagesetup.PageSetup] that determines the page dimensions of the [gtk.printcontext.PrintContext]. Returns: the page setup of context
pango.font_map.FontMap getPangoFontmap()Returns a [pango.fontmap.FontMap] that is suitable for use with the [gtk.printcontext.PrintContext]. Returns: the font map of context
double getWidth()Obtains the width of the [gtk.print_context.PrintContext], in pixels. Returns: the width of context
void setCairoContext(cairo.context.Context cr, double dpiX, double dpiY)Sets a new cairo context on a print context.
Constructors
this(void * ptr, Flag!"Take" take)

Fluent builder for [gtk.print_context.PrintContext]