gi-gtk-3.0.32: 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

Contents

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

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

#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.

Constructors

PrintContext (ManagedPtr PrintContext) 
Instances
Eq PrintContext Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

Methods

(==) :: PrintContext -> PrintContext -> Bool

(/=) :: PrintContext -> PrintContext -> Bool

GObject PrintContext Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

Methods

gobjectType :: IO GType

IsGValue PrintContext Source #

Convert PrintContext to and from GValue with toGValue and fromGValue.

Instance details

Defined in GI.Gtk.Objects.PrintContext

Methods

toGValue :: PrintContext -> IO GValue

fromGValue :: GValue -> IO PrintContext

HasParentTypes PrintContext Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

type ParentTypes PrintContext Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

type ParentTypes PrintContext = Object ': ([] :: [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
(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.

noPrintContext :: Maybe PrintContext Source #

A convenience alias for Nothing :: Maybe PrintContext.

Methods

Overloaded methods

createPangoContext

printContextCreatePangoContext Source #

Arguments

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

context: a tPrintContext

-> m Context

Returns: a new Pango context for context

Creates a new tContext that can be used with the tPrintContext.

Since: 2.10

createPangoLayout

printContextCreatePangoLayout Source #

Arguments

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

context: a tPrintContext

-> m Layout

Returns: a new Pango layout for context

Creates a new tLayout that is suitable for use with the tPrintContext.

Since: 2.10

getCairoContext

printContextGetCairoContext Source #

Arguments

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

context: a tPrintContext

-> m Context

Returns: the cairo context of context

Obtains the cairo context that is associated with the tPrintContext.

Since: 2.10

getDpiX

printContextGetDpiX Source #

Arguments

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

context: a tPrintContext

-> m Double

Returns: the horizontal resolution of context

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

Since: 2.10

getDpiY

printContextGetDpiY Source #

Arguments

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

context: a tPrintContext

-> m Double

Returns: the vertical resolution of context

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

Since: 2.10

getHardMargins

printContextGetHardMargins Source #

Arguments

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

context: a tPrintContext

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

Returns: True if the hard margins were retrieved

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

Since: 2.20

getHeight

printContextGetHeight Source #

Arguments

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

context: a tPrintContext

-> m Double

Returns: the height of context

Obtains the height of the tPrintContext, in pixels.

Since: 2.10

getPageSetup

printContextGetPageSetup Source #

Arguments

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

context: a tPrintContext

-> m PageSetup

Returns: the page setup of context

Obtains the tPageSetup that determines the page dimensions of the tPrintContext.

Since: 2.10

getPangoFontmap

printContextGetPangoFontmap Source #

Arguments

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

context: a tPrintContext

-> m FontMap

Returns: the font map of context

Returns a tFontMap that is suitable for use with the tPrintContext.

Since: 2.10

getWidth

printContextGetWidth Source #

Arguments

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

context: a tPrintContext

-> m Double

Returns: the width of context

Obtains the width of the tPrintContext, in pixels.

Since: 2.10

setCairoContext

printContextSetCairoContext Source #

Arguments

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

context: a tPrintContext

-> 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.

Since: 2.10