Safe Haskell | None |
---|---|
Language | Haskell2010 |
An optional add-on to the diagrams-cairo package which allows rendering diagrams in wxWidgets (using wxHaskell).
wxHaskell doesn't support transparency when drawing Image
s, so each
of these functions takes a Color
to use as the background color
when rendering the QDiagram
.
- drawDiagram :: (Monoid b, Semigroup b) => DC a -> QDiagram Cairo V2 Double b -> Point -> SizeSpec V2 Double -> Color -> [Prop (DC a)] -> IO ()
- withDiagramImage :: (Monoid b, Semigroup b) => QDiagram Cairo V2 Double b -> SizeSpec V2 Double -> Color -> (Image () -> IO c) -> IO c
- renderDiagramToNewImage :: (Monoid b, Semigroup b) => QDiagram Cairo V2 Double b -> SizeSpec V2 Double -> Color -> IO (Image ())
- renderDiagramToImage :: (Monoid b, Semigroup b) => QDiagram Cairo V2 Double b -> SizeSpec V2 Double -> Color -> Image i -> IO ()
- data ImageSizeException = ImageSizeException !(Int, Int) !(Int, Int)
Drawing to DC
drawDiagram :: (Monoid b, Semigroup b) => DC a -> QDiagram Cairo V2 Double b -> Point -> SizeSpec V2 Double -> Color -> [Prop (DC a)] -> IO () Source
Simple interface for drawing a diagram to a DC
, like drawImage
.
Note that this creates, renders to, draws, and then deletes a
new Image
instance every invocation. Particularly performance-sensitive
users may want to look at using renderDiagramToImage
with the same Image
instance every repaint.
Drawing to uImages
withDiagramImage :: (Monoid b, Semigroup b) => QDiagram Cairo V2 Double b -> SizeSpec V2 Double -> Color -> (Image () -> IO c) -> IO c Source
Safe wrapper around renderDiagramToNewImage
that ensures the Image
instance is properly deleted when you're done using it.
withDiagramImage diagram size = bracket (renderDiagramToNewImage diagram size) imageDelete
renderDiagramToNewImage :: (Monoid b, Semigroup b) => QDiagram Cairo V2 Double b -> SizeSpec V2 Double -> Color -> IO (Image ()) Source
Create a new Image
of the appropriate size and render the given
QDiagram
to it with Cairo.
Make sure imageDelete
is called to free the Image
instance! Using
bracket
is recommended to ensure that the Image
is still freed in the
case of an exception:
bracket (renderDiagramToNewImage diagram size) imageDelete doStuffWithImage
withDiagramImage
provides a convenient wrapper for this.
renderDiagramToImage :: (Monoid b, Semigroup b) => QDiagram Cairo V2 Double b -> SizeSpec V2 Double -> Color -> Image i -> IO () Source
Render a QDiagram
to an existing Image
. Throws an ImageSizeException
if the target Image
is too small for the resulting rendered diagram size.
data ImageSizeException Source
Exception indicating that the target image was the wrong size (too small) for the rendered diagram size.
ImageSizeException !(Int, Int) !(Int, Int) | ImageSizeException renderedDiagramSize targetImageSize |