{-# LINE 1 "src/Graphics/Cairo/Drawing/CairoT/Basic.hsc" #-} {-# LANGUAGE BlockArguments #-} {-# LANGUAGE PatternSynonyms, ViewPatterns #-} {-# OPTIONS_GHC -Wall -fno-warn-tabs #-} module Graphics.Cairo.Drawing.CairoT.Basic ( cairoCreate, cairoSetSourceRgb, cairoSetSourceRgba, cairoSetSource, cairoSetSourceSurface, cairoStroke, cairoStrokePreserve, cairoStrokeExtents, cairoInStroke, cairoFill, cairoFillPreserve, cairoFillExtents, cairoInFill, cairoPaint, cairoPaintWithAlpha, cairoMask, cairoMaskSurface, CairoExtents(..), pattern CairoExtentsLeftTopWidthHeight, cairoExtentsLeft, cairoExtentsTop, cairoExtentsWidth, cairoExtentsHeight ) where import Foreign.Ptr import Foreign.ForeignPtr hiding (newForeignPtr, addForeignPtrFinalizer) import Foreign.Concurrent import Foreign.Marshal import Foreign.Storable import Foreign.C.Types import Control.Monad.Primitive import Control.Concurrent.STM import Data.Int import Graphics.Cairo.Surfaces.CairoSurfaceT.Internal import Graphics.Cairo.Exception import Graphics.Cairo.Drawing.Extents import Data.Color import Data.CairoContext import Graphics.Cairo.Drawing.CairoPatternT.Basic cairoCreate :: (PrimMonad m, IsCairoSurfaceT sr) => sr s (PrimState m) -> m (CairoT r (PrimState m)) cairoCreate :: forall (m :: * -> *) (sr :: * -> * -> *) s r. (PrimMonad m, IsCairoSurfaceT sr) => sr s (PrimState m) -> m (CairoT r (PrimState m)) cairoCreate sr s (PrimState m) sr_ = IO (CairoT r (PrimState m)) -> m (CairoT r (PrimState m)) forall (m :: * -> *) a. PrimMonad m => IO a -> m a unsafeIOToPrim do cr <- ForeignPtr (CairoSurfaceT s (PrimState m)) -> (Ptr (CairoSurfaceT s (PrimState m)) -> IO (Ptr (CairoT r (PrimState m)))) -> IO (Ptr (CairoT r (PrimState m))) forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b withForeignPtr ForeignPtr (CairoSurfaceT s (PrimState m)) sr Ptr (CairoSurfaceT s (PrimState m)) -> IO (Ptr (CairoT r (PrimState m))) forall s ps r. Ptr (CairoSurfaceT s ps) -> IO (Ptr (CairoT r ps)) c_cairo_create IO (Ptr (CairoT r (PrimState m))) -> (Ptr (CairoT r (PrimState m)) -> IO (CairoT r (PrimState m))) -> IO (CairoT r (PrimState m)) forall a b. IO a -> (a -> IO b) -> IO b forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b >>= \Ptr (CairoT r (PrimState m)) pcr -> ForeignPtr (CairoT r (PrimState m)) -> CairoT r (PrimState m) forall r s. ForeignPtr (CairoT r s) -> CairoT r s CairoT (ForeignPtr (CairoT r (PrimState m)) -> CairoT r (PrimState m)) -> IO (ForeignPtr (CairoT r (PrimState m))) -> IO (CairoT r (PrimState m)) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr (CairoT r (PrimState m)) -> IO () -> IO (ForeignPtr (CairoT r (PrimState m))) forall a. Ptr a -> IO () -> IO (ForeignPtr a) newForeignPtr Ptr (CairoT r (PrimState m)) pcr (do STM () -> IO () forall a. STM a -> IO a atomically (TChan () -> STM () forall a. TChan a -> STM a readTChan (TChan () -> STM ()) -> STM (TChan ()) -> STM () forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b =<< STM (TChan ()) ck) String -> IO () putStrLn String "begin CairoT destroy" Ptr (CairoT r (PrimState m)) -> IO () forall r s. Ptr (CairoT r s) -> IO () c_cairo_destroy Ptr (CairoT r (PrimState m)) pcr String -> IO () putStrLn String "end CairoT destroy") cr <$ raiseIfError cr where CairoSurfaceT ForeignPtr (CairoSurfaceT s (PrimState m)) sr = sr s (PrimState m) -> CairoSurfaceT s (PrimState m) forall s ps. sr s ps -> CairoSurfaceT s ps forall (sr :: * -> * -> *) s ps. IsCairoSurfaceT sr => sr s ps -> CairoSurfaceT s ps toCairoSurfaceT sr s (PrimState m) sr_ ck :: STM (TChan ()) ck = sr s (PrimState m) -> STM (TChan ()) forall s ps. sr s ps -> STM (TChan ()) forall (sr :: * -> * -> *) s ps. IsCairoSurfaceT sr => sr s ps -> STM (TChan ()) cairoSurfaceTFinishChecker sr s (PrimState m) sr_ foreign import ccall "cairo_create" c_cairo_create :: Ptr (CairoSurfaceT s ps) -> IO (Ptr (CairoT r ps)) foreign import ccall "cairo_destroy" c_cairo_destroy :: Ptr (CairoT r s) -> IO () cairoSetSourceRgb :: PrimMonad m => CairoT r (PrimState m) -> Rgb CDouble -> m () cairoSetSourceRgb :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> Rgb CDouble -> m () cairoSetSourceRgb CairoT r (PrimState m) cr (RgbDouble CDouble r CDouble g CDouble b) = 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 -> IO () forall r s. Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> IO () c_cairo_set_source_rgb Ptr (CairoT r (PrimState m)) pcr CDouble r CDouble g CDouble b foreign import ccall "cairo_set_source_rgb" c_cairo_set_source_rgb :: Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> IO () cairoSetSourceRgba :: PrimMonad m => CairoT r (PrimState m) -> Rgba CDouble -> m () cairoSetSourceRgba :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> Rgba CDouble -> m () cairoSetSourceRgba CairoT r (PrimState m) cr (RgbaDouble CDouble r CDouble g CDouble b CDouble a) = 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_set_source_rgba Ptr (CairoT r (PrimState m)) pcr CDouble r CDouble g CDouble b CDouble a foreign import ccall "cairo_set_source_rgba" c_cairo_set_source_rgba :: Ptr (CairoT r s) -> CDouble -> CDouble -> CDouble -> CDouble -> IO () cairoSetSource :: (PrimMonad m, IsCairoPatternT pt) => CairoT r s -> pt s -> m () cairoSetSource :: forall (m :: * -> *) (pt :: * -> *) r s. (PrimMonad m, IsCairoPatternT pt) => CairoT r s -> pt s -> m () cairoSetSource cr :: CairoT r s cr@(CairoT ForeignPtr (CairoT r s) fcr) (pt s -> CairoPatternT s forall s. pt s -> CairoPatternT s forall (pt :: * -> *) s. IsCairoPatternT pt => pt s -> CairoPatternT s toCairoPatternT -> CairoPatternT ForeignPtr (CairoPatternT s) fpt) = IO () -> m () forall (m :: * -> *) a. PrimMonad m => IO a -> m a unsafeIOToPrim do ForeignPtr (CairoT r s) -> (Ptr (CairoT r s) -> IO ()) -> IO () forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b withForeignPtr ForeignPtr (CairoT r s) fcr \Ptr (CairoT r s) pcr -> ForeignPtr (CairoPatternT s) -> (Ptr (CairoPatternT s) -> IO ()) -> IO () forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b withForeignPtr ForeignPtr (CairoPatternT s) fpt \Ptr (CairoPatternT s) ppt -> Ptr (CairoT r s) -> Ptr (CairoPatternT s) -> IO () forall r s. Ptr (CairoT r s) -> Ptr (CairoPatternT s) -> IO () c_cairo_set_source Ptr (CairoT r s) pcr Ptr (CairoPatternT s) ppt IO () -> IO () -> IO () forall a b. IO a -> IO b -> IO b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> CairoT r s -> IO () forall r s. CairoT r s -> IO () raiseIfError CairoT r s cr ForeignPtr (CairoT r s) -> IO () -> IO () forall a. ForeignPtr a -> IO () -> IO () addForeignPtrFinalizer ForeignPtr (CairoT r s) fcr (IO () -> IO ()) -> IO () -> IO () forall a b. (a -> b) -> a -> b $ ForeignPtr (CairoPatternT s) -> IO () forall a. ForeignPtr a -> IO () touchForeignPtr ForeignPtr (CairoPatternT s) fpt foreign import ccall "cairo_set_source" c_cairo_set_source :: Ptr (CairoT r s) -> Ptr (CairoPatternT s) -> IO () cairoSetSourceSurface :: (PrimMonad m, IsCairoSurfaceT sr) => CairoT r ps -> sr s ps -> CDouble -> CDouble -> m () cairoSetSourceSurface :: forall (m :: * -> *) (sr :: * -> * -> *) r ps s. (PrimMonad m, IsCairoSurfaceT sr) => CairoT r ps -> sr s ps -> CDouble -> CDouble -> m () cairoSetSourceSurface (CairoT ForeignPtr (CairoT r ps) fcr) (sr s ps -> CairoSurfaceT s ps forall s ps. sr s ps -> CairoSurfaceT s ps forall (sr :: * -> * -> *) s ps. IsCairoSurfaceT sr => sr s ps -> CairoSurfaceT s ps toCairoSurfaceT -> CairoSurfaceT ForeignPtr (CairoSurfaceT s ps) fsr) CDouble x CDouble y = IO () -> m () forall (m :: * -> *) a. PrimMonad m => IO a -> m a unsafeIOToPrim (IO () -> m ()) -> IO () -> m () forall a b. (a -> b) -> a -> b $ ForeignPtr (CairoT r ps) -> (Ptr (CairoT r ps) -> IO ()) -> IO () forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b withForeignPtr ForeignPtr (CairoT r ps) fcr \Ptr (CairoT r ps) cr -> ForeignPtr (CairoSurfaceT s ps) -> (Ptr (CairoSurfaceT s ps) -> IO ()) -> IO () forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b withForeignPtr ForeignPtr (CairoSurfaceT s ps) fsr \Ptr (CairoSurfaceT s ps) sr -> Ptr (CairoT r ps) -> Ptr (CairoSurfaceT s ps) -> CDouble -> CDouble -> IO () forall r ps s. Ptr (CairoT r ps) -> Ptr (CairoSurfaceT s ps) -> CDouble -> CDouble -> IO () c_cairo_set_source_surface Ptr (CairoT r ps) cr Ptr (CairoSurfaceT s ps) sr CDouble x CDouble y foreign import ccall "cairo_set_source_surface" c_cairo_set_source_surface :: Ptr (CairoT r ps) -> Ptr (CairoSurfaceT s ps) -> CDouble -> CDouble -> IO () cairoStroke :: PrimMonad m => CairoT r (PrimState m) -> m () cairoStroke :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m () cairoStroke = (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_stroke) foreign import ccall "cairo_stroke" c_cairo_stroke :: Ptr (CairoT r s) -> IO () cairoStrokePreserve :: PrimMonad m => CairoT r (PrimState m) -> m () cairoStrokePreserve :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m () cairoStrokePreserve = (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_stroke_preserve) foreign import ccall "cairo_stroke_preserve" c_cairo_stroke_preserve :: Ptr (CairoT r s) -> IO () cairoStrokeExtents :: PrimMonad m => CairoT r (PrimState m) -> m CairoExtents cairoStrokeExtents :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m CairoExtents cairoStrokeExtents = (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_stroke_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_stroke_extents" c_cairo_stroke_extents :: Ptr (CairoT r s) -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () cairoInStroke :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> m Bool cairoInStroke :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> m Bool cairoInStroke CairoT r (PrimState m) cr CDouble x CDouble y = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO Bool) -> m Bool 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 -> (Int32 -> Int32 -> Bool forall a. Eq a => a -> a -> Bool /= Int32 0) (Int32 -> Bool) -> IO Int32 -> IO Bool forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr (CairoT r (PrimState m)) -> CDouble -> CDouble -> IO Int32 forall r s. Ptr (CairoT r s) -> CDouble -> CDouble -> IO Int32 c_cairo_in_stroke Ptr (CairoT r (PrimState m)) pcr CDouble x CDouble y foreign import ccall "cairo_in_stroke" c_cairo_in_stroke :: Ptr (CairoT r s) -> CDouble -> CDouble -> IO Int32 {-# LINE 109 "src/Graphics/Cairo/Drawing/CairoT/Basic.hsc" #-} cairoFill :: PrimMonad m => CairoT r (PrimState m) -> m () cairoFill :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m () cairoFill = (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_fill) foreign import ccall "cairo_fill" c_cairo_fill :: Ptr (CairoT r s) -> IO () cairoFillPreserve :: PrimMonad m => CairoT r (PrimState m) -> m () cairoFillPreserve :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m () cairoFillPreserve = (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_fill_preserve) foreign import ccall "cairo_fill_preserve" c_cairo_fill_preserve :: Ptr (CairoT r s) -> IO () cairoFillExtents :: PrimMonad m => CairoT r (PrimState m) -> m CairoExtents cairoFillExtents :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m CairoExtents cairoFillExtents = (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_fill_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_fill_extents" c_cairo_fill_extents :: Ptr (CairoT r s) -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO () cairoInFill :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> m Bool cairoInFill :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> CDouble -> CDouble -> m Bool cairoInFill CairoT r (PrimState m) cr CDouble x CDouble y = CairoT r (PrimState m) -> (Ptr (CairoT r (PrimState m)) -> IO Bool) -> m Bool 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 -> (Int32 -> Int32 -> Bool forall a. Eq a => a -> a -> Bool /= Int32 0) (Int32 -> Bool) -> IO Int32 -> IO Bool forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b <$> Ptr (CairoT r (PrimState m)) -> CDouble -> CDouble -> IO Int32 forall r s. Ptr (CairoT r s) -> CDouble -> CDouble -> IO Int32 c_cairo_in_fill Ptr (CairoT r (PrimState m)) pcr CDouble x CDouble y foreign import ccall "cairo_in_fill" c_cairo_in_fill :: Ptr (CairoT r s) -> CDouble -> CDouble -> IO Int32 {-# LINE 133 "src/Graphics/Cairo/Drawing/CairoT/Basic.hsc" #-} cairoPaint :: PrimMonad m => CairoT r (PrimState m) -> m () cairoPaint :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> m () cairoPaint CairoT r (PrimState m) cr = 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)) -> IO () forall r s. Ptr (CairoT r s) -> IO () c_cairo_paint Ptr (CairoT r (PrimState m)) pcr IO () -> IO () -> IO () forall a b. IO a -> IO b -> IO b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> CairoT r (PrimState m) -> IO () forall r s. CairoT r s -> IO () raiseIfError CairoT r (PrimState m) cr foreign import ccall "cairo_paint" c_cairo_paint :: Ptr (CairoT r s) -> IO () cairoPaintWithAlpha :: PrimMonad m => CairoT r (PrimState m) -> CDouble -> m () cairoPaintWithAlpha :: forall (m :: * -> *) r. PrimMonad m => CairoT r (PrimState m) -> CDouble -> m () cairoPaintWithAlpha CairoT r (PrimState m) cr CDouble a = 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 -> IO () forall r s. Ptr (CairoT r s) -> CDouble -> IO () c_cairo_paint_with_alpha Ptr (CairoT r (PrimState m)) pcr CDouble a foreign import ccall "cairo_paint_with_alpha" c_cairo_paint_with_alpha :: Ptr (CairoT r s) -> CDouble -> IO () cairoMask :: (PrimMonad m, IsCairoPatternT pt) => CairoT r s -> pt s -> m () cairoMask :: forall (m :: * -> *) (pt :: * -> *) r s. (PrimMonad m, IsCairoPatternT pt) => CairoT r s -> pt s -> m () cairoMask cr :: CairoT r s cr@(CairoT ForeignPtr (CairoT r s) fcr) (pt s -> CairoPatternT s forall s. pt s -> CairoPatternT s forall (pt :: * -> *) s. IsCairoPatternT pt => pt s -> CairoPatternT s toCairoPatternT -> CairoPatternT ForeignPtr (CairoPatternT s) fpt) = IO () -> m () forall (m :: * -> *) a. PrimMonad m => IO a -> m a unsafeIOToPrim (IO () -> m ()) -> IO () -> m () forall a b. (a -> b) -> a -> b $ ForeignPtr (CairoT r s) -> (Ptr (CairoT r s) -> IO ()) -> IO () forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b withForeignPtr ForeignPtr (CairoT r s) fcr \Ptr (CairoT r s) pcr -> ForeignPtr (CairoPatternT s) -> (Ptr (CairoPatternT s) -> IO ()) -> IO () forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b withForeignPtr ForeignPtr (CairoPatternT s) fpt (Ptr (CairoT r s) -> Ptr (CairoPatternT s) -> IO () forall r s. Ptr (CairoT r s) -> Ptr (CairoPatternT s) -> IO () c_cairo_mask Ptr (CairoT r s) pcr) IO () -> IO () -> IO () forall a b. IO a -> IO b -> IO b forall (m :: * -> *) a b. Monad m => m a -> m b -> m b >> CairoT r s -> IO () forall r s. CairoT r s -> IO () raiseIfError CairoT r s cr foreign import ccall "cairo_mask" c_cairo_mask :: Ptr (CairoT r s) -> Ptr (CairoPatternT s) -> IO () cairoMaskSurface :: (PrimMonad m, IsCairoSurfaceT sr) => CairoT r ps -> sr s ps -> CDouble -> CDouble -> m () cairoMaskSurface :: forall (m :: * -> *) (sr :: * -> * -> *) r ps s. (PrimMonad m, IsCairoSurfaceT sr) => CairoT r ps -> sr s ps -> CDouble -> CDouble -> m () cairoMaskSurface (CairoT ForeignPtr (CairoT r ps) fcr) (sr s ps -> CairoSurfaceT s ps forall s ps. sr s ps -> CairoSurfaceT s ps forall (sr :: * -> * -> *) s ps. IsCairoSurfaceT sr => sr s ps -> CairoSurfaceT s ps toCairoSurfaceT -> CairoSurfaceT ForeignPtr (CairoSurfaceT s ps) fsr) CDouble x CDouble y = IO () -> m () forall (m :: * -> *) a. PrimMonad m => IO a -> m a unsafeIOToPrim (IO () -> m ()) -> IO () -> m () forall a b. (a -> b) -> a -> b $ ForeignPtr (CairoT r ps) -> (Ptr (CairoT r ps) -> IO ()) -> IO () forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b withForeignPtr ForeignPtr (CairoT r ps) fcr \Ptr (CairoT r ps) cr -> ForeignPtr (CairoSurfaceT s ps) -> (Ptr (CairoSurfaceT s ps) -> IO ()) -> IO () forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b withForeignPtr ForeignPtr (CairoSurfaceT s ps) fsr \Ptr (CairoSurfaceT s ps) sr -> Ptr (CairoT r ps) -> Ptr (CairoSurfaceT s ps) -> CDouble -> CDouble -> IO () forall r ps s. Ptr (CairoT r ps) -> Ptr (CairoSurfaceT s ps) -> CDouble -> CDouble -> IO () c_cairo_mask_surface Ptr (CairoT r ps) cr Ptr (CairoSurfaceT s ps) sr CDouble x CDouble y foreign import ccall "cairo_mask_surface" c_cairo_mask_surface :: Ptr (CairoT r ps) -> Ptr (CairoSurfaceT s ps) -> CDouble -> CDouble -> IO ()