| Maintainer | gtk2hs-users@lists.sourceforge.net |
|---|---|
| Stability | provisional |
| Portability | portable (depends on GHC) |
| Safe Haskell | None |
| Language | Haskell98 |
Graphics.UI.Gtk.Cairo
Description
Gtk specific functions to for redering with Cairo.
Cairo is a graphics library that supports vector graphics and image
compositing that can be used with Gdk.
The Cairo API is an addition to Gdk/Gtk (rather than a replacement).
Cairo rendering can be performed on any Drawable
by calling renderWithDrawable. The functions in this module provide
ways of drawing Gtk specific elements, such as Pixbufs or text
laid out with Pango.
All functions in this module are only available in Gtk 2.8 or higher.
- cairoFontMapGetDefault :: IO FontMap
- cairoFontMapSetResolution :: FontMap -> Double -> IO ()
- cairoFontMapGetResolution :: FontMap -> IO Double
- cairoCreateContext :: Maybe FontMap -> IO PangoContext
- cairoContextSetResolution :: PangoContext -> Double -> IO ()
- cairoContextGetResolution :: PangoContext -> IO Double
- cairoContextSetFontOptions :: PangoContext -> FontOptions -> IO ()
- cairoContextGetFontOptions :: PangoContext -> IO FontOptions
- renderWithDrawWindow :: DrawWindowClass drawWindow => drawWindow -> Render a -> IO a
- setSourceColor :: Color -> Render ()
- setSourcePixbuf :: Pixbuf -> Double -> Double -> Render ()
- updateContext :: PangoContext -> Render ()
- createLayout :: GlibString string => string -> Render PangoLayout
- updateLayout :: PangoLayout -> Render ()
- showGlyphString :: GlyphItem -> Render ()
- showLayoutLine :: LayoutLine -> Render ()
- showLayout :: PangoLayout -> Render ()
- glyphStringPath :: GlyphItem -> Render ()
- layoutLinePath :: LayoutLine -> Render ()
- layoutPath :: PangoLayout -> Render ()
Global Cairo settings.
cairoFontMapGetDefault :: IO FontMap
Retrieve the default FontMap that contains a
list of available fonts.
- One purpose of creating an explicit
FontMapis to set a different scaling factor between font sizes (in points, pt) and Cairo units (in pixels). The default is 96dpi (dots per inch) which corresponds to an average screen as output medium. A 10pt font will therefore scale to10pt * (1/72 pt/inch) * (96 pixel/inch) = 13.3 pixel.
cairoFontMapSetResolution :: FontMap -> Double -> IO ()
Set the scaling factor between font size and Cairo units.
- Value is in dots per inch (dpi). See
cairoFontMapGetDefault.
cairoFontMapGetResolution :: FontMap -> IO Double
Ask for the scaling factor between font size and Cairo units.
- Value is in dots per inch (dpi). See
cairoFontMapGetDefault.
cairoCreateContext :: Maybe FontMap -> IO PangoContext
Create a PangoContext.
- If no
FontMapis specified, it uses the defaultFontMapthat has a scaling factor of 96 dpi. SeecairoFontMapGetDefault.
cairoContextSetResolution :: PangoContext -> Double -> IO ()
Set the scaling factor of the PangoContext.
- Supplying zero or a negative value will result in the resolution value
of the underlying
FontMapto be used. See alsocairoFontMapGetDefault.
cairoContextGetResolution :: PangoContext -> IO Double
Ask for the scaling factor of the PangoContext.
- A negative value will be returned if no resolution has been set.
See
cairoContextSetResolution.
cairoContextSetFontOptions :: PangoContext -> FontOptions -> IO ()
Set Cairo font options.
- Apply the given font options to the context. Values set through this
functions override those that are set by
updateContext.
cairoContextGetFontOptions :: PangoContext -> IO FontOptions
Retrieve Cairo font options.
Functions for the Render monad.
Arguments
| :: DrawWindowClass drawWindow | |
| => drawWindow |
|
| -> Render a | A newly created Cairo context. |
| -> IO a |
Creates a Cairo context for drawing to a DrawWindow.
setSourceColor :: Color -> Render ()
Sets the given pixbuf as the source pattern for the Cairo context. The
pattern has an extend mode of ExtendNone and is aligned so that the
origin of pixbuf is (x, y).
updateContext :: PangoContext -> Render ()
Update a PangoContext with respect to changes in a Render
environment.
- The
PangoContextmust have been created withcairoCreateContext. AnyPangoLayouts that have been previously created with this context have to be update usinglayoutContextChanged.
createLayout :: GlibString string => string -> Render PangoLayout
Create a PangoLayout within a Render context.
- This is a convenience function that creates a new
PangoContextwithin thisRendercontext and creates a newPangoLayout. If the transformation or target surface of theRendercontext change,updateLayouthas to be called on this layout.
updateLayout :: PangoLayout -> Render ()
Propagate changed to the Render context to a PangoLayout.
- This is a convenience function that calls
updateContexton the (private)PangoContextof the given layout to propagate changes from theRendercontext to thePangoContextand then callslayoutContextChangedon the layout. This function is necessary forcreateLayoutsince a privatePangoContextis created that is not visible to the user.
showGlyphString :: GlyphItem -> Render ()
Draw a glyph string.
- The origin of the glyphs (the left edge of the baseline) will be drawn at the current point of the cairo context.
showLayoutLine :: LayoutLine -> Render ()
Draw a LayoutLine.
- The origin of the glyphs (the left edge of the baseline) will be drawn at the current point of the cairo context.
showLayout :: PangoLayout -> Render ()
Draw a PangoLayout.
- The top-left corner of the
PangoLayoutwill be drawn at the current point of the cairo context.
glyphStringPath :: GlyphItem -> Render ()
Add the extent of a glyph string to the current path.
- The origin of the glyphs (the left edge of the line) will be at the current point of the cairo context.
layoutLinePath :: LayoutLine -> Render ()
Add the extent of a layout line to the current path.
- The origin of the glyphs (the left edge of the line) will be at the current point of the cairo context.
layoutPath :: PangoLayout -> Render ()
Add the layout to the current path.
- Adds the top-left corner of the text to the current path. Afterwards,
the path position is at the bottom-right corner of the
PangoLayout.