gi-gtk-4.0.1: Gtk bindings
CopyrightWill Thompson Iñaki García Etxebarria and Jonas Platte
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria
Safe HaskellNone
LanguageHaskell2010

GI.Gtk.Objects.PrintContext

Description

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 Layout and Context objects that match the font metrics of the cairo surface.

GtkPrintContext objects gets passed to the beginPrint, endPrint, requestPageSetup and drawPage signals on the PrintOperation.

#signal:drawPage") callback

C code

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.

Synopsis

Exported types

newtype PrintContext Source #

Memory-managed wrapper type.

class (GObject o, IsDescendantOf PrintContext o) => IsPrintContext o Source #

Type class for types which can be safely cast to PrintContext, for instance with toPrintContext.

Instances

Instances details
(GObject o, IsDescendantOf PrintContext o) => IsPrintContext o Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

toPrintContext :: (MonadIO m, IsPrintContext o) => o -> m PrintContext Source #

Cast to PrintContext, for types for which this is known to be safe. For general casts, use castTo.

Methods

Overloaded methods

createPangoContext

printContextCreatePangoContext Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> m Context

Returns: a new Pango context for context

Creates a new Context that can be used with the PrintContext.

createPangoLayout

printContextCreatePangoLayout Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> m Layout

Returns: a new Pango layout for context

Creates a new Layout that is suitable for use with the PrintContext.

getCairoContext

printContextGetCairoContext Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> m Context

Returns: the cairo context of context

Obtains the cairo context that is associated with the PrintContext.

getDpiX

printContextGetDpiX Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> m Double

Returns: the horizontal resolution of context

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

getDpiY

printContextGetDpiY Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> m Double

Returns: the vertical resolution of context

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

getHardMargins

printContextGetHardMargins Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> m (Bool, Double, Double, Double, Double)

Returns: True if the hard margins were retrieved

Obtains the hardware printer margins of the PrintContext, in units.

getHeight

printContextGetHeight Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> m Double

Returns: the height of context

Obtains the height of the PrintContext, in pixels.

getPageSetup

printContextGetPageSetup Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> m PageSetup

Returns: the page setup of context

Obtains the PageSetup that determines the page dimensions of the PrintContext.

getPangoFontmap

printContextGetPangoFontmap Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> m FontMap

Returns: the font map of context

Returns a FontMap that is suitable for use with the PrintContext.

getWidth

printContextGetWidth Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> m Double

Returns: the width of context

Obtains the width of the PrintContext, in pixels.

setCairoContext

printContextSetCairoContext Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) 
=> a

context: a PrintContext

-> Context

cr: the cairo context

-> Double

dpiX: the horizontal resolution to use with cr

-> Double

dpiY: the vertical resolution to use with cr

-> m () 

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.