Property target interpolation timeline is a timeline that gradually interpolates specified property from its old value to new one each time new value is set to the property. More...
#include <kanzi/ui/node_component/animation/property_target_interpolation_timeline.hpp>
Public Types | |
| 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 | |
| float | getAcceleration () const |
| Gets acceleration coefficient of interpolation. | |
| float | getDrag () const |
| Gets drag coefficient of interpolation. | |
| PropertyField | getInterpolatedPropertyField () const |
| Gets the field of property the value of which should be interpolated. | |
| AbstractPropertyType | getInterpolatedPropertyType () const |
| Gets the type of property the value of which should be interpolated. | |
| string | getObjectPath () const |
| Gets path to object the property of which should be interpolated. | |
| 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 | setAcceleration (float acceleration) |
| Sets acceleration coefficient of interpolation. | |
| void | setDrag (float drag) |
| Sets drag coefficient of interpolation. | |
| 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 () |
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 interpolation timeline is a timeline that gradually interpolates specified property from its old value to new one each time new value is set to the property.
Timeline interpolates property of specified type on the object specified by its path.
Interpolation of the property value is done by emulating behavior of critically damped harmonic oscillator. The behavior of interpolation is controlled by acceleration and drag coefficients:
Note that setting time to playback of this timeline or advancing it 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 property target interpolation timeline and set its target property and interpolation settings:
To create playback for property target interpolation timeline:
To add playback of property target interpolation timeline to the clock:
To keep an idle interpolation out of the Timeline clock:
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.
|
inlineexplicitprotected |
Constructor.
| domain | Domain. |
| objectPath | Path to object the property of which should be interpolated. |
| interpolatedPropertyType | Type of property the value of which should be interpolated. |
| interpolatedPropertyField | Field of property the value of which should be interpolated. |
| acceleration | Acceleration coefficient of interpolation. |
| drag | Drag coefficient of interpolation. |
|
inlinestatic |
Creates property target interpolation timeline.
| domain | Domain. |
| objectPath | Path to object the property of which should be interpolated. |
| interpolatedPropertyType | Type of property the value of which should be interpolated. |
| interpolatedPropertyField | Field of property the value of which should be interpolated. |
| acceleration | Acceleration coefficient of interpolation. |
| drag | Drag coefficient of interpolation. |
|
inlinestatic |
Creates property target interpolation timeline with default interpolation parameter values.
Default value for acceleration is 1.0, default value for drag is 0.0.
| domain | Domain. |
| objectPath | Path to object the property of which should be interpolated. |
| interpolatedPropertyType | Type of property the value of which should be interpolated. |
| interpolatedPropertyField | Field of property the value of which should be interpolated. |
|
inline |
Gets path to object the property of which should be interpolated.
|
inline |
Gets the type of property the value of which should be interpolated.
|
inline |
Gets the field of property the value of which should be interpolated.
Sets acceleration coefficient of interpolation.
| acceleration | Acceleration coefficient of interpolation. |
|
inline |
Gets acceleration coefficient of interpolation.
Sets drag coefficient of interpolation.
| drag | Drag coefficient of interpolation. |
|
inline |
Gets drag coefficient of interpolation.
|
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.