{-# LINE 1 "src/Graphics/QML/Internal/BindCanvas.chs" #-}
{-# LANGUAGE
ForeignFunctionInterface
#-}
module Graphics.QML.Internal.BindCanvas where
import qualified Foreign.C.Types as C2HSImp
import qualified Foreign.ForeignPtr as C2HSImp
import qualified Foreign.Ptr as C2HSImp
import Graphics.QML.Internal.BindPrim
{-# LINE 7 "src/Graphics/QML/Internal/BindCanvas.chs" #-}
import Foreign.C.Types
import Foreign.Marshal.Utils
import Foreign.Ptr
import Foreign.ForeignPtr
import Foreign.Storable
newtype HsQMLGLDelegateHandle = HsQMLGLDelegateHandle (C2HSImp.ForeignPtr (HsQMLGLDelegateHandle))
withHsQMLGLDelegateHandle :: HsQMLGLDelegateHandle -> (C2HSImp.Ptr HsQMLGLDelegateHandle -> IO b) -> IO b
withHsQMLGLDelegateHandle :: forall b.
HsQMLGLDelegateHandle
-> (Ptr HsQMLGLDelegateHandle -> IO b) -> IO b
withHsQMLGLDelegateHandle (HsQMLGLDelegateHandle ForeignPtr HsQMLGLDelegateHandle
fptr) = ForeignPtr HsQMLGLDelegateHandle
-> (Ptr HsQMLGLDelegateHandle -> IO b) -> IO b
forall a b. ForeignPtr a -> (Ptr a -> IO b) -> IO b
C2HSImp.withForeignPtr ForeignPtr HsQMLGLDelegateHandle
fptr
{-# LINE 21 "src/Graphics/QML/Internal/BindCanvas.chs" #-}
type SetupCb = CInt -> CInt -> CInt -> IO ()
type CleanupCb = IO ()
type SyncCb = HsQMLJValHandle -> IO CInt
type PaintCb = Ptr CFloat -> CFloat -> CFloat -> IO ()
type MakeCb = Ptr (FunPtr SetupCb) -> Ptr (FunPtr CleanupCb) ->
Ptr (FunPtr SyncCb) -> Ptr (FunPtr PaintCb) -> IO ()
type CallbacksFactory = IO (SetupCb, CleanupCb, SyncCb, PaintCb)
data HsQMLGLCanvasType = HsqmlGlDesktop
| HsqmlGlEs
deriving (Int -> HsQMLGLCanvasType
HsQMLGLCanvasType -> Int
HsQMLGLCanvasType -> [HsQMLGLCanvasType]
HsQMLGLCanvasType -> HsQMLGLCanvasType
HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType]
HsQMLGLCanvasType
-> HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType]
(HsQMLGLCanvasType -> HsQMLGLCanvasType)
-> (HsQMLGLCanvasType -> HsQMLGLCanvasType)
-> (Int -> HsQMLGLCanvasType)
-> (HsQMLGLCanvasType -> Int)
-> (HsQMLGLCanvasType -> [HsQMLGLCanvasType])
-> (HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType])
-> (HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType])
-> (HsQMLGLCanvasType
-> HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType])
-> Enum HsQMLGLCanvasType
forall a.
(a -> a)
-> (a -> a)
-> (Int -> a)
-> (a -> Int)
-> (a -> [a])
-> (a -> a -> [a])
-> (a -> a -> [a])
-> (a -> a -> a -> [a])
-> Enum a
$csucc :: HsQMLGLCanvasType -> HsQMLGLCanvasType
succ :: HsQMLGLCanvasType -> HsQMLGLCanvasType
$cpred :: HsQMLGLCanvasType -> HsQMLGLCanvasType
pred :: HsQMLGLCanvasType -> HsQMLGLCanvasType
$ctoEnum :: Int -> HsQMLGLCanvasType
toEnum :: Int -> HsQMLGLCanvasType
$cfromEnum :: HsQMLGLCanvasType -> Int
fromEnum :: HsQMLGLCanvasType -> Int
$cenumFrom :: HsQMLGLCanvasType -> [HsQMLGLCanvasType]
enumFrom :: HsQMLGLCanvasType -> [HsQMLGLCanvasType]
$cenumFromThen :: HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType]
enumFromThen :: HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType]
$cenumFromTo :: HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType]
enumFromTo :: HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType]
$cenumFromThenTo :: HsQMLGLCanvasType
-> HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType]
enumFromThenTo :: HsQMLGLCanvasType
-> HsQMLGLCanvasType -> HsQMLGLCanvasType -> [HsQMLGLCanvasType]
Enum)
{-# LINE 31 "src/Graphics/QML/Internal/BindCanvas.chs" #-}
foreign import ccall "wrapper"
marshalSetupCb :: SetupCb -> IO (FunPtr SetupCb)
foreign import ccall "wrapper"
marshalCleanupCb :: CleanupCb -> IO (FunPtr CleanupCb)
foreign import ccall "wrapper"
marshalSyncCb :: SyncCb -> IO (FunPtr SyncCb)
foreign import ccall "wrapper"
marshalPaintCb :: PaintCb -> IO (FunPtr PaintCb)
foreign import ccall "wrapper"
marshalMakeCb :: MakeCb -> IO (FunPtr MakeCb)
withCallbacksFactory :: CallbacksFactory -> (FunPtr MakeCb -> IO a) -> IO a
withCallbacksFactory :: forall a. CallbacksFactory -> (FunPtr MakeCb -> IO a) -> IO a
withCallbacksFactory CallbacksFactory
factory FunPtr MakeCb -> IO a
with = do
let makeFn :: MakeCb
makeFn Ptr (FunPtr SetupCb)
setupPtrFPtr Ptr (FunPtr CleanupCb)
cleanupPtrFPtr Ptr (FunPtr SyncCb)
syncPtrFPtr Ptr (FunPtr PaintCb)
paintPtrFPtr = do
(SetupCb
setupFn, CleanupCb
cleanupFn, SyncCb
syncFn, PaintCb
paintFn) <- CallbacksFactory
factory
FunPtr SetupCb
setupFPtr <- SetupCb -> IO (FunPtr SetupCb)
marshalSetupCb SetupCb
setupFn
Ptr (FunPtr SetupCb) -> FunPtr SetupCb -> CleanupCb
forall a. Storable a => Ptr a -> a -> CleanupCb
poke Ptr (FunPtr SetupCb)
setupPtrFPtr FunPtr SetupCb
setupFPtr
FunPtr CleanupCb
cleanupFPtr <- CleanupCb -> IO (FunPtr CleanupCb)
marshalCleanupCb CleanupCb
cleanupFn
Ptr (FunPtr CleanupCb) -> FunPtr CleanupCb -> CleanupCb
forall a. Storable a => Ptr a -> a -> CleanupCb
poke Ptr (FunPtr CleanupCb)
cleanupPtrFPtr FunPtr CleanupCb
cleanupFPtr
FunPtr SyncCb
syncFPtr <- SyncCb -> IO (FunPtr SyncCb)
marshalSyncCb SyncCb
syncFn
Ptr (FunPtr SyncCb) -> FunPtr SyncCb -> CleanupCb
forall a. Storable a => Ptr a -> a -> CleanupCb
poke Ptr (FunPtr SyncCb)
syncPtrFPtr FunPtr SyncCb
syncFPtr
FunPtr PaintCb
paintFPtr <- PaintCb -> IO (FunPtr PaintCb)
marshalPaintCb PaintCb
paintFn
Ptr (FunPtr PaintCb) -> FunPtr PaintCb -> CleanupCb
forall a. Storable a => Ptr a -> a -> CleanupCb
poke Ptr (FunPtr PaintCb)
paintPtrFPtr FunPtr PaintCb
paintFPtr
FunPtr MakeCb
makeFPtr <- MakeCb -> IO (FunPtr MakeCb)
marshalMakeCb MakeCb
makeFn
FunPtr MakeCb -> IO a
with FunPtr MakeCb
makeFPtr
foreign import ccall "hsqml.h &hsqml_finalise_gldelegate_handle"
hsqmlFinaliseGldelegateHandlePtr ::
FunPtr (Ptr HsQMLGLDelegateHandle -> IO ())
newGLDelegateHandle :: Ptr HsQMLGLDelegateHandle -> IO HsQMLGLDelegateHandle
newGLDelegateHandle :: Ptr HsQMLGLDelegateHandle -> IO HsQMLGLDelegateHandle
newGLDelegateHandle Ptr HsQMLGLDelegateHandle
p = do
ForeignPtr HsQMLGLDelegateHandle
fp <- FinalizerPtr HsQMLGLDelegateHandle
-> Ptr HsQMLGLDelegateHandle
-> IO (ForeignPtr HsQMLGLDelegateHandle)
forall a. FinalizerPtr a -> Ptr a -> IO (ForeignPtr a)
newForeignPtr FinalizerPtr HsQMLGLDelegateHandle
hsqmlFinaliseGldelegateHandlePtr Ptr HsQMLGLDelegateHandle
p
HsQMLGLDelegateHandle -> IO HsQMLGLDelegateHandle
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (HsQMLGLDelegateHandle -> IO HsQMLGLDelegateHandle)
-> HsQMLGLDelegateHandle -> IO HsQMLGLDelegateHandle
forall a b. (a -> b) -> a -> b
$ ForeignPtr HsQMLGLDelegateHandle -> HsQMLGLDelegateHandle
HsQMLGLDelegateHandle ForeignPtr HsQMLGLDelegateHandle
fp
hsqmlCreateGldelegate :: IO ((HsQMLGLDelegateHandle))
hsqmlCreateGldelegate :: IO HsQMLGLDelegateHandle
hsqmlCreateGldelegate =
IO (Ptr HsQMLGLDelegateHandle)
hsqmlCreateGldelegate'_ IO (Ptr HsQMLGLDelegateHandle)
-> (Ptr HsQMLGLDelegateHandle -> IO HsQMLGLDelegateHandle)
-> IO HsQMLGLDelegateHandle
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \Ptr HsQMLGLDelegateHandle
res ->
Ptr HsQMLGLDelegateHandle -> IO HsQMLGLDelegateHandle
newGLDelegateHandle Ptr HsQMLGLDelegateHandle
res IO HsQMLGLDelegateHandle
-> (HsQMLGLDelegateHandle -> IO HsQMLGLDelegateHandle)
-> IO HsQMLGLDelegateHandle
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= \HsQMLGLDelegateHandle
res' ->
HsQMLGLDelegateHandle -> IO HsQMLGLDelegateHandle
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return (HsQMLGLDelegateHandle
res')
{-# LINE 74 "src/Graphics/QML/Internal/BindCanvas.chs" #-}
hsqmlGldelegateSetup :: (HsQMLGLDelegateHandle) -> (CallbacksFactory) -> IO ()
hsqmlGldelegateSetup a1 a2 =
withHsQMLGLDelegateHandle a1 $ \a1' ->
withCallbacksFactory a2 $ \a2' ->
hsqmlGldelegateSetup'_ a1' a2' >>
return ()
{-# LINE 79 "src/Graphics/QML/Internal/BindCanvas.chs" #-}
hsqmlGldelegateToJval :: (HsQMLGLDelegateHandle) -> (HsQMLJValHandle) -> IO ()
hsqmlGldelegateToJval a1 a2 =
withHsQMLGLDelegateHandle a1 $ \a1' ->
let {a2' = id a2} in
hsqmlGldelegateToJval'_ a1' a2' >>
return ()
{-# LINE 84 "src/Graphics/QML/Internal/BindCanvas.chs" #-}
hsqmlGldelegateFromJval :: (HsQMLGLDelegateHandle) -> (HsQMLJValHandle) -> IO ((Bool))
hsqmlGldelegateFromJval a1 a2 =
withHsQMLGLDelegateHandle a1 $ \a1' ->
let {a2' = id a2} in
hsqmlGldelegateFromJval'_ a1' a2' >>= \res ->
let {res' = toBool res} in
return (res')
{-# LINE 89 "src/Graphics/QML/Internal/BindCanvas.chs" #-}
foreign import ccall unsafe "Graphics/QML/Internal/BindCanvas.chs.h hsqml_create_gldelegate"
hsqmlCreateGldelegate'_ :: (IO (C2HSImp.Ptr (HsQMLGLDelegateHandle)))
foreign import ccall unsafe "Graphics/QML/Internal/BindCanvas.chs.h hsqml_gldelegate_setup"
hsqmlGldelegateSetup'_ :: ((C2HSImp.Ptr (HsQMLGLDelegateHandle)) -> ((C2HSImp.FunPtr ((C2HSImp.Ptr (C2HSImp.FunPtr (C2HSImp.CInt -> (C2HSImp.CInt -> (C2HSImp.CInt -> (IO ())))))) -> ((C2HSImp.Ptr (C2HSImp.FunPtr (IO ()))) -> ((C2HSImp.Ptr (C2HSImp.FunPtr ((HsQMLJValHandle) -> (IO C2HSImp.CInt)))) -> ((C2HSImp.Ptr (C2HSImp.FunPtr ((C2HSImp.Ptr C2HSImp.CFloat) -> (C2HSImp.CFloat -> (C2HSImp.CFloat -> (IO ())))))) -> (IO ())))))) -> (IO ())))
foreign import ccall unsafe "Graphics/QML/Internal/BindCanvas.chs.h hsqml_gldelegate_to_jval"
hsqmlGldelegateToJval'_ :: ((C2HSImp.Ptr (HsQMLGLDelegateHandle)) -> ((HsQMLJValHandle) -> (IO ())))
foreign import ccall unsafe "Graphics/QML/Internal/BindCanvas.chs.h hsqml_gldelegate_from_jval"
hsqmlGldelegateFromJval'_ :: ((C2HSImp.Ptr (HsQMLGLDelegateHandle)) -> ((HsQMLJValHandle) -> (IO C2HSImp.CInt)))