{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- Extra buffer metadata describing image cropping.

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

module GI.GstVideo.Structs.VideoCropMeta
    ( 

-- * Exported types
    VideoCropMeta(..)                       ,
    newZeroVideoCropMeta                    ,
    noVideoCropMeta                         ,


 -- * Methods
-- ** Overloaded methods #method:Overloaded methods#

#if defined(ENABLE_OVERLOADING)
    ResolveVideoCropMetaMethod              ,
#endif


-- ** getInfo #method:getInfo#

    videoCropMetaGetInfo                    ,




 -- * Properties
-- ** height #attr:height#
-- | the cropped height

    getVideoCropMetaHeight                  ,
    setVideoCropMetaHeight                  ,
#if defined(ENABLE_OVERLOADING)
    videoCropMeta_height                    ,
#endif


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

    getVideoCropMetaMeta                    ,
#if defined(ENABLE_OVERLOADING)
    videoCropMeta_meta                      ,
#endif


-- ** width #attr:width#
-- | the cropped width

    getVideoCropMetaWidth                   ,
    setVideoCropMetaWidth                   ,
#if defined(ENABLE_OVERLOADING)
    videoCropMeta_width                     ,
#endif


-- ** x #attr:x#
-- | the horizontal offset

    getVideoCropMetaX                       ,
    setVideoCropMetaX                       ,
#if defined(ENABLE_OVERLOADING)
    videoCropMeta_x                         ,
#endif


-- ** y #attr:y#
-- | the vertical offset

    getVideoCropMetaY                       ,
    setVideoCropMetaY                       ,
#if defined(ENABLE_OVERLOADING)
    videoCropMeta_y                         ,
#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.ManagedPtr as B.ManagedPtr
import qualified Data.GI.Base.GClosure as B.GClosure
import qualified Data.GI.Base.GError as B.GError
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 Data.Text as T
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 GI.Gst.Structs.Meta as Gst.Meta
import qualified GI.Gst.Structs.MetaInfo as Gst.MetaInfo

-- | Memory-managed wrapper type.
newtype VideoCropMeta = VideoCropMeta (ManagedPtr VideoCropMeta)
    deriving (VideoCropMeta -> VideoCropMeta -> Bool
(VideoCropMeta -> VideoCropMeta -> Bool)
-> (VideoCropMeta -> VideoCropMeta -> Bool) -> Eq VideoCropMeta
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: VideoCropMeta -> VideoCropMeta -> Bool
$c/= :: VideoCropMeta -> VideoCropMeta -> Bool
== :: VideoCropMeta -> VideoCropMeta -> Bool
$c== :: VideoCropMeta -> VideoCropMeta -> Bool
Eq)
instance WrappedPtr VideoCropMeta where
    wrappedPtrCalloc :: IO (Ptr VideoCropMeta)
wrappedPtrCalloc = Int -> IO (Ptr VideoCropMeta)
forall a. Int -> IO (Ptr a)
callocBytes 32
    wrappedPtrCopy :: VideoCropMeta -> IO VideoCropMeta
wrappedPtrCopy = \p :: VideoCropMeta
p -> VideoCropMeta
-> (Ptr VideoCropMeta -> IO VideoCropMeta) -> IO VideoCropMeta
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoCropMeta
p (Int -> Ptr VideoCropMeta -> IO (Ptr VideoCropMeta)
forall a. WrappedPtr a => Int -> Ptr a -> IO (Ptr a)
copyBytes 32 (Ptr VideoCropMeta -> IO (Ptr VideoCropMeta))
-> (Ptr VideoCropMeta -> IO VideoCropMeta)
-> Ptr VideoCropMeta
-> IO VideoCropMeta
forall (m :: * -> *) a b c.
Monad m =>
(a -> m b) -> (b -> m c) -> a -> m c
>=> (ManagedPtr VideoCropMeta -> VideoCropMeta)
-> Ptr VideoCropMeta -> IO VideoCropMeta
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr VideoCropMeta -> VideoCropMeta
VideoCropMeta)
    wrappedPtrFree :: Maybe (GDestroyNotify VideoCropMeta)
wrappedPtrFree = GDestroyNotify VideoCropMeta
-> Maybe (GDestroyNotify VideoCropMeta)
forall a. a -> Maybe a
Just GDestroyNotify VideoCropMeta
forall a. FunPtr (Ptr a -> IO ())
ptr_to_g_free

-- | Construct a `VideoCropMeta` struct initialized to zero.
newZeroVideoCropMeta :: MonadIO m => m VideoCropMeta
newZeroVideoCropMeta :: m VideoCropMeta
newZeroVideoCropMeta = IO VideoCropMeta -> m VideoCropMeta
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO VideoCropMeta -> m VideoCropMeta)
-> IO VideoCropMeta -> m VideoCropMeta
forall a b. (a -> b) -> a -> b
$ IO (Ptr VideoCropMeta)
forall a. WrappedPtr a => IO (Ptr a)
wrappedPtrCalloc IO (Ptr VideoCropMeta)
-> (Ptr VideoCropMeta -> IO VideoCropMeta) -> IO VideoCropMeta
forall (m :: * -> *) a b. Monad m => m a -> (a -> m b) -> m b
>>= (ManagedPtr VideoCropMeta -> VideoCropMeta)
-> Ptr VideoCropMeta -> IO VideoCropMeta
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
wrapPtr ManagedPtr VideoCropMeta -> VideoCropMeta
VideoCropMeta

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


-- | A convenience alias for `Nothing` :: `Maybe` `VideoCropMeta`.
noVideoCropMeta :: Maybe VideoCropMeta
noVideoCropMeta :: Maybe VideoCropMeta
noVideoCropMeta = Maybe VideoCropMeta
forall a. Maybe a
Nothing

-- | 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' videoCropMeta #meta
-- @
getVideoCropMetaMeta :: MonadIO m => VideoCropMeta -> m Gst.Meta.Meta
getVideoCropMetaMeta :: VideoCropMeta -> m Meta
getVideoCropMetaMeta s :: VideoCropMeta
s = IO Meta -> m Meta
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
$ VideoCropMeta -> (Ptr VideoCropMeta -> IO Meta) -> IO Meta
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
withManagedPtr VideoCropMeta
s ((Ptr VideoCropMeta -> IO Meta) -> IO Meta)
-> (Ptr VideoCropMeta -> IO Meta) -> IO Meta
forall a b. (a -> b) -> a -> b
$ \ptr :: Ptr VideoCropMeta
ptr -> do
    let val :: Ptr Meta
val = Ptr VideoCropMeta
ptr Ptr VideoCropMeta -> Int -> Ptr Meta
forall a b. Ptr a -> Int -> Ptr b
`plusPtr` 0 :: (Ptr Gst.Meta.Meta)
    Meta
val' <- ((ManagedPtr Meta -> Meta) -> Ptr Meta -> IO Meta
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr Meta -> Meta
Gst.Meta.Meta) Ptr Meta
val
    Meta -> IO Meta
forall (m :: * -> *) a. Monad m => a -> m a
return Meta
val'

#if defined(ENABLE_OVERLOADING)
data VideoCropMetaMetaFieldInfo
instance AttrInfo VideoCropMetaMetaFieldInfo where
    type AttrBaseTypeConstraint VideoCropMetaMetaFieldInfo = (~) VideoCropMeta
    type AttrAllowedOps VideoCropMetaMetaFieldInfo = '[ 'AttrGet]
    type AttrSetTypeConstraint VideoCropMetaMetaFieldInfo = (~) (Ptr Gst.Meta.Meta)
    type AttrTransferTypeConstraint VideoCropMetaMetaFieldInfo = (~)(Ptr Gst.Meta.Meta)
    type AttrTransferType VideoCropMetaMetaFieldInfo = (Ptr Gst.Meta.Meta)
    type AttrGetType VideoCropMetaMetaFieldInfo = Gst.Meta.Meta
    type AttrLabel VideoCropMetaMetaFieldInfo = "meta"
    type AttrOrigin VideoCropMetaMetaFieldInfo = VideoCropMeta
    attrGet = getVideoCropMetaMeta
    attrSet = undefined
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer = undefined

videoCropMeta_meta :: AttrLabelProxy "meta"
videoCropMeta_meta = AttrLabelProxy

#endif


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

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

#if defined(ENABLE_OVERLOADING)
data VideoCropMetaXFieldInfo
instance AttrInfo VideoCropMetaXFieldInfo where
    type AttrBaseTypeConstraint VideoCropMetaXFieldInfo = (~) VideoCropMeta
    type AttrAllowedOps VideoCropMetaXFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint VideoCropMetaXFieldInfo = (~) Word32
    type AttrTransferTypeConstraint VideoCropMetaXFieldInfo = (~)Word32
    type AttrTransferType VideoCropMetaXFieldInfo = Word32
    type AttrGetType VideoCropMetaXFieldInfo = Word32
    type AttrLabel VideoCropMetaXFieldInfo = "x"
    type AttrOrigin VideoCropMetaXFieldInfo = VideoCropMeta
    attrGet = getVideoCropMetaX
    attrSet = setVideoCropMetaX
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

videoCropMeta_x :: AttrLabelProxy "x"
videoCropMeta_x = AttrLabelProxy

#endif


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

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

#if defined(ENABLE_OVERLOADING)
data VideoCropMetaYFieldInfo
instance AttrInfo VideoCropMetaYFieldInfo where
    type AttrBaseTypeConstraint VideoCropMetaYFieldInfo = (~) VideoCropMeta
    type AttrAllowedOps VideoCropMetaYFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint VideoCropMetaYFieldInfo = (~) Word32
    type AttrTransferTypeConstraint VideoCropMetaYFieldInfo = (~)Word32
    type AttrTransferType VideoCropMetaYFieldInfo = Word32
    type AttrGetType VideoCropMetaYFieldInfo = Word32
    type AttrLabel VideoCropMetaYFieldInfo = "y"
    type AttrOrigin VideoCropMetaYFieldInfo = VideoCropMeta
    attrGet = getVideoCropMetaY
    attrSet = setVideoCropMetaY
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

videoCropMeta_y :: AttrLabelProxy "y"
videoCropMeta_y = AttrLabelProxy

#endif


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

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

#if defined(ENABLE_OVERLOADING)
data VideoCropMetaWidthFieldInfo
instance AttrInfo VideoCropMetaWidthFieldInfo where
    type AttrBaseTypeConstraint VideoCropMetaWidthFieldInfo = (~) VideoCropMeta
    type AttrAllowedOps VideoCropMetaWidthFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint VideoCropMetaWidthFieldInfo = (~) Word32
    type AttrTransferTypeConstraint VideoCropMetaWidthFieldInfo = (~)Word32
    type AttrTransferType VideoCropMetaWidthFieldInfo = Word32
    type AttrGetType VideoCropMetaWidthFieldInfo = Word32
    type AttrLabel VideoCropMetaWidthFieldInfo = "width"
    type AttrOrigin VideoCropMetaWidthFieldInfo = VideoCropMeta
    attrGet = getVideoCropMetaWidth
    attrSet = setVideoCropMetaWidth
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

videoCropMeta_width :: AttrLabelProxy "width"
videoCropMeta_width = AttrLabelProxy

#endif


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

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

#if defined(ENABLE_OVERLOADING)
data VideoCropMetaHeightFieldInfo
instance AttrInfo VideoCropMetaHeightFieldInfo where
    type AttrBaseTypeConstraint VideoCropMetaHeightFieldInfo = (~) VideoCropMeta
    type AttrAllowedOps VideoCropMetaHeightFieldInfo = '[ 'AttrSet, 'AttrGet]
    type AttrSetTypeConstraint VideoCropMetaHeightFieldInfo = (~) Word32
    type AttrTransferTypeConstraint VideoCropMetaHeightFieldInfo = (~)Word32
    type AttrTransferType VideoCropMetaHeightFieldInfo = Word32
    type AttrGetType VideoCropMetaHeightFieldInfo = Word32
    type AttrLabel VideoCropMetaHeightFieldInfo = "height"
    type AttrOrigin VideoCropMetaHeightFieldInfo = VideoCropMeta
    attrGet = getVideoCropMetaHeight
    attrSet = setVideoCropMetaHeight
    attrConstruct = undefined
    attrClear = undefined
    attrTransfer _ v = do
        return v

videoCropMeta_height :: AttrLabelProxy "height"
videoCropMeta_height = AttrLabelProxy

#endif



#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList VideoCropMeta
type instance O.AttributeList VideoCropMeta = VideoCropMetaAttributeList
type VideoCropMetaAttributeList = ('[ '("meta", VideoCropMetaMetaFieldInfo), '("x", VideoCropMetaXFieldInfo), '("y", VideoCropMetaYFieldInfo), '("width", VideoCropMetaWidthFieldInfo), '("height", VideoCropMetaHeightFieldInfo)] :: [(Symbol, *)])
#endif

-- method VideoCropMeta::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_crop_meta_get_info" gst_video_crop_meta_get_info :: 
    IO (Ptr Gst.MetaInfo.MetaInfo)

-- | /No description available in the introspection data./
videoCropMetaGetInfo ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m Gst.MetaInfo.MetaInfo
videoCropMetaGetInfo :: m MetaInfo
videoCropMetaGetInfo  = IO MetaInfo -> m MetaInfo
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_crop_meta_get_info
    Text -> Ptr MetaInfo -> IO ()
forall a. HasCallStack => Text -> Ptr a -> IO ()
checkUnexpectedReturnNULL "videoCropMetaGetInfo" Ptr MetaInfo
result
    MetaInfo
result' <- ((ManagedPtr MetaInfo -> MetaInfo) -> Ptr MetaInfo -> IO MetaInfo
forall a.
(HasCallStack, WrappedPtr a) =>
(ManagedPtr a -> a) -> Ptr a -> IO a
newPtr ManagedPtr MetaInfo -> MetaInfo
Gst.MetaInfo.MetaInfo) Ptr MetaInfo
result
    MetaInfo -> IO MetaInfo
forall (m :: * -> *) a. Monad m => a -> m a
return MetaInfo
result'

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type family ResolveVideoCropMetaMethod (t :: Symbol) (o :: *) :: * where
    ResolveVideoCropMetaMethod l o = O.MethodResolutionFailed l o

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

#endif