Class PrintContext

All Implemented Interfaces:
PointerInterface

public class PrintContext extends Object
A `GtkPrintContext` 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 [class@Pango.Layout] and
[class@Pango.Context] objects that match the font metrics of the cairo surface.

`GtkPrintContext` 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
[class@Gtk.PrintOperation] object.

## Using GtkPrintContext in a ::draw-page callback

```c
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);
}
```

https://docs.gtk.org/gtk4/class.PrintContext.html

  • Constructor Details

  • Method Details

    • getClassHandler

      public static ClassHandler getClassHandler()
    • createPangoContext

      public Context createPangoContext()
      Creates a new `PangoContext` that can be used with the
      `GtkPrintContext`.
      Returns:
      a new Pango context for @context
    • createPangoLayout

      public Layout createPangoLayout()
      Creates a new `PangoLayout` that is suitable for use
      with the `GtkPrintContext`.
      Returns:
      a new Pango layout for @context
    • getCairoContext

      public Context getCairoContext()
      Obtains the cairo context that is associated with the
      `GtkPrintContext`.
      Returns:
      the cairo context of @context
    • getDpiX

      public double getDpiX()
      Obtains the horizontal resolution of the `GtkPrintContext`,
      in dots per inch.
      Returns:
      the horizontal resolution of @context
    • getDpiY

      public double getDpiY()
      Obtains the vertical resolution of the `GtkPrintContext`,
      in dots per inch.
      Returns:
      the vertical resolution of @context
    • getHeight

      public double getHeight()
      Obtains the height of the `GtkPrintContext`, in pixels.
      Returns:
      the height of @context
    • getPageSetup

      public PageSetup getPageSetup()
      Obtains the `GtkPageSetup` that determines the page
      dimensions of the `GtkPrintContext`.
      Returns:
      the page setup of @context
    • getPangoFontmap

      public FontMap getPangoFontmap()
      Returns a `PangoFontMap` that is suitable for use
      with the `GtkPrintContext`.
      Returns:
      the font map of @context
    • getWidth

      public double getWidth()
      Obtains the width of the `GtkPrintContext`, in pixels.
      Returns:
      the width of @context
    • setCairoContext

      public void setCairoContext(@Nonnull Context cr, double dpi_x, double dpi_y)
      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.
      Parameters:
      cr - the cairo context
      dpi_x - the horizontal resolution to use with @cr
      dpi_y - the vertical resolution to use with @cr
    • getTypeID

      public static long getTypeID()
    • getParentTypeID

      public static long getParentTypeID()
    • getTypeSize

      public static TypeSystem.TypeSize getTypeSize()
    • getParentTypeSize

      public static TypeSystem.TypeSize getParentTypeSize()
    • getInstanceSize

      public static int getInstanceSize()