| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package fyne
- import "time"
- // AnimationCurve represents an animation algorithm for calculating the progress through a timeline.
- // Custom animations can be provided by implementing the "func(float32) float32" definition.
- // The input parameter will start at 0.0 when an animation starts and travel up to 1.0 at which point it will end.
- // A linear animation would return the same output value as is passed in.
- type AnimationCurve func(float32) float32
- // AnimationRepeatForever is an AnimationCount value that indicates it should not stop looping.
- //
- // Since: 2.0
- const AnimationRepeatForever = -1
- var (
- // AnimationEaseInOut is the default easing, it starts slowly, accelerates to the middle and slows to the end.
- //
- // Since: 2.0
- AnimationEaseInOut = animationEaseInOut
- // AnimationEaseIn starts slowly and accelerates to the end.
- //
- // Since: 2.0
- AnimationEaseIn = animationEaseIn
- // AnimationEaseOut starts at speed and slows to the end.
- //
- // Since: 2.0
- AnimationEaseOut = animationEaseOut
- // AnimationLinear is a linear mapping for animations that progress uniformly through their duration.
- //
- // Since: 2.0
- AnimationLinear = animationLinear
- )
- // Animation represents an animated element within a Fyne canvas.
- // These animations may control individual objects or entire scenes.
- //
- // Since: 2.0
- type Animation struct {
- AutoReverse bool
- Curve AnimationCurve
- Duration time.Duration
- RepeatCount int
- Tick func(float32)
- }
- // NewAnimation creates a very basic animation where the callback function will be called for every
- // rendered frame between time.Now() and the specified duration. The callback values start at 0.0 and
- // will be 1.0 when the animation completes.
- //
- // Since: 2.0
- func NewAnimation(d time.Duration, fn func(float32)) *Animation {
- return &Animation{Duration: d, Tick: fn}
- }
- // Start registers the animation with the application run-loop and starts its execution.
- func (a *Animation) Start() {
- CurrentApp().Driver().StartAnimation(a)
- }
- // Stop will end this animation and remove it from the run-loop.
- func (a *Animation) Stop() {
- CurrentApp().Driver().StopAnimation(a)
- }
- func animationEaseIn(val float32) float32 {
- return val * val
- }
- func animationEaseInOut(val float32) float32 {
- if val <= 0.5 {
- return val * val * 2
- }
- return -1 + (4-val*2)*val
- }
- func animationEaseOut(val float32) float32 {
- return val * (2 - val)
- }
- func animationLinear(val float32) float32 {
- return val
- }
|