Copyright | Will Thompson Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (inaki@blueleaf.cc) |
Safe Haskell | None |
Language | Haskell2010 |
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 PrintOperation
::begin-print
,
PrintOperation
::end-print
, PrintOperation
::request-page-setup
and
PrintOperation
::draw-page
signals on the PrintOperation
.
## Using GtkPrintContext in a PrintOperation
::draw-page
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
- newtype PrintContext = PrintContext (ManagedPtr PrintContext)
- class (GObject o, IsDescendantOf PrintContext o) => IsPrintContext o
- toPrintContext :: (MonadIO m, IsPrintContext o) => o -> m PrintContext
- noPrintContext :: Maybe PrintContext
- printContextCreatePangoContext :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Context
- printContextCreatePangoLayout :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Layout
- printContextGetCairoContext :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Context
- printContextGetDpiX :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Double
- printContextGetDpiY :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Double
- printContextGetHardMargins :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m (Bool, Double, Double, Double, Double)
- printContextGetHeight :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Double
- printContextGetPageSetup :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m PageSetup
- printContextGetPangoFontmap :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m FontMap
- printContextGetWidth :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Double
- printContextSetCairoContext :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> Context -> Double -> Double -> m ()
Exported types
newtype PrintContext Source #
Memory-managed wrapper type.
Instances
GObject PrintContext Source # | |
Defined in GI.Gtk.Objects.PrintContext gobjectType :: IO GType # | |
HasParentTypes PrintContext Source # | |
Defined in GI.Gtk.Objects.PrintContext | |
type ParentTypes PrintContext Source # | |
Defined in GI.Gtk.Objects.PrintContext |
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 # | |
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
createPangoContext
printContextCreatePangoContext Source #
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m Context | Returns: a new Pango context for |
Creates a new Context
that can be used with the
PrintContext
.
Since: 2.10
createPangoLayout
printContextCreatePangoLayout Source #
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m Layout | Returns: a new Pango layout for |
Creates a new Layout
that is suitable for use
with the PrintContext
.
Since: 2.10
getCairoContext
printContextGetCairoContext Source #
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m Context | Returns: the cairo context of |
Obtains the cairo context that is associated with the
PrintContext
.
Since: 2.10
getDpiX
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m Double | Returns: the horizontal resolution of |
Obtains the horizontal resolution of the PrintContext
,
in dots per inch.
Since: 2.10
getDpiY
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m Double | Returns: the vertical resolution of |
Obtains the vertical resolution of the PrintContext
,
in dots per inch.
Since: 2.10
getHardMargins
printContextGetHardMargins Source #
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m (Bool, Double, Double, Double, Double) | Returns: |
Obtains the hardware printer margins of the PrintContext
, in units.
Since: 2.20
getHeight
printContextGetHeight Source #
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m Double | Returns: the height of |
Obtains the height of the PrintContext
, in pixels.
Since: 2.10
getPageSetup
printContextGetPageSetup Source #
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m PageSetup | Returns: the page setup of |
Obtains the PageSetup
that determines the page
dimensions of the PrintContext
.
Since: 2.10
getPangoFontmap
printContextGetPangoFontmap Source #
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m FontMap | Returns: the font map of |
Returns a FontMap
that is suitable for use
with the PrintContext
.
Since: 2.10
getWidth
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m Double | Returns: the width of |
Obtains the width of the PrintContext
, in pixels.
Since: 2.10
setCairoContext
printContextSetCairoContext Source #
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> Context |
|
-> Double |
|
-> Double |
|
-> 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