PrintContextProtocol

public protocol PrintContextProtocol : ObjectProtocol

A GtkPrintContext encapsulates context information that is required when drawing pages for printing, such as the cairo context and important parameters like page size and resolution. It also lets you easily create PangoLayout and PangoContext objects that match the font metrics of the cairo surface.

GtkPrintContext objects gets passed to the GtkPrintOperation::begin-print, GtkPrintOperation::end-print, GtkPrintOperation::request-page-setup and GtkPrintOperation::draw-page signals on the GtkPrintOperation.

Using GtkPrintContext in a GtkPrintOperation::draw-page callback

(C Language Example):

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

Printing support was added in GTK+ 2.10.

The PrintContextProtocol protocol exposes the methods and properties of an underlying GtkPrintContext instance. The default implementation of these can be found in the protocol extension below. For a concrete class that implements these methods and properties, see PrintContext. Alternatively, use PrintContextRef as a lighweight, unowned reference if you already have an instance you just want to use.

  • ptr

    Untyped pointer to the underlying GtkPrintContext instance.

    Declaration

    Swift

    var ptr: UnsafeMutableRawPointer! { get }
  • print_context_ptr Default implementation

    Typed pointer to the underlying GtkPrintContext instance.

    Default Implementation

    Return the stored, untyped pointer as a typed pointer to the GtkPrintContext instance.

    Declaration

    Swift

    var print_context_ptr: UnsafeMutablePointer<GtkPrintContext>! { get }
  • Required Initialiser for types conforming to PrintContextProtocol

    Declaration

    Swift

    init(raw: UnsafeMutableRawPointer)

PrintContext Class: PrintContextProtocol extension (methods and fields)

  • createPangoContext() Extension method

    Creates a new PangoContext that can be used with the GtkPrintContext.

    Declaration

    Swift

    @inlinable
    func createPangoContext() -> Pango.ContextRef!
  • createPangoLayout() Extension method

    Creates a new PangoLayout that is suitable for use with the GtkPrintContext.

    Declaration

    Swift

    @inlinable
    func createPangoLayout() -> Pango.LayoutRef!
  • getCairoContext() Extension method

    Obtains the cairo context that is associated with the GtkPrintContext.

    Declaration

    Swift

    @inlinable
    func getCairoContext() -> Cairo.ContextRef!
  • getDpiX() Extension method

    Obtains the horizontal resolution of the GtkPrintContext, in dots per inch.

    Declaration

    Swift

    @inlinable
    func getDpiX() -> Double
  • getDpiY() Extension method

    Obtains the vertical resolution of the GtkPrintContext, in dots per inch.

    Declaration

    Swift

    @inlinable
    func getDpiY() -> Double
  • Obtains the hardware printer margins of the GtkPrintContext, in units.

    Declaration

    Swift

    @inlinable
    func getHardMargins(top: UnsafeMutablePointer<gdouble>!, bottom: UnsafeMutablePointer<gdouble>!, left: UnsafeMutablePointer<gdouble>!, right: UnsafeMutablePointer<gdouble>!) -> Bool
  • getHeight() Extension method

    Obtains the height of the GtkPrintContext, in pixels.

    Declaration

    Swift

    @inlinable
    func getHeight() -> Double
  • getPageSetup() Extension method

    Obtains the GtkPageSetup that determines the page dimensions of the GtkPrintContext.

    Declaration

    Swift

    @inlinable
    func getPageSetup() -> PageSetupRef!
  • getPangoFontmap() Extension method

    Returns a PangoFontMap that is suitable for use with the GtkPrintContext.

    Declaration

    Swift

    @inlinable
    func getPangoFontmap() -> Pango.FontMapRef!
  • getWidth() Extension method

    Obtains the width of the GtkPrintContext, in pixels.

    Declaration

    Swift

    @inlinable
    func getWidth() -> Double
  • 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.

    Declaration

    Swift

    @inlinable
    func setCairoContext<ContextT>(cr: ContextT, dpiX: CDouble, dpiY: CDouble) where ContextT : ContextProtocol
  • cairoContext Extension method

    Obtains the cairo context that is associated with the GtkPrintContext.

    Declaration

    Swift

    @inlinable
    var cairoContext: Cairo.ContextRef! { get }
  • dpiX Extension method

    Obtains the horizontal resolution of the GtkPrintContext, in dots per inch.

    Declaration

    Swift

    @inlinable
    var dpiX: Double { get }
  • dpiY Extension method

    Obtains the vertical resolution of the GtkPrintContext, in dots per inch.

    Declaration

    Swift

    @inlinable
    var dpiY: Double { get }
  • height Extension method

    Obtains the height of the GtkPrintContext, in pixels.

    Declaration

    Swift

    @inlinable
    var height: Double { get }
  • pageSetup Extension method

    Obtains the GtkPageSetup that determines the page dimensions of the GtkPrintContext.

    Declaration

    Swift

    @inlinable
    var pageSetup: PageSetupRef! { get }
  • pangoFontmap Extension method

    Returns a PangoFontMap that is suitable for use with the GtkPrintContext.

    Declaration

    Swift

    @inlinable
    var pangoFontmap: Pango.FontMapRef! { get }
  • width Extension method

    Obtains the width of the GtkPrintContext, in pixels.

    Declaration

    Swift

    @inlinable
    var width: Double { get }