{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) A #GdkPixdata contains pixbuf information in a form suitable for serialization and streaming. -} module GI.GdkPixbuf.Structs.Pixdata ( -- * Exported types Pixdata(..) , noPixdata , -- * Methods -- ** pixdataDeserialize pixdataDeserialize , -- ** pixdataSerialize pixdataSerialize , -- ** pixdataToCsource pixdataToCsource , -- * Properties -- ** Height pixdataReadHeight , -- ** Length pixdataReadLength , -- ** Magic pixdataReadMagic , -- ** PixdataType pixdataReadPixdataType , -- ** PixelData pixdataReadPixelData , -- ** Rowstride pixdataReadRowstride , -- ** Width pixdataReadWidth , ) 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 import GI.GdkPixbuf.Callbacks import qualified GI.GLib as GLib newtype Pixdata = Pixdata (ForeignPtr Pixdata) noPixdata :: Maybe Pixdata noPixdata = Nothing pixdataReadMagic :: Pixdata -> IO Word32 pixdataReadMagic s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO Word32 return val pixdataReadLength :: Pixdata -> IO Int32 pixdataReadLength s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 4) :: IO Int32 return val pixdataReadPixdataType :: Pixdata -> IO Word32 pixdataReadPixdataType s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO Word32 return val pixdataReadRowstride :: Pixdata -> IO Word32 pixdataReadRowstride s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 12) :: IO Word32 return val pixdataReadWidth :: Pixdata -> IO Word32 pixdataReadWidth s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 16) :: IO Word32 return val pixdataReadHeight :: Pixdata -> IO Word32 pixdataReadHeight s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 20) :: IO Word32 return val pixdataReadPixelData :: Pixdata -> IO (Ptr Word8) pixdataReadPixelData s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 24) :: IO (Ptr Word8) return val -- method Pixdata::deserialize -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "GdkPixbuf" "Pixdata", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stream_length", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stream", argType = TCArray False (-1) 1 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [Arg {argName = "stream_length", argType = TBasicType TUInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "GdkPixbuf" "Pixdata", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stream", argType = TCArray False (-1) 1 (TBasicType TUInt8), direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TBasicType TBoolean -- throws : True -- Skip return : False foreign import ccall "gdk_pixdata_deserialize" gdk_pixdata_deserialize :: Ptr Pixdata -> -- _obj : TInterface "GdkPixbuf" "Pixdata" Word32 -> -- stream_length : TBasicType TUInt32 Ptr Word8 -> -- stream : TCArray False (-1) 1 (TBasicType TUInt8) Ptr (Ptr GError) -> -- error IO CInt {-# DEPRECATED pixdataDeserialize ["(Since version 2.32)","Use #GResource instead."]#-} pixdataDeserialize :: (MonadIO m) => Pixdata -> -- _obj ByteString -> -- stream m () pixdataDeserialize _obj stream = liftIO $ do let stream_length = fromIntegral $ B.length stream let _obj' = unsafeManagedPtrGetPtr _obj stream' <- packByteString stream onException (do _ <- propagateGError $ gdk_pixdata_deserialize _obj' stream_length stream' touchManagedPtr _obj freeMem stream' return () ) (do freeMem stream' ) -- method Pixdata::serialize -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "GdkPixbuf" "Pixdata", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "stream_length_p", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}] -- Lengths : [Arg {argName = "stream_length_p", argType = TBasicType TUInt32, direction = DirectionOut, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferEverything}] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "GdkPixbuf" "Pixdata", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TCArray False (-1) 1 (TBasicType TUInt8) -- throws : False -- Skip return : False foreign import ccall "gdk_pixdata_serialize" gdk_pixdata_serialize :: Ptr Pixdata -> -- _obj : TInterface "GdkPixbuf" "Pixdata" Ptr Word32 -> -- stream_length_p : TBasicType TUInt32 IO (Ptr Word8) {-# DEPRECATED pixdataSerialize ["(Since version 2.32)","Use #GResource instead."]#-} pixdataSerialize :: (MonadIO m) => Pixdata -> -- _obj m ByteString pixdataSerialize _obj = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj stream_length_p <- allocMem :: IO (Ptr Word32) result <- gdk_pixdata_serialize _obj' stream_length_p stream_length_p' <- peek stream_length_p checkUnexpectedReturnNULL "gdk_pixdata_serialize" result result' <- (unpackByteStringWithLength stream_length_p') result freeMem result touchManagedPtr _obj freeMem stream_length_p return result' -- method Pixdata::to_csource -- method type : OrdinaryMethod -- Args : [Arg {argName = "_obj", argType = TInterface "GdkPixbuf" "Pixdata", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dump_type", argType = TInterface "GdkPixbuf" "PixdataDumpType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- Lengths : [] -- hInArgs : [Arg {argName = "_obj", argType = TInterface "GdkPixbuf" "Pixdata", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "name", argType = TBasicType TUTF8, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing},Arg {argName = "dump_type", argType = TInterface "GdkPixbuf" "PixdataDumpType", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, transfer = TransferNothing}] -- returnType : TInterface "GLib" "String" -- throws : False -- Skip return : False foreign import ccall "gdk_pixdata_to_csource" gdk_pixdata_to_csource :: Ptr Pixdata -> -- _obj : TInterface "GdkPixbuf" "Pixdata" CString -> -- name : TBasicType TUTF8 CUInt -> -- dump_type : TInterface "GdkPixbuf" "PixdataDumpType" IO (Ptr GLib.String) {-# DEPRECATED pixdataToCsource ["(Since version 2.32)","Use #GResource instead."]#-} pixdataToCsource :: (MonadIO m) => Pixdata -> -- _obj T.Text -> -- name [PixdataDumpType] -> -- dump_type m GLib.String pixdataToCsource _obj name dump_type = liftIO $ do let _obj' = unsafeManagedPtrGetPtr _obj name' <- textToCString name let dump_type' = gflagsToWord dump_type result <- gdk_pixdata_to_csource _obj' name' dump_type' checkUnexpectedReturnNULL "gdk_pixdata_to_csource" result result' <- (wrapBoxed GLib.String) result touchManagedPtr _obj freeMem name' return result'