packages feed

simple-cairo-0.1.0.5: src/Graphics/Cairo/Drawing/Paths/CopyAppend.hs

{-# LANGUAGE BlockArguments #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Graphics.Cairo.Drawing.Paths.CopyAppend where

import Foreign.Ptr
import Foreign.ForeignPtr
import Control.Monad.Primitive
import Data.CairoContext
import Graphics.Cairo.Drawing.Paths.CairoPathT

cairoCopyPath :: PrimMonad m => CairoT r (PrimState m) -> m CairoPathT
cairoCopyPath (CairoT fcr) = unsafeIOToPrim
	$ withForeignPtr fcr \pcr -> mkCairoPathT =<< c_cairo_copy_path pcr

foreign import ccall "cairo_copy_path" c_cairo_copy_path ::
	Ptr (CairoT r s) -> IO (Ptr CairoPathT)

cairoCopyPathFlat :: PrimMonad m => CairoT r (PrimState m) -> m CairoPathT
cairoCopyPathFlat (CairoT fcr) = unsafeIOToPrim
	$ withForeignPtr fcr \pcr -> mkCairoPathT =<< c_cairo_copy_path_flat pcr

foreign import ccall "cairo_copy_path_flat" c_cairo_copy_path_flat ::
	Ptr (CairoT r s) -> IO (Ptr CairoPathT)

cairoAppendPath :: PrimMonad m =>
	CairoT r (PrimState m) -> CairoPathT -> m ()
cairoAppendPath (CairoT fcr) pth = unsafeIOToPrim
	$ withForeignPtr fcr \pcr -> withCairoPathT pth \ppth ->
		c_cairo_append_path pcr ppth

foreign import ccall "cairo_append_path" c_cairo_append_path ::
	Ptr (CairoT r s) -> Ptr CairoPathT -> IO ()