Hasty Badger
Small UI library (a branch of Turbo Badger)
 All Classes Namespaces Functions Variables Enumerations Enumerator Friends Groups Pages
tb_animation_utils.h
1 // ================================================================================
2 // == This file is a part of Turbo Badger. (C) 2011-2014, Emil SegerÃ¥s ==
3 // == See tb_core.h for more information. ==
4 // ================================================================================
5 
6 #ifndef TB_ANIMATION_UTILS_H
7 #define TB_ANIMATION_UTILS_H
8 
9 #include "animation/tb_animation.h"
10 
11 namespace tb {
12 
13 // TBAnimatedFloat - A animated float value
14 
16 {
17 public:
18  float src_val;
19  float dst_val;
20  float current_progress;
21 public:
22  // For safe typecasting
23  TBOBJECT_SUBCLASS(TBAnimatedFloat, TBAnimationObject);
24 
25  TBAnimatedFloat( float initial_value,
26  ANIMATION_CURVE animation_curve = ANIMATION_DEFAULT_CURVE,
27  double animation_duration = ANIMATION_DEFAULT_DURATION)
28  : src_val(initial_value), dst_val(initial_value), current_progress(0)
29  {
30  TBAnimationObject::animation_curve = animation_curve;
31  TBAnimationObject::animation_duration = animation_duration;
32  }
33 
34  float GetValue() const { return src_val + (dst_val - src_val) * current_progress; }
35  void SetValueAnimated(float value) { src_val = GetValue(); dst_val = value; TBAnimationManager::StartAnimation(this, animation_curve, animation_duration); }
36  void SetValueImmediately(float value) { TBAnimationManager::AbortAnimation(this, false); src_val = dst_val = value; OnAnimationUpdate(1.0f); }
37 
38  virtual void OnAnimationStart() { current_progress = 0; }
39  virtual void OnAnimationUpdate(float progress) { current_progress = progress; }
40  virtual void OnAnimationStop(bool aborted) {}
41 };
42 
43 // TBFloatAnimator - Animates a external float value, which address is given in the constructor.
44 
46 {
47 public:
48  float *target_value;
49 public:
50  // For safe typecasting
51  TBOBJECT_SUBCLASS(TBFloatAnimator, TBAnimationObject);
52 
53  TBFloatAnimator( float *target_value,
54  ANIMATION_CURVE animation_curve = ANIMATION_DEFAULT_CURVE,
55  double animation_duration = ANIMATION_DEFAULT_DURATION)
56  : TBAnimatedFloat(*target_value), target_value(target_value) {}
57 
58  virtual void OnAnimationStart() { TBAnimatedFloat::OnAnimationStart(); *target_value = GetValue(); }
59  virtual void OnAnimationUpdate(float progress) { TBAnimatedFloat::OnAnimationUpdate(progress); *target_value = GetValue(); }
60 };
61 
62 } // namespace tb
63 
64 #endif // TB_ANIMATION_UTILS_H
virtual void OnAnimationUpdate(float progress)
Called on animation update.
Definition: tb_animation_utils.h:39
virtual void OnAnimationUpdate(float progress)
Called on animation update.
Definition: tb_animation_utils.h:59
Definition: tb_animation_utils.h:15
Definition: tb_animation_utils.h:45
virtual void OnAnimationStart()
Called on animation start.
Definition: tb_animation_utils.h:58
virtual void OnAnimationStart()
Called on animation start.
Definition: tb_animation_utils.h:38
static void AbortAnimation(TBAnimationObject *obj, bool delete_animation)
Abort the animation.
Definition: tb_animation.cpp:153
ANIMATION_CURVE
Defines how the animation progress value is interpolated.
Definition: tb_animation.h:17
TBAnimationObject - Base class for all animated object.
Definition: tb_animation.h:72
virtual void OnAnimationStop(bool aborted)
Called on animation stop.
Definition: tb_animation_utils.h:40