{-# LANGUAGE BlockArguments #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Graphics.Cairo.Drawing.Paths.Basic where import Foreign.Ptr import Foreign.Marshal import Foreign.Storable import Foreign.C.Types import Control.Monad.Primitive import Data.Angle import Data.CairoContext import Graphics.Cairo.Drawing.Extents cairoNewPath :: PrimMonad m => CairoT r (PrimState m) -> m () cairoNewPath :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m () cairoNewPath = (CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a `withCairoT` Ptr (CairoT r (PrimState m)) -> IO () forall r s. Ptr (CairoT r s) -> IO () c_cairo_new_path) foreign import ccall "cairo_new_path" c_cairo_new_path :: Ptr (CairoT r s) -> IO () cairoNewSubPath :: PrimMonad m => CairoT r (PrimState m) -> m () cairoNewSubPath :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m () cairoNewSubPath = (CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a `withCairoT` Ptr (CairoT r (PrimState m)) -> IO () forall r s. Ptr (CairoT r s) -> IO () c_cairo_new_sub_path) foreign import ccall "cairo_new_sub_path" c_cairo_new_sub_path :: Ptr (CairoT r s) -> IO () cairoMoveTo :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> m () cairoMoveTo :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> m () cairoMoveTo CairoT r (PrimState m) cr CDouble x CDouble y = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a withCairoT CairoT r (PrimState m) cr \Ptr (CairoT r (PrimState m)) pcr -> Ptr (CairoT r (PrimState m)) -> CDouble -> CDouble -> IO () forall r s. Ptr (CairoT r s) -> CDouble -> CDouble -> IO () c_cairo_move_to Ptr (CairoT r (PrimState m)) pcr CDouble x CDouble y foreign import ccall "cairo_move_to" c_cairo_move_to :: Ptr (CairoT r s) -> CDouble -> CDouble -> IO () cairoLineTo :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> m () cairoLineTo :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> m () cairoLineTo CairoT r (PrimState m) cr CDouble x CDouble y = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a withCairoT CairoT r (PrimState m) cr \Ptr (CairoT r (PrimState m)) pcr -> Ptr (CairoT r (PrimState m)) -> CDouble -> CDouble -> IO () forall r s. Ptr (CairoT r s) -> CDouble -> CDouble -> IO () c_cairo_line_to Ptr (CairoT r (PrimState m)) pcr CDouble x CDouble y foreign import ccall "cairo_line_to" c_cairo_line_to :: Ptr (CairoT r s) -> CDouble -> CDouble -> IO () cairoCurveTo :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> m () cairoCurveTo :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> m () cairoCurveTo CairoT r (PrimState m) cr CDouble x1 CDouble y1 CDouble x2 CDouble y2 CDouble x3 CDouble y3 = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a withCairoT CairoT r (PrimState m) cr \Ptr (CairoT r (PrimState m)) pcr -> Ptr (CairoT r (PrimState m)) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO () forall r s. Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO () c_cairo_curve_to Ptr (CairoT r (PrimState m)) pcr CDouble x1 CDouble y1 CDouble x2 CDouble y2 CDouble x3 CDouble y3 foreign import ccall "cairo_curve_to" c_cairo_curve_to :: Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO () cairoClosePath :: PrimMonad m => CairoT r (PrimState m) -> m () cairoClosePath :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m () cairoClosePath = (CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a `withCairoT` Ptr (CairoT r (PrimState m)) -> IO () forall r s. Ptr (CairoT r s) -> IO () c_cairo_close_path) foreign import ccall "cairo_close_path" c_cairo_close_path :: Ptr (CairoT r s) -> IO () cairoRectangle :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> CDouble -> CDouble -> m () cairoRectangle :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> CDouble -> CDouble -> m () cairoRectangle CairoT r (PrimState m) cr CDouble x CDouble y CDouble w CDouble h = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a withCairoT CairoT r (PrimState m) cr \Ptr (CairoT r (PrimState m)) pcr -> Ptr (CairoT r (PrimState m)) -> CDouble -> CDouble -> CDouble -> CDouble -> IO () forall r s. Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> CDouble -> IO () c_cairo_rectangle Ptr (CairoT r (PrimState m)) pcr CDouble x CDouble y CDouble w CDouble h foreign import ccall "cairo_rectangle" c_cairo_rectangle :: Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> CDouble -> IO () cairoArc :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> CDouble -> Angle CDouble -> Angle CDouble -> m () cairoArc :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> CDouble -> Angle CDouble -> Angle CDouble -> m () cairoArc CairoT r (PrimState m) cr CDouble xc CDouble yc CDouble r (Radian CDouble a1) (Radian CDouble a2) = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a withCairoT CairoT r (PrimState m) cr \Ptr (CairoT r (PrimState m)) pcr -> Ptr (CairoT r (PrimState m)) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO () forall r s. Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO () c_cairo_arc Ptr (CairoT r (PrimState m)) pcr CDouble xc CDouble yc CDouble r CDouble a1 CDouble a2 foreign import ccall "cairo_arc" c_cairo_arc :: Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO () cairoArcNegative :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> CDouble -> Angle CDouble -> Angle CDouble -> m () cairoArcNegative :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> CDouble -> Angle CDouble -> Angle CDouble -> m () cairoArcNegative CairoT r (PrimState m) cr CDouble xc CDouble yc CDouble r (Radian CDouble a1) (Radian CDouble a2) = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO ()) -> m () forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a withCairoT CairoT r (PrimState m) cr \Ptr (CairoT r (PrimState m)) pcr -> Ptr (CairoT r (PrimState m)) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO () forall r s. Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO () c_cairo_arc_negative Ptr (CairoT r (PrimState m)) pcr CDouble xc CDouble yc CDouble r CDouble a1 CDouble a2 foreign import ccall "cairo_arc_negative" c_cairo_arc_negative :: Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO () cairoPathExtents :: PrimMonad m => CairoT r (PrimState m) -> m CairoExtents cairoPathExtents :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m CairoExtents cairoPathExtents = (CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO CairoExtents) -> m CairoExtents) -> (Ptr (CairoT r (PrimState m)) -> IO CairoExtents) -> CairoT r (PrimState m) -> m CairoExtents forall a b c. (a -> b -> c) -> b -> a -> c flip CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO CairoExtents) -> m CairoExtents forall (m :: * -> *) r a. PrimMonad m => CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO a) -> m a withCairoT \Ptr (CairoT r (PrimState m)) pcr -> (Ptr CDouble -> IO CairoExtents) -> IO CairoExtents forall a b. Storable a => (Ptr a -> IO b) -> IO b alloca \Ptr CDouble x1 -> (Ptr CDouble -> IO CairoExtents) -> IO CairoExtents forall a b. Storable a => (Ptr a -> IO b) -> IO b alloca \Ptr CDouble y1 -> (Ptr CDouble -> IO CairoExtents) -> IO CairoExtents forall a b. Storable a => (Ptr a -> IO b) -> IO b alloca \Ptr CDouble x2 -> (Ptr CDouble -> IO CairoExtents) -> IO CairoExtents forall a b. Storable a => (Ptr a -> IO b) -> IO b alloca \Ptr CDouble y2 -> do Ptr (CairoT r (PrimState m)) -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () forall r s. Ptr (CairoT r s) -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () c_cairo_path_extents Ptr (CairoT r (PrimState m)) pcr Ptr CDouble x1 Ptr CDouble y1 Ptr CDouble x2 Ptr CDouble y2 CDouble -> CDouble -> CDouble -> CDouble -> CairoExtents CairoExtentsLeftTopRightBottom (CDouble -> CDouble -> CDouble -> CDouble -> CairoExtents) -> IO CDouble -> IO (CDouble -> CDouble -> CDouble -> CairoExtents) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr CDouble -> IO CDouble forall a. Storable a => Ptr a -> IO a peek Ptr CDouble x1 IO (CDouble -> CDouble -> CDouble -> CairoExtents) -> IO CDouble -> IO (CDouble -> CDouble -> CairoExtents) forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Ptr CDouble -> IO CDouble forall a. Storable a => Ptr a -> IO a peek Ptr CDouble y1 IO (CDouble -> CDouble -> CairoExtents) -> IO CDouble -> IO (CDouble -> CairoExtents) forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Ptr CDouble -> IO CDouble forall a. Storable a => Ptr a -> IO a peek Ptr CDouble x2 IO (CDouble -> CairoExtents) -> IO CDouble -> IO CairoExtents forall a b. IO (a -> b) -> IO a -> IO b forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b <*> Ptr CDouble -> IO CDouble forall a. Storable a => Ptr a -> IO a peek Ptr CDouble y2 foreign import ccall "cairo_path_extents" c_cairo_path_extents :: Ptr (CairoT r s) -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO ()