gi-gtk-3.0.43: Gtk bindings

Copyright | Will Thompson and Iñaki García Etxebarria
License | LGPL-2.1
Maintainer | Iñaki García Etxebarria
Safe Haskell | None
Language | Haskell2010

GI.Gtk.Objects.PrintContext

Contents

- Exported types
- Methods
  - createPangoContext
  - createPangoLayout
  - getCairoContext
  - getDpiX
  - getDpiY
  - getHardMargins
  - getHeight
  - getPageSetup
  - getPangoFontmap
  - getWidth
  - setCairoContext

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

Constructors

PrintContext (ManagedPtr PrintContext) |

#### Instances

Instances details

Eq PrintContext Source # |
Instance details Defined in GI.Gtk.Objects.PrintContext Methods (==) :: PrintContext -> PrintContext -> Bool Source # (/=) :: PrintContext -> PrintContext -> Bool Source #
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 Source #
TypedObject PrintContext Source # |
Instance details Defined in GI.Gtk.Objects.PrintContext Methods glibType :: IO GType Source #
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 Source # gvalueSet_ :: Ptr GValue -> Maybe PrintContext -> IO () Source # gvalueGet_ :: Ptr GValue -> IO (Maybe PrintContext) Source #
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

### Click to display all available methods, including inherited ones

Expand

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

setCairoContext, setData, setDataFull, setProperty.

## createPangoContext

printContextCreatePangoContext Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> m Context | Returns: a new Pango context for `context`

Creates a new `Context` that can be used with the `PrintContext`.

Since: 2.10

## createPangoLayout

printContextCreatePangoLayout Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> m Layout | Returns: a new Pango layout for `context`

Creates a new `Layout` that is suitable for use with the `PrintContext`.

Since: 2.10

## getCairoContext

printContextGetCairoContext Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> m Context | Returns: the cairo context of `context`

Obtains the cairo context that is associated with the `PrintContext`.

Since: 2.10

## getDpiX

printContextGetDpiX Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> m Double | Returns: the horizontal resolution of `context`

Obtains the horizontal resolution of the `PrintContext`, in dots per inch.

Since: 2.10

## getDpiY

printContextGetDpiY Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> m Double | Returns: the vertical resolution of `context`

Obtains the vertical resolution of the `PrintContext`, in dots per inch.

Since: 2.10

## getHardMargins

printContextGetHardMargins Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> m (Bool, Double, Double, Double, Double) | Returns: `True` if the hard margins were retrieved

Obtains the hardware printer margins of the `PrintContext`, in units.

Since: 2.20

## getHeight

printContextGetHeight Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> m Double | Returns: the height of `context`

Obtains the height of the `PrintContext`, in pixels.

Since: 2.10

## getPageSetup

printContextGetPageSetup Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> m PageSetup | Returns: the page setup of `context`

Obtains the `PageSetup` that determines the page dimensions of the `PrintContext`.

Since: 2.10

## getPangoFontmap

printContextGetPangoFontmap Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> m FontMap | Returns: the font map of `context`

Returns a `FontMap` that is suitable for use with the `PrintContext`.

Since: 2.10

## getWidth

printContextGetWidth Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> m Double | Returns: the width of `context`

Obtains the width of the `PrintContext`, in pixels.

Since: 2.10

## setCairoContext

printContextSetCairoContext Source #

Arguments

:: (HasCallStack, MonadIO m, IsPrintContext a) |
=> a | `context`: a `PrintContext`
-> 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