{-# LINE 1 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}
{-# LANGUAGE BlockArguments, LambdaCase #-}
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
{-# LANGUAGE FlexibleInstances, UndecidableInstances #-}
{-# OPTIONS_GHC -Wall -fno-warn-tabs #-}

module Graphics.Cairo.Drawing.CairoPatternT.Basic where

import Foreign.Ptr
import Foreign.ForeignPtr hiding (newForeignPtr)
import Foreign.Concurrent
import Foreign.Marshal
import Foreign.Storable
import Foreign.C.Types
import Control.Monad.Primitive
import Data.Traversable
import Data.Maybe
import Data.Word
import Data.Color
import System.IO.Unsafe

import Graphics.Cairo.Exception
import Graphics.Cairo.Surfaces.CairoSurfaceT.Internal



class IsCairoPatternT pt where toCairoPatternT :: pt s -> CairoPatternT s

newtype CairoPatternT s = CairoPatternT (ForeignPtr (CairoPatternT s)) deriving Int -> CairoPatternT s -> ShowS
[CairoPatternT s] -> ShowS
CairoPatternT s -> String
(Int -> CairoPatternT s -> ShowS)
-> (CairoPatternT s -> String)
-> ([CairoPatternT s] -> ShowS)
-> Show (CairoPatternT s)
forall s. Int -> CairoPatternT s -> ShowS
forall s. [CairoPatternT s] -> ShowS
forall s. CairoPatternT s -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall s. Int -> CairoPatternT s -> ShowS
showsPrec :: Int -> CairoPatternT s -> ShowS
$cshow :: forall s. CairoPatternT s -> String
show :: CairoPatternT s -> String
$cshowList :: forall s. [CairoPatternT s] -> ShowS
showList :: [CairoPatternT s] -> ShowS
Show

instance IsCairoPatternT CairoPatternT where toCairoPatternT :: forall s. CairoPatternT s -> CairoPatternT s
toCairoPatternT = CairoPatternT s -> CairoPatternT s
forall a. a -> a
id

makeCairoPatternT :: Ptr (CairoPatternT s) -> IO (CairoPatternT s)
makeCairoPatternT :: forall s. Ptr (CairoPatternT s) -> IO (CairoPatternT s)
makeCairoPatternT Ptr (CairoPatternT s)
p = ForeignPtr (CairoPatternT s) -> CairoPatternT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternT s
CairoPatternT (ForeignPtr (CairoPatternT s) -> CairoPatternT s)
-> IO (ForeignPtr (CairoPatternT s)) -> IO (CairoPatternT s)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr (CairoPatternT s) -> IO () -> IO (ForeignPtr (CairoPatternT s))
forall a. Ptr a -> IO () -> IO (ForeignPtr a)
newForeignPtr Ptr (CairoPatternT s)
p (Ptr (CairoPatternT s) -> IO ()
forall s. Ptr (CairoPatternT s) -> IO ()
c_cairo_pattern_destroy Ptr (CairoPatternT s)
p)

returnCairoPatternT :: PrimMonad m => IO (Ptr (CairoPatternT (PrimState m))) -> m (CairoPatternT (PrimState m))
returnCairoPatternT :: forall (m :: * -> *).
PrimMonad m =>
IO (Ptr (CairoPatternT (PrimState m)))
-> m (CairoPatternT (PrimState m))
returnCairoPatternT IO (Ptr (CairoPatternT (PrimState m)))
io = IO (CairoPatternT (PrimState m)) -> m (CairoPatternT (PrimState m))
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim (IO (CairoPatternT (PrimState m))
 -> m (CairoPatternT (PrimState m)))
-> IO (CairoPatternT (PrimState m))
-> m (CairoPatternT (PrimState m))
forall a b. (a -> b) -> a -> b
$ Ptr (CairoPatternT (PrimState m))
-> IO (CairoPatternT (PrimState m))
forall s. Ptr (CairoPatternT s) -> IO (CairoPatternT s)
makeCairoPatternT (Ptr (CairoPatternT (PrimState m))
 -> IO (CairoPatternT (PrimState m)))
-> IO (Ptr (CairoPatternT (PrimState m)))
-> IO (CairoPatternT (PrimState m))
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< IO (Ptr (CairoPatternT (PrimState m)))
io

foreign import ccall "cairo_pattern_destroy" c_cairo_pattern_destroy ::
	Ptr (CairoPatternT s) -> IO ()

newtype CairoPatternTypeT = CairoPatternTypeT Word32 deriving Int -> CairoPatternTypeT -> ShowS
[CairoPatternTypeT] -> ShowS
CairoPatternTypeT -> String
(Int -> CairoPatternTypeT -> ShowS)
-> (CairoPatternTypeT -> String)
-> ([CairoPatternTypeT] -> ShowS)
-> Show CairoPatternTypeT
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: Int -> CairoPatternTypeT -> ShowS
showsPrec :: Int -> CairoPatternTypeT -> ShowS
$cshow :: CairoPatternTypeT -> String
show :: CairoPatternTypeT -> String
$cshowList :: [CairoPatternTypeT] -> ShowS
showList :: [CairoPatternTypeT] -> ShowS
Show
{-# LINE 42 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

pattern CairoPatternTypeSolid :: CairoPatternTypeT
pattern $mCairoPatternTypeSolid :: forall {r}. CairoPatternTypeT -> ((# #) -> r) -> ((# #) -> r) -> r
$bCairoPatternTypeSolid :: CairoPatternTypeT
CairoPatternTypeSolid <- CairoPatternTypeT 0 where
{-# LINE 45 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}
	CairoPatternTypeSolid = Word32 -> CairoPatternTypeT
CairoPatternTypeT Word32
0
{-# LINE 46 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

pattern CairoPatternTypeSurface :: CairoPatternTypeT
pattern $mCairoPatternTypeSurface :: forall {r}. CairoPatternTypeT -> ((# #) -> r) -> ((# #) -> r) -> r
$bCairoPatternTypeSurface :: CairoPatternTypeT
CairoPatternTypeSurface <- CairoPatternTypeT 1 where
{-# LINE 49 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}
	CairoPatternTypeSurface = Word32 -> CairoPatternTypeT
CairoPatternTypeT Word32
1
{-# LINE 50 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

pattern CairoPatternTypeLinear :: CairoPatternTypeT
pattern $mCairoPatternTypeLinear :: forall {r}. CairoPatternTypeT -> ((# #) -> r) -> ((# #) -> r) -> r
$bCairoPatternTypeLinear :: CairoPatternTypeT
CairoPatternTypeLinear <- CairoPatternTypeT 2 where
{-# LINE 53 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}
	CairoPatternTypeLinear = Word32 -> CairoPatternTypeT
CairoPatternTypeT Word32
2
{-# LINE 54 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

pattern CairoPatternTypeRadial :: CairoPatternTypeT
pattern $mCairoPatternTypeRadial :: forall {r}. CairoPatternTypeT -> ((# #) -> r) -> ((# #) -> r) -> r
$bCairoPatternTypeRadial :: CairoPatternTypeT
CairoPatternTypeRadial <- CairoPatternTypeT 3 where
{-# LINE 57 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}
	CairoPatternTypeRadial = Word32 -> CairoPatternTypeT
CairoPatternTypeT Word32
3
{-# LINE 58 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

pattern CairoPatternTypeMesh :: CairoPatternTypeT
pattern $mCairoPatternTypeMesh :: forall {r}. CairoPatternTypeT -> ((# #) -> r) -> ((# #) -> r) -> r
$bCairoPatternTypeMesh :: CairoPatternTypeT
CairoPatternTypeMesh <- CairoPatternTypeT 4 where
{-# LINE 61 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}
	CairoPatternTypeMesh = Word32 -> CairoPatternTypeT
CairoPatternTypeT Word32
4
{-# LINE 62 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

pattern CairoPatternTypeRasterSource :: CairoPatternTypeT
pattern $mCairoPatternTypeRasterSource :: forall {r}. CairoPatternTypeT -> ((# #) -> r) -> ((# #) -> r) -> r
$bCairoPatternTypeRasterSource :: CairoPatternTypeT
CairoPatternTypeRasterSource <- CairoPatternTypeT 5 where
{-# LINE 65 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}
	CairoPatternTypeRasterSource = Word32 -> CairoPatternTypeT
CairoPatternTypeT Word32
5
{-# LINE 66 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

cairoPatternGetType :: CairoPatternT s -> CairoPatternTypeT
cairoPatternGetType :: forall s. CairoPatternT s -> CairoPatternTypeT
cairoPatternGetType (CairoPatternT ForeignPtr (CairoPatternT s)
fpt) = IO CairoPatternTypeT -> CairoPatternTypeT
forall a. IO a -> a
unsafePerformIO (IO CairoPatternTypeT -> CairoPatternTypeT)
-> IO CairoPatternTypeT -> CairoPatternTypeT
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT s)
-> (Ptr (CairoPatternT s) -> IO CairoPatternTypeT)
-> IO CairoPatternTypeT
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr (CairoPatternT s)
fpt \Ptr (CairoPatternT s)
pt ->
	Word32 -> CairoPatternTypeT
CairoPatternTypeT (Word32 -> CairoPatternTypeT) -> IO Word32 -> IO CairoPatternTypeT
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> Ptr (CairoPatternT s) -> IO Word32
forall s. Ptr (CairoPatternT s) -> IO Word32
c_cairo_pattern_get_type Ptr (CairoPatternT s)
pt

foreign import ccall "cairo_pattern_get_type" c_cairo_pattern_get_type ::
	Ptr (CairoPatternT s) -> IO Word32
{-# LINE 73 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

newtype CairoPatternSolidT s = CairoPatternSolidT (ForeignPtr (CairoPatternT s)) deriving Int -> CairoPatternSolidT s -> ShowS
[CairoPatternSolidT s] -> ShowS
CairoPatternSolidT s -> String
(Int -> CairoPatternSolidT s -> ShowS)
-> (CairoPatternSolidT s -> String)
-> ([CairoPatternSolidT s] -> ShowS)
-> Show (CairoPatternSolidT s)
forall s. Int -> CairoPatternSolidT s -> ShowS
forall s. [CairoPatternSolidT s] -> ShowS
forall s. CairoPatternSolidT s -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall s. Int -> CairoPatternSolidT s -> ShowS
showsPrec :: Int -> CairoPatternSolidT s -> ShowS
$cshow :: forall s. CairoPatternSolidT s -> String
show :: CairoPatternSolidT s -> String
$cshowList :: forall s. [CairoPatternSolidT s] -> ShowS
showList :: [CairoPatternSolidT s] -> ShowS
Show

instance IsCairoPatternT CairoPatternSolidT where toCairoPatternT :: forall s. CairoPatternSolidT s -> CairoPatternT s
toCairoPatternT = CairoPatternSolidT s -> CairoPatternT s
forall s. CairoPatternSolidT s -> CairoPatternT s
CairoPatternTSolid

pattern CairoPatternTSolid :: CairoPatternSolidT s -> CairoPatternT s
pattern $mCairoPatternTSolid :: forall {r} {s}.
CairoPatternT s -> (CairoPatternSolidT s -> r) -> ((# #) -> r) -> r
$bCairoPatternTSolid :: forall s. CairoPatternSolidT s -> CairoPatternT s
CairoPatternTSolid pts <- (cairoPatternSolidT -> Just pts) where
	CairoPatternTSolid (CairoPatternSolidT ForeignPtr (CairoPatternT s)
pts) = ForeignPtr (CairoPatternT s) -> CairoPatternT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternT s
CairoPatternT ForeignPtr (CairoPatternT s)
pts

cairoPatternSolidT :: CairoPatternT s -> Maybe (CairoPatternSolidT s)
cairoPatternSolidT :: forall s. CairoPatternT s -> Maybe (CairoPatternSolidT s)
cairoPatternSolidT pt :: CairoPatternT s
pt@(CairoPatternT ForeignPtr (CairoPatternT s)
fpt) = case CairoPatternT s -> CairoPatternTypeT
forall s. CairoPatternT s -> CairoPatternTypeT
cairoPatternGetType CairoPatternT s
pt of
	CairoPatternTypeT
CairoPatternTypeSolid -> CairoPatternSolidT s -> Maybe (CairoPatternSolidT s)
forall a. a -> Maybe a
Just (CairoPatternSolidT s -> Maybe (CairoPatternSolidT s))
-> CairoPatternSolidT s -> Maybe (CairoPatternSolidT s)
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT s) -> CairoPatternSolidT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternSolidT s
CairoPatternSolidT ForeignPtr (CairoPatternT s)
fpt
	CairoPatternTypeT
_ -> Maybe (CairoPatternSolidT s)
forall a. Maybe a
Nothing

cairoPatternCreateRgb :: PrimMonad m => Rgb CDouble -> m (CairoPatternSolidT (PrimState m))
cairoPatternCreateRgb :: forall (m :: * -> *).
PrimMonad m =>
Rgb CDouble -> m (CairoPatternSolidT (PrimState m))
cairoPatternCreateRgb (RgbDouble CDouble
r CDouble
g CDouble
b) = IO (CairoPatternSolidT (PrimState m))
-> m (CairoPatternSolidT (PrimState m))
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim do
	ppt <- CDouble
-> CDouble -> CDouble -> IO (Ptr (CairoPatternT (PrimState m)))
forall s.
CDouble -> CDouble -> CDouble -> IO (Ptr (CairoPatternT s))
c_cairo_pattern_create_rgb CDouble
r CDouble
g CDouble
b
	pt <- CairoPatternSolidT <$> newForeignPtr ppt (c_cairo_pattern_destroy ppt)
	pt <$ raiseIfErrorPattern (CairoPatternTSolid pt)

foreign import ccall "cairo_pattern_create_rgb" c_cairo_pattern_create_rgb ::
	CDouble -> CDouble -> CDouble -> IO (Ptr (CairoPatternT s))

cairoPatternCreateRgba :: PrimMonad m => Rgba CDouble -> m (CairoPatternSolidT (PrimState m))
cairoPatternCreateRgba :: forall (m :: * -> *).
PrimMonad m =>
Rgba CDouble -> m (CairoPatternSolidT (PrimState m))
cairoPatternCreateRgba (RgbaDouble CDouble
r CDouble
g CDouble
b CDouble
a) = IO (CairoPatternSolidT (PrimState m))
-> m (CairoPatternSolidT (PrimState m))
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim do
	ppt <- CDouble
-> CDouble
-> CDouble
-> CDouble
-> IO (Ptr (CairoPatternT (PrimState m)))
forall s.
CDouble
-> CDouble -> CDouble -> CDouble -> IO (Ptr (CairoPatternT s))
c_cairo_pattern_create_rgba CDouble
r CDouble
g CDouble
b CDouble
a
	pt <- CairoPatternSolidT <$> newForeignPtr ppt (c_cairo_pattern_destroy ppt)
	pt <$ raiseIfErrorPattern (CairoPatternTSolid pt)

foreign import ccall "cairo_pattern_create_rgba" c_cairo_pattern_create_rgba ::
	CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr (CairoPatternT s))

cairoPatternGetRgba :: PrimMonad m => CairoPatternSolidT (PrimState m) -> m (Rgba CDouble)
cairoPatternGetRgba :: forall (m :: * -> *).
PrimMonad m =>
CairoPatternSolidT (PrimState m) -> m (Rgba CDouble)
cairoPatternGetRgba (CairoPatternSolidT ForeignPtr (CairoPatternT (PrimState m))
fpts) = IO (Rgba CDouble) -> m (Rgba CDouble)
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim (IO (Rgba CDouble) -> m (Rgba CDouble))
-> IO (Rgba CDouble) -> m (Rgba CDouble)
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT (PrimState m))
-> (Ptr (CairoPatternT (PrimState m)) -> IO (Rgba CDouble))
-> IO (Rgba CDouble)
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr (CairoPatternT (PrimState m))
fpts \Ptr (CairoPatternT (PrimState m))
pts ->
	(Ptr CDouble -> IO (Rgba CDouble)) -> IO (Rgba CDouble)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
r -> (Ptr CDouble -> IO (Rgba CDouble)) -> IO (Rgba CDouble)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
g -> (Ptr CDouble -> IO (Rgba CDouble)) -> IO (Rgba CDouble)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
b -> (Ptr CDouble -> IO (Rgba CDouble)) -> IO (Rgba CDouble)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
a -> do
		Word32 -> IO ()
cairoStatusToThrowError (Word32 -> IO ()) -> IO Word32 -> IO ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr (CairoPatternT (PrimState m))
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> IO Word32
forall s.
Ptr (CairoPatternT s)
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> IO Word32
c_cairo_pattern_get_rgba Ptr (CairoPatternT (PrimState m))
pts Ptr CDouble
r Ptr CDouble
g Ptr CDouble
b Ptr CDouble
a
		CDouble -> CDouble -> CDouble -> CDouble -> Maybe (Rgba CDouble)
forall d. (Ord d, Num d) => d -> d -> d -> d -> Maybe (Rgba d)
rgbaDouble (CDouble -> CDouble -> CDouble -> CDouble -> Maybe (Rgba CDouble))
-> IO CDouble
-> IO (CDouble -> CDouble -> CDouble -> Maybe (Rgba CDouble))
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
r IO (CDouble -> CDouble -> CDouble -> Maybe (Rgba CDouble))
-> IO CDouble -> IO (CDouble -> CDouble -> Maybe (Rgba CDouble))
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
g IO (CDouble -> CDouble -> Maybe (Rgba CDouble))
-> IO CDouble -> IO (CDouble -> Maybe (Rgba CDouble))
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
b IO (CDouble -> Maybe (Rgba CDouble))
-> IO CDouble -> IO (Maybe (Rgba CDouble))
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
a IO (Maybe (Rgba CDouble))
-> (Maybe (Rgba CDouble) -> IO (Rgba CDouble)) -> IO (Rgba CDouble)
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \case
			Just Rgba CDouble
rgba -> Rgba CDouble -> IO (Rgba CDouble)
forall a. a -> IO a
forall (f :: * -> *) a. Applicative f => a -> f a
pure Rgba CDouble
rgba
			Maybe (Rgba CDouble)
Nothing -> String -> IO (Rgba CDouble)
forall a. HasCallStack => String -> a
error (String -> IO (Rgba CDouble)) -> String -> IO (Rgba CDouble)
forall a b. (a -> b) -> a -> b
$ String
"(r, g, b, a) = " String -> ShowS
forall a. [a] -> [a] -> [a]
++ (Ptr CDouble, Ptr CDouble, Ptr CDouble, Ptr CDouble) -> String
forall a. Show a => a -> String
show (Ptr CDouble
r, Ptr CDouble
g, Ptr CDouble
b, Ptr CDouble
a)

foreign import ccall "cairo_pattern_get_rgba" c_cairo_pattern_get_rgba ::
	Ptr (CairoPatternT s) ->
	Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble ->
	IO Word32
{-# LINE 117 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

class IsCairoPatternT pt => IsCairoPatternGradientT pt where
	toCairoPatternGradientT :: pt s -> CairoPatternGradientT s

newtype CairoPatternGradientT s = CairoPatternGradientT (ForeignPtr (CairoPatternT s)) deriving Int -> CairoPatternGradientT s -> ShowS
[CairoPatternGradientT s] -> ShowS
CairoPatternGradientT s -> String
(Int -> CairoPatternGradientT s -> ShowS)
-> (CairoPatternGradientT s -> String)
-> ([CairoPatternGradientT s] -> ShowS)
-> Show (CairoPatternGradientT s)
forall s. Int -> CairoPatternGradientT s -> ShowS
forall s. [CairoPatternGradientT s] -> ShowS
forall s. CairoPatternGradientT s -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall s. Int -> CairoPatternGradientT s -> ShowS
showsPrec :: Int -> CairoPatternGradientT s -> ShowS
$cshow :: forall s. CairoPatternGradientT s -> String
show :: CairoPatternGradientT s -> String
$cshowList :: forall s. [CairoPatternGradientT s] -> ShowS
showList :: [CairoPatternGradientT s] -> ShowS
Show

instance IsCairoPatternT CairoPatternGradientT where
	toCairoPatternT :: forall s. CairoPatternGradientT s -> CairoPatternT s
toCairoPatternT = CairoPatternGradientT s -> CairoPatternT s
forall s. CairoPatternGradientT s -> CairoPatternT s
CairoPatternTGradient

instance IsCairoPatternGradientT CairoPatternGradientT where
	toCairoPatternGradientT :: forall s. CairoPatternGradientT s -> CairoPatternGradientT s
toCairoPatternGradientT = CairoPatternGradientT s -> CairoPatternGradientT s
forall a. a -> a
id

pattern CairoPatternTGradient :: CairoPatternGradientT s -> CairoPatternT s
pattern $mCairoPatternTGradient :: forall {r} {s}.
CairoPatternT s
-> (CairoPatternGradientT s -> r) -> ((# #) -> r) -> r
$bCairoPatternTGradient :: forall s. CairoPatternGradientT s -> CairoPatternT s
CairoPatternTGradient ptg <- (cairoPatternGradientT -> Just ptg) where
	CairoPatternTGradient (CairoPatternGradientT ForeignPtr (CairoPatternT s)
ptg) = ForeignPtr (CairoPatternT s) -> CairoPatternT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternT s
CairoPatternT ForeignPtr (CairoPatternT s)
ptg

cairoPatternGradientT :: CairoPatternT s -> Maybe (CairoPatternGradientT s)
cairoPatternGradientT :: forall s. CairoPatternT s -> Maybe (CairoPatternGradientT s)
cairoPatternGradientT pt :: CairoPatternT s
pt@(CairoPatternT ForeignPtr (CairoPatternT s)
fpt) = case CairoPatternT s -> CairoPatternTypeT
forall s. CairoPatternT s -> CairoPatternTypeT
cairoPatternGetType CairoPatternT s
pt of
	CairoPatternTypeT
CairoPatternTypeLinear -> CairoPatternGradientT s -> Maybe (CairoPatternGradientT s)
forall a. a -> Maybe a
Just (CairoPatternGradientT s -> Maybe (CairoPatternGradientT s))
-> CairoPatternGradientT s -> Maybe (CairoPatternGradientT s)
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT s) -> CairoPatternGradientT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternGradientT s
CairoPatternGradientT ForeignPtr (CairoPatternT s)
fpt
	CairoPatternTypeT
CairoPatternTypeRadial -> CairoPatternGradientT s -> Maybe (CairoPatternGradientT s)
forall a. a -> Maybe a
Just (CairoPatternGradientT s -> Maybe (CairoPatternGradientT s))
-> CairoPatternGradientT s -> Maybe (CairoPatternGradientT s)
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT s) -> CairoPatternGradientT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternGradientT s
CairoPatternGradientT ForeignPtr (CairoPatternT s)
fpt
	CairoPatternTypeT
_ -> Maybe (CairoPatternGradientT s)
forall a. Maybe a
Nothing

cairoPatternAddColorStopRgb :: (PrimMonad m, IsCairoPatternGradientT pt) =>
	pt (PrimState m) -> CDouble -> Rgb CDouble -> m ()
cairoPatternAddColorStopRgb :: forall (m :: * -> *) (pt :: * -> *).
(PrimMonad m, IsCairoPatternGradientT pt) =>
pt (PrimState m) -> CDouble -> Rgb CDouble -> m ()
cairoPatternAddColorStopRgb (pt (PrimState m) -> CairoPatternGradientT (PrimState m)
forall s. pt s -> CairoPatternGradientT s
forall (pt :: * -> *) s.
IsCairoPatternGradientT pt =>
pt s -> CairoPatternGradientT s
toCairoPatternGradientT -> CairoPatternGradientT ForeignPtr (CairoPatternT (PrimState m))
fpt) CDouble
os (RgbDouble CDouble
r CDouble
g CDouble
b) =
	IO () -> m ()
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT (PrimState m))
-> (Ptr (CairoPatternT (PrimState m)) -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr (CairoPatternT (PrimState m))
fpt \Ptr (CairoPatternT (PrimState m))
ppt -> Ptr (CairoPatternT (PrimState m))
-> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
forall s.
Ptr (CairoPatternT s)
-> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
c_cairo_pattern_add_color_stop_rgb Ptr (CairoPatternT (PrimState m))
ppt CDouble
os CDouble
r CDouble
g CDouble
b

foreign import ccall "cairo_pattern_add_color_stop_rgb" c_cairo_pattern_add_color_stop_rgb ::
	Ptr (CairoPatternT s) -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()

cairoPatternAddColorStopRgba :: (PrimMonad m, IsCairoPatternGradientT pt) =>
	pt (PrimState m) -> CDouble -> Rgba CDouble -> m ()
cairoPatternAddColorStopRgba :: forall (m :: * -> *) (pt :: * -> *).
(PrimMonad m, IsCairoPatternGradientT pt) =>
pt (PrimState m) -> CDouble -> Rgba CDouble -> m ()
cairoPatternAddColorStopRgba (pt (PrimState m) -> CairoPatternGradientT (PrimState m)
forall s. pt s -> CairoPatternGradientT s
forall (pt :: * -> *) s.
IsCairoPatternGradientT pt =>
pt s -> CairoPatternGradientT s
toCairoPatternGradientT -> CairoPatternGradientT ForeignPtr (CairoPatternT (PrimState m))
fpt) CDouble
os (RgbaDouble CDouble
r CDouble
g CDouble
b CDouble
a) =
	IO () -> m ()
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT (PrimState m))
-> (Ptr (CairoPatternT (PrimState m)) -> IO ()) -> IO ()
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr (CairoPatternT (PrimState m))
fpt \Ptr (CairoPatternT (PrimState m))
ppt -> Ptr (CairoPatternT (PrimState m))
-> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
forall s.
Ptr (CairoPatternT s)
-> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()
c_cairo_pattern_add_color_stop_rgba Ptr (CairoPatternT (PrimState m))
ppt CDouble
os CDouble
r CDouble
g CDouble
b CDouble
a

foreign import ccall "cairo_pattern_add_color_stop_rgba" c_cairo_pattern_add_color_stop_rgba ::
	Ptr (CairoPatternT s) -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO ()

newtype CairoPatternLinearT s = CairoPatternLinearT (ForeignPtr (CairoPatternT s)) deriving Int -> CairoPatternLinearT s -> ShowS
[CairoPatternLinearT s] -> ShowS
CairoPatternLinearT s -> String
(Int -> CairoPatternLinearT s -> ShowS)
-> (CairoPatternLinearT s -> String)
-> ([CairoPatternLinearT s] -> ShowS)
-> Show (CairoPatternLinearT s)
forall s. Int -> CairoPatternLinearT s -> ShowS
forall s. [CairoPatternLinearT s] -> ShowS
forall s. CairoPatternLinearT s -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall s. Int -> CairoPatternLinearT s -> ShowS
showsPrec :: Int -> CairoPatternLinearT s -> ShowS
$cshow :: forall s. CairoPatternLinearT s -> String
show :: CairoPatternLinearT s -> String
$cshowList :: forall s. [CairoPatternLinearT s] -> ShowS
showList :: [CairoPatternLinearT s] -> ShowS
Show

instance IsCairoPatternGradientT CairoPatternLinearT where
	toCairoPatternGradientT :: forall s. CairoPatternLinearT s -> CairoPatternGradientT s
toCairoPatternGradientT = CairoPatternLinearT s -> CairoPatternGradientT s
forall s. CairoPatternLinearT s -> CairoPatternGradientT s
CairoPatternGradientTLinear

instance IsCairoPatternT CairoPatternLinearT where
	toCairoPatternT :: forall s. CairoPatternLinearT s -> CairoPatternT s
toCairoPatternT = CairoPatternGradientT s -> CairoPatternT s
forall s. CairoPatternGradientT s -> CairoPatternT s
CairoPatternTGradient (CairoPatternGradientT s -> CairoPatternT s)
-> (CairoPatternLinearT s -> CairoPatternGradientT s)
-> CairoPatternLinearT s
-> CairoPatternT s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CairoPatternLinearT s -> CairoPatternGradientT s
forall s. CairoPatternLinearT s -> CairoPatternGradientT s
forall (pt :: * -> *) s.
IsCairoPatternGradientT pt =>
pt s -> CairoPatternGradientT s
toCairoPatternGradientT

pattern CairoPatternGradientTLinear :: CairoPatternLinearT s -> CairoPatternGradientT s
pattern $mCairoPatternGradientTLinear :: forall {r} {s}.
CairoPatternGradientT s
-> (CairoPatternLinearT s -> r) -> ((# #) -> r) -> r
$bCairoPatternGradientTLinear :: forall s. CairoPatternLinearT s -> CairoPatternGradientT s
CairoPatternGradientTLinear ptl <- (cairoPatternGradientLinearT -> Just ptl) where
	CairoPatternGradientTLinear (CairoPatternLinearT ForeignPtr (CairoPatternT s)
ptl) = ForeignPtr (CairoPatternT s) -> CairoPatternGradientT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternGradientT s
CairoPatternGradientT ForeignPtr (CairoPatternT s)
ptl

cairoPatternGradientLinearT :: CairoPatternGradientT s -> Maybe (CairoPatternLinearT s)
cairoPatternGradientLinearT :: forall s. CairoPatternGradientT s -> Maybe (CairoPatternLinearT s)
cairoPatternGradientLinearT pt :: CairoPatternGradientT s
pt@(CairoPatternGradientT ForeignPtr (CairoPatternT s)
fpt) = case CairoPatternT s -> CairoPatternTypeT
forall s. CairoPatternT s -> CairoPatternTypeT
cairoPatternGetType (CairoPatternT s -> CairoPatternTypeT)
-> CairoPatternT s -> CairoPatternTypeT
forall a b. (a -> b) -> a -> b
$ CairoPatternGradientT s -> CairoPatternT s
forall s. CairoPatternGradientT s -> CairoPatternT s
CairoPatternTGradient CairoPatternGradientT s
pt of
	CairoPatternTypeT
CairoPatternTypeLinear -> CairoPatternLinearT s -> Maybe (CairoPatternLinearT s)
forall a. a -> Maybe a
Just (CairoPatternLinearT s -> Maybe (CairoPatternLinearT s))
-> CairoPatternLinearT s -> Maybe (CairoPatternLinearT s)
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT s) -> CairoPatternLinearT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternLinearT s
CairoPatternLinearT ForeignPtr (CairoPatternT s)
fpt
	CairoPatternTypeT
_ -> Maybe (CairoPatternLinearT s)
forall a. Maybe a
Nothing

cairoPatternCreateLinear :: PrimMonad m =>
	CDouble -> CDouble -> CDouble -> CDouble -> m (CairoPatternLinearT (PrimState m))
cairoPatternCreateLinear :: forall (m :: * -> *).
PrimMonad m =>
CDouble
-> CDouble
-> CDouble
-> CDouble
-> m (CairoPatternLinearT (PrimState m))
cairoPatternCreateLinear CDouble
x0 CDouble
y0 CDouble
x1 CDouble
y1 = IO (CairoPatternLinearT (PrimState m))
-> m (CairoPatternLinearT (PrimState m))
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim
	(IO (CairoPatternLinearT (PrimState m))
 -> m (CairoPatternLinearT (PrimState m)))
-> IO (CairoPatternLinearT (PrimState m))
-> m (CairoPatternLinearT (PrimState m))
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT (PrimState m))
-> CairoPatternLinearT (PrimState m)
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternLinearT s
CairoPatternLinearT (ForeignPtr (CairoPatternT (PrimState m))
 -> CairoPatternLinearT (PrimState m))
-> IO (ForeignPtr (CairoPatternT (PrimState m)))
-> IO (CairoPatternLinearT (PrimState m))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> do
		p <- CDouble
-> CDouble
-> CDouble
-> CDouble
-> IO (Ptr (CairoPatternT (PrimState m)))
forall s.
CDouble
-> CDouble -> CDouble -> CDouble -> IO (Ptr (CairoPatternT s))
c_cairo_pattern_create_linear CDouble
x0 CDouble
y0 CDouble
x1 CDouble
y1
		newForeignPtr p $ c_cairo_pattern_destroy p

foreign import ccall "cairo_pattern_create_linear" c_cairo_pattern_create_linear ::
	CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr (CairoPatternT s))

cairoPatternGetLinearPoints :: PrimMonad m =>
	CairoPatternLinearT (PrimState m) -> m ((CDouble, CDouble), (CDouble, CDouble))
cairoPatternGetLinearPoints :: forall (m :: * -> *).
PrimMonad m =>
CairoPatternLinearT (PrimState m)
-> m ((CDouble, CDouble), (CDouble, CDouble))
cairoPatternGetLinearPoints (CairoPatternLinearT ForeignPtr (CairoPatternT (PrimState m))
fpt) = IO ((CDouble, CDouble), (CDouble, CDouble))
-> m ((CDouble, CDouble), (CDouble, CDouble))
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim
	(IO ((CDouble, CDouble), (CDouble, CDouble))
 -> m ((CDouble, CDouble), (CDouble, CDouble)))
-> IO ((CDouble, CDouble), (CDouble, CDouble))
-> m ((CDouble, CDouble), (CDouble, CDouble))
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT (PrimState m))
-> (Ptr (CairoPatternT (PrimState m))
    -> IO ((CDouble, CDouble), (CDouble, CDouble)))
-> IO ((CDouble, CDouble), (CDouble, CDouble))
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr (CairoPatternT (PrimState m))
fpt \Ptr (CairoPatternT (PrimState m))
ppt -> (Ptr CDouble -> IO ((CDouble, CDouble), (CDouble, CDouble)))
-> IO ((CDouble, CDouble), (CDouble, CDouble))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
x0 -> (Ptr CDouble -> IO ((CDouble, CDouble), (CDouble, CDouble)))
-> IO ((CDouble, CDouble), (CDouble, CDouble))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
y0 -> (Ptr CDouble -> IO ((CDouble, CDouble), (CDouble, CDouble)))
-> IO ((CDouble, CDouble), (CDouble, CDouble))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
x1 -> (Ptr CDouble -> IO ((CDouble, CDouble), (CDouble, CDouble)))
-> IO ((CDouble, CDouble), (CDouble, CDouble))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
y1 -> do
		cs <- Ptr (CairoPatternT (PrimState m))
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> IO Word32
forall s.
Ptr (CairoPatternT s)
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> IO Word32
c_cairo_pattern_get_linear_points Ptr (CairoPatternT (PrimState m))
ppt Ptr CDouble
x0 Ptr CDouble
y0 Ptr CDouble
x1 Ptr CDouble
y1
		cairoStatusToThrowError cs
		(,) <$> ((,) <$> peek x0 <*> peek y0) <*> ((,) <$> peek x1 <*> peek y1)

foreign import ccall "cairo_pattern_get_linear_points" c_cairo_pattern_get_linear_points ::
	Ptr (CairoPatternT s) -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO Word32
{-# LINE 192 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

cairoPatternGetColorStopRgbaList :: (PrimMonad m, IsCairoPatternGradientT pt) =>
	pt (PrimState m) -> m [(CDouble, Rgba CDouble)]
cairoPatternGetColorStopRgbaList :: forall (m :: * -> *) (pt :: * -> *).
(PrimMonad m, IsCairoPatternGradientT pt) =>
pt (PrimState m) -> m [(CDouble, Rgba CDouble)]
cairoPatternGetColorStopRgbaList pt (PrimState m)
pt = pt (PrimState m) -> m CInt
forall (m :: * -> *) (pt :: * -> *).
(PrimMonad m, IsCairoPatternGradientT pt) =>
pt (PrimState m) -> m CInt
cairoPatternGetColorStopCount pt (PrimState m)
pt m CInt
-> (CInt -> m [(CDouble, Rgba CDouble)])
-> m [(CDouble, Rgba CDouble)]
forall a b. m a -> (a -> m b) -> m b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \CInt
n ->
	[CInt]
-> (CInt -> m (CDouble, Rgba CDouble))
-> m [(CDouble, Rgba CDouble)]
forall (t :: * -> *) (f :: * -> *) a b.
(Traversable t, Applicative f) =>
t a -> (a -> f b) -> f (t b)
for [CInt
0 .. CInt
n CInt -> CInt -> CInt
forall a. Num a => a -> a -> a
- CInt
1] \CInt
i -> pt (PrimState m) -> CInt -> m (CDouble, Rgba CDouble)
forall (m :: * -> *) (pt :: * -> *).
(PrimMonad m, IsCairoPatternGradientT pt) =>
pt (PrimState m) -> CInt -> m (CDouble, Rgba CDouble)
cairoPatternGetColorStopRgba pt (PrimState m)
pt CInt
i

cairoPatternGetColorStopCount :: (PrimMonad m, IsCairoPatternGradientT pt) =>
	pt (PrimState m) -> m CInt
cairoPatternGetColorStopCount :: forall (m :: * -> *) (pt :: * -> *).
(PrimMonad m, IsCairoPatternGradientT pt) =>
pt (PrimState m) -> m CInt
cairoPatternGetColorStopCount (pt (PrimState m) -> CairoPatternGradientT (PrimState m)
forall s. pt s -> CairoPatternGradientT s
forall (pt :: * -> *) s.
IsCairoPatternGradientT pt =>
pt s -> CairoPatternGradientT s
toCairoPatternGradientT -> CairoPatternGradientT ForeignPtr (CairoPatternT (PrimState m))
fpt) = IO CInt -> m CInt
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim
	(IO CInt -> m CInt) -> IO CInt -> m CInt
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT (PrimState m))
-> (Ptr (CairoPatternT (PrimState m)) -> IO CInt) -> IO CInt
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr (CairoPatternT (PrimState m))
fpt \Ptr (CairoPatternT (PrimState m))
ppt -> (Ptr CInt -> IO CInt) -> IO CInt
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CInt
n -> do
		cs <- Ptr (CairoPatternT (PrimState m)) -> Ptr CInt -> IO Word32
forall s. Ptr (CairoPatternT s) -> Ptr CInt -> IO Word32
c_cairo_pattern_get_color_stop_count Ptr (CairoPatternT (PrimState m))
ppt Ptr CInt
n
		cairoStatusToThrowError cs
		peek n

foreign import ccall "cairo_pattern_get_color_stop_count" c_cairo_pattern_get_color_stop_count ::
	Ptr (CairoPatternT s) -> Ptr CInt -> IO Word32
{-# LINE 208 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

cairoPatternGetColorStopRgba :: (PrimMonad m, IsCairoPatternGradientT pt) =>
	pt (PrimState m) -> CInt -> m (CDouble, Rgba CDouble)
cairoPatternGetColorStopRgba :: forall (m :: * -> *) (pt :: * -> *).
(PrimMonad m, IsCairoPatternGradientT pt) =>
pt (PrimState m) -> CInt -> m (CDouble, Rgba CDouble)
cairoPatternGetColorStopRgba (pt (PrimState m) -> CairoPatternGradientT (PrimState m)
forall s. pt s -> CairoPatternGradientT s
forall (pt :: * -> *) s.
IsCairoPatternGradientT pt =>
pt s -> CairoPatternGradientT s
toCairoPatternGradientT -> CairoPatternGradientT ForeignPtr (CairoPatternT (PrimState m))
fpt) CInt
i = IO (CDouble, Rgba CDouble) -> m (CDouble, Rgba CDouble)
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim
	(IO (CDouble, Rgba CDouble) -> m (CDouble, Rgba CDouble))
-> IO (CDouble, Rgba CDouble) -> m (CDouble, Rgba CDouble)
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT (PrimState m))
-> (Ptr (CairoPatternT (PrimState m))
    -> IO (CDouble, Rgba CDouble))
-> IO (CDouble, Rgba CDouble)
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr (CairoPatternT (PrimState m))
fpt \Ptr (CairoPatternT (PrimState m))
ppt -> (Ptr CDouble -> IO (CDouble, Rgba CDouble))
-> IO (CDouble, Rgba CDouble)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
os -> (Ptr CDouble -> IO (CDouble, Rgba CDouble))
-> IO (CDouble, Rgba CDouble)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
rd -> (Ptr CDouble -> IO (CDouble, Rgba CDouble))
-> IO (CDouble, Rgba CDouble)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
gr -> (Ptr CDouble -> IO (CDouble, Rgba CDouble))
-> IO (CDouble, Rgba CDouble)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
bl -> (Ptr CDouble -> IO (CDouble, Rgba CDouble))
-> IO (CDouble, Rgba CDouble)
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
al -> do
		cs <- Ptr (CairoPatternT (PrimState m))
-> CInt
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> IO Word32
forall s.
Ptr (CairoPatternT s)
-> CInt
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> IO Word32
c_cairo_pattern_get_color_stop_rgba Ptr (CairoPatternT (PrimState m))
ppt CInt
i Ptr CDouble
os Ptr CDouble
rd Ptr CDouble
gr Ptr CDouble
bl Ptr CDouble
al
		cairoStatusToThrowError cs
		(,) <$> peek os <*> ((\CDouble
r CDouble
g CDouble
b CDouble
a -> Maybe (Rgba CDouble) -> Rgba CDouble
forall a. HasCallStack => Maybe a -> a
fromJust (Maybe (Rgba CDouble) -> Rgba CDouble)
-> Maybe (Rgba CDouble) -> Rgba CDouble
forall a b. (a -> b) -> a -> b
$ CDouble -> CDouble -> CDouble -> CDouble -> Maybe (Rgba CDouble)
forall d. (Ord d, Num d) => d -> d -> d -> d -> Maybe (Rgba d)
rgbaDouble CDouble
r CDouble
g CDouble
b CDouble
a) <$> peek rd <*> peek gr <*> peek bl <*> peek al)

foreign import ccall "cairo_pattern_get_color_stop_rgba" c_cairo_pattern_get_color_stop_rgba ::
	Ptr (CairoPatternT s) -> CInt ->
	Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO Word32
{-# LINE 220 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

newtype CairoPatternRadialT s = CairoPatternRadialT (ForeignPtr (CairoPatternT s)) deriving Int -> CairoPatternRadialT s -> ShowS
[CairoPatternRadialT s] -> ShowS
CairoPatternRadialT s -> String
(Int -> CairoPatternRadialT s -> ShowS)
-> (CairoPatternRadialT s -> String)
-> ([CairoPatternRadialT s] -> ShowS)
-> Show (CairoPatternRadialT s)
forall s. Int -> CairoPatternRadialT s -> ShowS
forall s. [CairoPatternRadialT s] -> ShowS
forall s. CairoPatternRadialT s -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall s. Int -> CairoPatternRadialT s -> ShowS
showsPrec :: Int -> CairoPatternRadialT s -> ShowS
$cshow :: forall s. CairoPatternRadialT s -> String
show :: CairoPatternRadialT s -> String
$cshowList :: forall s. [CairoPatternRadialT s] -> ShowS
showList :: [CairoPatternRadialT s] -> ShowS
Show

instance IsCairoPatternT CairoPatternRadialT where
	toCairoPatternT :: forall s. CairoPatternRadialT s -> CairoPatternT s
toCairoPatternT = CairoPatternGradientT s -> CairoPatternT s
forall s. CairoPatternGradientT s -> CairoPatternT s
CairoPatternTGradient (CairoPatternGradientT s -> CairoPatternT s)
-> (CairoPatternRadialT s -> CairoPatternGradientT s)
-> CairoPatternRadialT s
-> CairoPatternT s
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CairoPatternRadialT s -> CairoPatternGradientT s
forall s. CairoPatternRadialT s -> CairoPatternGradientT s
forall (pt :: * -> *) s.
IsCairoPatternGradientT pt =>
pt s -> CairoPatternGradientT s
toCairoPatternGradientT

instance IsCairoPatternGradientT CairoPatternRadialT where
	toCairoPatternGradientT :: forall s. CairoPatternRadialT s -> CairoPatternGradientT s
toCairoPatternGradientT = CairoPatternRadialT s -> CairoPatternGradientT s
forall s. CairoPatternRadialT s -> CairoPatternGradientT s
CairoPatternGradientTRadial

pattern CairoPatternGradientTRadial :: CairoPatternRadialT s -> CairoPatternGradientT s
pattern $mCairoPatternGradientTRadial :: forall {r} {s}.
CairoPatternGradientT s
-> (CairoPatternRadialT s -> r) -> ((# #) -> r) -> r
$bCairoPatternGradientTRadial :: forall s. CairoPatternRadialT s -> CairoPatternGradientT s
CairoPatternGradientTRadial pt <- (cairoPatternGradientRadialT -> Just pt) where
	CairoPatternGradientTRadial (CairoPatternRadialT ForeignPtr (CairoPatternT s)
fpt) = ForeignPtr (CairoPatternT s) -> CairoPatternGradientT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternGradientT s
CairoPatternGradientT ForeignPtr (CairoPatternT s)
fpt

cairoPatternGradientRadialT :: CairoPatternGradientT s -> Maybe (CairoPatternRadialT s)
cairoPatternGradientRadialT :: forall s. CairoPatternGradientT s -> Maybe (CairoPatternRadialT s)
cairoPatternGradientRadialT pt :: CairoPatternGradientT s
pt@(CairoPatternGradientT ForeignPtr (CairoPatternT s)
fpt) = case CairoPatternT s -> CairoPatternTypeT
forall s. CairoPatternT s -> CairoPatternTypeT
cairoPatternGetType (CairoPatternT s -> CairoPatternTypeT)
-> CairoPatternT s -> CairoPatternTypeT
forall a b. (a -> b) -> a -> b
$ CairoPatternGradientT s -> CairoPatternT s
forall s. CairoPatternGradientT s -> CairoPatternT s
CairoPatternTGradient CairoPatternGradientT s
pt of
	CairoPatternTypeT
CairoPatternTypeRadial -> CairoPatternRadialT s -> Maybe (CairoPatternRadialT s)
forall a. a -> Maybe a
Just (CairoPatternRadialT s -> Maybe (CairoPatternRadialT s))
-> CairoPatternRadialT s -> Maybe (CairoPatternRadialT s)
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT s) -> CairoPatternRadialT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternRadialT s
CairoPatternRadialT ForeignPtr (CairoPatternT s)
fpt
	CairoPatternTypeT
_ -> Maybe (CairoPatternRadialT s)
forall a. Maybe a
Nothing

cairoPatternCreateRadial :: PrimMonad m =>
	CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble ->
	m (CairoPatternRadialT (PrimState m))
cairoPatternCreateRadial :: forall (m :: * -> *).
PrimMonad m =>
CDouble
-> CDouble
-> CDouble
-> CDouble
-> CDouble
-> CDouble
-> m (CairoPatternRadialT (PrimState m))
cairoPatternCreateRadial CDouble
cx0 CDouble
cy0 CDouble
r0 CDouble
cx1 CDouble
cy1 CDouble
r1 = IO (CairoPatternRadialT (PrimState m))
-> m (CairoPatternRadialT (PrimState m))
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim
	(IO (CairoPatternRadialT (PrimState m))
 -> m (CairoPatternRadialT (PrimState m)))
-> IO (CairoPatternRadialT (PrimState m))
-> m (CairoPatternRadialT (PrimState m))
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT (PrimState m))
-> CairoPatternRadialT (PrimState m)
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternRadialT s
CairoPatternRadialT (ForeignPtr (CairoPatternT (PrimState m))
 -> CairoPatternRadialT (PrimState m))
-> IO (ForeignPtr (CairoPatternT (PrimState m)))
-> IO (CairoPatternRadialT (PrimState m))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> do
		p <- CDouble
-> CDouble
-> CDouble
-> CDouble
-> CDouble
-> CDouble
-> IO (Ptr (CairoPatternT (PrimState m)))
forall s.
CDouble
-> CDouble
-> CDouble
-> CDouble
-> CDouble
-> CDouble
-> IO (Ptr (CairoPatternT s))
c_cairo_pattern_create_radial CDouble
cx0 CDouble
cy0 CDouble
r0 CDouble
cx1 CDouble
cy1 CDouble
r1
		newForeignPtr p $ c_cairo_pattern_destroy p

foreign import ccall "cairo_pattern_create_radial" c_cairo_pattern_create_radial ::
	CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> CDouble -> IO (Ptr (CairoPatternT s))

cairoPatternGetRadialCircles :: PrimMonad m =>
	CairoPatternRadialT (PrimState m) -> m ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
cairoPatternGetRadialCircles :: forall (m :: * -> *).
PrimMonad m =>
CairoPatternRadialT (PrimState m)
-> m ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
cairoPatternGetRadialCircles (CairoPatternRadialT ForeignPtr (CairoPatternT (PrimState m))
fpt) = IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
-> m ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim
	(IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
 -> m ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble)))
-> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
-> m ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT (PrimState m))
-> (Ptr (CairoPatternT (PrimState m))
    -> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble)))
-> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr (CairoPatternT (PrimState m))
fpt \Ptr (CairoPatternT (PrimState m))
ppt -> (Ptr CDouble
 -> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble)))
-> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
x0 -> (Ptr CDouble
 -> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble)))
-> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
y0 -> (Ptr CDouble
 -> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble)))
-> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
r0 -> (Ptr CDouble
 -> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble)))
-> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
x1 -> (Ptr CDouble
 -> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble)))
-> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
y1 -> (Ptr CDouble
 -> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble)))
-> IO ((CDouble, CDouble, CDouble), (CDouble, CDouble, CDouble))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr CDouble
r1 -> do
		cs <- Ptr (CairoPatternT (PrimState m))
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> IO Word32
forall s.
Ptr (CairoPatternT s)
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> Ptr CDouble
-> IO Word32
c_cairo_pattern_get_radial_circles Ptr (CairoPatternT (PrimState m))
ppt Ptr CDouble
x0 Ptr CDouble
y0 Ptr CDouble
r0 Ptr CDouble
x1 Ptr CDouble
y1 Ptr CDouble
r1
		cairoStatusToThrowError cs
		(,) <$> ((,,) <$> peek x0 <*> peek y0 <*> peek r0) <*> ((,,) <$> peek x1 <*> peek y1 <*> peek r1)

foreign import ccall "cairo_pattern_get_radial_circles" c_cairo_pattern_get_radial_circles ::
	Ptr (CairoPatternT s) ->
	Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> Ptr CDouble -> IO Word32
{-# LINE 260 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

newtype CairoPatternSurfaceT s = CairoPatternSurfaceT (ForeignPtr (CairoPatternT s)) deriving Int -> CairoPatternSurfaceT s -> ShowS
[CairoPatternSurfaceT s] -> ShowS
CairoPatternSurfaceT s -> String
(Int -> CairoPatternSurfaceT s -> ShowS)
-> (CairoPatternSurfaceT s -> String)
-> ([CairoPatternSurfaceT s] -> ShowS)
-> Show (CairoPatternSurfaceT s)
forall s. Int -> CairoPatternSurfaceT s -> ShowS
forall s. [CairoPatternSurfaceT s] -> ShowS
forall s. CairoPatternSurfaceT s -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
$cshowsPrec :: forall s. Int -> CairoPatternSurfaceT s -> ShowS
showsPrec :: Int -> CairoPatternSurfaceT s -> ShowS
$cshow :: forall s. CairoPatternSurfaceT s -> String
show :: CairoPatternSurfaceT s -> String
$cshowList :: forall s. [CairoPatternSurfaceT s] -> ShowS
showList :: [CairoPatternSurfaceT s] -> ShowS
Show

instance IsCairoPatternT CairoPatternSurfaceT where
	toCairoPatternT :: forall s. CairoPatternSurfaceT s -> CairoPatternT s
toCairoPatternT = CairoPatternSurfaceT s -> CairoPatternT s
forall s. CairoPatternSurfaceT s -> CairoPatternT s
CairoPatternTSurface

pattern CairoPatternTSurface :: CairoPatternSurfaceT s -> CairoPatternT s
pattern $mCairoPatternTSurface :: forall {r} {s}.
CairoPatternT s
-> (CairoPatternSurfaceT s -> r) -> ((# #) -> r) -> r
$bCairoPatternTSurface :: forall s. CairoPatternSurfaceT s -> CairoPatternT s
CairoPatternTSurface pt <- (cairoPatternTSurface -> Just pt) where
	CairoPatternTSurface (CairoPatternSurfaceT ForeignPtr (CairoPatternT s)
fpt) = ForeignPtr (CairoPatternT s) -> CairoPatternT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternT s
CairoPatternT ForeignPtr (CairoPatternT s)
fpt

cairoPatternTSurface :: CairoPatternT s -> Maybe (CairoPatternSurfaceT s)
cairoPatternTSurface :: forall s. CairoPatternT s -> Maybe (CairoPatternSurfaceT s)
cairoPatternTSurface pt :: CairoPatternT s
pt@(CairoPatternT ForeignPtr (CairoPatternT s)
fpt) = case CairoPatternT s -> CairoPatternTypeT
forall s. CairoPatternT s -> CairoPatternTypeT
cairoPatternGetType CairoPatternT s
pt of
	CairoPatternTypeT
CairoPatternTypeSurface -> CairoPatternSurfaceT s -> Maybe (CairoPatternSurfaceT s)
forall a. a -> Maybe a
Just (CairoPatternSurfaceT s -> Maybe (CairoPatternSurfaceT s))
-> CairoPatternSurfaceT s -> Maybe (CairoPatternSurfaceT s)
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT s) -> CairoPatternSurfaceT s
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternSurfaceT s
CairoPatternSurfaceT ForeignPtr (CairoPatternT s)
fpt
	CairoPatternTypeT
_ -> Maybe (CairoPatternSurfaceT s)
forall a. Maybe a
Nothing

cairoPatternCreateForSurface :: (PrimMonad m, IsCairoSurfaceT sr) =>
	sr s (PrimState m) -> m (CairoPatternSurfaceT (PrimState m))
cairoPatternCreateForSurface :: forall (m :: * -> *) (sr :: * -> * -> *) s.
(PrimMonad m, IsCairoSurfaceT sr) =>
sr s (PrimState m) -> m (CairoPatternSurfaceT (PrimState m))
cairoPatternCreateForSurface (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 -> CairoSurfaceT ForeignPtr (CairoSurfaceT s (PrimState m))
fs) =
	IO (CairoPatternSurfaceT (PrimState m))
-> m (CairoPatternSurfaceT (PrimState m))
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim (IO (CairoPatternSurfaceT (PrimState m))
 -> m (CairoPatternSurfaceT (PrimState m)))
-> IO (CairoPatternSurfaceT (PrimState m))
-> m (CairoPatternSurfaceT (PrimState m))
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoPatternT (PrimState m))
-> CairoPatternSurfaceT (PrimState m)
forall s. ForeignPtr (CairoPatternT s) -> CairoPatternSurfaceT s
CairoPatternSurfaceT (ForeignPtr (CairoPatternT (PrimState m))
 -> CairoPatternSurfaceT (PrimState m))
-> IO (ForeignPtr (CairoPatternT (PrimState m)))
-> IO (CairoPatternSurfaceT (PrimState m))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ForeignPtr (CairoSurfaceT s (PrimState m))
-> (Ptr (CairoSurfaceT s (PrimState m))
    -> IO (ForeignPtr (CairoPatternT (PrimState m))))
-> IO (ForeignPtr (CairoPatternT (PrimState m)))
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr (CairoSurfaceT s (PrimState m))
fs \Ptr (CairoSurfaceT s (PrimState m))
ps -> do
		p <- Ptr (CairoSurfaceT s (PrimState m))
-> IO (Ptr (CairoPatternT (PrimState m)))
forall s ps.
Ptr (CairoSurfaceT s ps) -> IO (Ptr (CairoPatternT ps))
c_cairo_pattern_create_for_surface Ptr (CairoSurfaceT s (PrimState m))
ps
		newForeignPtr p $ touchForeignPtr fs >> c_cairo_pattern_destroy p

foreign import ccall "cairo_pattern_create_for_surface" c_cairo_pattern_create_for_surface ::
	Ptr (CairoSurfaceT s ps) -> IO (Ptr (CairoPatternT ps))

cairoPatternGetSurface :: PrimMonad m =>
	CairoPatternSurfaceT (PrimState m) -> m (CairoSurfaceT s (PrimState m))
cairoPatternGetSurface :: forall (m :: * -> *) s.
PrimMonad m =>
CairoPatternSurfaceT (PrimState m)
-> m (CairoSurfaceT s (PrimState m))
cairoPatternGetSurface (CairoPatternSurfaceT ForeignPtr (CairoPatternT (PrimState m))
fpt) =
	IO (CairoSurfaceT s (PrimState m))
-> m (CairoSurfaceT s (PrimState m))
forall (m :: * -> *) a. PrimMonad m => IO a -> m a
unsafeIOToPrim (IO (CairoSurfaceT s (PrimState m))
 -> m (CairoSurfaceT s (PrimState m)))
-> IO (CairoSurfaceT s (PrimState m))
-> m (CairoSurfaceT s (PrimState m))
forall a b. (a -> b) -> a -> b
$ ForeignPtr (CairoSurfaceT s (PrimState m))
-> CairoSurfaceT s (PrimState m)
forall s ps. ForeignPtr (CairoSurfaceT s ps) -> CairoSurfaceT s ps
CairoSurfaceT (ForeignPtr (CairoSurfaceT s (PrimState m))
 -> CairoSurfaceT s (PrimState m))
-> IO (ForeignPtr (CairoSurfaceT s (PrimState m)))
-> IO (CairoSurfaceT s (PrimState m))
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> ForeignPtr (CairoPatternT (PrimState m))
-> (Ptr (CairoPatternT (PrimState m))
    -> IO (ForeignPtr (CairoSurfaceT s (PrimState m))))
-> IO (ForeignPtr (CairoSurfaceT s (PrimState m)))
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
withForeignPtr ForeignPtr (CairoPatternT (PrimState m))
fpt \Ptr (CairoPatternT (PrimState m))
ppt -> (Ptr (Ptr (CairoSurfaceT s (PrimState m)))
 -> IO (ForeignPtr (CairoSurfaceT s (PrimState m))))
-> IO (ForeignPtr (CairoSurfaceT s (PrimState m)))
forall a b. Storable a => (Ptr a -> IO b) -> IO b
alloca \Ptr (Ptr (CairoSurfaceT s (PrimState m)))
pps -> do
		Word32 -> IO ()
cairoStatusToThrowError (Word32 -> IO ()) -> IO Word32 -> IO ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr (CairoPatternT (PrimState m))
-> Ptr (Ptr (CairoSurfaceT s (PrimState m))) -> IO Word32
forall ps s.
Ptr (CairoPatternT ps)
-> Ptr (Ptr (CairoSurfaceT s ps)) -> IO Word32
c_cairo_pattern_get_surface Ptr (CairoPatternT (PrimState m))
ppt Ptr (Ptr (CairoSurfaceT s (PrimState m)))
pps
		p <- Ptr (CairoSurfaceT s (PrimState m))
-> IO (Ptr (CairoSurfaceT s (PrimState m)))
forall s ps.
Ptr (CairoSurfaceT s ps) -> IO (Ptr (CairoSurfaceT s ps))
c_cairo_surface_reference (Ptr (CairoSurfaceT s (PrimState m))
 -> IO (Ptr (CairoSurfaceT s (PrimState m))))
-> IO (Ptr (CairoSurfaceT s (PrimState m)))
-> IO (Ptr (CairoSurfaceT s (PrimState m)))
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr (Ptr (CairoSurfaceT s (PrimState m)))
-> IO (Ptr (CairoSurfaceT s (PrimState m)))
forall a. Storable a => Ptr a -> IO a
peek Ptr (Ptr (CairoSurfaceT s (PrimState m)))
pps
		newForeignPtr p $ c_cairo_surface_destroy p

foreign import ccall "cairo_pattern_get_surface" c_cairo_pattern_get_surface ::
	Ptr (CairoPatternT ps) -> Ptr (Ptr (CairoSurfaceT s ps)) -> IO Word32
{-# LINE 295 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}

foreign import ccall "cairo_surface_reference" c_cairo_surface_reference ::
	Ptr (CairoSurfaceT s ps) -> IO (Ptr (CairoSurfaceT s ps))

raiseIfErrorPattern :: CairoPatternT s -> IO ()
raiseIfErrorPattern :: forall s. CairoPatternT s -> IO ()
raiseIfErrorPattern (CairoPatternT ForeignPtr (CairoPatternT s)
fpt) = 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)
pt ->
	Word32 -> IO ()
cairoStatusToThrowError (Word32 -> IO ()) -> IO Word32 -> IO ()
forall (m :: * -> *) a b. Monad m => (a -> m b) -> m a -> m b
=<< Ptr (CairoPatternT s) -> IO Word32
forall s. Ptr (CairoPatternT s) -> IO Word32
c_cairo_pattern_status Ptr (CairoPatternT s)
pt

foreign import ccall "cairo_pattern_status" c_cairo_pattern_status ::
	Ptr (CairoPatternT s) -> IO Word32
{-# LINE 305 "src/Graphics/Cairo/Drawing/CairoPatternT/Basic.hsc" #-}