gi-gtk-4.0.6: Gtk bindings
CopyrightWill Thompson and Iñaki García Etxebarria
LicenseLGPL-2.1
MaintainerIñaki García Etxebarria
Safe HaskellSafe-Inferred
LanguageHaskell2010

GI.Gtk.Objects.PrintContext

Description

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

GtkPrintContext objects get passed to the PrintOperation::beginPrint, PrintOperation::endPrint, PrintOperation::requestPageSetup and PrintOperation::drawPage signals on the PrintOperation object.

Using GtkPrintContext in a 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);
}
Synopsis

Exported types

newtype PrintContext Source #

Memory-managed wrapper type.

Constructors

PrintContext (ManagedPtr PrintContext) 

Instances

Instances details
Eq PrintContext Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

GObject PrintContext Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

ManagedPtrNewtype PrintContext Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

Methods

toManagedPtr :: PrintContext -> ManagedPtr PrintContext

TypedObject PrintContext Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

Methods

glibType :: IO GType

HasParentTypes PrintContext Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

IsGValue (Maybe PrintContext) Source #

Convert PrintContext to and from GValue. See toGValue and fromGValue.

Instance details

Defined in GI.Gtk.Objects.PrintContext

Methods

gvalueGType_ :: IO GType

gvalueSet_ :: Ptr GValue -> Maybe PrintContext -> IO ()

gvalueGet_ :: Ptr GValue -> IO (Maybe PrintContext)

type ParentTypes PrintContext Source # 
Instance details

Defined in GI.Gtk.Objects.PrintContext

type ParentTypes PrintContext = '[Object]

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

createPangoContext

printContextCreatePangoContext Source #

Arguments

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

context: a GtkPrintContext

-> m Context

Returns: a new Pango context for context

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

createPangoLayout

printContextCreatePangoLayout Source #

Arguments

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

context: a GtkPrintContext

-> m Layout

Returns: a new Pango layout for context

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

getCairoContext

printContextGetCairoContext Source #

Arguments

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

context: a GtkPrintContext

-> m Context

Returns: the cairo context of context

Obtains the cairo context that is associated with the GtkPrintContext.

getDpiX

printContextGetDpiX Source #

Arguments

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

context: a GtkPrintContext

-> m Double

Returns: the horizontal resolution of context

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

getDpiY

printContextGetDpiY Source #

Arguments

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

context: a GtkPrintContext

-> m Double

Returns: the vertical resolution of context

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

getHardMargins

printContextGetHardMargins Source #

Arguments

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

context: a GtkPrintContext

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

Returns: True if the hard margins were retrieved

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

getHeight

printContextGetHeight Source #

Arguments

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

context: a GtkPrintContext

-> m Double

Returns: the height of context

Obtains the height of the GtkPrintContext, in pixels.

getPageSetup

printContextGetPageSetup Source #

Arguments

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

context: a GtkPrintContext

-> m PageSetup

Returns: the page setup of context

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

getPangoFontmap

printContextGetPangoFontmap Source #

Arguments

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

context: a GtkPrintContext

-> m FontMap

Returns: the font map of context

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

getWidth

printContextGetWidth Source #

Arguments

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

context: a GtkPrintContext

-> m Double

Returns: the width of context

Obtains the width of the GtkPrintContext, in pixels.

setCairoContext

printContextSetCairoContext Source #

Arguments

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

context: a GtkPrintContext

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