module GI.GdkPixbuf.Callbacks
(
PixbufDestroyNotify ,
PixbufDestroyNotifyC ,
mkPixbufDestroyNotify ,
noPixbufDestroyNotify ,
pixbufDestroyNotifyClosure ,
pixbufDestroyNotifyWrapper ,
PixbufSaveFunc ,
PixbufSaveFuncC ,
mkPixbufSaveFunc ,
noPixbufSaveFunc ,
pixbufSaveFuncClosure ,
pixbufSaveFuncWrapper ,
) where
import Prelude ()
import Data.GI.Base.ShortPrelude
import qualified Data.Text as T
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import GI.GdkPixbuf.Types
pixbufSaveFuncClosure :: PixbufSaveFunc -> IO Closure
pixbufSaveFuncClosure cb = newCClosure =<< mkPixbufSaveFunc wrapped
where wrapped = pixbufSaveFuncWrapper Nothing cb
type PixbufSaveFuncC =
Ptr Word8 ->
Word64 ->
Ptr (Ptr GError) ->
Ptr () ->
IO CInt
foreign import ccall "wrapper"
mkPixbufSaveFunc :: PixbufSaveFuncC -> IO (FunPtr PixbufSaveFuncC)
type PixbufSaveFunc =
ByteString ->
IO (Bool,GError)
noPixbufSaveFunc :: Maybe PixbufSaveFunc
noPixbufSaveFunc = Nothing
pixbufSaveFuncWrapper ::
Maybe (Ptr (FunPtr (PixbufSaveFuncC))) ->
PixbufSaveFunc ->
Ptr Word8 ->
Word64 ->
Ptr (Ptr GError) ->
Ptr () ->
IO CInt
pixbufSaveFuncWrapper funptrptr _cb buf count error_ _ = do
buf' <- (unpackByteStringWithLength count) buf
(result, outerror_) <- _cb buf'
outerror_' <- copyBoxed outerror_
poke error_ outerror_'
maybeReleaseFunPtr funptrptr
let result' = (fromIntegral . fromEnum) result
return result'
pixbufDestroyNotifyClosure :: PixbufDestroyNotify -> IO Closure
pixbufDestroyNotifyClosure cb = newCClosure =<< mkPixbufDestroyNotify wrapped
where wrapped = pixbufDestroyNotifyWrapper Nothing cb
type PixbufDestroyNotifyC =
Ptr Word8 ->
Ptr () ->
IO ()
foreign import ccall "wrapper"
mkPixbufDestroyNotify :: PixbufDestroyNotifyC -> IO (FunPtr PixbufDestroyNotifyC)
type PixbufDestroyNotify =
Ptr Word8 ->
IO ()
noPixbufDestroyNotify :: Maybe PixbufDestroyNotify
noPixbufDestroyNotify = Nothing
pixbufDestroyNotifyWrapper ::
Maybe (Ptr (FunPtr (PixbufDestroyNotifyC))) ->
PixbufDestroyNotify ->
Ptr Word8 ->
Ptr () ->
IO ()
pixbufDestroyNotifyWrapper funptrptr _cb pixels _ = do
_cb pixels
maybeReleaseFunPtr funptrptr