+-- | Helper function for gfxHanlder
+gfxHandler' :: Request -> Maybe (Cairo.Render ())
+gfxHandler' (GfxText col (Point x y) st) = Just $ do
+ -- Set the source color, move to the requested position and draw the
+ -- text
+ setSourceColor col
+ Cairo.moveTo (fromIntegral x) (fromIntegral y)
+ Cairo.showText st
+gfxHandler' GfxClear = Just $ do
+ -- Set the source to white and paint the entire surface with it
+ Cairo.setSourceRGB 1 1 1
+ Cairo.paint
+gfxHandler' _ = Nothing
+
+-- | Sets the source to a pattern fill of the given color
+setSourceColor :: Color -> Cairo.Render ()
+setSourceColor (Color r g b) =
+ Cairo.setSourceRGB r g b