{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (garetxe@gmail.com) Extra data passed to a "gst-copy" transform #GstMetaTransformFunction. -} module GI.Gst.Structs.MetaTransformCopy ( -- * Exported types MetaTransformCopy(..) , newZeroMetaTransformCopy , noMetaTransformCopy , -- * Properties -- ** Offset metaTransformCopyReadOffset , -- ** Region metaTransformCopyReadRegion , -- ** Size metaTransformCopyReadSize , ) 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.Gst.Types import GI.Gst.Callbacks newtype MetaTransformCopy = MetaTransformCopy (ForeignPtr MetaTransformCopy) -- | Construct a `MetaTransformCopy` struct initialized to zero. newZeroMetaTransformCopy :: MonadIO m => m MetaTransformCopy newZeroMetaTransformCopy = liftIO $ callocBytes 24 >>= wrapPtr MetaTransformCopy noMetaTransformCopy :: Maybe MetaTransformCopy noMetaTransformCopy = Nothing metaTransformCopyReadRegion :: MetaTransformCopy -> IO Bool metaTransformCopyReadRegion s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 0) :: IO CInt let val' = (/= 0) val return val' metaTransformCopyReadOffset :: MetaTransformCopy -> IO Word64 metaTransformCopyReadOffset s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 8) :: IO Word64 return val metaTransformCopyReadSize :: MetaTransformCopy -> IO Word64 metaTransformCopyReadSize s = withManagedPtr s $ \ptr -> do val <- peek (ptr `plusPtr` 16) :: IO Word64 return val type family ResolveMetaTransformCopyMethod (t :: Symbol) (o :: *) :: * where ResolveMetaTransformCopyMethod l o = MethodResolutionFailed l o instance (info ~ ResolveMetaTransformCopyMethod t MetaTransformCopy, MethodInfo info MetaTransformCopy p) => IsLabelProxy t (MetaTransformCopy -> p) where fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info) #if MIN_VERSION_base(4,9,0) instance (info ~ ResolveMetaTransformCopyMethod t MetaTransformCopy, MethodInfo info MetaTransformCopy p) => IsLabel t (MetaTransformCopy -> p) where fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info) #endif