Copyright | Will Thompson, Iñaki García Etxebarria and Jonas Platte |
---|---|
License | LGPL-2.1 |
Maintainer | Iñaki García Etxebarria (garetxe@gmail.com) |
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_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.
- newtype PrintContext = PrintContext (ManagedPtr PrintContext)
- class GObject o => IsPrintContext o
- toPrintContext :: IsPrintContext o => o -> IO PrintContext
- noPrintContext :: Maybe PrintContext
- data PrintContextCreatePangoContextMethodInfo
- printContextCreatePangoContext :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Context
- data PrintContextCreatePangoLayoutMethodInfo
- printContextCreatePangoLayout :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Layout
- data PrintContextGetCairoContextMethodInfo
- printContextGetCairoContext :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Context
- data PrintContextGetDpiXMethodInfo
- printContextGetDpiX :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Double
- data PrintContextGetDpiYMethodInfo
- printContextGetDpiY :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Double
- data PrintContextGetHardMarginsMethodInfo
- printContextGetHardMargins :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m (Bool, Double, Double, Double, Double)
- data PrintContextGetHeightMethodInfo
- printContextGetHeight :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Double
- data PrintContextGetPageSetupMethodInfo
- printContextGetPageSetup :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m PageSetup
- data PrintContextGetPangoFontmapMethodInfo
- printContextGetPangoFontmap :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m FontMap
- data PrintContextGetWidthMethodInfo
- printContextGetWidth :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> m Double
- data PrintContextSetCairoContextMethodInfo
- printContextSetCairoContext :: (HasCallStack, MonadIO m, IsPrintContext a) => a -> Context -> Double -> Double -> m ()
Exported types
newtype PrintContext Source #
GObject PrintContext Source # | |
IsObject PrintContext Source # | |
IsPrintContext PrintContext Source # | |
((~) * info (ResolvePrintContextMethod t PrintContext), MethodInfo * info PrintContext p) => IsLabel t (PrintContext -> p) Source # | |
((~) * info (ResolvePrintContextMethod t PrintContext), MethodInfo * info PrintContext p) => IsLabelProxy t (PrintContext -> p) Source # | |
HasAttributeList * PrintContext Source # | |
type AttributeList PrintContext Source # | |
type SignalList PrintContext Source # | |
class GObject o => IsPrintContext o Source #
toPrintContext :: IsPrintContext o => o -> IO PrintContext Source #
Methods
createPangoContext
data PrintContextCreatePangoContextMethodInfo Source #
((~) * signature (m Context), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextCreatePangoContextMethodInfo a signature Source # | |
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
data PrintContextCreatePangoLayoutMethodInfo Source #
((~) * signature (m Layout), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextCreatePangoLayoutMethodInfo a signature Source # | |
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
data PrintContextGetCairoContextMethodInfo Source #
((~) * signature (m Context), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextGetCairoContextMethodInfo a signature Source # | |
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
data PrintContextGetDpiXMethodInfo Source #
((~) * signature (m Double), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextGetDpiXMethodInfo a signature Source # | |
:: (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
data PrintContextGetDpiYMethodInfo Source #
((~) * signature (m Double), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextGetDpiYMethodInfo a signature Source # | |
:: (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
data PrintContextGetHardMarginsMethodInfo Source #
((~) * signature (m (Bool, Double, Double, Double, Double)), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextGetHardMarginsMethodInfo a signature Source # | |
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
data PrintContextGetHeightMethodInfo Source #
((~) * signature (m Double), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextGetHeightMethodInfo a signature Source # | |
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
data PrintContextGetPageSetupMethodInfo Source #
((~) * signature (m PageSetup), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextGetPageSetupMethodInfo a signature Source # | |
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
data PrintContextGetPangoFontmapMethodInfo Source #
((~) * signature (m FontMap), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextGetPangoFontmapMethodInfo a signature Source # | |
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
data PrintContextGetWidthMethodInfo Source #
((~) * signature (m Double), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextGetWidthMethodInfo a signature Source # | |
:: (HasCallStack, MonadIO m, IsPrintContext a) | |
=> a |
|
-> m Double | Returns: the width of |
Obtains the width of the PrintContext
, in pixels.
Since: 2.10
setCairoContext
data PrintContextSetCairoContextMethodInfo Source #
((~) * signature (Context -> Double -> Double -> m ()), MonadIO m, IsPrintContext a) => MethodInfo * PrintContextSetCairoContextMethodInfo a signature Source # | |
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