class Adw::SpringAnimation

Overview

A spring-based #Animation.

AdwSpringAnimation implements an animation driven by a physical model of a spring described by #SpringParams, with a resting position in [property@SpringAnimation:value-to], stretched to [property@SpringAnimation:value-from].

Since the animation is physically simulated, spring animations don't have a fixed duration. The animation will stop when the simulated spring comes to a rest - when the amplitude of the oscillations becomes smaller than SpringAnimation#epsilon, or immediately when it reaches [property@SpringAnimation:value-to] if SpringAnimation#clamp is set to TRUE. The estimated duration can be obtained with [property@SpringAnimation:estimated-duration].

Due to the nature of spring-driven motion the animation can overshoot [property@SpringAnimation:value-to] before coming to a rest. Whether the animation will overshoot or not depends on the damping ratio of the spring. See #SpringParams for more information about specific damping ratio values.

If SpringAnimation#clamp is TRUE, the animation will abruptly end as soon as it reaches the final value, preventing overshooting.

Animations can have an initial velocity value, set via [property@SpringAnimation:initial-velocity], which adjusts the curve without changing the duration. This makes spring animations useful for deceleration at the end of gestures.

If the initial and final values are equal, and the initial velocity is not 0, the animation value will bounce and return to its resting position.

Defined in:

auto/adw-1/spring_animation.cr

Constructors

Class Method Summary

Instance Method Summary

Instance methods inherited from class Adw::Animation

done_signal done_signal, pause : Nil pause, play : Nil play, reset : Nil reset, resume : Nil resume, skip : Nil skip, state : Adw::AnimationState state, target : Adw::AnimationTarget target, target=(value : Adw::AnimationTarget?) : Adw::AnimationTarget? target=, value : Float64 value, widget : Gtk::Widget widget, widget=(value : Gtk::Widget?) : Gtk::Widget? widget=

Constructor methods inherited from class Adw::Animation

new
new(*, state : Adw::AnimationState? = nil, target : Adw::AnimationTarget? = nil, value : Float64? = nil, widget : Gtk::Widget? = nil)
new

Class methods inherited from class Adw::Animation

g_type : UInt64 g_type

Instance methods inherited from class GObject::Object

bind_property(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags) : GObject::Binding bind_property, bind_property_full(source_property : String, target : GObject::Object, target_property : String, flags : GObject::BindingFlags, transform_to : GObject::Closure, transform_from : GObject::Closure) : GObject::Binding bind_property_full, data(key : String) : Pointer(Void)? data, finalize finalize, freeze_notify : Nil freeze_notify, getv(names : Enumerable(String), values : Enumerable(_)) : Nil getv, notify(property_name : String) : Nil notify, notify_by_pspec(pspec : GObject::ParamSpec) : Nil notify_by_pspec, notify_signal notify_signal, property(property_name : String, value : _) : Nil property, qdata(quark : UInt32) : Pointer(Void)? qdata, ref_count ref_count, run_dispose : Nil run_dispose, set_data(key : String, data : Pointer(Void)?) : Nil set_data, set_property(property_name : String, value : _) : Nil set_property, steal_data(key : String) : Pointer(Void)? steal_data, steal_qdata(quark : UInt32) : Pointer(Void)? steal_qdata, thaw_notify : Nil thaw_notify, to_unsafe : Pointer(Void) to_unsafe, watch_closure(closure : GObject::Closure) : Nil watch_closure

Constructor methods inherited from class GObject::Object

cast(obj : GObject::Object) : self cast, cast?(obj : GObject::Object) : self? cast?, new new, newv(object_type : UInt64, parameters : Enumerable(GObject::Parameter)) : self newv

Class methods inherited from class GObject::Object

compat_control(what : UInt64, data : Pointer(Void)?) : UInt64 compat_control, g_type : UInt64 g_type, interface_find_property(g_iface : GObject::TypeInterface, property_name : String) : GObject::ParamSpec interface_find_property, interface_list_properties(g_iface : GObject::TypeInterface) : Enumerable(GObject::ParamSpec) interface_list_properties

Constructor Detail

def self.new(widget : Gtk::Widget, from : Float64, to : Float64, spring_params : Adw::SpringParams, target : Adw::AnimationTarget) #

Creates a new AdwSpringAnimation on @widget.

The animation will animate @target from @from to @to with the dynamics of a spring described by @spring_params.


def self.new #

Initialize a new SpringAnimation.


def self.new(*, clamp : Bool? = nil, epsilon : Float64? = nil, estimated_duration : UInt32? = nil, initial_velocity : Float64? = nil, spring_params : Adw::SpringParams? = nil, state : Adw::AnimationState? = nil, target : Adw::AnimationTarget? = nil, value : Float64? = nil, value_from : Float64? = nil, value_to : Float64? = nil, velocity : Float64? = nil, widget : Gtk::Widget? = nil) #

Class Method Detail

def self.g_type : UInt64 #

Returns the type id (GType) registered in GLib type system.


Instance Method Detail

def clamp : Bool #

Gets whether @self should be clamped.


def clamp=(clamp : Bool) : Nil #

Sets whether @self should be clamped.


def clamp? : Bool #

def epsilon : Float64 #

Gets the precision used to determine the duration of @self.


def epsilon=(epsilon : Float64) : Nil #

Sets the precision used to determine the duration of @self.


def estimated_duration : UInt32 #

Gets the estimated duration of @self.


def initial_velocity : Float64 #

Gets the initial velocity of @self.


def initial_velocity=(velocity : Float64) : Nil #

Sets the initial velocity of @self.


def spring_params : Adw::SpringParams #

Gets the physical parameters of the spring of @self.


def spring_params=(spring_params : Adw::SpringParams) : Nil #

Sets the physical parameters of the spring of @self.


def value_from : Float64 #

Gets the value @self will animate from.


def value_from=(value : Float64) : Nil #

Sets the value @self will animate from.


def value_to : Float64 #

Gets the value @self will animate to.


def value_to=(value : Float64) : Nil #

Sets the value @self will animate to.


def velocity : Float64 #

Gets the current velocity of @self.