Copyright | Will Thompson and Iñaki García Etxebarria |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria |
Safe Haskell | Safe-Inferred |
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::beginPrint,
PrintOperation::endPrint, PrintOperation::requestPageSetup and
PrintOperation::drawPage signals on the PrintOperation
.
## Using GtkPrintContext in a PrintOperation::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
- newtype PrintContext = PrintContext (ManagedPtr PrintContext)
- class (GObject o, IsDescendantOf PrintContext o) => IsPrintContext o
- toPrintContext :: (MonadIO m, IsPrintContext o) => o -> m 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.
PrintContext (ManagedPtr PrintContext) |
Instances
Eq PrintContext Source # | |
Defined in GI.Gtk.Objects.PrintContext (==) :: PrintContext -> PrintContext -> Bool # (/=) :: PrintContext -> PrintContext -> Bool # | |
GObject PrintContext Source # | |
Defined in GI.Gtk.Objects.PrintContext | |
ManagedPtrNewtype PrintContext Source # | |
Defined in GI.Gtk.Objects.PrintContext toManagedPtr :: PrintContext -> ManagedPtr PrintContext | |
TypedObject PrintContext Source # | |
Defined in GI.Gtk.Objects.PrintContext | |
HasParentTypes PrintContext Source # | |
Defined in GI.Gtk.Objects.PrintContext | |
IsGValue (Maybe PrintContext) Source # | Convert |
Defined in GI.Gtk.Objects.PrintContext gvalueGType_ :: IO GType gvalueSet_ :: Ptr GValue -> Maybe PrintContext -> IO () gvalueGet_ :: Ptr GValue -> IO (Maybe PrintContext) | |
type ParentTypes PrintContext Source # | |
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
(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
.
Methods
Click to display all available methods, including inherited ones
Methods
bindProperty, bindPropertyFull, createPangoContext, createPangoLayout, forceFloating, freezeNotify, getv, isFloating, notify, notifyByPspec, ref, refSink, runDispose, stealData, stealQdata, thawNotify, unref, watchClosure.
Getters
getCairoContext, getData, getDpiX, getDpiY, getHardMargins, getHeight, getPageSetup, getPangoFontmap, getProperty, getQdata, getWidth.
Setters
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