module Graphics.ImageMagick.MagickWand.FFI.Types
where
import Control.Monad
import Foreign
import Foreign.C.Types
data PixelIterator
data MagickWand
data PixelWand
data DrawingWand
data Image
data PointInfo = PointInfo {piX, piY :: CDouble}
deriving (Eq, Show)
instance Storable PointInfo where
sizeOf = const (16)
alignment _ = 1
poke p foo = do
(\hsc_ptr -> pokeByteOff hsc_ptr 0) p $ piX foo
(\hsc_ptr -> pokeByteOff hsc_ptr 8) p $ piY foo
peek p = return PointInfo
`ap` ((\hsc_ptr -> peekByteOff hsc_ptr 0) p)
`ap` ((\hsc_ptr -> peekByteOff hsc_ptr 8) p)
newtype MagickBooleanType = MagickBooleanType { unMagickBooleanType :: CInt}
deriving (Eq, Show, Storable)
mFalse :: MagickBooleanType
mFalse = MagickBooleanType 0
mTrue :: MagickBooleanType
mTrue = MagickBooleanType 1
newtype ClassType = ClassType { unClassType :: CInt}
deriving (Eq, Show)
undefinedClass :: ClassType
undefinedClass = ClassType 0
directClass :: ClassType
directClass = ClassType 1
pseudoClass :: ClassType
pseudoClass = ClassType 2
newtype LineCap = LineCap { unLineCap :: CInt }
udefinedCap :: LineCap
udefinedCap = LineCap 0
buttCap :: LineCap
buttCap = LineCap 1
roundCap :: LineCap
roundCap = LineCap 2
squareCap :: LineCap
squareCap = LineCap 3
newtype LineJoin = LineJoin { unLineJoin :: CInt }
undefinedJoin :: LineJoin
undefinedJoin = LineJoin 0
mitterJoin :: LineJoin
mitterJoin = LineJoin 1
roundJoin :: LineJoin
roundJoin = LineJoin 2
bevelJoin :: LineJoin
bevelJoin = LineJoin 3
newtype FillRule = FillRule { unFillRule :: CInt }
undefinedRule :: FillRule
undefinedRule = FillRule 0
evenOddRule :: FillRule
evenOddRule = FillRule 1
nonZeroRule :: FillRule
nonZeroRule = FillRule 2
data MagickPixelPacket
instance Storable MagickPixelPacket where
sizeOf = const (56)
alignment _ = 1
peek = error "not yet implemented"
poke = error "not yet implemented"
getPixelRed, getPixelGreen, getPixelBlue, getPixelIndex
:: Storable a => Ptr b -> IO a
getPixelRed = (\hsc_ptr -> peekByteOff hsc_ptr 32)
getPixelGreen = (\hsc_ptr -> peekByteOff hsc_ptr 36)
getPixelBlue = (\hsc_ptr -> peekByteOff hsc_ptr 40)
getPixelIndex = (\hsc_ptr -> peekByteOff hsc_ptr 48)
setPixelRed, setPixelGreen, setPixelBlue, setPixelIndex
:: Storable a => Ptr b -> a -> IO ()
setPixelRed = (\hsc_ptr -> pokeByteOff hsc_ptr 32)
setPixelGreen = (\hsc_ptr -> pokeByteOff hsc_ptr 36)
setPixelBlue = (\hsc_ptr -> pokeByteOff hsc_ptr 40)
setPixelIndex = (\hsc_ptr -> pokeByteOff hsc_ptr 48)