packages feed

gi-gstvideo-0.1.6.13: GI/GstVideo/Interfaces/ColorBalance.hs


{- |
Copyright  : Will Thompson, Iñaki García Etxebarria and Jonas Platte
License    : LGPL-2.1
Maintainer : Iñaki García Etxebarria (garetxe@gmail.com)
-}

module GI.GstVideo.Interfaces.ColorBalance
    ( 

-- * Exported types
    ColorBalance(..)                        ,
    noColorBalance                          ,
    ColorBalanceK                           ,


 -- * Methods
-- ** colorBalanceGetBalanceType
    ColorBalanceGetBalanceTypeMethodInfo    ,
    colorBalanceGetBalanceType              ,


-- ** colorBalanceGetValue
    ColorBalanceGetValueMethodInfo          ,
    colorBalanceGetValue                    ,


-- ** colorBalanceListChannels
    ColorBalanceListChannelsMethodInfo      ,
    colorBalanceListChannels                ,


-- ** colorBalanceSetValue
    ColorBalanceSetValueMethodInfo          ,
    colorBalanceSetValue                    ,


-- ** colorBalanceValueChanged
    ColorBalanceValueChangedMethodInfo      ,
    colorBalanceValueChanged                ,




 -- * Signals
-- ** ValueChanged
    ColorBalanceValueChangedCallback        ,
    ColorBalanceValueChangedCallbackC       ,
    ColorBalanceValueChangedSignalInfo      ,
    afterColorBalanceValueChanged           ,
    colorBalanceValueChangedCallbackWrapper ,
    colorBalanceValueChangedClosure         ,
    mkColorBalanceValueChangedCallback      ,
    noColorBalanceValueChangedCallback      ,
    onColorBalanceValueChanged              ,




    ) 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.GstVideo.Types
import GI.GstVideo.Callbacks

-- interface ColorBalance 

newtype ColorBalance = ColorBalance (ForeignPtr ColorBalance)
noColorBalance :: Maybe ColorBalance
noColorBalance = Nothing

type family ResolveColorBalanceMethod (t :: Symbol) (o :: *) :: * where
    ResolveColorBalanceMethod "listChannels" o = ColorBalanceListChannelsMethodInfo
    ResolveColorBalanceMethod "valueChanged" o = ColorBalanceValueChangedMethodInfo
    ResolveColorBalanceMethod "getBalanceType" o = ColorBalanceGetBalanceTypeMethodInfo
    ResolveColorBalanceMethod "getValue" o = ColorBalanceGetValueMethodInfo
    ResolveColorBalanceMethod "setValue" o = ColorBalanceSetValueMethodInfo
    ResolveColorBalanceMethod l o = MethodResolutionFailed l o

instance (info ~ ResolveColorBalanceMethod t ColorBalance, MethodInfo info ColorBalance p) => IsLabelProxy t (ColorBalance -> p) where
    fromLabelProxy _ = overloadedMethod (MethodProxy :: MethodProxy info)

#if MIN_VERSION_base(4,9,0)
instance (info ~ ResolveColorBalanceMethod t ColorBalance, MethodInfo info ColorBalance p) => IsLabel t (ColorBalance -> p) where
    fromLabel _ = overloadedMethod (MethodProxy :: MethodProxy info)
#endif

-- signal ColorBalance::value-changed
type ColorBalanceValueChangedCallback =
    ColorBalanceChannel ->
    Int32 ->
    IO ()

noColorBalanceValueChangedCallback :: Maybe ColorBalanceValueChangedCallback
noColorBalanceValueChangedCallback = Nothing

type ColorBalanceValueChangedCallbackC =
    Ptr () ->                               -- object
    Ptr ColorBalanceChannel ->
    Int32 ->
    Ptr () ->                               -- user_data
    IO ()

foreign import ccall "wrapper"
    mkColorBalanceValueChangedCallback :: ColorBalanceValueChangedCallbackC -> IO (FunPtr ColorBalanceValueChangedCallbackC)

colorBalanceValueChangedClosure :: ColorBalanceValueChangedCallback -> IO Closure
colorBalanceValueChangedClosure cb = newCClosure =<< mkColorBalanceValueChangedCallback wrapped
    where wrapped = colorBalanceValueChangedCallbackWrapper cb

colorBalanceValueChangedCallbackWrapper ::
    ColorBalanceValueChangedCallback ->
    Ptr () ->
    Ptr ColorBalanceChannel ->
    Int32 ->
    Ptr () ->
    IO ()
colorBalanceValueChangedCallbackWrapper _cb _ channel value _ = do
    channel' <- (newObject ColorBalanceChannel) channel
    _cb  channel' value

onColorBalanceValueChanged :: (GObject a, MonadIO m) => a -> ColorBalanceValueChangedCallback -> m SignalHandlerId
onColorBalanceValueChanged obj cb = liftIO $ connectColorBalanceValueChanged obj cb SignalConnectBefore
afterColorBalanceValueChanged :: (GObject a, MonadIO m) => a -> ColorBalanceValueChangedCallback -> m SignalHandlerId
afterColorBalanceValueChanged obj cb = connectColorBalanceValueChanged obj cb SignalConnectAfter

connectColorBalanceValueChanged :: (GObject a, MonadIO m) =>
                                   a -> ColorBalanceValueChangedCallback -> SignalConnectMode -> m SignalHandlerId
connectColorBalanceValueChanged obj cb after = liftIO $ do
    cb' <- mkColorBalanceValueChangedCallback (colorBalanceValueChangedCallbackWrapper cb)
    connectSignalFunPtr obj "value-changed" cb' after

type instance AttributeList ColorBalance = ColorBalanceAttributeList
type ColorBalanceAttributeList = ('[ ] :: [(Symbol, *)])

data ColorBalanceValueChangedSignalInfo
instance SignalInfo ColorBalanceValueChangedSignalInfo where
    type HaskellCallbackType ColorBalanceValueChangedSignalInfo = ColorBalanceValueChangedCallback
    connectSignal _ = connectColorBalanceValueChanged

type instance SignalList ColorBalance = ColorBalanceSignalList
type ColorBalanceSignalList = ('[ '("valueChanged", ColorBalanceValueChangedSignalInfo)] :: [(Symbol, *)])

class ForeignPtrNewtype a => ColorBalanceK a
instance (ForeignPtrNewtype o, IsDescendantOf ColorBalance o) => ColorBalanceK o
type instance ParentTypes ColorBalance = ColorBalanceParentTypes
type ColorBalanceParentTypes = '[]

-- method ColorBalance::get_balance_type
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GstVideo" "ColorBalance", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TInterface "GstVideo" "ColorBalanceType"
-- throws : False
-- Skip return : False

foreign import ccall "gst_color_balance_get_balance_type" gst_color_balance_get_balance_type :: 
    Ptr ColorBalance ->                     -- _obj : TInterface "GstVideo" "ColorBalance"
    IO CUInt


colorBalanceGetBalanceType ::
    (MonadIO m, ColorBalanceK a) =>
    a                                       -- _obj
    -> m ColorBalanceType                   -- result
colorBalanceGetBalanceType _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_color_balance_get_balance_type _obj'
    let result' = (toEnum . fromIntegral) result
    touchManagedPtr _obj
    return result'

data ColorBalanceGetBalanceTypeMethodInfo
instance (signature ~ (m ColorBalanceType), MonadIO m, ColorBalanceK a) => MethodInfo ColorBalanceGetBalanceTypeMethodInfo a signature where
    overloadedMethod _ = colorBalanceGetBalanceType

-- method ColorBalance::get_value
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GstVideo" "ColorBalance", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "channel", argType = TInterface "GstVideo" "ColorBalanceChannel", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TInt32
-- throws : False
-- Skip return : False

foreign import ccall "gst_color_balance_get_value" gst_color_balance_get_value :: 
    Ptr ColorBalance ->                     -- _obj : TInterface "GstVideo" "ColorBalance"
    Ptr ColorBalanceChannel ->              -- channel : TInterface "GstVideo" "ColorBalanceChannel"
    IO Int32


colorBalanceGetValue ::
    (MonadIO m, ColorBalanceK a, ColorBalanceChannelK b) =>
    a                                       -- _obj
    -> b                                    -- channel
    -> m Int32                              -- result
colorBalanceGetValue _obj channel = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let channel' = unsafeManagedPtrCastPtr channel
    result <- gst_color_balance_get_value _obj' channel'
    touchManagedPtr _obj
    touchManagedPtr channel
    return result

data ColorBalanceGetValueMethodInfo
instance (signature ~ (b -> m Int32), MonadIO m, ColorBalanceK a, ColorBalanceChannelK b) => MethodInfo ColorBalanceGetValueMethodInfo a signature where
    overloadedMethod _ = colorBalanceGetValue

-- method ColorBalance::list_channels
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GstVideo" "ColorBalance", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TGList (TInterface "GstVideo" "ColorBalanceChannel")
-- throws : False
-- Skip return : False

foreign import ccall "gst_color_balance_list_channels" gst_color_balance_list_channels :: 
    Ptr ColorBalance ->                     -- _obj : TInterface "GstVideo" "ColorBalance"
    IO (Ptr (GList (Ptr ColorBalanceChannel)))


colorBalanceListChannels ::
    (MonadIO m, ColorBalanceK a) =>
    a                                       -- _obj
    -> m [ColorBalanceChannel]              -- result
colorBalanceListChannels _obj = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    result <- gst_color_balance_list_channels _obj'
    checkUnexpectedReturnNULL "gst_color_balance_list_channels" result
    result' <- unpackGList result
    result'' <- mapM (newObject ColorBalanceChannel) result'
    touchManagedPtr _obj
    return result''

data ColorBalanceListChannelsMethodInfo
instance (signature ~ (m [ColorBalanceChannel]), MonadIO m, ColorBalanceK a) => MethodInfo ColorBalanceListChannelsMethodInfo a signature where
    overloadedMethod _ = colorBalanceListChannels

-- method ColorBalance::set_value
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GstVideo" "ColorBalance", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "channel", argType = TInterface "GstVideo" "ColorBalanceChannel", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_color_balance_set_value" gst_color_balance_set_value :: 
    Ptr ColorBalance ->                     -- _obj : TInterface "GstVideo" "ColorBalance"
    Ptr ColorBalanceChannel ->              -- channel : TInterface "GstVideo" "ColorBalanceChannel"
    Int32 ->                                -- value : TBasicType TInt32
    IO ()


colorBalanceSetValue ::
    (MonadIO m, ColorBalanceK a, ColorBalanceChannelK b) =>
    a                                       -- _obj
    -> b                                    -- channel
    -> Int32                                -- value
    -> m ()                                 -- result
colorBalanceSetValue _obj channel value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let channel' = unsafeManagedPtrCastPtr channel
    gst_color_balance_set_value _obj' channel' value
    touchManagedPtr _obj
    touchManagedPtr channel
    return ()

data ColorBalanceSetValueMethodInfo
instance (signature ~ (b -> Int32 -> m ()), MonadIO m, ColorBalanceK a, ColorBalanceChannelK b) => MethodInfo ColorBalanceSetValueMethodInfo a signature where
    overloadedMethod _ = colorBalanceSetValue

-- method ColorBalance::value_changed
-- method type : OrdinaryMethod
-- Args : [Arg {argCName = "_obj", argType = TInterface "GstVideo" "ColorBalance", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "channel", argType = TInterface "GstVideo" "ColorBalanceChannel", direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TInt32, direction = DirectionIn, mayBeNull = False, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}]
-- Lengths : []
-- returnType : TBasicType TVoid
-- throws : False
-- Skip return : False

foreign import ccall "gst_color_balance_value_changed" gst_color_balance_value_changed :: 
    Ptr ColorBalance ->                     -- _obj : TInterface "GstVideo" "ColorBalance"
    Ptr ColorBalanceChannel ->              -- channel : TInterface "GstVideo" "ColorBalanceChannel"
    Int32 ->                                -- value : TBasicType TInt32
    IO ()


colorBalanceValueChanged ::
    (MonadIO m, ColorBalanceK a, ColorBalanceChannelK b) =>
    a                                       -- _obj
    -> b                                    -- channel
    -> Int32                                -- value
    -> m ()                                 -- result
colorBalanceValueChanged _obj channel value = liftIO $ do
    let _obj' = unsafeManagedPtrCastPtr _obj
    let channel' = unsafeManagedPtrCastPtr channel
    gst_color_balance_value_changed _obj' channel' value
    touchManagedPtr _obj
    touchManagedPtr channel
    return ()

data ColorBalanceValueChangedMethodInfo
instance (signature ~ (b -> Int32 -> m ()), MonadIO m, ColorBalanceK a, ColorBalanceChannelK b) => MethodInfo ColorBalanceValueChangedMethodInfo a signature where
    overloadedMethod _ = colorBalanceValueChanged