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 gtk.print_operation.PrintOperation.beginPrint, gtk.print_operation.PrintOperation.endPrint, gtk.print_operation.PrintOperation.requestPageSetup and gtk.print_operation.PrintOperation.drawPage 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.page_setup.PageSetup] that determines the page dimensions of the [gtk.print_context.PrintContext]. Returns: the page setup of context
pango.font_map.FontMap getPangoFontmap()Returns a [pango.font_map.FontMap] that is suitable for use with the [gtk.print_context.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)
Methods
PrintContext build()Create object from builder. Returns: New object