packages feed

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

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

module Graphics.Cairo.Drawing.Paths.Relative where

import Foreign.Ptr
import Foreign.C.Types
import Control.Monad.Primitive
import Data.CairoContext
import Graphics.Cairo.Exception

cairoRelMoveTo :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> m ()
cairoRelMoveTo cr dx dy = do
	withCairoT cr \pcr -> c_cairo_rel_move_to pcr dx dy
	unsafeIOToPrim $ raiseIfError cr

foreign import ccall "cairo_rel_move_to" c_cairo_rel_move_to ::
	Ptr (CairoT r s) -> CDouble -> CDouble -> IO ()

cairoRelLineTo :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> m ()
cairoRelLineTo cr x y = do
	withCairoT cr \pcr -> c_cairo_rel_line_to pcr x y
	unsafeIOToPrim $ raiseIfError cr

foreign import ccall "cairo_rel_line_to" c_cairo_rel_line_to ::
	Ptr (CairoT r s) -> CDouble -> CDouble -> IO ()

cairoRelCurveTo :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble ->
	CDouble -> CDouble ->
	CDouble -> CDouble -> m ()
cairoRelCurveTo cr dx1 dy1 dx2 dy2 dx3 dy3 = do
	withCairoT cr \pcr -> c_cairo_rel_curve_to pcr dx1 dy1 dx2 dy2 dx3 dy3
	unsafeIOToPrim $ raiseIfError cr

foreign import ccall "cairo_rel_curve_to" c_cairo_rel_curve_to ::
	Ptr (CairoT r s) -> CDouble -> CDouble ->
		CDouble -> CDouble ->
		CDouble -> CDouble -> IO ()