{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- Extra buffer metadata for uploading a buffer to an OpenGL texture
-- ID. The caller of 'GI.GstVideo.Structs.VideoGLTextureUploadMeta.videoGLTextureUploadMetaUpload' must
-- have OpenGL set up and call this from a thread where it is valid
-- to upload something to an OpenGL texture.

#if (MIN_VERSION_haskell_gi_overloading(1,0,0) && !defined(__HADDOCK_VERSION__))
#define ENABLE_OVERLOADING
#endif

module GI.GstVideo.Structs.VideoGLTextureUploadMeta
    ( 

-- * Exported types
    VideoGLTextureUploadMeta(..)            ,
    newZeroVideoGLTextureUploadMeta         ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [upload]("GI.GstVideo.Structs.VideoGLTextureUploadMeta#g:method:upload").
-- 
-- ==== Getters
-- /None/.
-- 
-- ==== Setters
-- /None/.

#if defined(ENABLE_OVERLOADING)
    ResolveVideoGLTextureUploadMetaMethod   ,
#endif

-- ** getInfo #method:getInfo#

    videoGLTextureUploadMetaGetInfo         ,


-- ** upload #method:upload#

#if defined(ENABLE_OVERLOADING)
    VideoGLTextureUploadMetaUploadMethodInfo,
#endif
    videoGLTextureUploadMetaUpload          ,




 -- * Properties


-- ** meta #attr:meta#
-- | parent t'GI.Gst.Structs.Meta.Meta'

    getVideoGLTextureUploadMetaMeta         ,
#if defined(ENABLE_OVERLOADING)
    videoGLTextureUploadMeta_meta           ,
#endif


-- ** nTextures #attr:nTextures#
-- | Number of textures that are generated

    getVideoGLTextureUploadMetaNTextures    ,
    setVideoGLTextureUploadMetaNTextures    ,
#if defined(ENABLE_OVERLOADING)
    videoGLTextureUploadMeta_nTextures      ,
#endif


-- ** textureOrientation #attr:textureOrientation#
-- | Orientation of the textures

    getVideoGLTextureUploadMetaTextureOrientation,
    setVideoGLTextureUploadMetaTextureOrientation,
#if defined(ENABLE_OVERLOADING)
    videoGLTextureUploadMeta_textureOrientation,
#endif




    ) where

import Data.GI.Base.ShortPrelude
import qualified Data.GI.Base.ShortPrelude as SP
import qualified Data.GI.Base.Overloading as O
import qualified Prelude as P

import qualified Data.GI.Base.Attributes as GI.Attributes
import qualified Data.GI.Base.BasicTypes as B.Types
import qualified Data.GI.Base.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GArray as B.GArray
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
import qualified Data.GI.Base.GHashTable as B.GHT
import qualified Data.GI.Base.GVariant as B.GVariant
import qualified Data.GI.Base.GValue as B.GValue
import qualified Data.GI.Base.GParamSpec as B.GParamSpec
import qualified Data.GI.Base.CallStack as B.CallStack
import qualified Data.GI.Base.Properties as B.Properties
import qualified Data.GI.Base.Signals as B.Signals
import qualified Control.Monad.IO.Class as MIO
import qualified Data.Coerce as Coerce
import qualified Data.Text as T
import qualified Data.Kind as DK
import qualified Data.ByteString.Char8 as B
import qualified Data.Map as Map
import qualified Foreign.Ptr as FP
import qualified GHC.OverloadedLabels as OL
import qualified GHC.Records as R

import qualified GI.Gst.Structs.Meta as Gst.Meta
import qualified GI.Gst.Structs.MetaInfo as Gst.MetaInfo
import {-# SOURCE #-} qualified GI.GstVideo.Enums as GstVideo.Enums

-- | Memory-managed wrapper type.
newtype VideoGLTextureUploadMeta = VideoGLTextureUploadMeta (SP.ManagedPtr VideoGLTextureUploadMeta)
    deriving (VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta -> Bool
(VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta -> Bool)
-> (VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta -> Bool)
-> Eq VideoGLTextureUploadMeta
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
$c== :: VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta -> Bool
== :: VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta -> Bool
$c/= :: VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta -> Bool
/= :: VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta -> Bool
Eq)

instance SP.ManagedPtrNewtype VideoGLTextureUploadMeta where
    toManagedPtr :: VideoGLTextureUploadMeta -> ManagedPtr VideoGLTextureUploadMeta
toManagedPtr (VideoGLTextureUploadMeta ManagedPtr VideoGLTextureUploadMeta
p) = ManagedPtr VideoGLTextureUploadMeta
p

instance BoxedPtr VideoGLTextureUploadMeta where
    boxedPtrCopy :: VideoGLTextureUploadMeta -> IO VideoGLTextureUploadMeta
boxedPtrCopy = \VideoGLTextureUploadMeta
p -> VideoGLTextureUploadMeta
-> (Ptr VideoGLTextureUploadMeta -> IO VideoGLTextureUploadMeta)
-> IO VideoGLTextureUploadMeta
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr VideoGLTextureUploadMeta
p (Int
-> Ptr VideoGLTextureUploadMeta
-> IO (Ptr VideoGLTextureUploadMeta)
forall a. (HasCallStack, CallocPtr a) => Int -> Ptr a -> IO (Ptr a)
copyBytes Int
80 (Ptr VideoGLTextureUploadMeta -> IO (Ptr VideoGLTextureUploadMeta))
-> (Ptr VideoGLTextureUploadMeta -> IO VideoGLTextureUploadMeta)
-> Ptr VideoGLTextureUploadMeta
-> IO VideoGLTextureUploadMeta
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> (ManagedPtr VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta)
-> Ptr VideoGLTextureUploadMeta -> IO VideoGLTextureUploadMeta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
B.ManagedPtr.wrapPtr ManagedPtr VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta
VideoGLTextureUploadMeta)
    boxedPtrFree :: VideoGLTextureUploadMeta -> IO ()
boxedPtrFree = \VideoGLTextureUploadMeta
x -> VideoGLTextureUploadMeta
-> (Ptr VideoGLTextureUploadMeta -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
SP.withManagedPtr VideoGLTextureUploadMeta
x Ptr VideoGLTextureUploadMeta -> IO ()
forall a. Ptr a -> IO ()
SP.freeMem
instance CallocPtr VideoGLTextureUploadMeta where
    boxedPtrCalloc :: IO (Ptr VideoGLTextureUploadMeta)
boxedPtrCalloc = Int -> IO (Ptr VideoGLTextureUploadMeta)
forall a. Int -> IO (Ptr a)
callocBytes Int
80


-- | Construct a `VideoGLTextureUploadMeta` struct initialized to zero.
newZeroVideoGLTextureUploadMeta :: MonadIO m => m VideoGLTextureUploadMeta
newZeroVideoGLTextureUploadMeta :: forall (m :: * -> *). MonadIO m => m VideoGLTextureUploadMeta
newZeroVideoGLTextureUploadMeta = IO VideoGLTextureUploadMeta -> m VideoGLTextureUploadMeta
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO VideoGLTextureUploadMeta -> m VideoGLTextureUploadMeta)
-> IO VideoGLTextureUploadMeta -> m VideoGLTextureUploadMeta
forall a b. (a -> b) -> a -> b
$ IO (Ptr VideoGLTextureUploadMeta)
forall a. CallocPtr a => IO (Ptr a)
boxedPtrCalloc IO (Ptr VideoGLTextureUploadMeta)
-> (Ptr VideoGLTextureUploadMeta -> IO VideoGLTextureUploadMeta)
-> IO VideoGLTextureUploadMeta
forall a b. IO a -> (a -> IO b) -> IO b
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta)
-> Ptr VideoGLTextureUploadMeta -> IO VideoGLTextureUploadMeta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta
VideoGLTextureUploadMeta

instance tag ~ 'AttrSet => Constructible VideoGLTextureUploadMeta tag where
    new :: forall (m :: * -> *).
MonadIO m =>
(ManagedPtr VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta)
-> [AttrOp VideoGLTextureUploadMeta tag]
-> m VideoGLTextureUploadMeta
new ManagedPtr VideoGLTextureUploadMeta -> VideoGLTextureUploadMeta
_ [AttrOp VideoGLTextureUploadMeta tag]
attrs = do
        VideoGLTextureUploadMeta
o <- m VideoGLTextureUploadMeta
forall (m :: * -> *). MonadIO m => m VideoGLTextureUploadMeta
newZeroVideoGLTextureUploadMeta
        VideoGLTextureUploadMeta
-> [AttrOp VideoGLTextureUploadMeta 'AttrSet] -> m ()
forall o (m :: * -> *).
MonadIO m =>
o -> [AttrOp o 'AttrSet] -> m ()
GI.Attributes.set VideoGLTextureUploadMeta
o [AttrOp VideoGLTextureUploadMeta tag]
[AttrOp VideoGLTextureUploadMeta 'AttrSet]
attrs
        VideoGLTextureUploadMeta -> m VideoGLTextureUploadMeta
forall a. a -> m a
forall (m :: * -> *) a. Monad m => a -> m a
return VideoGLTextureUploadMeta
o


-- | Get the value of the “@meta@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' videoGLTextureUploadMeta #meta
-- @
getVideoGLTextureUploadMetaMeta :: MonadIO m => VideoGLTextureUploadMeta -> m Gst.Meta.Meta
getVideoGLTextureUploadMetaMeta :: forall (m :: * -> *).
MonadIO m =>
VideoGLTextureUploadMeta -> m Meta
getVideoGLTextureUploadMetaMeta VideoGLTextureUploadMeta
s = IO Meta -> m Meta
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Meta -> m Meta) -> IO Meta -> m Meta
forall a b. (a -> b) -> a -> b
$ VideoGLTextureUploadMeta
-> (Ptr VideoGLTextureUploadMeta -> IO Meta) -> IO Meta
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoGLTextureUploadMeta
s ((Ptr VideoGLTextureUploadMeta -> IO Meta) -> IO Meta)
-> (Ptr VideoGLTextureUploadMeta -> IO Meta) -> IO Meta
forall a b. (a -> b) -> a -> b
$ \Ptr VideoGLTextureUploadMeta
ptr -> do
    let val :: Ptr Meta
val = Ptr VideoGLTextureUploadMeta
ptr Ptr VideoGLTextureUploadMeta -> Int -> Ptr Meta
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
0 :: (Ptr Gst.Meta.Meta)
    Meta
val' <- ((ManagedPtr Meta -> Meta) -> Ptr Meta -> IO Meta
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr Meta -> Meta
Gst.Meta.Meta) Ptr Meta
val
    Meta -> IO Meta
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Meta
val'

#if defined(ENABLE_OVERLOADING)
data VideoGLTextureUploadMetaMetaFieldInfo
instance AttrInfo VideoGLTextureUploadMetaMetaFieldInfo where
    type AttrBaseTypeConstraint VideoGLTextureUploadMetaMetaFieldInfo = (~) VideoGLTextureUploadMeta
    type AttrAllowedOps VideoGLTextureUploadMetaMetaFieldInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint VideoGLTextureUploadMetaMetaFieldInfo = (~) (Ptr Gst.Meta.Meta)
    type AttrTransferTypeConstraint VideoGLTextureUploadMetaMetaFieldInfo = (~)(Ptr Gst.Meta.Meta)
    type AttrTransferType VideoGLTextureUploadMetaMetaFieldInfo = (Ptr Gst.Meta.Meta)
    type AttrGetType VideoGLTextureUploadMetaMetaFieldInfo = Gst.Meta.Meta
    type AttrLabel VideoGLTextureUploadMetaMetaFieldInfo = "meta"
    type AttrOrigin VideoGLTextureUploadMetaMetaFieldInfo = VideoGLTextureUploadMeta
    attrGet = getVideoGLTextureUploadMetaMeta
    attrSet = undefined
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer = undefined
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstVideo.Structs.VideoGLTextureUploadMeta.meta"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstvideo-1.0.28/docs/GI-GstVideo-Structs-VideoGLTextureUploadMeta.html#g:attr:meta"
        })

videoGLTextureUploadMeta_meta :: AttrLabelProxy "meta"
videoGLTextureUploadMeta_meta = AttrLabelProxy

#endif


-- | Get the value of the “@texture_orientation@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' videoGLTextureUploadMeta #textureOrientation
-- @
getVideoGLTextureUploadMetaTextureOrientation :: MonadIO m => VideoGLTextureUploadMeta -> m GstVideo.Enums.VideoGLTextureOrientation
getVideoGLTextureUploadMetaTextureOrientation :: forall (m :: * -> *).
MonadIO m =>
VideoGLTextureUploadMeta -> m VideoGLTextureOrientation
getVideoGLTextureUploadMetaTextureOrientation VideoGLTextureUploadMeta
s = IO VideoGLTextureOrientation -> m VideoGLTextureOrientation
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO VideoGLTextureOrientation -> m VideoGLTextureOrientation)
-> IO VideoGLTextureOrientation -> m VideoGLTextureOrientation
forall a b. (a -> b) -> a -> b
$ VideoGLTextureUploadMeta
-> (Ptr VideoGLTextureUploadMeta -> IO VideoGLTextureOrientation)
-> IO VideoGLTextureOrientation
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoGLTextureUploadMeta
s ((Ptr VideoGLTextureUploadMeta -> IO VideoGLTextureOrientation)
 -> IO VideoGLTextureOrientation)
-> (Ptr VideoGLTextureUploadMeta -> IO VideoGLTextureOrientation)
-> IO VideoGLTextureOrientation
forall a b. (a -> b) -> a -> b
$ \Ptr VideoGLTextureUploadMeta
ptr -> do
    CUInt
val <- Ptr CUInt -> IO CUInt
forall a. Storable a => Ptr a -> IO a
peek (Ptr VideoGLTextureUploadMeta
ptr Ptr VideoGLTextureUploadMeta -> Int -> Ptr CUInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16) :: IO CUInt
    let val' :: VideoGLTextureOrientation
val' = (Int -> VideoGLTextureOrientation
forall a. Enum a => Int -> a
toEnum (Int -> VideoGLTextureOrientation)
-> (CUInt -> Int) -> CUInt -> VideoGLTextureOrientation
forall b c a. (b -> c) -> (a -> b) -> a -> c
. CUInt -> Int
forall a b. (Integral a, Num b) => a -> b
fromIntegral) CUInt
val
    VideoGLTextureOrientation -> IO VideoGLTextureOrientation
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return VideoGLTextureOrientation
val'

-- | Set the value of the “@texture_orientation@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' videoGLTextureUploadMeta [ #textureOrientation 'Data.GI.Base.Attributes.:=' value ]
-- @
setVideoGLTextureUploadMetaTextureOrientation :: MonadIO m => VideoGLTextureUploadMeta -> GstVideo.Enums.VideoGLTextureOrientation -> m ()
setVideoGLTextureUploadMetaTextureOrientation :: forall (m :: * -> *).
MonadIO m =>
VideoGLTextureUploadMeta -> VideoGLTextureOrientation -> m ()
setVideoGLTextureUploadMetaTextureOrientation VideoGLTextureUploadMeta
s VideoGLTextureOrientation
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ VideoGLTextureUploadMeta
-> (Ptr VideoGLTextureUploadMeta -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoGLTextureUploadMeta
s ((Ptr VideoGLTextureUploadMeta -> IO ()) -> IO ())
-> (Ptr VideoGLTextureUploadMeta -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr VideoGLTextureUploadMeta
ptr -> do
    let val' :: CUInt
val' = (Int -> CUInt
forall a b. (Integral a, Num b) => a -> b
fromIntegral (Int -> CUInt)
-> (VideoGLTextureOrientation -> Int)
-> VideoGLTextureOrientation
-> CUInt
forall b c a. (b -> c) -> (a -> b) -> a -> c
. VideoGLTextureOrientation -> Int
forall a. Enum a => a -> Int
fromEnum) VideoGLTextureOrientation
val
    Ptr CUInt -> CUInt -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr VideoGLTextureUploadMeta
ptr Ptr VideoGLTextureUploadMeta -> Int -> Ptr CUInt
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
16) (CUInt
val' :: CUInt)

#if defined(ENABLE_OVERLOADING)
data VideoGLTextureUploadMetaTextureOrientationFieldInfo
instance AttrInfo VideoGLTextureUploadMetaTextureOrientationFieldInfo where
    type AttrBaseTypeConstraint VideoGLTextureUploadMetaTextureOrientationFieldInfo = (~) VideoGLTextureUploadMeta
    type AttrAllowedOps VideoGLTextureUploadMetaTextureOrientationFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint VideoGLTextureUploadMetaTextureOrientationFieldInfo = (~) GstVideo.Enums.VideoGLTextureOrientation
    type AttrTransferTypeConstraint VideoGLTextureUploadMetaTextureOrientationFieldInfo = (~)GstVideo.Enums.VideoGLTextureOrientation
    type AttrTransferType VideoGLTextureUploadMetaTextureOrientationFieldInfo = GstVideo.Enums.VideoGLTextureOrientation
    type AttrGetType VideoGLTextureUploadMetaTextureOrientationFieldInfo = GstVideo.Enums.VideoGLTextureOrientation
    type AttrLabel VideoGLTextureUploadMetaTextureOrientationFieldInfo = "texture_orientation"
    type AttrOrigin VideoGLTextureUploadMetaTextureOrientationFieldInfo = VideoGLTextureUploadMeta
    attrGet = getVideoGLTextureUploadMetaTextureOrientation
    attrSet = setVideoGLTextureUploadMetaTextureOrientation
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstVideo.Structs.VideoGLTextureUploadMeta.textureOrientation"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstvideo-1.0.28/docs/GI-GstVideo-Structs-VideoGLTextureUploadMeta.html#g:attr:textureOrientation"
        })

videoGLTextureUploadMeta_textureOrientation :: AttrLabelProxy "textureOrientation"
videoGLTextureUploadMeta_textureOrientation = AttrLabelProxy

#endif


-- | Get the value of the “@n_textures@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.get' videoGLTextureUploadMeta #nTextures
-- @
getVideoGLTextureUploadMetaNTextures :: MonadIO m => VideoGLTextureUploadMeta -> m Word32
getVideoGLTextureUploadMetaNTextures :: forall (m :: * -> *).
MonadIO m =>
VideoGLTextureUploadMeta -> m Word32
getVideoGLTextureUploadMetaNTextures VideoGLTextureUploadMeta
s = IO Word32 -> m Word32
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Word32 -> m Word32) -> IO Word32 -> m Word32
forall a b. (a -> b) -> a -> b
$ VideoGLTextureUploadMeta
-> (Ptr VideoGLTextureUploadMeta -> IO Word32) -> IO Word32
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoGLTextureUploadMeta
s ((Ptr VideoGLTextureUploadMeta -> IO Word32) -> IO Word32)
-> (Ptr VideoGLTextureUploadMeta -> IO Word32) -> IO Word32
forall a b. (a -> b) -> a -> b
$ \Ptr VideoGLTextureUploadMeta
ptr -> do
    Word32
val <- Ptr Word32 -> IO Word32
forall a. Storable a => Ptr a -> IO a
peek (Ptr VideoGLTextureUploadMeta
ptr Ptr VideoGLTextureUploadMeta -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20) :: IO Word32
    Word32 -> IO Word32
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Word32
val

-- | Set the value of the “@n_textures@” field.
-- When <https://github.com/haskell-gi/haskell-gi/wiki/Overloading overloading> is enabled, this is equivalent to
-- 
-- @
-- 'Data.GI.Base.Attributes.set' videoGLTextureUploadMeta [ #nTextures 'Data.GI.Base.Attributes.:=' value ]
-- @
setVideoGLTextureUploadMetaNTextures :: MonadIO m => VideoGLTextureUploadMeta -> Word32 -> m ()
setVideoGLTextureUploadMetaNTextures :: forall (m :: * -> *).
MonadIO m =>
VideoGLTextureUploadMeta -> Word32 -> m ()
setVideoGLTextureUploadMetaNTextures VideoGLTextureUploadMeta
s Word32
val = IO () -> m ()
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO () -> m ()) -> IO () -> m ()
forall a b. (a -> b) -> a -> b
$ VideoGLTextureUploadMeta
-> (Ptr VideoGLTextureUploadMeta -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoGLTextureUploadMeta
s ((Ptr VideoGLTextureUploadMeta -> IO ()) -> IO ())
-> (Ptr VideoGLTextureUploadMeta -> IO ()) -> IO ()
forall a b. (a -> b) -> a -> b
$ \Ptr VideoGLTextureUploadMeta
ptr -> do
    Ptr Word32 -> Word32 -> IO ()
forall a. Storable a => Ptr a -> a -> IO ()
poke (Ptr VideoGLTextureUploadMeta
ptr Ptr VideoGLTextureUploadMeta -> Int -> Ptr Word32
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` Int
20) (Word32
val :: Word32)

#if defined(ENABLE_OVERLOADING)
data VideoGLTextureUploadMetaNTexturesFieldInfo
instance AttrInfo VideoGLTextureUploadMetaNTexturesFieldInfo where
    type AttrBaseTypeConstraint VideoGLTextureUploadMetaNTexturesFieldInfo = (~) VideoGLTextureUploadMeta
    type AttrAllowedOps VideoGLTextureUploadMetaNTexturesFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint VideoGLTextureUploadMetaNTexturesFieldInfo = (~) Word32
    type AttrTransferTypeConstraint VideoGLTextureUploadMetaNTexturesFieldInfo = (~)Word32
    type AttrTransferType VideoGLTextureUploadMetaNTexturesFieldInfo = Word32
    type AttrGetType VideoGLTextureUploadMetaNTexturesFieldInfo = Word32
    type AttrLabel VideoGLTextureUploadMetaNTexturesFieldInfo = "n_textures"
    type AttrOrigin VideoGLTextureUploadMetaNTexturesFieldInfo = VideoGLTextureUploadMeta
    attrGet = getVideoGLTextureUploadMetaNTextures
    attrSet = setVideoGLTextureUploadMetaNTextures
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v
    dbgAttrInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstVideo.Structs.VideoGLTextureUploadMeta.nTextures"
        , O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstvideo-1.0.28/docs/GI-GstVideo-Structs-VideoGLTextureUploadMeta.html#g:attr:nTextures"
        })

videoGLTextureUploadMeta_nTextures :: AttrLabelProxy "nTextures"
videoGLTextureUploadMeta_nTextures = AttrLabelProxy

#endif


-- XXX Skipped attribute for "VideoGLTextureUploadMeta:texture_type"
-- Not implemented: Don't know how to unpack C array of type TCArray False 4 (-1) (TInterface (Name {namespace = "GstVideo", name = "VideoGLTextureType"}))

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList VideoGLTextureUploadMeta
type instance O.AttributeList VideoGLTextureUploadMeta = VideoGLTextureUploadMetaAttributeList
type VideoGLTextureUploadMetaAttributeList = ('[ '("meta", VideoGLTextureUploadMetaMetaFieldInfo), '("textureOrientation", VideoGLTextureUploadMetaTextureOrientationFieldInfo), '("nTextures", VideoGLTextureUploadMetaNTexturesFieldInfo)] :: [(Symbol, DK.Type)])
#endif

-- method VideoGLTextureUploadMeta::upload
-- method type : OrdinaryMethod
-- Args: [ Arg
--           { argCName = "meta"
--           , argType =
--               TInterface
--                 Name { namespace = "GstVideo" , name = "VideoGLTextureUploadMeta" }
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "a #GstVideoGLTextureUploadMeta"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       , Arg
--           { argCName = "texture_id"
--           , argType = TBasicType TUInt
--           , direction = DirectionIn
--           , mayBeNull = False
--           , argDoc =
--               Documentation
--                 { rawDocText = Just "the texture IDs to upload to"
--                 , sinceVersion = Nothing
--                 }
--           , argScope = ScopeTypeInvalid
--           , argClosure = -1
--           , argDestroy = -1
--           , argCallerAllocates = False
--           , transfer = TransferNothing
--           }
--       ]
-- Lengths: []
-- returnType: Just (TBasicType TBoolean)
-- throws : False
-- Skip return : False

foreign import ccall "gst_video_gl_texture_upload_meta_upload" gst_video_gl_texture_upload_meta_upload :: 
    Ptr VideoGLTextureUploadMeta ->         -- meta : TInterface (Name {namespace = "GstVideo", name = "VideoGLTextureUploadMeta"})
    Word32 ->                               -- texture_id : TBasicType TUInt
    IO CInt

-- | Uploads the buffer which owns the meta to a specific texture ID.
videoGLTextureUploadMetaUpload ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    VideoGLTextureUploadMeta
    -- ^ /@meta@/: a t'GI.GstVideo.Structs.VideoGLTextureUploadMeta.VideoGLTextureUploadMeta'
    -> Word32
    -- ^ /@textureId@/: the texture IDs to upload to
    -> m Bool
    -- ^ __Returns:__ 'P.True' if uploading succeeded, 'P.False' otherwise.
videoGLTextureUploadMetaUpload :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
VideoGLTextureUploadMeta -> Word32 -> m Bool
videoGLTextureUploadMetaUpload VideoGLTextureUploadMeta
meta Word32
textureId = IO Bool -> m Bool
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO Bool -> m Bool) -> IO Bool -> m Bool
forall a b. (a -> b) -> a -> b
$ do
    Ptr VideoGLTextureUploadMeta
meta' <- VideoGLTextureUploadMeta -> IO (Ptr VideoGLTextureUploadMeta)
forall a. (HasCallStack, ManagedPtrNewtype a) => a -> IO (Ptr a)
unsafeManagedPtrGetPtr VideoGLTextureUploadMeta
meta
    CInt
result <- Ptr VideoGLTextureUploadMeta -> Word32 -> IO CInt
gst_video_gl_texture_upload_meta_upload Ptr VideoGLTextureUploadMeta
meta' Word32
textureId
    let result' :: Bool
result' = (CInt -> CInt -> Bool
forall a. Eq a => a -> a -> Bool
/= CInt
0) CInt
result
    VideoGLTextureUploadMeta -> IO ()
forall a. ManagedPtrNewtype a => a -> IO ()
touchManagedPtr VideoGLTextureUploadMeta
meta
    Bool -> IO Bool
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Bool
result'

#if defined(ENABLE_OVERLOADING)
data VideoGLTextureUploadMetaUploadMethodInfo
instance (signature ~ (Word32 -> m Bool), MonadIO m) => O.OverloadedMethod VideoGLTextureUploadMetaUploadMethodInfo VideoGLTextureUploadMeta signature where
    overloadedMethod = videoGLTextureUploadMetaUpload

instance O.OverloadedMethodInfo VideoGLTextureUploadMetaUploadMethodInfo VideoGLTextureUploadMeta where
    overloadedMethodInfo = P.Just (O.ResolvedSymbolInfo {
        O.resolvedSymbolName = "GI.GstVideo.Structs.VideoGLTextureUploadMeta.videoGLTextureUploadMetaUpload",
        O.resolvedSymbolURL = "https://hackage.haskell.org/package/gi-gstvideo-1.0.28/docs/GI-GstVideo-Structs-VideoGLTextureUploadMeta.html#v:videoGLTextureUploadMetaUpload"
        })


#endif

-- method VideoGLTextureUploadMeta::get_info
-- method type : MemberFunction
-- Args: []
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "Gst" , name = "MetaInfo" })
-- throws : False
-- Skip return : False

foreign import ccall "gst_video_gl_texture_upload_meta_get_info" gst_video_gl_texture_upload_meta_get_info :: 
    IO (Ptr Gst.MetaInfo.MetaInfo)

-- | /No description available in the introspection data./
videoGLTextureUploadMetaGetInfo ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m Gst.MetaInfo.MetaInfo
videoGLTextureUploadMetaGetInfo :: forall (m :: * -> *). (HasCallStack, MonadIO m) => m MetaInfo
videoGLTextureUploadMetaGetInfo  = IO MetaInfo -> m MetaInfo
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO MetaInfo -> m MetaInfo) -> IO MetaInfo -> m MetaInfo
forall a b. (a -> b) -> a -> b
$ do
    Ptr MetaInfo
result <- IO (Ptr MetaInfo)
gst_video_gl_texture_upload_meta_get_info
    Text -> Ptr MetaInfo -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL Text
"videoGLTextureUploadMetaGetInfo" Ptr MetaInfo
result
    MetaInfo
result' <- ((ManagedPtr MetaInfo -> MetaInfo) -> Ptr MetaInfo -> IO MetaInfo
forall a.
(HasCallStack, BoxedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr MetaInfo -> MetaInfo
Gst.MetaInfo.MetaInfo) Ptr MetaInfo
result
    MetaInfo -> IO MetaInfo
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return MetaInfo
result'

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveVideoGLTextureUploadMetaMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveVideoGLTextureUploadMetaMethod "upload" o = VideoGLTextureUploadMetaUploadMethodInfo
    ResolveVideoGLTextureUploadMetaMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveVideoGLTextureUploadMetaMethod t VideoGLTextureUploadMeta, O.OverloadedMethod info VideoGLTextureUploadMeta p) => OL.IsLabel t (VideoGLTextureUploadMeta -> p) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.overloadedMethod @info
#else
    fromLabel _ = O.overloadedMethod @info
#endif

#if MIN_VERSION_base(4,13,0)
instance (info ~ ResolveVideoGLTextureUploadMetaMethod t VideoGLTextureUploadMeta, O.OverloadedMethod info VideoGLTextureUploadMeta p, R.HasField t VideoGLTextureUploadMeta p) => R.HasField t VideoGLTextureUploadMeta p where
    getField = O.overloadedMethod @info

#endif

instance (info ~ ResolveVideoGLTextureUploadMetaMethod t VideoGLTextureUploadMeta, O.OverloadedMethodInfo info VideoGLTextureUploadMeta) => OL.IsLabel t (O.MethodProxy info VideoGLTextureUploadMeta) where
#if MIN_VERSION_base(4,10,0)
    fromLabel = O.MethodProxy
#else
    fromLabel _ = O.MethodProxy
#endif

#endif