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 |
- 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
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 (Maybe 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.
TimelineElement (ManagedPtr TimelineElement) |
Instances
Eq TimelineElement Source # | |
Defined in GI.GES.Objects.TimelineElement (==) :: TimelineElement -> TimelineElement -> Bool # (/=) :: TimelineElement -> TimelineElement -> Bool # | |
GObject TimelineElement Source # | |
Defined in GI.GES.Objects.TimelineElement | |
ManagedPtrNewtype TimelineElement Source # | |
Defined in GI.GES.Objects.TimelineElement 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 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 #
:: (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
:: (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
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (HasCallStack, MonadIO m, IsTimelineElement a) | |
=> a |
|
-> m Word64 | Returns: The duration of |
Gets the TimelineElement:duration for the element.
getInpoint
timelineElementGetInpoint Source #
:: (HasCallStack, MonadIO m, IsTimelineElement a) | |
=> a |
|
-> m Word64 | Returns: The in-point of |
Gets the TimelineElement:inPoint for the element.
getLayerPriority
timelineElementGetLayerPriority Source #
:: (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 #
:: (HasCallStack, MonadIO m, IsTimelineElement a) | |
=> a |
|
-> m Word64 | Returns: The max-duration of |
Gets the TimelineElement:maxDuration for the element.
getName
timelineElementGetName Source #
:: (HasCallStack, MonadIO m, IsTimelineElement a) | |
=> a |
|
-> m (Maybe Text) | Returns: The name of |
Gets the TimelineElement:name for the element.
getNaturalFramerate
timelineElementGetNaturalFramerate Source #
:: (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 #
:: (HasCallStack, MonadIO m, IsTimelineElement a) | |
=> a |
|
-> m (Maybe TimelineElement) | Returns: The parent of |
Gets the TimelineElement:parent for the element.
getPriority
timelineElementGetPriority Source #
:: (HasCallStack, MonadIO m, IsTimelineElement a) | |
=> a |
|
-> m Word32 | Returns: The priority of |
Gets the TimelineElement:priority for the element.
getStart
timelineElementGetStart Source #
:: (HasCallStack, MonadIO m, IsTimelineElement a) | |
=> a |
|
-> m Word64 | Returns: The start of |
Gets the TimelineElement:start for the element.
getTimeline
timelineElementGetTimeline Source #
:: (HasCallStack, MonadIO m, IsTimelineElement a) | |
=> a |
|
-> m (Maybe Timeline) | Returns: The timeline of |
Gets the TimelineElement:timeline for the element.
getToplevelParent
timelineElementGetToplevelParent Source #
:: (HasCallStack, MonadIO m, IsTimelineElement a) | |
=> a |
|
-> m TimelineElement | Returns: The toplevel parent of |
Gets the toplevel TimelineElement:parent of the element.
getTrackTypes
timelineElementGetTrackTypes Source #
:: (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 #
:: (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
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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 #
:: (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
:: (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
set
timelineElement [ #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
set
timelineElement [ #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
set
timelineElement [ #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
set
timelineElement [ #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
set
timelineElement [ #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
set
timelineElement [ #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
set
timelineElement [ #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
set
timelineElement [ #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
set
timelineElement [ #timeline:=
value ]
Signals
childPropertyAdded
type TimelineElementChildPropertyAddedCallback Source #
= 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 #
= 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 #
= 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.