| Copyright | Will Thompson and Iñaki García Etxebarria | 
|---|---|
| License | LGPL-2.1 | 
| Maintainer | Iñaki García Etxebarria | 
| Safe Haskell | Safe-Inferred | 
| Language | Haskell2010 | 
GI.GES.Objects.TimelineElement
Contents
- Exported types
- Methods- addChildProperty
- copy
- edit
- editFull
- getChildProperty
- getChildPropertyByPspec
- getDuration
- getInpoint
- getLayerPriority
- getMaxDuration
- getName
- getNaturalFramerate
- getParent
- getPriority
- getStart
- getTimeline
- getToplevelParent
- getTrackTypes
- lookupChild
- paste
- removeChildProperty
- ripple
- rippleEnd
- rollEnd
- rollStart
- setChildProperty
- setChildPropertyByPspec
- setChildPropertyFull
- setDuration
- setInpoint
- setMaxDuration
- setName
- setParent
- setPriority
- setStart
- setTimeline
- trim
 
- Properties
- Signals
Description
A TimelineElement will have some temporal extent in its
 corresponding TimelineElement:timeline, controlled by its
 TimelineElement:start and TimelineElement:duration. This
 determines when its content will be displayed, or its effect applied,
 in the timeline. Several objects may overlap within a given
 Timeline, in which case their TimelineElement:priority is used
 to determine their ordering in the timeline. Priority is mostly handled
 internally by Layer-s and Clip-s.
A timeline element can have a TimelineElement:parent,
 such as a Clip, which is responsible for controlling its timing.
Editing
Elements can be moved around in their TimelineElement:timeline by
 setting their TimelineElement:start and
 TimelineElement:duration using timelineElementSetStart
 and timelineElementSetDuration. Additionally, which parts of
 the underlying content are played in the timeline can be adjusted by
 setting the TimelineElement:inPoint using
 timelineElementSetInpoint. The library also provides
 timelineElementEdit, with various EditMode-s, which can
 adjust these properties in a convenient way, as well as introduce
 similar changes in neighbouring or later elements in the timeline.
However, a timeline may refuse a change in these properties if they
 would place the timeline in an unsupported configuration. See
 Timeline for its overlap rules.
Additionally, an edit may be refused if it would place one of the timing properties out of bounds (such as a negative time value for TimelineElement:start, or having insufficient internal content to last for the desired TimelineElement:duration).
Time Coordinates
There are three main sets of time coordinates to consider when using timeline elements:
+ Timeline coordinates: these are the time coordinates used in the
   output of the timeline in its Track-s. Each track share the same
   coordinates, so there is only one set of coordinates for the
   timeline. These extend indefinitely from 0. The times used for
   editing (including setting TimelineElement:start and
   TimelineElement:duration) use these coordinates, since these
   define when an element is present and for how long the element lasts
   for in the timeline.
 + Internal source coordinates: these are the time coordinates used
   internally at the element's output. This is only really defined for
   TrackElement-s, where it refers to time coordinates used at the
   final source pad of the wrapped Element-s. However, these
   coordinates may also be used in a Clip in reference to its
   children. In particular, these are the coordinates used for
   TimelineElement:inPoint and TimelineElement:maxDuration.
 + Internal sink coordinates: these are the time coordinates used
   internally at the element's input. A Source has no input, so
   these would be undefined. Otherwise, for most TrackElement-s
   these will be the same set of coordinates as the internal source
   coordinates because the element does not change the timing
   internally. Only BaseEffect can support elements where these
   are different. See BaseEffect for more information.
You can determine the timeline time for a given internal source time
 in a Track in a Clip using
 clipGetTimelineTimeFromInternalTime, and vice versa using
 clipGetInternalTimeFromTimelineTime, for the purposes of
 editing and setting timings properties.
Children Properties
If a timeline element owns another Object and wishes to expose
 some of its properties, it can do so by registering the property as one
 of the timeline element's children properties using
 timelineElementAddChildProperty. The registered property of
 the child can then be read and set using the
 timelineElementGetChildProperty and
 timelineElementSetChildProperty methods, respectively. Some
 sub-classed objects will be created with pre-registered children
 properties; for example, to expose part of an underlying Element
 that is used internally. The registered properties can be listed with
 timelineElementListChildrenProperties.
Synopsis
- newtype TimelineElement = TimelineElement (ManagedPtr TimelineElement)
- class (GObject o, IsDescendantOf TimelineElement o) => IsTimelineElement o
- toTimelineElement :: (MonadIO m, IsTimelineElement o) => o -> m TimelineElement
- timelineElementAddChildProperty :: (HasCallStack, MonadIO m, IsTimelineElement a, IsObject b) => a -> GParamSpec -> b -> m Bool
- timelineElementCopy :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Bool -> m TimelineElement
- timelineElementEdit :: (HasCallStack, MonadIO m, IsTimelineElement a, IsLayer b) => a -> [b] -> Int64 -> EditMode -> Edge -> Word64 -> m Bool
- timelineElementEditFull :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Int64 -> EditMode -> Edge -> Word64 -> m ()
- timelineElementGetChildProperty :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Text -> m (Bool, GValue)
- timelineElementGetChildPropertyByPspec :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> GParamSpec -> m GValue
- timelineElementGetDuration :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m Word64
- timelineElementGetInpoint :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m Word64
- timelineElementGetLayerPriority :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m Word32
- timelineElementGetMaxDuration :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m Word64
- timelineElementGetName :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m Text
- timelineElementGetNaturalFramerate :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m (Bool, Int32, Int32)
- timelineElementGetParent :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m (Maybe TimelineElement)
- timelineElementGetPriority :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m Word32
- timelineElementGetStart :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m Word64
- timelineElementGetTimeline :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m (Maybe Timeline)
- timelineElementGetToplevelParent :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m TimelineElement
- timelineElementGetTrackTypes :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> m [TrackType]
- timelineElementLookupChild :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Text -> m (Bool, Object, GParamSpec)
- timelineElementPaste :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word64 -> m (Maybe TimelineElement)
- timelineElementRemoveChildProperty :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> GParamSpec -> m Bool
- timelineElementRipple :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word64 -> m Bool
- timelineElementRippleEnd :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word64 -> m Bool
- timelineElementRollEnd :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word64 -> m Bool
- timelineElementRollStart :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word64 -> m Bool
- timelineElementSetChildProperty :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Text -> GValue -> m Bool
- timelineElementSetChildPropertyByPspec :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> GParamSpec -> GValue -> m ()
- timelineElementSetChildPropertyFull :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Text -> GValue -> m ()
- timelineElementSetDuration :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word64 -> m Bool
- timelineElementSetInpoint :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word64 -> m Bool
- timelineElementSetMaxDuration :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word64 -> m Bool
- timelineElementSetName :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Maybe Text -> m Bool
- timelineElementSetParent :: (HasCallStack, MonadIO m, IsTimelineElement a, IsTimelineElement b) => a -> b -> m Bool
- timelineElementSetPriority :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word32 -> m Bool
- timelineElementSetStart :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word64 -> m Bool
- timelineElementSetTimeline :: (HasCallStack, MonadIO m, IsTimelineElement a, IsTimeline b) => a -> b -> m Bool
- timelineElementTrim :: (HasCallStack, MonadIO m, IsTimelineElement a) => a -> Word64 -> m Bool
- constructTimelineElementDuration :: (IsTimelineElement o, MonadIO m) => Word64 -> m (GValueConstruct o)
- getTimelineElementDuration :: (MonadIO m, IsTimelineElement o) => o -> m Word64
- setTimelineElementDuration :: (MonadIO m, IsTimelineElement o) => o -> Word64 -> m ()
- constructTimelineElementInPoint :: (IsTimelineElement o, MonadIO m) => Word64 -> m (GValueConstruct o)
- getTimelineElementInPoint :: (MonadIO m, IsTimelineElement o) => o -> m Word64
- setTimelineElementInPoint :: (MonadIO m, IsTimelineElement o) => o -> Word64 -> m ()
- constructTimelineElementMaxDuration :: (IsTimelineElement o, MonadIO m) => Word64 -> m (GValueConstruct o)
- getTimelineElementMaxDuration :: (MonadIO m, IsTimelineElement o) => o -> m Word64
- setTimelineElementMaxDuration :: (MonadIO m, IsTimelineElement o) => o -> Word64 -> m ()
- clearTimelineElementName :: (MonadIO m, IsTimelineElement o) => o -> m ()
- constructTimelineElementName :: (IsTimelineElement o, MonadIO m) => Text -> m (GValueConstruct o)
- getTimelineElementName :: (MonadIO m, IsTimelineElement o) => o -> m (Maybe Text)
- setTimelineElementName :: (MonadIO m, IsTimelineElement o) => o -> Text -> m ()
- clearTimelineElementParent :: (MonadIO m, IsTimelineElement o) => o -> m ()
- constructTimelineElementParent :: (IsTimelineElement o, MonadIO m, IsTimelineElement a) => a -> m (GValueConstruct o)
- getTimelineElementParent :: (MonadIO m, IsTimelineElement o) => o -> m (Maybe TimelineElement)
- setTimelineElementParent :: (MonadIO m, IsTimelineElement o, IsTimelineElement a) => o -> a -> m ()
- constructTimelineElementPriority :: (IsTimelineElement o, MonadIO m) => Word32 -> m (GValueConstruct o)
- getTimelineElementPriority :: (MonadIO m, IsTimelineElement o) => o -> m Word32
- setTimelineElementPriority :: (MonadIO m, IsTimelineElement o) => o -> Word32 -> m ()
- constructTimelineElementSerialize :: (IsTimelineElement o, MonadIO m) => Bool -> m (GValueConstruct o)
- getTimelineElementSerialize :: (MonadIO m, IsTimelineElement o) => o -> m Bool
- setTimelineElementSerialize :: (MonadIO m, IsTimelineElement o) => o -> Bool -> m ()
- constructTimelineElementStart :: (IsTimelineElement o, MonadIO m) => Word64 -> m (GValueConstruct o)
- getTimelineElementStart :: (MonadIO m, IsTimelineElement o) => o -> m Word64
- setTimelineElementStart :: (MonadIO m, IsTimelineElement o) => o -> Word64 -> m ()
- clearTimelineElementTimeline :: (MonadIO m, IsTimelineElement o) => o -> m ()
- constructTimelineElementTimeline :: (IsTimelineElement o, MonadIO m, IsTimeline a) => a -> m (GValueConstruct o)
- getTimelineElementTimeline :: (MonadIO m, IsTimelineElement o) => o -> m (Maybe Timeline)
- setTimelineElementTimeline :: (MonadIO m, IsTimelineElement o, IsTimeline a) => o -> a -> m ()
- type TimelineElementChildPropertyAddedCallback = Object -> GParamSpec -> IO ()
- afterTimelineElementChildPropertyAdded :: (IsTimelineElement a, MonadIO m) => a -> ((?self :: a) => TimelineElementChildPropertyAddedCallback) -> m SignalHandlerId
- onTimelineElementChildPropertyAdded :: (IsTimelineElement a, MonadIO m) => a -> ((?self :: a) => TimelineElementChildPropertyAddedCallback) -> m SignalHandlerId
- type TimelineElementChildPropertyRemovedCallback = Object -> GParamSpec -> IO ()
- afterTimelineElementChildPropertyRemoved :: (IsTimelineElement a, MonadIO m) => a -> ((?self :: a) => TimelineElementChildPropertyRemovedCallback) -> m SignalHandlerId
- onTimelineElementChildPropertyRemoved :: (IsTimelineElement a, MonadIO m) => a -> ((?self :: a) => TimelineElementChildPropertyRemovedCallback) -> m SignalHandlerId
- type TimelineElementDeepNotifyCallback = Object -> GParamSpec -> IO ()
- afterTimelineElementDeepNotify :: (IsTimelineElement a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => TimelineElementDeepNotifyCallback) -> m SignalHandlerId
- onTimelineElementDeepNotify :: (IsTimelineElement a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => TimelineElementDeepNotifyCallback) -> m SignalHandlerId
Exported types
newtype TimelineElement Source #
Memory-managed wrapper type.
Constructors
| TimelineElement (ManagedPtr TimelineElement) | 
Instances
| Eq TimelineElement Source # | |
| Defined in GI.GES.Objects.TimelineElement Methods (==) :: TimelineElement -> TimelineElement -> Bool # (/=) :: TimelineElement -> TimelineElement -> Bool # | |
| GObject TimelineElement Source # | |
| Defined in GI.GES.Objects.TimelineElement | |
| ManagedPtrNewtype TimelineElement Source # | |
| Defined in GI.GES.Objects.TimelineElement Methods toManagedPtr :: TimelineElement -> ManagedPtr TimelineElement | |
| TypedObject TimelineElement Source # | |
| Defined in GI.GES.Objects.TimelineElement | |
| HasParentTypes TimelineElement Source # | |
| Defined in GI.GES.Objects.TimelineElement | |
| IsGValue (Maybe TimelineElement) Source # | Convert  | 
| Defined in GI.GES.Objects.TimelineElement Methods gvalueGType_ :: IO GType gvalueSet_ :: Ptr GValue -> Maybe TimelineElement -> IO () gvalueGet_ :: Ptr GValue -> IO (Maybe TimelineElement) | |
| type ParentTypes TimelineElement Source # | |
| Defined in GI.GES.Objects.TimelineElement | |
class (GObject o, IsDescendantOf TimelineElement o) => IsTimelineElement o Source #
Type class for types which can be safely cast to TimelineElement, for instance with toTimelineElement.
Instances
| (GObject o, IsDescendantOf TimelineElement o) => IsTimelineElement o Source # | |
| Defined in GI.GES.Objects.TimelineElement | |
toTimelineElement :: (MonadIO m, IsTimelineElement o) => o -> m TimelineElement Source #
Cast to TimelineElement, for types for which this is known to be safe. For general casts, use castTo.
Methods
Click to display all available methods, including inherited ones
Methods
addChildProperty, addMetasFromString, bindProperty, bindPropertyFull, checkMetaRegistered, copy, edit, editFull, forceFloating, foreach, freezeNotify, getv, isFloating, listChildrenProperties, lookupChild, metasToString, notify, notifyByPspec, paste, ref, refSink, registerMeta, registerMetaBoolean, registerMetaDate, registerMetaDateTime, registerMetaDouble, registerMetaFloat, registerMetaInt, registerMetaInt64, registerMetaString, registerMetaUint, registerMetaUint64, registerStaticMeta, removeChildProperty, ripple, rippleEnd, rollEnd, rollStart, runDispose, stealData, stealQdata, thawNotify, trim, unref, watchClosure.
Getters
getAsset, getBoolean, getChildProperty, getChildPropertyByPspec, getData, getDate, getDateTime, getDouble, getDuration, getFloat, getId, getInpoint, getInt, getInt64, getLayerPriority, getMarkerList, getMaxDuration, getMeta, getName, getNaturalFramerate, getParent, getPriority, getProperty, getQdata, getStart, getString, getTimeline, getToplevelParent, getTrackTypes, getUint, getUint64.
Setters
setAsset, setBoolean, setChildProperty, setChildPropertyByPspec, setChildPropertyFull, setData, setDataFull, setDate, setDateTime, setDouble, setDuration, setFloat, setInpoint, setInt, setInt64, setMarkerList, setMaxDuration, setMeta, setName, setParent, setPriority, setProperty, setStart, setString, setTimeline, setUint, setUint64.
addChildProperty
timelineElementAddChildProperty Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a, IsObject b) | |
| => a | 
 | 
| -> GParamSpec | 
 | 
| -> b | 
 | 
| -> m Bool | Returns:  | 
Register a property of a child of the element to allow it to be
 written with timelineElementSetChildProperty and read with
 timelineElementGetChildProperty. A change in the property
 will also appear in the TimelineElement::deepNotify signal.
pspec should be unique from other children properties that have been
 registered on self.
copy
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Bool | 
 | 
| -> m TimelineElement | Returns: The newly create element,
 copied from  | 
Create a copy of self. All the properties of self are copied into
 a new element, with the exception of TimelineElement:parent,
 TimelineElement:timeline and TimelineElement:name. Other data,
 such the list of a Container's children, is **not** copied.
If deep is True, then the new element is prepared so that it can be
 used in timelineElementPaste or timelinePasteElement.
 In the case of copying a Container, this ensures that the children
 of self will also be pasted. The new element should not be used for
 anything else and can only be used **once** in a pasting operation. In
 particular, the new element itself is not an actual 'deep' copy of
 self, but should be thought of as an intermediate object used for a
 single paste operation.
edit
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a, IsLayer b) | |
| => a | 
 | 
| -> [b] | 
 | 
| -> Int64 | 
 | 
| -> EditMode | 
 | 
| -> Edge | 
 | 
| -> Word64 | 
 | 
| -> m Bool | Returns:  | 
See timelineElementEditFull, which also gives an error.
Note that the layers argument is currently ignored, so you should
 just pass Nothing.
Since: 1.18
editFull
timelineElementEditFull Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Int64 | 
 | 
| -> EditMode | 
 | 
| -> Edge | 
 | 
| -> Word64 | 
 | 
| -> m () | (Can throw  | 
Edits the element within its timeline by adjusting its
 TimelineElement:start, TimelineElement:duration or
 TimelineElement:inPoint, and potentially doing the same for
 other elements in the timeline. See EditMode for details about each
 edit mode. An edit may fail if it would place one of these properties
 out of bounds, or if it would place the timeline in an unsupported
 configuration.
Note that if you act on a TrackElement, this will edit its parent
 Clip instead. Moreover, for any TimelineElement, if you select
 GES_EDGE_NONE for GES_EDIT_MODE_NORMAL or GES_EDIT_MODE_RIPPLE, this
 will edit the toplevel instead, but still in such a way as to make the
 TimelineElement:start of self reach the edit position.
Note that if the element's timeline has a Timeline:snappingDistance set, then the edit position may be snapped to the edge of some element under the edited element.
newLayerPriority can be used to switch self, and other elements
 moved by the edit, to a new layer. New layers may be be created if the
 the corresponding layer priority/index does not yet exist for the
 timeline.
Since: 1.18
getChildProperty
timelineElementGetChildProperty Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Text | 
 | 
| -> m (Bool, GValue) | Returns:  | 
Gets the property of a child of the element.
propertyName can either be in the format "prop-name" or
 "TypeNamepropName", where "prop-name" is the name of the property
 to get (as used in g_object_get()), and "TypeName" is the type name of
 the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is
 useful when two children of different types share the same property
 name.
The first child found with the given "prop-name" property that was
 registered with timelineElementAddChildProperty (and of the
 type "TypeName", if it was given) will have the corresponding
 property copied into value.
Note that ges_timeline_element_get_child_properties() may be more
 convenient for C programming.
getChildPropertyByPspec
timelineElementGetChildPropertyByPspec Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> GParamSpec | 
 | 
| -> m GValue | 
Gets the property of a child of the element. Specifically, the property
 corresponding to the pspec used in
 timelineElementAddChildProperty is copied into value.
getDuration
timelineElementGetDuration Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m Word64 | Returns: The duration of  | 
Gets the TimelineElement:duration for the element.
getInpoint
timelineElementGetInpoint Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m Word64 | Returns: The in-point of  | 
Gets the TimelineElement:inPoint for the element.
getLayerPriority
timelineElementGetLayerPriority Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m Word32 | Returns: The priority of the layer  | 
Gets the priority of the layer the element is in. A Group may span
 several layers, so this would return the highest priority (numerically,
 the smallest) amongst them.
Since: 1.16
getMaxDuration
timelineElementGetMaxDuration Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m Word64 | Returns: The max-duration of  | 
Gets the TimelineElement:maxDuration for the element.
getName
timelineElementGetName Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m Text | Returns: The name of  | 
Gets the TimelineElement:name for the element.
getNaturalFramerate
timelineElementGetNaturalFramerate Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m (Bool, Int32, Int32) | Returns: Whether  | 
Get the "natural" framerate of self. This is to say, for example
 for a VideoUriSource the framerate of the source.
Note that a AudioSource may also have a natural framerate if it derives
 from the same SourceClip asset as a VideoSource, and its value will
 be that of the video source. For example, if the uri of a UriClip points
 to a file that contains both a video and audio stream, then the corresponding
 AudioUriSource will share the natural framerate of the corresponding
 VideoUriSource.
Since: 1.18
getParent
timelineElementGetParent Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m (Maybe TimelineElement) | Returns: The parent of  | 
Gets the TimelineElement:parent for the element.
getPriority
timelineElementGetPriority Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m Word32 | Returns: The priority of  | 
Gets the TimelineElement:priority for the element.
getStart
timelineElementGetStart Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m Word64 | Returns: The start of  | 
Gets the TimelineElement:start for the element.
getTimeline
timelineElementGetTimeline Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m (Maybe Timeline) | Returns: The timeline of  | 
Gets the TimelineElement:timeline for the element.
getToplevelParent
timelineElementGetToplevelParent Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m TimelineElement | Returns: The toplevel parent of  | 
Gets the toplevel TimelineElement:parent of the element.
getTrackTypes
timelineElementGetTrackTypes Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> m [TrackType] | Returns: The track types that  | 
Gets the track types that the element can interact with, i.e. the type
 of Track it can exist in, or will create TrackElement-s for.
Since: 1.6.0
lookupChild
timelineElementLookupChild Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Text | 
 | 
| -> m (Bool, Object, GParamSpec) | Returns:  | 
Looks up a child property of the element.
propName can either be in the format "prop-name" or
 "TypeNamepropName", where "prop-name" is the name of the property
 to look up (as used in g_object_get()), and "TypeName" is the type name
 of the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is
 useful when two children of different types share the same property
 name.
The first child found with the given "prop-name" property that was
 registered with timelineElementAddChildProperty (and of the
 type "TypeName", if it was given) will be passed to child, and the
 registered specification of this property will be passed to pspec.
paste
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word64 | 
 | 
| -> m (Maybe TimelineElement) | Returns: The newly created element, or
  | 
Paste an element inside the same timeline and layer as self. self
 **must** be the return of timelineElementCopy with deep=TRUE,
 and it should not be changed before pasting.
 self is not placed in the timeline, instead a new element is created,
 alike to the originally copied element. Note that the originally
 copied element must stay within the same timeline and layer, at both
 the point of copying and pasting.
Pasting may fail if it would place the timeline in an unsupported configuration.
After calling this function element should not be used. In particular,
 element can **not** be pasted again. Instead, you can copy the
 returned element and paste that copy (although, this is only possible
 if the paste was successful).
See also timelinePasteElement.
Since: 1.6.0
removeChildProperty
timelineElementRemoveChildProperty Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> GParamSpec | 
 | 
| -> m Bool | Returns:  | 
Remove a child property from the element. pspec should be a
 specification that was passed to
 timelineElementAddChildProperty. The corresponding property
 will no longer be registered as a child property for the element.
ripple
timelineElementRipple Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word64 | 
 | 
| -> m Bool | Returns:  | 
Edits the start time of an element within its timeline in ripple mode.
 See timelineElementEdit with GES_EDIT_MODE_RIPPLE and
 GES_EDGE_NONE.
rippleEnd
timelineElementRippleEnd Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word64 | 
 | 
| -> m Bool | Returns:  | 
Edits the end time of an element within its timeline in ripple mode.
 See timelineElementEdit with GES_EDIT_MODE_RIPPLE and
 GES_EDGE_END.
rollEnd
timelineElementRollEnd Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word64 | 
 | 
| -> m Bool | Returns:  | 
Edits the end time of an element within its timeline in roll mode.
 See timelineElementEdit with GES_EDIT_MODE_ROLL and
 GES_EDGE_END.
rollStart
timelineElementRollStart Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word64 | 
 | 
| -> m Bool | Returns:  | 
Edits the start time of an element within its timeline in roll mode.
 See timelineElementEdit with GES_EDIT_MODE_ROLL and
 GES_EDGE_START.
setChildProperty
timelineElementSetChildProperty Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Text | 
 | 
| -> GValue | 
 | 
| -> m Bool | Returns:  | 
See timelineElementSetChildPropertyFull, which also gives an
 error.
Note that ges_timeline_element_set_child_properties() may be more
 convenient for C programming.
setChildPropertyByPspec
timelineElementSetChildPropertyByPspec Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> GParamSpec | 
 | 
| -> GValue | 
 | 
| -> m () | 
Sets the property of a child of the element. Specifically, the property
 corresponding to the pspec used in
 timelineElementAddChildProperty is set to value.
setChildPropertyFull
timelineElementSetChildPropertyFull Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Text | 
 | 
| -> GValue | 
 | 
| -> m () | (Can throw  | 
Sets the property of a child of the element.
propertyName can either be in the format "prop-name" or
 "TypeNamepropName", where "prop-name" is the name of the property
 to set (as used in g_object_set()), and "TypeName" is the type name of
 the child (as returned by G_OBJECT_TYPE_NAME()). The latter format is
 useful when two children of different types share the same property
 name.
The first child found with the given "prop-name" property that was
 registered with timelineElementAddChildProperty (and of the
 type "TypeName", if it was given) will have the corresponding
 property set to value. Other children that may have also matched the
 property name (and type name) are left unchanged!
Since: 1.18
setDuration
timelineElementSetDuration Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word64 | 
 | 
| -> m Bool | Returns:  | 
Sets TimelineElement:duration for the element.
Whilst the element is part of a Timeline, this is the same as
 editing the element with timelineElementEdit under
 GES_EDIT_MODE_TRIM with GES_EDGE_END. In particular, the
 TimelineElement:duration of the element may be snapped to a
 different timeline time difference from the one given. In addition,
 setting may fail if it would place the timeline in an unsupported
 configuration, or the element does not have enough internal content to
 last the desired duration.
setInpoint
timelineElementSetInpoint Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word64 | 
 | 
| -> m Bool | Returns:  | 
Sets TimelineElement:inPoint for the element. If the new in-point is above the current TimelineElement:maxDuration of the element, this method will fail.
setMaxDuration
timelineElementSetMaxDuration Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word64 | 
 | 
| -> m Bool | Returns:  | 
Sets TimelineElement:maxDuration for the element. If the new maximum duration is below the current TimelineElement:inPoint of the element, this method will fail.
setName
timelineElementSetName Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Maybe Text | 
 | 
| -> m Bool | Returns:  | 
Sets the TimelineElement:name for the element. If Nothing is given
 for name, then the library will instead generate a new name based on
 the type name of the element, such as the name "uriclip3" for a
 UriClip, and will set that name instead.
If self already has a TimelineElement:timeline, you should not
 call this function with name set to Nothing.
You should ensure that, within each Timeline, every element has a
 unique name. If you call this function with name as Nothing, then
 the library should ensure that the set generated name is unique from
 previously **generated** names. However, if you choose a name that
 interferes with the naming conventions of the library, the library will
 attempt to ensure that the generated names will not conflict with the
 chosen name, which may lead to a different name being set instead, but
 the uniqueness between generated and user-chosen names is not
 guaranteed.
setParent
timelineElementSetParent Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a, IsTimelineElement b) | |
| => a | 
 | 
| -> b | |
| -> m Bool | Returns:  | 
Sets the TimelineElement:parent for the element.
This is used internally and you should normally not call this. A
 Container will set the TimelineElement:parent of its children
 in containerAdd and containerRemove.
Note, if parent is not Nothing, self must not already have a parent
 set. Therefore, if you wish to switch parents, you will need to call
 this function twice: first to set the parent to Nothing, and then to the
 new parent.
If parent is not Nothing, you must ensure it already has a
 (non-floating) reference to self before calling this.
setPriority
timelineElementSetPriority Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word32 | 
 | 
| -> m Bool | Returns:  | 
Deprecated: (Since version 1.10)All priority management is done by GES itself now.To set Effect priorities ges_clip_set_top_effect_index shouldbe used.
Sets the priority of the element within the containing layer.
setStart
timelineElementSetStart Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word64 | 
 | 
| -> m Bool | Returns:  | 
Sets TimelineElement:start for the element. If the element has a parent, this will also move its siblings with the same shift.
Whilst the element is part of a Timeline, this is the same as
 editing the element with timelineElementEdit under
 GES_EDIT_MODE_NORMAL with GES_EDGE_NONE. In particular, the
 TimelineElement:start of the element may be snapped to a different
 timeline time from the one given. In addition, setting may fail if it
 would place the timeline in an unsupported configuration.
setTimeline
timelineElementSetTimeline Source #
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a, IsTimeline b) | |
| => a | 
 | 
| -> b | |
| -> m Bool | Returns:  | 
Sets the TimelineElement:timeline of the element.
This is used internally and you should normally not call this. A
 Clip will have its TimelineElement:timeline set through its
 Layer. A Track will similarly take care of setting the
 TimelineElement:timeline of its TrackElement-s. A Group
 will adopt the same TimelineElement:timeline as its children.
If timeline is Nothing, this will stop its current
 TimelineElement:timeline from tracking it, otherwise timeline will
 start tracking self. Note, in the latter case, self must not already
 have a timeline set. Therefore, if you wish to switch timelines, you
 will need to call this function twice: first to set the timeline to
 Nothing, and then to the new timeline.
trim
Arguments
| :: (HasCallStack, MonadIO m, IsTimelineElement a) | |
| => a | 
 | 
| -> Word64 | 
 | 
| -> m Bool | Returns:  | 
Edits the start time of an element within its timeline in trim mode.
 See timelineElementEdit with GES_EDIT_MODE_TRIM and
 GES_EDGE_START.
Properties
duration
The duration that the element is in effect for in the timeline (a time difference in nanoseconds using the time coordinates of the timeline). For example, for a source element, this would determine for how long it should output its internal content for. For an operation element, this would determine for how long its effect should be applied to any source content.
constructTimelineElementDuration :: (IsTimelineElement o, MonadIO m) => Word64 -> m (GValueConstruct o) Source #
Construct a GValueConstruct with valid value for the “duration” property. This is rarely needed directly, but it is used by new.
getTimelineElementDuration :: (MonadIO m, IsTimelineElement o) => o -> m Word64 Source #
Get the value of the “duration” property.
 When overloading is enabled, this is equivalent to
get timelineElement #duration
setTimelineElementDuration :: (MonadIO m, IsTimelineElement o) => o -> Word64 -> m () Source #
Set the value of the “duration” property.
 When overloading is enabled, this is equivalent to
settimelineElement [ #duration:=value ]
inPoint
The initial offset to use internally when outputting content (in nanoseconds, but in the time coordinates of the internal content).
For example, for a VideoUriSource that references some media
 file, the "internal content" is the media file data, and the
 in-point would correspond to some timestamp in the media file.
 When playing the timeline, and when the element is first reached at
 timeline-time TimelineElement:start, it will begin outputting the
 data from the timestamp in-point **onwards**, until it reaches the
 end of its TimelineElement:duration in the timeline.
For elements that have no internal content, this should be kept as 0.
constructTimelineElementInPoint :: (IsTimelineElement o, MonadIO m) => Word64 -> m (GValueConstruct o) Source #
Construct a GValueConstruct with valid value for the “in-point” property. This is rarely needed directly, but it is used by new.
getTimelineElementInPoint :: (MonadIO m, IsTimelineElement o) => o -> m Word64 Source #
Get the value of the “in-point” property.
 When overloading is enabled, this is equivalent to
get timelineElement #inPoint
setTimelineElementInPoint :: (MonadIO m, IsTimelineElement o) => o -> Word64 -> m () Source #
Set the value of the “in-point” property.
 When overloading is enabled, this is equivalent to
settimelineElement [ #inPoint:=value ]
maxDuration
The full duration of internal content that is available (a time difference in nanoseconds using the time coordinates of the internal content).
This will act as a cap on the TimelineElement:inPoint of the element (which is in the same time coordinates), and will sometimes be used to limit the TimelineElement:duration of the element in the timeline.
For example, for a VideoUriSource that references some media
 file, this would be the length of the media file.
For elements that have no internal content, or whose content is
 indefinite, this should be kept as CLOCK_TIME_NONE.
constructTimelineElementMaxDuration :: (IsTimelineElement o, MonadIO m) => Word64 -> m (GValueConstruct o) Source #
Construct a GValueConstruct with valid value for the “max-duration” property. This is rarely needed directly, but it is used by new.
getTimelineElementMaxDuration :: (MonadIO m, IsTimelineElement o) => o -> m Word64 Source #
Get the value of the “max-duration” property.
 When overloading is enabled, this is equivalent to
get timelineElement #maxDuration
setTimelineElementMaxDuration :: (MonadIO m, IsTimelineElement o) => o -> Word64 -> m () Source #
Set the value of the “max-duration” property.
 When overloading is enabled, this is equivalent to
settimelineElement [ #maxDuration:=value ]
name
The name of the element. This should be unique within its timeline.
clearTimelineElementName :: (MonadIO m, IsTimelineElement o) => o -> m () Source #
Set the value of the “name” property to Nothing.
 When overloading is enabled, this is equivalent to
clear #name
constructTimelineElementName :: (IsTimelineElement o, MonadIO m) => Text -> m (GValueConstruct o) Source #
Construct a GValueConstruct with valid value for the “name” property. This is rarely needed directly, but it is used by new.
getTimelineElementName :: (MonadIO m, IsTimelineElement o) => o -> m (Maybe Text) Source #
Get the value of the “name” property.
 When overloading is enabled, this is equivalent to
get timelineElement #name
setTimelineElementName :: (MonadIO m, IsTimelineElement o) => o -> Text -> m () Source #
Set the value of the “name” property.
 When overloading is enabled, this is equivalent to
settimelineElement [ #name:=value ]
parent
The parent container of the element.
clearTimelineElementParent :: (MonadIO m, IsTimelineElement o) => o -> m () Source #
Set the value of the “parent” property to Nothing.
 When overloading is enabled, this is equivalent to
clear #parent
constructTimelineElementParent :: (IsTimelineElement o, MonadIO m, IsTimelineElement a) => a -> m (GValueConstruct o) Source #
Construct a GValueConstruct with valid value for the “parent” property. This is rarely needed directly, but it is used by new.
getTimelineElementParent :: (MonadIO m, IsTimelineElement o) => o -> m (Maybe TimelineElement) Source #
Get the value of the “parent” property.
 When overloading is enabled, this is equivalent to
get timelineElement #parent
setTimelineElementParent :: (MonadIO m, IsTimelineElement o, IsTimelineElement a) => o -> a -> m () Source #
Set the value of the “parent” property.
 When overloading is enabled, this is equivalent to
settimelineElement [ #parent:=value ]
priority
The priority of the element.
constructTimelineElementPriority :: (IsTimelineElement o, MonadIO m) => Word32 -> m (GValueConstruct o) Source #
Construct a GValueConstruct with valid value for the “priority” property. This is rarely needed directly, but it is used by new.
getTimelineElementPriority :: (MonadIO m, IsTimelineElement o) => o -> m Word32 Source #
Get the value of the “priority” property.
 When overloading is enabled, this is equivalent to
get timelineElement #priority
setTimelineElementPriority :: (MonadIO m, IsTimelineElement o) => o -> Word32 -> m () Source #
Set the value of the “priority” property.
 When overloading is enabled, this is equivalent to
settimelineElement [ #priority:=value ]
serialize
Whether the element should be serialized.
constructTimelineElementSerialize :: (IsTimelineElement o, MonadIO m) => Bool -> m (GValueConstruct o) Source #
Construct a GValueConstruct with valid value for the “serialize” property. This is rarely needed directly, but it is used by new.
getTimelineElementSerialize :: (MonadIO m, IsTimelineElement o) => o -> m Bool Source #
Get the value of the “serialize” property.
 When overloading is enabled, this is equivalent to
get timelineElement #serialize
setTimelineElementSerialize :: (MonadIO m, IsTimelineElement o) => o -> Bool -> m () Source #
Set the value of the “serialize” property.
 When overloading is enabled, this is equivalent to
settimelineElement [ #serialize:=value ]
start
The starting position of the element in the timeline (in nanoseconds and in the time coordinates of the timeline). For example, for a source element, this would determine the time at which it should start outputting its internal content. For an operation element, this would determine the time at which it should start applying its effect to any source content.
constructTimelineElementStart :: (IsTimelineElement o, MonadIO m) => Word64 -> m (GValueConstruct o) Source #
Construct a GValueConstruct with valid value for the “start” property. This is rarely needed directly, but it is used by new.
getTimelineElementStart :: (MonadIO m, IsTimelineElement o) => o -> m Word64 Source #
Get the value of the “start” property.
 When overloading is enabled, this is equivalent to
get timelineElement #start
setTimelineElementStart :: (MonadIO m, IsTimelineElement o) => o -> Word64 -> m () Source #
Set the value of the “start” property.
 When overloading is enabled, this is equivalent to
settimelineElement [ #start:=value ]
timeline
The timeline that the element lies within.
clearTimelineElementTimeline :: (MonadIO m, IsTimelineElement o) => o -> m () Source #
Set the value of the “timeline” property to Nothing.
 When overloading is enabled, this is equivalent to
clear #timeline
constructTimelineElementTimeline :: (IsTimelineElement o, MonadIO m, IsTimeline a) => a -> m (GValueConstruct o) Source #
Construct a GValueConstruct with valid value for the “timeline” property. This is rarely needed directly, but it is used by new.
getTimelineElementTimeline :: (MonadIO m, IsTimelineElement o) => o -> m (Maybe Timeline) Source #
Get the value of the “timeline” property.
 When overloading is enabled, this is equivalent to
get timelineElement #timeline
setTimelineElementTimeline :: (MonadIO m, IsTimelineElement o, IsTimeline a) => o -> a -> m () Source #
Set the value of the “timeline” property.
 When overloading is enabled, this is equivalent to
settimelineElement [ #timeline:=value ]
Signals
childPropertyAdded
type TimelineElementChildPropertyAddedCallback Source #
Arguments
| = Object | 
 | 
| -> GParamSpec | 
 | 
| -> IO () | 
Emitted when the element has a new child property registered. See
 timelineElementAddChildProperty.
Note that some GES elements will be automatically created with
 pre-registered children properties. You can use
 timelineElementListChildrenProperties to list these.
Since: 1.18
afterTimelineElementChildPropertyAdded :: (IsTimelineElement a, MonadIO m) => a -> ((?self :: a) => TimelineElementChildPropertyAddedCallback) -> m SignalHandlerId Source #
Connect a signal handler for the childPropertyAdded signal, to be run after the default handler. When overloading is enabled, this is equivalent to
after timelineElement #childPropertyAdded callback
By default the object invoking the signal is not passed to the callback.
 If you need to access it, you can use the implit ?self parameter.
 Note that this requires activating the ImplicitParams GHC extension.
onTimelineElementChildPropertyAdded :: (IsTimelineElement a, MonadIO m) => a -> ((?self :: a) => TimelineElementChildPropertyAddedCallback) -> m SignalHandlerId Source #
Connect a signal handler for the childPropertyAdded signal, to be run before the default handler. When overloading is enabled, this is equivalent to
on timelineElement #childPropertyAdded callback
childPropertyRemoved
type TimelineElementChildPropertyRemovedCallback Source #
Arguments
| = Object | 
 | 
| -> GParamSpec | 
 | 
| -> IO () | 
Emitted when the element has a child property unregistered. See
 timelineElementRemoveChildProperty.
Since: 1.18
afterTimelineElementChildPropertyRemoved :: (IsTimelineElement a, MonadIO m) => a -> ((?self :: a) => TimelineElementChildPropertyRemovedCallback) -> m SignalHandlerId Source #
Connect a signal handler for the childPropertyRemoved signal, to be run after the default handler. When overloading is enabled, this is equivalent to
after timelineElement #childPropertyRemoved callback
By default the object invoking the signal is not passed to the callback.
 If you need to access it, you can use the implit ?self parameter.
 Note that this requires activating the ImplicitParams GHC extension.
onTimelineElementChildPropertyRemoved :: (IsTimelineElement a, MonadIO m) => a -> ((?self :: a) => TimelineElementChildPropertyRemovedCallback) -> m SignalHandlerId Source #
Connect a signal handler for the childPropertyRemoved signal, to be run before the default handler. When overloading is enabled, this is equivalent to
on timelineElement #childPropertyRemoved callback
deepNotify
type TimelineElementDeepNotifyCallback Source #
Arguments
| = Object | 
 | 
| -> GParamSpec | 
 | 
| -> IO () | 
Emitted when a child of the element has one of its registered
 properties set. See timelineElementAddChildProperty.
 Note that unlike Object::notify, a child property name can not be
 used as a signal detail.
afterTimelineElementDeepNotify :: (IsTimelineElement a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => TimelineElementDeepNotifyCallback) -> m SignalHandlerId Source #
Connect a signal handler for the deepNotify signal, to be run after the default handler. When overloading is enabled, this is equivalent to
after timelineElement #deepNotify callback
This signal admits a optional parameter detail.
 If it's not Nothing, we will connect to “deep-notify::detail” instead.
By default the object invoking the signal is not passed to the callback.
 If you need to access it, you can use the implit ?self parameter.
 Note that this requires activating the ImplicitParams GHC extension.
onTimelineElementDeepNotify :: (IsTimelineElement a, MonadIO m) => a -> Maybe Text -> ((?self :: a) => TimelineElementDeepNotifyCallback) -> m SignalHandlerId Source #
Connect a signal handler for the deepNotify signal, to be run before the default handler. When overloading is enabled, this is equivalent to
on timelineElement #deepNotify callback
This signal admits a optional parameter detail.
 If it's not Nothing, we will connect to “deep-notify::detail” instead.