Property Target Easing Timeline interpolates a property gradually from its old value to a new value using an easing curve each time a new value is set to the property. More...
#include <kanzi/ui/node_component/animation/property_target_easing_timeline.hpp>
Public Types | |
| typedef function< float(float)> | EasingFunction |
| Easing function. | |
| enum class | InterpolationIfInterruptedMode { StartFromCurrentInterpolatedValue , StartFromCurrentTargetValue } |
| How interpolation behaves when it is interrupted. More... | |
| using | PlaybackIdleStateChangedCallback |
| Callback function, invoked when the idle state of the playback of this timeline changes. | |
Public Types inherited from kanzi::Timeline | |
| enum | DirectionBehavior { DirectionBehaviorNormal , DirectionBehaviorReverse , DirectionBehaviorPingPong } |
| Specifies the direction behavior for a timeline. More... | |
Public Types inherited from kanzi::PropertyObject | |
| using | PropertyObjectDestroyCallback |
| using | PropertyStorageConstIterator |
| using | PropertyStorageContainer |
| using | PropertyStorageIterator |
| using | PropertyStoragePtr |
| using | PropertyStorageReverseIterator |
Public Member Functions | |
| EasingFunction | getEasingFunction () const |
| Gets the easing function that defines the interpolation curve. | |
| AnimationEasingMode | getEasingMode () const |
| Gets the easing mode that defines how to apply the easing function to the interpolation. | |
| PropertyField | getInterpolatedPropertyField () const |
| Gets the property field whose value to interpolate. | |
| AbstractPropertyType | getInterpolatedPropertyType () const |
| Gets the property type whose value to interpolate. | |
| chrono::milliseconds | getInterpolationDuration () const |
| Gets the duration of the interpolation in milliseconds. | |
| InterpolationIfInterruptedMode | getInterpolationIfInterruptedMode () const |
| Gets the mode of handling the interpolation if it is interrupted. | |
| string | getObjectPath () const |
| Gets the path to the object whose property to interpolate. | |
| bool | isPlaybackIdle () const |
| Returns whether the playback of this timeline last reported that it is idle. | |
| void | notifyPlaybackIdle (bool isIdle) |
| Reports the idle state of the playback of this timeline. | |
| void | setEasingFunction (EasingFunction easingFunction) |
| Sets the easing function that defines the interpolation curve. | |
| void | setEasingMode (AnimationEasingMode easingMode) |
| Sets the easing mode that defines how to apply the easing function to the interpolation. | |
| void | setInterpolationDuration (chrono::milliseconds interpolationDuration) |
| Sets the duration of the interpolation in milliseconds. | |
| void | setInterpolationIfInterruptedMode (InterpolationIfInterruptedMode mode) |
| Sets the mode of handling the interpolation if it is interrupted. | |
| void | setPlaybackIdleStateChangedCallback (PlaybackIdleStateChangedCallback callback) |
| Sets the callback to invoke when the idle state of the playback of this timeline changes. | |
Public Member Functions inherited from kanzi::Timeline | |
| TimeInterval | calculateClipInterval () |
| Calculates clip interval of timeline. | |
| optional< chrono::milliseconds > | calculateDuration () |
| Calculates the duration of the timeline. | |
| unsigned int | calculateIterationCount () |
| Calculates number of iterations in timeline. | |
| optional< chrono::milliseconds > | calculateIterationDuration () |
| Calculates iteration duration. | |
| TimelinePlaybackSharedPtr | createPlayback (TimelinePlaybackContext &context) |
| Creates playback for timeline. | |
| optional< chrono::milliseconds > | getClipDuration () const |
| Gets the clip duration of the timeline (in milliseconds). | |
| chrono::milliseconds | getClipStartTime () const |
| Gets the clip start time of the timeline (in milliseconds). | |
| DirectionBehavior | getDirectionBehavior () const |
| Gets the direction behavior of a timeline. | |
| float | getDurationScale () const |
| Gets the duration scale of timeline. | |
| float | getMinimumDurationScale () const |
| Gets minimum duration scale. | |
| unsigned int | getRepeatCount () const |
| Gets the repeat count of the timeline (zero indicates infinite repeats). | |
| chrono::milliseconds | getStartTime () const |
| Gets the start time of the timeline (in milliseconds). | |
| void | setClipDuration (optional< chrono::milliseconds > duration) |
| Sets the clip duration of the timeline (in milliseconds). | |
| void | setClipStartTime (chrono::milliseconds clipStartTime) |
| Sets the clip start time of the timeline (in milliseconds). | |
| void | setDirectionBehavior (DirectionBehavior directionBehavior) |
| Sets the direction behavior of a timeline. | |
| void | setDurationScale (float scale) |
| Sets the duration scale of timeline. | |
| void | setRepeatCount (unsigned int repeatCount) |
| Sets the repeat count of the timeline (zero indicates infinite repeats). | |
| void | setStartTime (chrono::milliseconds startTime) |
| Gets the start time of the timeline (in milliseconds). | |
Public Member Functions inherited from kanzi::Object | |
| AppliedStyleEntrySharedPtr | applyObjectStyle (kanzi::StyleSharedPtr style) |
| Applies a style to an object. | |
| void | applyObjectStyles () |
| Apply all styles for an object node. | |
| Domain * | getDomain () const |
| Returns the domain the object belongs to. | |
| const Metaclass * | getDynamicMetaclass () const override |
| Returns the metaclass of the dynamic type of the object. | |
| MainLoopScheduler * | getMainLoopScheduler () const |
| Returns the MainLoopScheduler instance of the associated Domain. | |
| detail::MessageDispatcher * | getMessageDispatcher () const |
| Returns the message dispatcher of the object. | |
| ResourceManager * | getResourceManager () const |
| Returns the resource manager of the object. | |
| ScriptingContextSharedPtr | getScriptingContext () const |
| Gets the scripting context of the object. | |
| Object (Domain *domain) | |
| void | setScriptingContext (ScriptingContextSharedPtr context) |
| Sets the scripting context of the object. | |
| void | unapplyObjectStyle (AppliedStyleEntrySharedPtr appliedStyleEntry) |
| void | unapplyObjectStyles () |
| Unapplies and removes all applied styles. | |
| ~Object () override | |
Public Member Functions inherited from kanzi::MetaObject | |
| bool | isTypeOf (const Metaclass *objectType) const |
| Determines if the type of this object is the given type or derived from it. | |
| virtual | ~MetaObject () |
Public Member Functions inherited from kanzi::PropertyObject | |
| void | addDestroyCallback (PropertyObjectDestroyCallback cb) |
| Adds a destroy callback that is called when the object is being destroyed. | |
| template<typename DataType > | |
| void | addPropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
| Adds a property modifier. | |
| template<typename DataType > | |
| void | addPropertyModifierWithoutNotifyingHandlers (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
| Adds a property modifier without notifying handlers. | |
| template<typename DataType > | |
| void | addPropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
| template<typename DataType > | |
| void | addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, AbstractPropertyTypeDescriptor::ValueSourceOwner *owner) |
| template<typename DataType > | |
| void | addPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, PropertyValuePrecedence precedence, void *ownerPointer) |
| PropertyStorageContainer::iterator | beginPropertyStorage () |
| Returns the begin iterator to the internal property storage container. | |
| PropertyStorageContainer::const_iterator | beginPropertyStorage () const |
| Returns the begin iterator to the internal property storage container. | |
| void | clearPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
| void | copyLocalValue (const PropertyObject &other, AbstractPropertyType propertyType) |
| Copies local value of single property from another object. | |
| void | copyLocalValues (const PropertyObject &other) |
| Copies all local values from another object. | |
| PropertyStorageContainer::iterator | endPropertyStorage () |
| Returns the end iterator to the internal property storage container. | |
| PropertyStorageContainer::const_iterator | endPropertyStorage () const |
| Returns the end iterator to the internal property storage container. | |
| template<typename DataType > | |
| PropertyType< DataType >::Traits::ReturnType | getAbstractProperty (AbstractPropertyType abstractPropertyType) const |
| template<typename DataType > | |
| PropertyType< DataType >::Traits::ReturnType | getAbstractPropertyBase (AbstractPropertyType abstractPropertyType) const |
| template<typename DataType > | |
| optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalAbstractProperty (AbstractPropertyType abstractPropertyType) const |
| template<typename DataType > | |
| optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalProperty (const PropertyType< DataType > &propertyType) const |
| Evaluates the property value in the same way as the overload above but does not default to the value in property metadata if there are no inputs to the property value. | |
| template<typename DataType > | |
| optional< typename PropertyType< DataType >::Traits::ReturnType > | getOptionalPropertyBase (const PropertyType< DataType > &propertyType) const |
| Returns the current value of a property disregarding modifiers, but does not default to the value in property metadata if there are no inputs to the property value. | |
| template<typename DataType > | |
| PropertyType< DataType >::Traits::ReturnType | getProperty (const PropertyType< DataType > &propertyType) const |
| Returns the current value of a property type. | |
| template<typename DataType > | |
| PropertyType< DataType >::Traits::ReturnType | getPropertyBase (const PropertyType< DataType > &propertyType) const |
| Returns the current value of a property disregarding modifiers. | |
| template<typename DataType > | |
| size_t | getPropertyNotificationHandlerCount (const PropertyType< DataType > &propertyType) const |
| Gets number of current notification handlers for given property type. | |
| bool | hasBaseValue (AbstractPropertyType propertyType) const |
| Evaluates whether there are any inputs into the property value, disregarding modifiers. | |
| bool | hasLocalValue (AbstractPropertyType propertyType) const |
| Evaluates whether there is a local value set for the property. | |
| bool | hasNonClassValue (AbstractPropertyType propertyType) const |
| Evaluates whether there is a value of any precedence higher than class default value set for the property. | |
| bool | hasValue (AbstractPropertyType propertyType) const |
| Evaluates whether there are any inputs into the property value. | |
| bool | isPropertyFlagSet (AbstractPropertyType propertyType, uint32_t flag) const |
| virtual void | onPropertyChanged (AbstractPropertyType propertyType, PropertyNotificationReason reason) |
| Virtual function to handle property change notifications. | |
| PropertyObject () | |
| void | removeKzbProperties () |
| Remove all KZB properties. | |
| void | removeKzbProperties (flat_set< AbstractPropertyType > *keepProperties) |
| Remove all KZB properties that are not included in a given set. | |
| template<typename DataType > | |
| void | removeLocalPropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *ownerPointer) |
| void | removeLocalValue (AbstractPropertyType propertyType) |
| Removes the local value associated with the property. | |
| template<typename DataType > | |
| void | removePropertyModifier (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
| Removes a property modifier. | |
| template<typename DataType > | |
| void | removePropertyModifierWithoutNotifyingHandlers (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::ModifierCallback callback, void *owner) |
| Removes a property modifier without notifying handlers. | |
| template<typename DataType > | |
| void | removePropertyNotificationHandler (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::NotificationCallback callback, void *owner) |
| template<typename DataType > | |
| void | removePropertyValueSource (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Descriptor::TypedValueSource *valueSource, void *ownerPointer) |
| template<typename DataType > | |
| void | setAbstractProperty (AbstractPropertyType abstractPropertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
| template<typename DataType > | |
| void | setProperty (const PropertyType< DataType > &propertyType, typename PropertyType< DataType >::Traits::ParameterType value) |
| Sets the local value of a property type. | |
| void | setPropertyFlag (AbstractPropertyType propertyType, uint32_t flag) |
| void | validatePropertyModifiersAndNotifyHandlers (AbstractPropertyType propertyType) |
| Validates property modifiers and notifies handlers. | |
| virtual | ~PropertyObject () |
Static Public Member Functions | |
| static PropertyTargetEasingTimelineSharedPtr | create (Domain *domain, string_view objectPath, AbstractPropertyType interpolatedPropertyType, PropertyField interpolatedPropertyField) |
| Creates a Property Target Easing Timeline. | |
Static Public Member Functions inherited from kanzi::Object | |
| static const Metaclass * | getStaticMetaclass () |
| Returns the metaclass of Object class. | |
| static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
| Default implementation that returns empty editor info. | |
Static Public Member Functions inherited from kanzi::MetaObject | |
| static const Metaclass * | getStaticMetaclass () |
| Returns the metaclass of Object class. | |
| static PropertyTypeEditorInfoSharedPtr | makeEditorInfo () |
| Default implementation that returns empty editor info. | |
Additional Inherited Members | |
Protected Types inherited from kanzi::Object | |
| typedef vector< AppliedStyleEntrySharedPtr > | AppliedStyleContainer |
| Applied style container. | |
Protected Attributes inherited from kanzi::Object | |
| AppliedStyleContainer | m_appliedStyles |
| Listing of applied styles applied to this object. | |
Property Target Easing Timeline interpolates a property gradually from its old value to a new value using an easing curve each time a new value is set to the property.
The timeline interpolates a property of specified type on the object specified by its path.
Property Target Easing Timeline interpolates the property value using a from-to animation with an easing curve applied to it.
Note that setting time to playback of this timeline or advancing the timeline in reverse direction is not supported.
This timeline has an infinite duration, because a write to the interpolated property can restart the interpolation at any time. A playback of this timeline therefore stays in the Timeline clock, and counts as an active animation, which prevents the application from suspending indefinitely. To let the application suspend, the playback reports through setPlaybackIdleStateChangedCallback() when it becomes idle, which means that the interpolation has reached its target and the interpolated property has not changed since. Remove an idle playback from the Timeline clock, and add it back when the callback reports that the playback is interpolating again.
To create a property target easing timeline and set its target property and interpolation settings:
To create playback for property target easing timeline:
To add playback of property target easing timeline to the clock:
To keep an idle interpolation out of the Timeline clock:
Easing function.
Callback function, invoked when the idle state of the playback of this timeline changes.
The playback is idle when it has reached the target value and has nothing left to interpolate. The argument is true when the playback becomes idle, false when it resumes interpolating.
How interpolation behaves when it is interrupted.
|
explicitprotected |
Constructor.
| domain | Domain. |
| objectPath | Path to the object whose property to interpolate. |
| interpolatedPropertyType | Property type whose value to interpolate. |
| interpolatedPropertyField | Field of the property to interpolate. |
|
static |
Creates a Property Target Easing Timeline.
| domain | Domain. |
| objectPath | Path to the object whose property to interpolate. |
| interpolatedPropertyType | Property type whose value to interpolate. |
| interpolatedPropertyField | Property field whose value to interpolate. |
| string kanzi::PropertyTargetEasingTimeline::getObjectPath | ( | ) | const |
Gets the path to the object whose property to interpolate.
| AbstractPropertyType kanzi::PropertyTargetEasingTimeline::getInterpolatedPropertyType | ( | ) | const |
Gets the property type whose value to interpolate.
| PropertyField kanzi::PropertyTargetEasingTimeline::getInterpolatedPropertyField | ( | ) | const |
Gets the property field whose value to interpolate.
| chrono::milliseconds kanzi::PropertyTargetEasingTimeline::getInterpolationDuration | ( | ) | const |
Gets the duration of the interpolation in milliseconds.
| void kanzi::PropertyTargetEasingTimeline::setInterpolationDuration | ( | chrono::milliseconds | interpolationDuration | ) |
Sets the duration of the interpolation in milliseconds.
| interpolationDuration | Interpolation duration. |
| EasingFunction kanzi::PropertyTargetEasingTimeline::getEasingFunction | ( | ) | const |
Gets the easing function that defines the interpolation curve.
| void kanzi::PropertyTargetEasingTimeline::setEasingFunction | ( | EasingFunction | easingFunction | ) |
Sets the easing function that defines the interpolation curve.
| easingFunction | Easing function. |
| AnimationEasingMode kanzi::PropertyTargetEasingTimeline::getEasingMode | ( | ) | const |
Gets the easing mode that defines how to apply the easing function to the interpolation.
| void kanzi::PropertyTargetEasingTimeline::setEasingMode | ( | AnimationEasingMode | easingMode | ) |
Sets the easing mode that defines how to apply the easing function to the interpolation.
| easingMode | Easing mode. |
| InterpolationIfInterruptedMode kanzi::PropertyTargetEasingTimeline::getInterpolationIfInterruptedMode | ( | ) | const |
Gets the mode of handling the interpolation if it is interrupted.
| void kanzi::PropertyTargetEasingTimeline::setInterpolationIfInterruptedMode | ( | InterpolationIfInterruptedMode | mode | ) |
Sets the mode of handling the interpolation if it is interrupted.
| mode | Interpolation if interrupted mode. |
|
inline |
Sets the callback to invoke when the idle state of the playback of this timeline changes.
The callback reports the idle state of a single playback, so set it only on a timeline from which you create one playback.
| callback | Callback to invoke when the idle state of the playback changes. |
Reports the idle state of the playback of this timeline.
The playback of this timeline calls this function. Do not call it from application code. Invokes the callback set with setPlaybackIdleStateChangedCallback() only when the reported state differs from the state reported last.
| isIdle | true when the playback is idle, false when it is interpolating. |
|
inline |
Returns whether the playback of this timeline last reported that it is idle.
Use this to reconcile with a playback that reported its idle state while the Timeline clock was still adding it, because the clock ticks a playback when it adds it.
|
overrideprotectedvirtual |
Timeline::createPlaybackOverride() implementation.
Implements kanzi::Timeline.
|
overrideprotectedvirtual |
Timeline::calculateContentDuration() implementation.
Reimplemented from kanzi::Timeline.