{-# LANGUAGE TypeApplications #-}


-- | Copyright  : Will Thompson and Iñaki García Etxebarria
-- License    : LGPL-2.1
-- Maintainer : Iñaki García Etxebarria
-- 
-- t'GI.GES.Objects.SourceClip.SourceClip'-s are clips whose core elements are t'GI.GES.Objects.Source.Source'-s.
-- 
-- == Effects
-- 
-- t'GI.GES.Objects.SourceClip.SourceClip'-s can also have t'GI.GES.Objects.BaseEffect.BaseEffect'-s added as non-core
-- elements. These effects are applied to the core sources of the clip
-- that they share a t'GI.GES.Objects.Track.Track' with. See t'GI.GES.Objects.Clip.Clip' for how to add and move
-- these effects from the clip.

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

module GI.GES.Objects.SourceClip
    ( 

-- * Exported types
    SourceClip(..)                          ,
    IsSourceClip                            ,
    toSourceClip                            ,


 -- * Methods
-- | 
-- 
--  === __Click to display all available methods, including inherited ones__
-- ==== Methods
-- [add]("GI.GES.Objects.Container#g:method:add"), [addAsset]("GI.GES.Objects.Clip#g:method:addAsset"), [addChildProperty]("GI.GES.Objects.TimelineElement#g:method:addChildProperty"), [addChildToTrack]("GI.GES.Objects.Clip#g:method:addChildToTrack"), [addMetasFromString]("GI.GES.Interfaces.MetaContainer#g:method:addMetasFromString"), [addTopEffect]("GI.GES.Objects.Clip#g:method:addTopEffect"), [bindProperty]("GI.GObject.Objects.Object#g:method:bindProperty"), [bindPropertyFull]("GI.GObject.Objects.Object#g:method:bindPropertyFull"), [checkMetaRegistered]("GI.GES.Interfaces.MetaContainer#g:method:checkMetaRegistered"), [copy]("GI.GES.Objects.TimelineElement#g:method:copy"), [edit]("GI.GES.Objects.Container#g:method:edit"), [editFull]("GI.GES.Objects.TimelineElement#g:method:editFull"), [findTrackElement]("GI.GES.Objects.Clip#g:method:findTrackElement"), [findTrackElements]("GI.GES.Objects.Clip#g:method:findTrackElements"), [forceFloating]("GI.GObject.Objects.Object#g:method:forceFloating"), [foreach]("GI.GES.Interfaces.MetaContainer#g:method:foreach"), [freezeNotify]("GI.GObject.Objects.Object#g:method:freezeNotify"), [getv]("GI.GObject.Objects.Object#g:method:getv"), [isFloating]("GI.GObject.Objects.Object#g:method:isFloating"), [listChildrenProperties]("GI.GES.Objects.TimelineElement#g:method:listChildrenProperties"), [lookupChild]("GI.GES.Objects.TimelineElement#g:method:lookupChild"), [metasToString]("GI.GES.Interfaces.MetaContainer#g:method:metasToString"), [moveToLayer]("GI.GES.Objects.Clip#g:method:moveToLayer"), [moveToLayerFull]("GI.GES.Objects.Clip#g:method:moveToLayerFull"), [notify]("GI.GObject.Objects.Object#g:method:notify"), [notifyByPspec]("GI.GObject.Objects.Object#g:method:notifyByPspec"), [paste]("GI.GES.Objects.TimelineElement#g:method:paste"), [ref]("GI.GObject.Objects.Object#g:method:ref"), [refSink]("GI.GObject.Objects.Object#g:method:refSink"), [registerMeta]("GI.GES.Interfaces.MetaContainer#g:method:registerMeta"), [registerMetaBoolean]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaBoolean"), [registerMetaDate]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaDate"), [registerMetaDateTime]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaDateTime"), [registerMetaDouble]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaDouble"), [registerMetaFloat]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaFloat"), [registerMetaInt]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaInt"), [registerMetaInt64]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaInt64"), [registerMetaString]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaString"), [registerMetaUint]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaUint"), [registerMetaUint64]("GI.GES.Interfaces.MetaContainer#g:method:registerMetaUint64"), [registerStaticMeta]("GI.GES.Interfaces.MetaContainer#g:method:registerStaticMeta"), [remove]("GI.GES.Objects.Container#g:method:remove"), [removeChildProperty]("GI.GES.Objects.TimelineElement#g:method:removeChildProperty"), [removeTopEffect]("GI.GES.Objects.Clip#g:method:removeTopEffect"), [ripple]("GI.GES.Objects.TimelineElement#g:method:ripple"), [rippleEnd]("GI.GES.Objects.TimelineElement#g:method:rippleEnd"), [rollEnd]("GI.GES.Objects.TimelineElement#g:method:rollEnd"), [rollStart]("GI.GES.Objects.TimelineElement#g:method:rollStart"), [runDispose]("GI.GObject.Objects.Object#g:method:runDispose"), [split]("GI.GES.Objects.Clip#g:method:split"), [splitFull]("GI.GES.Objects.Clip#g:method:splitFull"), [stealData]("GI.GObject.Objects.Object#g:method:stealData"), [stealQdata]("GI.GObject.Objects.Object#g:method:stealQdata"), [thawNotify]("GI.GObject.Objects.Object#g:method:thawNotify"), [trim]("GI.GES.Objects.TimelineElement#g:method:trim"), [ungroup]("GI.GES.Objects.Container#g:method:ungroup"), [unref]("GI.GObject.Objects.Object#g:method:unref"), [watchClosure]("GI.GObject.Objects.Object#g:method:watchClosure").
-- 
-- ==== Getters
-- [getAsset]("GI.GES.Interfaces.Extractable#g:method:getAsset"), [getBoolean]("GI.GES.Interfaces.MetaContainer#g:method:getBoolean"), [getChildProperty]("GI.GES.Objects.TimelineElement#g:method:getChildProperty"), [getChildPropertyByPspec]("GI.GES.Objects.TimelineElement#g:method:getChildPropertyByPspec"), [getChildren]("GI.GES.Objects.Container#g:method:getChildren"), [getData]("GI.GObject.Objects.Object#g:method:getData"), [getDate]("GI.GES.Interfaces.MetaContainer#g:method:getDate"), [getDateTime]("GI.GES.Interfaces.MetaContainer#g:method:getDateTime"), [getDouble]("GI.GES.Interfaces.MetaContainer#g:method:getDouble"), [getDuration]("GI.GES.Objects.TimelineElement#g:method:getDuration"), [getDurationLimit]("GI.GES.Objects.Clip#g:method:getDurationLimit"), [getFloat]("GI.GES.Interfaces.MetaContainer#g:method:getFloat"), [getId]("GI.GES.Interfaces.Extractable#g:method:getId"), [getInpoint]("GI.GES.Objects.TimelineElement#g:method:getInpoint"), [getInt]("GI.GES.Interfaces.MetaContainer#g:method:getInt"), [getInt64]("GI.GES.Interfaces.MetaContainer#g:method:getInt64"), [getInternalTimeFromTimelineTime]("GI.GES.Objects.Clip#g:method:getInternalTimeFromTimelineTime"), [getLayer]("GI.GES.Objects.Clip#g:method:getLayer"), [getLayerPriority]("GI.GES.Objects.TimelineElement#g:method:getLayerPriority"), [getMarkerList]("GI.GES.Interfaces.MetaContainer#g:method:getMarkerList"), [getMaxDuration]("GI.GES.Objects.TimelineElement#g:method:getMaxDuration"), [getMeta]("GI.GES.Interfaces.MetaContainer#g:method:getMeta"), [getName]("GI.GES.Objects.TimelineElement#g:method:getName"), [getNaturalFramerate]("GI.GES.Objects.TimelineElement#g:method:getNaturalFramerate"), [getParent]("GI.GES.Objects.TimelineElement#g:method:getParent"), [getPriority]("GI.GES.Objects.TimelineElement#g:method:getPriority"), [getProperty]("GI.GObject.Objects.Object#g:method:getProperty"), [getQdata]("GI.GObject.Objects.Object#g:method:getQdata"), [getStart]("GI.GES.Objects.TimelineElement#g:method:getStart"), [getString]("GI.GES.Interfaces.MetaContainer#g:method:getString"), [getSupportedFormats]("GI.GES.Objects.Clip#g:method:getSupportedFormats"), [getTimeline]("GI.GES.Objects.TimelineElement#g:method:getTimeline"), [getTimelineTimeFromInternalTime]("GI.GES.Objects.Clip#g:method:getTimelineTimeFromInternalTime"), [getTimelineTimeFromSourceFrame]("GI.GES.Objects.Clip#g:method:getTimelineTimeFromSourceFrame"), [getTopEffectIndex]("GI.GES.Objects.Clip#g:method:getTopEffectIndex"), [getTopEffectPosition]("GI.GES.Objects.Clip#g:method:getTopEffectPosition"), [getTopEffects]("GI.GES.Objects.Clip#g:method:getTopEffects"), [getToplevelParent]("GI.GES.Objects.TimelineElement#g:method:getToplevelParent"), [getTrackTypes]("GI.GES.Objects.TimelineElement#g:method:getTrackTypes"), [getUint]("GI.GES.Interfaces.MetaContainer#g:method:getUint"), [getUint64]("GI.GES.Interfaces.MetaContainer#g:method:getUint64").
-- 
-- ==== Setters
-- [setAsset]("GI.GES.Interfaces.Extractable#g:method:setAsset"), [setBoolean]("GI.GES.Interfaces.MetaContainer#g:method:setBoolean"), [setChildProperty]("GI.GES.Objects.TimelineElement#g:method:setChildProperty"), [setChildPropertyByPspec]("GI.GES.Objects.TimelineElement#g:method:setChildPropertyByPspec"), [setChildPropertyFull]("GI.GES.Objects.TimelineElement#g:method:setChildPropertyFull"), [setData]("GI.GObject.Objects.Object#g:method:setData"), [setDataFull]("GI.GObject.Objects.Object#g:method:setDataFull"), [setDate]("GI.GES.Interfaces.MetaContainer#g:method:setDate"), [setDateTime]("GI.GES.Interfaces.MetaContainer#g:method:setDateTime"), [setDouble]("GI.GES.Interfaces.MetaContainer#g:method:setDouble"), [setDuration]("GI.GES.Objects.TimelineElement#g:method:setDuration"), [setFloat]("GI.GES.Interfaces.MetaContainer#g:method:setFloat"), [setInpoint]("GI.GES.Objects.TimelineElement#g:method:setInpoint"), [setInt]("GI.GES.Interfaces.MetaContainer#g:method:setInt"), [setInt64]("GI.GES.Interfaces.MetaContainer#g:method:setInt64"), [setMarkerList]("GI.GES.Interfaces.MetaContainer#g:method:setMarkerList"), [setMaxDuration]("GI.GES.Objects.TimelineElement#g:method:setMaxDuration"), [setMeta]("GI.GES.Interfaces.MetaContainer#g:method:setMeta"), [setName]("GI.GES.Objects.TimelineElement#g:method:setName"), [setParent]("GI.GES.Objects.TimelineElement#g:method:setParent"), [setPriority]("GI.GES.Objects.TimelineElement#g:method:setPriority"), [setProperty]("GI.GObject.Objects.Object#g:method:setProperty"), [setStart]("GI.GES.Objects.TimelineElement#g:method:setStart"), [setString]("GI.GES.Interfaces.MetaContainer#g:method:setString"), [setSupportedFormats]("GI.GES.Objects.Clip#g:method:setSupportedFormats"), [setTimeline]("GI.GES.Objects.TimelineElement#g:method:setTimeline"), [setTopEffectIndex]("GI.GES.Objects.Clip#g:method:setTopEffectIndex"), [setTopEffectIndexFull]("GI.GES.Objects.Clip#g:method:setTopEffectIndexFull"), [setTopEffectPriority]("GI.GES.Objects.Clip#g:method:setTopEffectPriority"), [setUint]("GI.GES.Interfaces.MetaContainer#g:method:setUint"), [setUint64]("GI.GES.Interfaces.MetaContainer#g:method:setUint64").

#if defined(ENABLE_OVERLOADING)
    ResolveSourceClipMethod                 ,
#endif

-- ** newTimeOverlay #method:newTimeOverlay#

    sourceClipNewTimeOverlay                ,




    ) 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 {-# SOURCE #-} qualified GI.GES.Interfaces.Extractable as GES.Extractable
import {-# SOURCE #-} qualified GI.GES.Interfaces.MetaContainer as GES.MetaContainer
import {-# SOURCE #-} qualified GI.GES.Objects.Clip as GES.Clip
import {-# SOURCE #-} qualified GI.GES.Objects.Container as GES.Container
import {-# SOURCE #-} qualified GI.GES.Objects.TimelineElement as GES.TimelineElement
import qualified GI.GObject.Objects.Object as GObject.Object

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

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

foreign import ccall "ges_source_clip_get_type"
    c_ges_source_clip_get_type :: IO B.Types.GType

instance B.Types.TypedObject SourceClip where
    glibType :: IO GType
glibType = IO GType
c_ges_source_clip_get_type

instance B.Types.GObject SourceClip

-- | Type class for types which can be safely cast to `SourceClip`, for instance with `toSourceClip`.
class (SP.GObject o, O.IsDescendantOf SourceClip o) => IsSourceClip o
instance (SP.GObject o, O.IsDescendantOf SourceClip o) => IsSourceClip o

instance O.HasParentTypes SourceClip
type instance O.ParentTypes SourceClip = '[GES.Clip.Clip, GES.Container.Container, GES.TimelineElement.TimelineElement, GObject.Object.Object, GES.Extractable.Extractable, GES.MetaContainer.MetaContainer]

-- | Cast to `SourceClip`, for types for which this is known to be safe. For general casts, use `Data.GI.Base.ManagedPtr.castTo`.
toSourceClip :: (MIO.MonadIO m, IsSourceClip o) => o -> m SourceClip
toSourceClip :: forall (m :: * -> *) o.
(MonadIO m, IsSourceClip o) =>
o -> m SourceClip
toSourceClip = IO SourceClip -> m SourceClip
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
MIO.liftIO (IO SourceClip -> m SourceClip)
-> (o -> IO SourceClip) -> o -> m SourceClip
forall b c a. (b -> c) -> (a -> b) -> a -> c
. (ManagedPtr SourceClip -> SourceClip) -> o -> IO SourceClip
forall o o'.
(HasCallStack, ManagedPtrNewtype o, TypedObject o,
 ManagedPtrNewtype o', TypedObject o') =>
(ManagedPtr o' -> o') -> o -> IO o'
B.ManagedPtr.unsafeCastTo ManagedPtr SourceClip -> SourceClip
SourceClip

-- | Convert 'SourceClip' to and from 'Data.GI.Base.GValue.GValue'. See 'Data.GI.Base.GValue.toGValue' and 'Data.GI.Base.GValue.fromGValue'.
instance B.GValue.IsGValue (Maybe SourceClip) where
    gvalueGType_ :: IO GType
gvalueGType_ = IO GType
c_ges_source_clip_get_type
    gvalueSet_ :: Ptr GValue -> Maybe SourceClip -> IO ()
gvalueSet_ Ptr GValue
gv Maybe SourceClip
P.Nothing = Ptr GValue -> Ptr SourceClip -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv (Ptr SourceClip
forall a. Ptr a
FP.nullPtr :: FP.Ptr SourceClip)
    gvalueSet_ Ptr GValue
gv (P.Just SourceClip
obj) = SourceClip -> (Ptr SourceClip -> IO ()) -> IO ()
forall a c.
(HasCallStack, ManagedPtrNewtype a) =>
a -> (Ptr a -> IO c) -> IO c
B.ManagedPtr.withManagedPtr SourceClip
obj (Ptr GValue -> Ptr SourceClip -> IO ()
forall a. GObject a => Ptr GValue -> Ptr a -> IO ()
B.GValue.set_object Ptr GValue
gv)
    gvalueGet_ :: Ptr GValue -> IO (Maybe SourceClip)
gvalueGet_ Ptr GValue
gv = do
        Ptr SourceClip
ptr <- Ptr GValue -> IO (Ptr SourceClip)
forall a. GObject a => Ptr GValue -> IO (Ptr a)
B.GValue.get_object Ptr GValue
gv :: IO (FP.Ptr SourceClip)
        if Ptr SourceClip
ptr Ptr SourceClip -> Ptr SourceClip -> Bool
forall a. Eq a => a -> a -> Bool
/= Ptr SourceClip
forall a. Ptr a
FP.nullPtr
        then SourceClip -> Maybe SourceClip
forall a. a -> Maybe a
P.Just (SourceClip -> Maybe SourceClip)
-> IO SourceClip -> IO (Maybe SourceClip)
forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
<$> (ManagedPtr SourceClip -> SourceClip)
-> Ptr SourceClip -> IO SourceClip
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
B.ManagedPtr.newObject ManagedPtr SourceClip -> SourceClip
SourceClip Ptr SourceClip
ptr
        else Maybe SourceClip -> IO (Maybe SourceClip)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe SourceClip
forall a. Maybe a
P.Nothing
        
    

#if defined(ENABLE_OVERLOADING)
type family ResolveSourceClipMethod (t :: Symbol) (o :: DK.Type) :: DK.Type where
    ResolveSourceClipMethod "add" o = GES.Container.ContainerAddMethodInfo
    ResolveSourceClipMethod "addAsset" o = GES.Clip.ClipAddAssetMethodInfo
    ResolveSourceClipMethod "addChildProperty" o = GES.TimelineElement.TimelineElementAddChildPropertyMethodInfo
    ResolveSourceClipMethod "addChildToTrack" o = GES.Clip.ClipAddChildToTrackMethodInfo
    ResolveSourceClipMethod "addMetasFromString" o = GES.MetaContainer.MetaContainerAddMetasFromStringMethodInfo
    ResolveSourceClipMethod "addTopEffect" o = GES.Clip.ClipAddTopEffectMethodInfo
    ResolveSourceClipMethod "bindProperty" o = GObject.Object.ObjectBindPropertyMethodInfo
    ResolveSourceClipMethod "bindPropertyFull" o = GObject.Object.ObjectBindPropertyFullMethodInfo
    ResolveSourceClipMethod "checkMetaRegistered" o = GES.MetaContainer.MetaContainerCheckMetaRegisteredMethodInfo
    ResolveSourceClipMethod "copy" o = GES.TimelineElement.TimelineElementCopyMethodInfo
    ResolveSourceClipMethod "edit" o = GES.Container.ContainerEditMethodInfo
    ResolveSourceClipMethod "editFull" o = GES.TimelineElement.TimelineElementEditFullMethodInfo
    ResolveSourceClipMethod "findTrackElement" o = GES.Clip.ClipFindTrackElementMethodInfo
    ResolveSourceClipMethod "findTrackElements" o = GES.Clip.ClipFindTrackElementsMethodInfo
    ResolveSourceClipMethod "forceFloating" o = GObject.Object.ObjectForceFloatingMethodInfo
    ResolveSourceClipMethod "foreach" o = GES.MetaContainer.MetaContainerForeachMethodInfo
    ResolveSourceClipMethod "freezeNotify" o = GObject.Object.ObjectFreezeNotifyMethodInfo
    ResolveSourceClipMethod "getv" o = GObject.Object.ObjectGetvMethodInfo
    ResolveSourceClipMethod "isFloating" o = GObject.Object.ObjectIsFloatingMethodInfo
    ResolveSourceClipMethod "listChildrenProperties" o = GES.TimelineElement.TimelineElementListChildrenPropertiesMethodInfo
    ResolveSourceClipMethod "lookupChild" o = GES.TimelineElement.TimelineElementLookupChildMethodInfo
    ResolveSourceClipMethod "metasToString" o = GES.MetaContainer.MetaContainerMetasToStringMethodInfo
    ResolveSourceClipMethod "moveToLayer" o = GES.Clip.ClipMoveToLayerMethodInfo
    ResolveSourceClipMethod "moveToLayerFull" o = GES.Clip.ClipMoveToLayerFullMethodInfo
    ResolveSourceClipMethod "notify" o = GObject.Object.ObjectNotifyMethodInfo
    ResolveSourceClipMethod "notifyByPspec" o = GObject.Object.ObjectNotifyByPspecMethodInfo
    ResolveSourceClipMethod "paste" o = GES.TimelineElement.TimelineElementPasteMethodInfo
    ResolveSourceClipMethod "ref" o = GObject.Object.ObjectRefMethodInfo
    ResolveSourceClipMethod "refSink" o = GObject.Object.ObjectRefSinkMethodInfo
    ResolveSourceClipMethod "registerMeta" o = GES.MetaContainer.MetaContainerRegisterMetaMethodInfo
    ResolveSourceClipMethod "registerMetaBoolean" o = GES.MetaContainer.MetaContainerRegisterMetaBooleanMethodInfo
    ResolveSourceClipMethod "registerMetaDate" o = GES.MetaContainer.MetaContainerRegisterMetaDateMethodInfo
    ResolveSourceClipMethod "registerMetaDateTime" o = GES.MetaContainer.MetaContainerRegisterMetaDateTimeMethodInfo
    ResolveSourceClipMethod "registerMetaDouble" o = GES.MetaContainer.MetaContainerRegisterMetaDoubleMethodInfo
    ResolveSourceClipMethod "registerMetaFloat" o = GES.MetaContainer.MetaContainerRegisterMetaFloatMethodInfo
    ResolveSourceClipMethod "registerMetaInt" o = GES.MetaContainer.MetaContainerRegisterMetaIntMethodInfo
    ResolveSourceClipMethod "registerMetaInt64" o = GES.MetaContainer.MetaContainerRegisterMetaInt64MethodInfo
    ResolveSourceClipMethod "registerMetaString" o = GES.MetaContainer.MetaContainerRegisterMetaStringMethodInfo
    ResolveSourceClipMethod "registerMetaUint" o = GES.MetaContainer.MetaContainerRegisterMetaUintMethodInfo
    ResolveSourceClipMethod "registerMetaUint64" o = GES.MetaContainer.MetaContainerRegisterMetaUint64MethodInfo
    ResolveSourceClipMethod "registerStaticMeta" o = GES.MetaContainer.MetaContainerRegisterStaticMetaMethodInfo
    ResolveSourceClipMethod "remove" o = GES.Container.ContainerRemoveMethodInfo
    ResolveSourceClipMethod "removeChildProperty" o = GES.TimelineElement.TimelineElementRemoveChildPropertyMethodInfo
    ResolveSourceClipMethod "removeTopEffect" o = GES.Clip.ClipRemoveTopEffectMethodInfo
    ResolveSourceClipMethod "ripple" o = GES.TimelineElement.TimelineElementRippleMethodInfo
    ResolveSourceClipMethod "rippleEnd" o = GES.TimelineElement.TimelineElementRippleEndMethodInfo
    ResolveSourceClipMethod "rollEnd" o = GES.TimelineElement.TimelineElementRollEndMethodInfo
    ResolveSourceClipMethod "rollStart" o = GES.TimelineElement.TimelineElementRollStartMethodInfo
    ResolveSourceClipMethod "runDispose" o = GObject.Object.ObjectRunDisposeMethodInfo
    ResolveSourceClipMethod "split" o = GES.Clip.ClipSplitMethodInfo
    ResolveSourceClipMethod "splitFull" o = GES.Clip.ClipSplitFullMethodInfo
    ResolveSourceClipMethod "stealData" o = GObject.Object.ObjectStealDataMethodInfo
    ResolveSourceClipMethod "stealQdata" o = GObject.Object.ObjectStealQdataMethodInfo
    ResolveSourceClipMethod "thawNotify" o = GObject.Object.ObjectThawNotifyMethodInfo
    ResolveSourceClipMethod "trim" o = GES.TimelineElement.TimelineElementTrimMethodInfo
    ResolveSourceClipMethod "ungroup" o = GES.Container.ContainerUngroupMethodInfo
    ResolveSourceClipMethod "unref" o = GObject.Object.ObjectUnrefMethodInfo
    ResolveSourceClipMethod "watchClosure" o = GObject.Object.ObjectWatchClosureMethodInfo
    ResolveSourceClipMethod "getAsset" o = GES.Extractable.ExtractableGetAssetMethodInfo
    ResolveSourceClipMethod "getBoolean" o = GES.MetaContainer.MetaContainerGetBooleanMethodInfo
    ResolveSourceClipMethod "getChildProperty" o = GES.TimelineElement.TimelineElementGetChildPropertyMethodInfo
    ResolveSourceClipMethod "getChildPropertyByPspec" o = GES.TimelineElement.TimelineElementGetChildPropertyByPspecMethodInfo
    ResolveSourceClipMethod "getChildren" o = GES.Container.ContainerGetChildrenMethodInfo
    ResolveSourceClipMethod "getData" o = GObject.Object.ObjectGetDataMethodInfo
    ResolveSourceClipMethod "getDate" o = GES.MetaContainer.MetaContainerGetDateMethodInfo
    ResolveSourceClipMethod "getDateTime" o = GES.MetaContainer.MetaContainerGetDateTimeMethodInfo
    ResolveSourceClipMethod "getDouble" o = GES.MetaContainer.MetaContainerGetDoubleMethodInfo
    ResolveSourceClipMethod "getDuration" o = GES.TimelineElement.TimelineElementGetDurationMethodInfo
    ResolveSourceClipMethod "getDurationLimit" o = GES.Clip.ClipGetDurationLimitMethodInfo
    ResolveSourceClipMethod "getFloat" o = GES.MetaContainer.MetaContainerGetFloatMethodInfo
    ResolveSourceClipMethod "getId" o = GES.Extractable.ExtractableGetIdMethodInfo
    ResolveSourceClipMethod "getInpoint" o = GES.TimelineElement.TimelineElementGetInpointMethodInfo
    ResolveSourceClipMethod "getInt" o = GES.MetaContainer.MetaContainerGetIntMethodInfo
    ResolveSourceClipMethod "getInt64" o = GES.MetaContainer.MetaContainerGetInt64MethodInfo
    ResolveSourceClipMethod "getInternalTimeFromTimelineTime" o = GES.Clip.ClipGetInternalTimeFromTimelineTimeMethodInfo
    ResolveSourceClipMethod "getLayer" o = GES.Clip.ClipGetLayerMethodInfo
    ResolveSourceClipMethod "getLayerPriority" o = GES.TimelineElement.TimelineElementGetLayerPriorityMethodInfo
    ResolveSourceClipMethod "getMarkerList" o = GES.MetaContainer.MetaContainerGetMarkerListMethodInfo
    ResolveSourceClipMethod "getMaxDuration" o = GES.TimelineElement.TimelineElementGetMaxDurationMethodInfo
    ResolveSourceClipMethod "getMeta" o = GES.MetaContainer.MetaContainerGetMetaMethodInfo
    ResolveSourceClipMethod "getName" o = GES.TimelineElement.TimelineElementGetNameMethodInfo
    ResolveSourceClipMethod "getNaturalFramerate" o = GES.TimelineElement.TimelineElementGetNaturalFramerateMethodInfo
    ResolveSourceClipMethod "getParent" o = GES.TimelineElement.TimelineElementGetParentMethodInfo
    ResolveSourceClipMethod "getPriority" o = GES.TimelineElement.TimelineElementGetPriorityMethodInfo
    ResolveSourceClipMethod "getProperty" o = GObject.Object.ObjectGetPropertyMethodInfo
    ResolveSourceClipMethod "getQdata" o = GObject.Object.ObjectGetQdataMethodInfo
    ResolveSourceClipMethod "getStart" o = GES.TimelineElement.TimelineElementGetStartMethodInfo
    ResolveSourceClipMethod "getString" o = GES.MetaContainer.MetaContainerGetStringMethodInfo
    ResolveSourceClipMethod "getSupportedFormats" o = GES.Clip.ClipGetSupportedFormatsMethodInfo
    ResolveSourceClipMethod "getTimeline" o = GES.TimelineElement.TimelineElementGetTimelineMethodInfo
    ResolveSourceClipMethod "getTimelineTimeFromInternalTime" o = GES.Clip.ClipGetTimelineTimeFromInternalTimeMethodInfo
    ResolveSourceClipMethod "getTimelineTimeFromSourceFrame" o = GES.Clip.ClipGetTimelineTimeFromSourceFrameMethodInfo
    ResolveSourceClipMethod "getTopEffectIndex" o = GES.Clip.ClipGetTopEffectIndexMethodInfo
    ResolveSourceClipMethod "getTopEffectPosition" o = GES.Clip.ClipGetTopEffectPositionMethodInfo
    ResolveSourceClipMethod "getTopEffects" o = GES.Clip.ClipGetTopEffectsMethodInfo
    ResolveSourceClipMethod "getToplevelParent" o = GES.TimelineElement.TimelineElementGetToplevelParentMethodInfo
    ResolveSourceClipMethod "getTrackTypes" o = GES.TimelineElement.TimelineElementGetTrackTypesMethodInfo
    ResolveSourceClipMethod "getUint" o = GES.MetaContainer.MetaContainerGetUintMethodInfo
    ResolveSourceClipMethod "getUint64" o = GES.MetaContainer.MetaContainerGetUint64MethodInfo
    ResolveSourceClipMethod "setAsset" o = GES.Extractable.ExtractableSetAssetMethodInfo
    ResolveSourceClipMethod "setBoolean" o = GES.MetaContainer.MetaContainerSetBooleanMethodInfo
    ResolveSourceClipMethod "setChildProperty" o = GES.TimelineElement.TimelineElementSetChildPropertyMethodInfo
    ResolveSourceClipMethod "setChildPropertyByPspec" o = GES.TimelineElement.TimelineElementSetChildPropertyByPspecMethodInfo
    ResolveSourceClipMethod "setChildPropertyFull" o = GES.TimelineElement.TimelineElementSetChildPropertyFullMethodInfo
    ResolveSourceClipMethod "setData" o = GObject.Object.ObjectSetDataMethodInfo
    ResolveSourceClipMethod "setDataFull" o = GObject.Object.ObjectSetDataFullMethodInfo
    ResolveSourceClipMethod "setDate" o = GES.MetaContainer.MetaContainerSetDateMethodInfo
    ResolveSourceClipMethod "setDateTime" o = GES.MetaContainer.MetaContainerSetDateTimeMethodInfo
    ResolveSourceClipMethod "setDouble" o = GES.MetaContainer.MetaContainerSetDoubleMethodInfo
    ResolveSourceClipMethod "setDuration" o = GES.TimelineElement.TimelineElementSetDurationMethodInfo
    ResolveSourceClipMethod "setFloat" o = GES.MetaContainer.MetaContainerSetFloatMethodInfo
    ResolveSourceClipMethod "setInpoint" o = GES.TimelineElement.TimelineElementSetInpointMethodInfo
    ResolveSourceClipMethod "setInt" o = GES.MetaContainer.MetaContainerSetIntMethodInfo
    ResolveSourceClipMethod "setInt64" o = GES.MetaContainer.MetaContainerSetInt64MethodInfo
    ResolveSourceClipMethod "setMarkerList" o = GES.MetaContainer.MetaContainerSetMarkerListMethodInfo
    ResolveSourceClipMethod "setMaxDuration" o = GES.TimelineElement.TimelineElementSetMaxDurationMethodInfo
    ResolveSourceClipMethod "setMeta" o = GES.MetaContainer.MetaContainerSetMetaMethodInfo
    ResolveSourceClipMethod "setName" o = GES.TimelineElement.TimelineElementSetNameMethodInfo
    ResolveSourceClipMethod "setParent" o = GES.TimelineElement.TimelineElementSetParentMethodInfo
    ResolveSourceClipMethod "setPriority" o = GES.TimelineElement.TimelineElementSetPriorityMethodInfo
    ResolveSourceClipMethod "setProperty" o = GObject.Object.ObjectSetPropertyMethodInfo
    ResolveSourceClipMethod "setStart" o = GES.TimelineElement.TimelineElementSetStartMethodInfo
    ResolveSourceClipMethod "setString" o = GES.MetaContainer.MetaContainerSetStringMethodInfo
    ResolveSourceClipMethod "setSupportedFormats" o = GES.Clip.ClipSetSupportedFormatsMethodInfo
    ResolveSourceClipMethod "setTimeline" o = GES.TimelineElement.TimelineElementSetTimelineMethodInfo
    ResolveSourceClipMethod "setTopEffectIndex" o = GES.Clip.ClipSetTopEffectIndexMethodInfo
    ResolveSourceClipMethod "setTopEffectIndexFull" o = GES.Clip.ClipSetTopEffectIndexFullMethodInfo
    ResolveSourceClipMethod "setTopEffectPriority" o = GES.Clip.ClipSetTopEffectPriorityMethodInfo
    ResolveSourceClipMethod "setUint" o = GES.MetaContainer.MetaContainerSetUintMethodInfo
    ResolveSourceClipMethod "setUint64" o = GES.MetaContainer.MetaContainerSetUint64MethodInfo
    ResolveSourceClipMethod l o = O.MethodResolutionFailed l o

instance (info ~ ResolveSourceClipMethod t SourceClip, O.OverloadedMethod info SourceClip p) => OL.IsLabel t (SourceClip -> 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 ~ ResolveSourceClipMethod t SourceClip, O.OverloadedMethod info SourceClip p, R.HasField t SourceClip p) => R.HasField t SourceClip p where
    getField = O.overloadedMethod @info

#endif

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

#endif

#if defined(ENABLE_OVERLOADING)
instance O.HasAttributeList SourceClip
type instance O.AttributeList SourceClip = SourceClipAttributeList
type SourceClipAttributeList = ('[ '("duration", GES.TimelineElement.TimelineElementDurationPropertyInfo), '("durationLimit", GES.Clip.ClipDurationLimitPropertyInfo), '("height", GES.Container.ContainerHeightPropertyInfo), '("inPoint", GES.TimelineElement.TimelineElementInPointPropertyInfo), '("layer", GES.Clip.ClipLayerPropertyInfo), '("maxDuration", GES.TimelineElement.TimelineElementMaxDurationPropertyInfo), '("name", GES.TimelineElement.TimelineElementNamePropertyInfo), '("parent", GES.TimelineElement.TimelineElementParentPropertyInfo), '("priority", GES.TimelineElement.TimelineElementPriorityPropertyInfo), '("serialize", GES.TimelineElement.TimelineElementSerializePropertyInfo), '("start", GES.TimelineElement.TimelineElementStartPropertyInfo), '("supportedFormats", GES.Clip.ClipSupportedFormatsPropertyInfo), '("timeline", GES.TimelineElement.TimelineElementTimelinePropertyInfo)] :: [(Symbol, DK.Type)])
#endif

#if defined(ENABLE_OVERLOADING)
#endif

#if defined(ENABLE_OVERLOADING)
type instance O.SignalList SourceClip = SourceClipSignalList
type SourceClipSignalList = ('[ '("childAdded", GES.Container.ContainerChildAddedSignalInfo), '("childPropertyAdded", GES.TimelineElement.TimelineElementChildPropertyAddedSignalInfo), '("childPropertyRemoved", GES.TimelineElement.TimelineElementChildPropertyRemovedSignalInfo), '("childRemoved", GES.Container.ContainerChildRemovedSignalInfo), '("deepNotify", GES.TimelineElement.TimelineElementDeepNotifySignalInfo), '("notify", GObject.Object.ObjectNotifySignalInfo), '("notifyMeta", GES.MetaContainer.MetaContainerNotifyMetaSignalInfo)] :: [(Symbol, DK.Type)])

#endif

-- method SourceClip::new_time_overlay
-- method type : Constructor
-- Args: []
-- Lengths: []
-- returnType: Just (TInterface Name { namespace = "GES" , name = "SourceClip" })
-- throws : False
-- Skip return : False

foreign import ccall "ges_source_clip_new_time_overlay" ges_source_clip_new_time_overlay :: 
    IO (Ptr SourceClip)

-- | Creates a new t'GI.GES.Objects.SourceClip.SourceClip' that renders a time overlay on top
-- 
-- /Since: 1.18/
sourceClipNewTimeOverlay ::
    (B.CallStack.HasCallStack, MonadIO m) =>
    m (Maybe SourceClip)
    -- ^ __Returns:__ The newly created t'GI.GES.Objects.SourceClip.SourceClip',
    -- or 'P.Nothing' if there was an error.
sourceClipNewTimeOverlay :: forall (m :: * -> *).
(HasCallStack, MonadIO m) =>
m (Maybe SourceClip)
sourceClipNewTimeOverlay  = IO (Maybe SourceClip) -> m (Maybe SourceClip)
forall a. IO a -> m a
forall (m :: * -> *) a. MonadIO m => IO a -> m a
liftIO (IO (Maybe SourceClip) -> m (Maybe SourceClip))
-> IO (Maybe SourceClip) -> m (Maybe SourceClip)
forall a b. (a -> b) -> a -> b
$ do
    Ptr SourceClip
result <- IO (Ptr SourceClip)
ges_source_clip_new_time_overlay
    Maybe SourceClip
maybeResult <- Ptr SourceClip
-> (Ptr SourceClip -> IO SourceClip) -> IO (Maybe SourceClip)
forall a b. Ptr a -> (Ptr a -> IO b) -> IO (Maybe b)
convertIfNonNull Ptr SourceClip
result ((Ptr SourceClip -> IO SourceClip) -> IO (Maybe SourceClip))
-> (Ptr SourceClip -> IO SourceClip) -> IO (Maybe SourceClip)
forall a b. (a -> b) -> a -> b
$ \Ptr SourceClip
result' -> do
        SourceClip
result'' <- ((ManagedPtr SourceClip -> SourceClip)
-> Ptr SourceClip -> IO SourceClip
forall a b.
(HasCallStack, GObject a, GObject b) =>
(ManagedPtr a -> a) -> Ptr b -> IO a
newObject ManagedPtr SourceClip -> SourceClip
SourceClip) Ptr SourceClip
result'
        SourceClip -> IO SourceClip
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return SourceClip
result''
    Maybe SourceClip -> IO (Maybe SourceClip)
forall a. a -> IO a
forall (m :: * -> *) a. Monad m => a -> m a
return Maybe SourceClip
maybeResult

#if defined(ENABLE_OVERLOADING)
#endif