{- | Copyright : Will Thompson, Iñaki García Etxebarria and Jonas Platte License : LGPL-2.1 Maintainer : Iñaki García Etxebarria (inaki@blueleaf.cc) This interface is implemented by elements which can perform some color balance operation on video frames they process. For example, modifying the brightness, contrast, hue or saturation. Example elements are \'xvimagesink\' and \'colorbalance\' -} #define ENABLE_OVERLOADING (MIN_VERSION_haskell_gi_overloading(1,0,0) \ && !defined(__HADDOCK_VERSION__)) module GI.GstVideo.Interfaces.ColorBalance ( -- * Exported types ColorBalance(..) , noColorBalance , IsColorBalance , toColorBalance , -- * Methods -- ** getBalanceType #method:getBalanceType# #if ENABLE_OVERLOADING ColorBalanceGetBalanceTypeMethodInfo , #endif colorBalanceGetBalanceType , -- ** getValue #method:getValue# #if ENABLE_OVERLOADING ColorBalanceGetValueMethodInfo , #endif colorBalanceGetValue , -- ** listChannels #method:listChannels# #if ENABLE_OVERLOADING ColorBalanceListChannelsMethodInfo , #endif colorBalanceListChannels , -- ** setValue #method:setValue# #if ENABLE_OVERLOADING ColorBalanceSetValueMethodInfo , #endif colorBalanceSetValue , -- ** valueChanged #method:valueChanged# #if ENABLE_OVERLOADING ColorBalanceValueChangedMethodInfo , #endif colorBalanceValueChanged , -- * Signals -- ** valueChanged #signal:valueChanged# C_ColorBalanceValueChangedCallback , ColorBalanceValueChangedCallback , #if ENABLE_OVERLOADING ColorBalanceValueChangedSignalInfo , #endif afterColorBalanceValueChanged , genClosure_ColorBalanceValueChanged , mk_ColorBalanceValueChangedCallback , noColorBalanceValueChangedCallback , onColorBalanceValueChanged , wrap_ColorBalanceValueChangedCallback , ) 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.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.GObject.Objects.Object as GObject.Object import {-# SOURCE #-} qualified GI.GstVideo.Enums as GstVideo.Enums import {-# SOURCE #-} qualified GI.GstVideo.Objects.ColorBalanceChannel as GstVideo.ColorBalanceChannel -- interface ColorBalance -- | Memory-managed wrapper type. newtype ColorBalance = ColorBalance (ManagedPtr ColorBalance) -- | A convenience alias for `Nothing` :: `Maybe` `ColorBalance`. noColorBalance :: Maybe ColorBalance noColorBalance = Nothing -- signal ColorBalance::value-changed {- | Fired when the value of the indicated channel has changed. -} type ColorBalanceValueChangedCallback = GstVideo.ColorBalanceChannel.ColorBalanceChannel {- ^ /@channel@/: The 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel' -} -> Int32 {- ^ /@value@/: The new value -} -> IO () -- | A convenience synonym for @`Nothing` :: `Maybe` `ColorBalanceValueChangedCallback`@. noColorBalanceValueChangedCallback :: Maybe ColorBalanceValueChangedCallback noColorBalanceValueChangedCallback = Nothing -- | Type for the callback on the (unwrapped) C side. type C_ColorBalanceValueChangedCallback = Ptr () -> -- object Ptr GstVideo.ColorBalanceChannel.ColorBalanceChannel -> Int32 -> Ptr () -> -- user_data IO () -- | Generate a function pointer callable from C code, from a `C_ColorBalanceValueChangedCallback`. foreign import ccall "wrapper" mk_ColorBalanceValueChangedCallback :: C_ColorBalanceValueChangedCallback -> IO (FunPtr C_ColorBalanceValueChangedCallback) -- | Wrap the callback into a `GClosure`. genClosure_ColorBalanceValueChanged :: MonadIO m => ColorBalanceValueChangedCallback -> m (GClosure C_ColorBalanceValueChangedCallback) genClosure_ColorBalanceValueChanged cb = liftIO $ do let cb' = wrap_ColorBalanceValueChangedCallback cb mk_ColorBalanceValueChangedCallback cb' >>= B.GClosure.newGClosure -- | Wrap a `ColorBalanceValueChangedCallback` into a `C_ColorBalanceValueChangedCallback`. wrap_ColorBalanceValueChangedCallback :: ColorBalanceValueChangedCallback -> C_ColorBalanceValueChangedCallback wrap_ColorBalanceValueChangedCallback _cb _ channel value _ = do channel' <- (newObject GstVideo.ColorBalanceChannel.ColorBalanceChannel) channel _cb channel' value {- | Connect a signal handler for the “@value-changed@” signal, to be run before the default handler. When is enabled, this is equivalent to @ 'Data.GI.Base.Signals.on' colorBalance #valueChanged callback @ -} onColorBalanceValueChanged :: (IsColorBalance a, MonadIO m) => a -> ColorBalanceValueChangedCallback -> m SignalHandlerId onColorBalanceValueChanged obj cb = liftIO $ do let cb' = wrap_ColorBalanceValueChangedCallback cb cb'' <- mk_ColorBalanceValueChangedCallback cb' connectSignalFunPtr obj "value-changed" cb'' SignalConnectBefore {- | Connect a signal handler for the “@value-changed@” signal, to be run after the default handler. When is enabled, this is equivalent to @ 'Data.GI.Base.Signals.after' colorBalance #valueChanged callback @ -} afterColorBalanceValueChanged :: (IsColorBalance a, MonadIO m) => a -> ColorBalanceValueChangedCallback -> m SignalHandlerId afterColorBalanceValueChanged obj cb = liftIO $ do let cb' = wrap_ColorBalanceValueChangedCallback cb cb'' <- mk_ColorBalanceValueChangedCallback cb' connectSignalFunPtr obj "value-changed" cb'' SignalConnectAfter #if ENABLE_OVERLOADING data ColorBalanceValueChangedSignalInfo instance SignalInfo ColorBalanceValueChangedSignalInfo where type HaskellCallbackType ColorBalanceValueChangedSignalInfo = ColorBalanceValueChangedCallback connectSignal _ obj cb connectMode = do let cb' = wrap_ColorBalanceValueChangedCallback cb cb'' <- mk_ColorBalanceValueChangedCallback cb' connectSignalFunPtr obj "value-changed" cb'' connectMode type instance O.SignalList ColorBalance = ColorBalanceSignalList type ColorBalanceSignalList = ('[ '("notify", GObject.Object.ObjectNotifySignalInfo), '("valueChanged", ColorBalanceValueChangedSignalInfo)] :: [(Symbol, *)]) #endif foreign import ccall "gst_color_balance_get_type" c_gst_color_balance_get_type :: IO GType instance GObject ColorBalance where gobjectType = c_gst_color_balance_get_type -- | Type class for types which can be safely cast to `ColorBalance`, for instance with `toColorBalance`. class (GObject o, O.IsDescendantOf ColorBalance o) => IsColorBalance o instance (GObject o, O.IsDescendantOf ColorBalance o) => IsColorBalance o instance O.HasParentTypes ColorBalance type instance O.ParentTypes ColorBalance = '[GObject.Object.Object] -- | Cast to `ColorBalance`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`. toColorBalance :: (MonadIO m, IsColorBalance o) => o -> m ColorBalance toColorBalance = liftIO . unsafeCastTo ColorBalance #if ENABLE_OVERLOADING instance O.HasAttributeList ColorBalance type instance O.AttributeList ColorBalance = ColorBalanceAttributeList type ColorBalanceAttributeList = ('[ ] :: [(Symbol, *)]) #endif #if ENABLE_OVERLOADING #endif #if ENABLE_OVERLOADING type family ResolveColorBalanceMethod (t :: Symbol) (o :: *) :: * where ResolveColorBalanceMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo ResolveColorBalanceMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo ResolveColorBalanceMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo ResolveColorBalanceMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo ResolveColorBalanceMethod "getv" o = GObject.Object.ObjectGetvMethodInfo ResolveColorBalanceMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo ResolveColorBalanceMethod "listChannels" o = ColorBalanceListChannelsMethodInfo ResolveColorBalanceMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo ResolveColorBalanceMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo ResolveColorBalanceMethod "ref" o = GObject.Object.ObjectRefMethodInfo ResolveColorBalanceMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo ResolveColorBalanceMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo ResolveColorBalanceMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo ResolveColorBalanceMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo ResolveColorBalanceMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo ResolveColorBalanceMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo ResolveColorBalanceMethod "valueChanged" o = ColorBalanceValueChangedMethodInfo ResolveColorBalanceMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo ResolveColorBalanceMethod "getBalanceType" o = ColorBalanceGetBalanceTypeMethodInfo ResolveColorBalanceMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo ResolveColorBalanceMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo ResolveColorBalanceMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo ResolveColorBalanceMethod "getValue" o = ColorBalanceGetValueMethodInfo ResolveColorBalanceMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo ResolveColorBalanceMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo ResolveColorBalanceMethod "setValue" o = ColorBalanceSetValueMethodInfo ResolveColorBalanceMethod l o = O.MethodResolutionFailed l o instance (info ~ ResolveColorBalanceMethod t ColorBalance, O.MethodInfo info ColorBalance p) => OL.IsLabel t (ColorBalance -> p) where #if MIN_VERSION_base(4,10,0) fromLabel = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #else fromLabel _ = O.overloadedMethod (O.MethodProxy :: O.MethodProxy info) #endif #endif -- method ColorBalance::get_balance_type -- method type : OrdinaryMethod -- Args : [Arg {argCName = "balance", argType = TInterface (Name {namespace = "GstVideo", name = "ColorBalance"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The #GstColorBalance implementation", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TInterface (Name {namespace = "GstVideo", name = "ColorBalanceType"})) -- throws : False -- Skip return : False foreign import ccall "gst_color_balance_get_balance_type" gst_color_balance_get_balance_type :: Ptr ColorBalance -> -- balance : TInterface (Name {namespace = "GstVideo", name = "ColorBalance"}) IO CUInt {- | Get the 'GI.GstVideo.Enums.ColorBalanceType' of this implementation. -} colorBalanceGetBalanceType :: (B.CallStack.HasCallStack, MonadIO m, IsColorBalance a) => a {- ^ /@balance@/: The 'GI.GstVideo.Interfaces.ColorBalance.ColorBalance' implementation -} -> m GstVideo.Enums.ColorBalanceType {- ^ __Returns:__ A the 'GI.GstVideo.Enums.ColorBalanceType'. -} colorBalanceGetBalanceType balance = liftIO $ do balance' <- unsafeManagedPtrCastPtr balance result <- gst_color_balance_get_balance_type balance' let result' = (toEnum . fromIntegral) result touchManagedPtr balance return result' #if ENABLE_OVERLOADING data ColorBalanceGetBalanceTypeMethodInfo instance (signature ~ (m GstVideo.Enums.ColorBalanceType), MonadIO m, IsColorBalance a) => O.MethodInfo ColorBalanceGetBalanceTypeMethodInfo a signature where overloadedMethod _ = colorBalanceGetBalanceType #endif -- method ColorBalance::get_value -- method type : OrdinaryMethod -- Args : [Arg {argCName = "balance", argType = TInterface (Name {namespace = "GstVideo", name = "ColorBalance"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstColorBalance instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "channel", argType = TInterface (Name {namespace = "GstVideo", name = "ColorBalanceChannel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstColorBalanceChannel instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TBasicType TInt) -- throws : False -- Skip return : False foreign import ccall "gst_color_balance_get_value" gst_color_balance_get_value :: Ptr ColorBalance -> -- balance : TInterface (Name {namespace = "GstVideo", name = "ColorBalance"}) Ptr GstVideo.ColorBalanceChannel.ColorBalanceChannel -> -- channel : TInterface (Name {namespace = "GstVideo", name = "ColorBalanceChannel"}) IO Int32 {- | Retrieve the current value of the indicated channel, between min_value and max_value. See Also: The 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel'.@/min_value/@ and 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel'.@/max_value/@ members of the 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel' object. -} colorBalanceGetValue :: (B.CallStack.HasCallStack, MonadIO m, IsColorBalance a, GstVideo.ColorBalanceChannel.IsColorBalanceChannel b) => a {- ^ /@balance@/: A 'GI.GstVideo.Interfaces.ColorBalance.ColorBalance' instance -} -> b {- ^ /@channel@/: A 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel' instance -} -> m Int32 {- ^ __Returns:__ The current value of the channel. -} colorBalanceGetValue balance channel = liftIO $ do balance' <- unsafeManagedPtrCastPtr balance channel' <- unsafeManagedPtrCastPtr channel result <- gst_color_balance_get_value balance' channel' touchManagedPtr balance touchManagedPtr channel return result #if ENABLE_OVERLOADING data ColorBalanceGetValueMethodInfo instance (signature ~ (b -> m Int32), MonadIO m, IsColorBalance a, GstVideo.ColorBalanceChannel.IsColorBalanceChannel b) => O.MethodInfo ColorBalanceGetValueMethodInfo a signature where overloadedMethod _ = colorBalanceGetValue #endif -- method ColorBalance::list_channels -- method type : OrdinaryMethod -- Args : [Arg {argCName = "balance", argType = TInterface (Name {namespace = "GstVideo", name = "ColorBalance"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstColorBalance instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Just (TGList (TInterface (Name {namespace = "GstVideo", name = "ColorBalanceChannel"}))) -- throws : False -- Skip return : False foreign import ccall "gst_color_balance_list_channels" gst_color_balance_list_channels :: Ptr ColorBalance -> -- balance : TInterface (Name {namespace = "GstVideo", name = "ColorBalance"}) IO (Ptr (GList (Ptr GstVideo.ColorBalanceChannel.ColorBalanceChannel))) {- | Retrieve a list of the available channels. -} colorBalanceListChannels :: (B.CallStack.HasCallStack, MonadIO m, IsColorBalance a) => a {- ^ /@balance@/: A 'GI.GstVideo.Interfaces.ColorBalance.ColorBalance' instance -} -> m [GstVideo.ColorBalanceChannel.ColorBalanceChannel] {- ^ __Returns:__ A GList containing pointers to 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel' objects. The list is owned by the 'GI.GstVideo.Interfaces.ColorBalance.ColorBalance' instance and must not be freed. -} colorBalanceListChannels balance = liftIO $ do balance' <- unsafeManagedPtrCastPtr balance result <- gst_color_balance_list_channels balance' result' <- unpackGList result result'' <- mapM (newObject GstVideo.ColorBalanceChannel.ColorBalanceChannel) result' touchManagedPtr balance return result'' #if ENABLE_OVERLOADING data ColorBalanceListChannelsMethodInfo instance (signature ~ (m [GstVideo.ColorBalanceChannel.ColorBalanceChannel]), MonadIO m, IsColorBalance a) => O.MethodInfo ColorBalanceListChannelsMethodInfo a signature where overloadedMethod _ = colorBalanceListChannels #endif -- method ColorBalance::set_value -- method type : OrdinaryMethod -- Args : [Arg {argCName = "balance", argType = TInterface (Name {namespace = "GstVideo", name = "ColorBalance"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstColorBalance instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "channel", argType = TInterface (Name {namespace = "GstVideo", name = "ColorBalanceChannel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstColorBalanceChannel instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The new value for the channel.", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_color_balance_set_value" gst_color_balance_set_value :: Ptr ColorBalance -> -- balance : TInterface (Name {namespace = "GstVideo", name = "ColorBalance"}) Ptr GstVideo.ColorBalanceChannel.ColorBalanceChannel -> -- channel : TInterface (Name {namespace = "GstVideo", name = "ColorBalanceChannel"}) Int32 -> -- value : TBasicType TInt IO () {- | Sets the current value of the channel to the passed value, which must be between min_value and max_value. See Also: The 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel'.@/min_value/@ and 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel'.@/max_value/@ members of the 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel' object. -} colorBalanceSetValue :: (B.CallStack.HasCallStack, MonadIO m, IsColorBalance a, GstVideo.ColorBalanceChannel.IsColorBalanceChannel b) => a {- ^ /@balance@/: A 'GI.GstVideo.Interfaces.ColorBalance.ColorBalance' instance -} -> b {- ^ /@channel@/: A 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel' instance -} -> Int32 {- ^ /@value@/: The new value for the channel. -} -> m () colorBalanceSetValue balance channel value = liftIO $ do balance' <- unsafeManagedPtrCastPtr balance channel' <- unsafeManagedPtrCastPtr channel gst_color_balance_set_value balance' channel' value touchManagedPtr balance touchManagedPtr channel return () #if ENABLE_OVERLOADING data ColorBalanceSetValueMethodInfo instance (signature ~ (b -> Int32 -> m ()), MonadIO m, IsColorBalance a, GstVideo.ColorBalanceChannel.IsColorBalanceChannel b) => O.MethodInfo ColorBalanceSetValueMethodInfo a signature where overloadedMethod _ = colorBalanceSetValue #endif -- method ColorBalance::value_changed -- method type : OrdinaryMethod -- Args : [Arg {argCName = "balance", argType = TInterface (Name {namespace = "GstVideo", name = "ColorBalance"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstColorBalance instance", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "channel", argType = TInterface (Name {namespace = "GstVideo", name = "ColorBalanceChannel"}), direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "A #GstColorBalanceChannel whose value has changed", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing},Arg {argCName = "value", argType = TBasicType TInt, direction = DirectionIn, mayBeNull = False, argDoc = Documentation {rawDocText = Just "The new value of the channel", sinceVersion = Nothing}, argScope = ScopeTypeInvalid, argClosure = -1, argDestroy = -1, argCallerAllocates = False, transfer = TransferNothing}] -- Lengths : [] -- returnType : Nothing -- throws : False -- Skip return : False foreign import ccall "gst_color_balance_value_changed" gst_color_balance_value_changed :: Ptr ColorBalance -> -- balance : TInterface (Name {namespace = "GstVideo", name = "ColorBalance"}) Ptr GstVideo.ColorBalanceChannel.ColorBalanceChannel -> -- channel : TInterface (Name {namespace = "GstVideo", name = "ColorBalanceChannel"}) Int32 -> -- value : TBasicType TInt IO () {- | A helper function called by implementations of the GstColorBalance interface. It fires the 'GI.GstVideo.Interfaces.ColorBalance.ColorBalance'::@/value-changed/@ signal on the instance, and the 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel'::@/value-changed/@ signal on the channel object. -} colorBalanceValueChanged :: (B.CallStack.HasCallStack, MonadIO m, IsColorBalance a, GstVideo.ColorBalanceChannel.IsColorBalanceChannel b) => a {- ^ /@balance@/: A 'GI.GstVideo.Interfaces.ColorBalance.ColorBalance' instance -} -> b {- ^ /@channel@/: A 'GI.GstVideo.Objects.ColorBalanceChannel.ColorBalanceChannel' whose value has changed -} -> Int32 {- ^ /@value@/: The new value of the channel -} -> m () colorBalanceValueChanged balance channel value = liftIO $ do balance' <- unsafeManagedPtrCastPtr balance channel' <- unsafeManagedPtrCastPtr channel gst_color_balance_value_changed balance' channel' value touchManagedPtr balance touchManagedPtr channel return () #if ENABLE_OVERLOADING data ColorBalanceValueChangedMethodInfo instance (signature ~ (b -> Int32 -> m ()), MonadIO m, IsColorBalance a, GstVideo.ColorBalanceChannel.IsColorBalanceChannel b) => O.MethodInfo ColorBalanceValueChangedMethodInfo a signature where overloadedMethod _ = colorBalanceValueChanged #endif