simple-cairo-0.1.0.5: src/Graphics/Cairo/Drawing/CairoT.hsc
{-# LANGUAGE BlockArguments #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}
module Graphics.Cairo.Drawing.CairoT (
-- * Basic
cairoCreate,
-- * Push and Pop Group
cairoPushGroup, cairoPopGroup, cairoPopGroupToSource,
-- * Set Source
cairoSetSourceRgb, cairoSetSourceRgba, cairoSetSource, cairoSetSourceSurface,
-- * Set Attribute
cairoSetLineWidth,
-- * Verb
cairoFill, cairoMask, cairoPaint, cairoPaintWithAlpha,
cairoStroke, cairoStrokePreserve, cairoStrokeExtents,
) where
import Foreign.Ptr
import Foreign.ForeignPtr
import Control.Monad.Primitive
import Graphics.Cairo.Exception
import Graphics.Cairo.Drawing.CairoT.Basic
import Graphics.Cairo.Drawing.CairoT.Setting
import Data.CairoContext
import Graphics.Cairo.Drawing.CairoPatternT.Basic
foreign import ccall "cairo_push_group" c_cairo_push_group ::
Ptr (CairoT r s) -> IO ()
cairoPushGroup :: PrimMonad m => CairoT r (PrimState m) -> m ()
cairoPushGroup = (`withCairoT` c_cairo_push_group)
foreign import ccall "cairo_pop_group_to_source" c_cairo_pop_group_to_source ::
Ptr (CairoT r s) -> IO ()
cairoPopGroupToSource :: PrimMonad m => CairoT r (PrimState m) -> m ()
cairoPopGroupToSource cr@(CairoT fcr) = unsafeIOToPrim $ withForeignPtr fcr c_cairo_pop_group_to_source <* raiseIfError cr
foreign import ccall "cairo_pop_group" c_cairo_pop_group ::
Ptr (CairoT r s) -> IO (Ptr (CairoPatternT s))
cairoPopGroup :: PrimMonad m => CairoT r s -> m (CairoPatternT s)
cairoPopGroup (CairoT fcr) = unsafeIOToPrim $ makeCairoPatternT =<< withForeignPtr fcr c_cairo_pop_group