Home | History | Annotate | Download | only in test
      1 // Copyright 2012 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CC_TEST_ANIMATION_TEST_COMMON_H_
      6 #define CC_TEST_ANIMATION_TEST_COMMON_H_
      7 
      8 #include "cc/animation/animation.h"
      9 #include "cc/animation/animation_curve.h"
     10 #include "cc/animation/layer_animation_controller.h"
     11 #include "cc/animation/layer_animation_value_observer.h"
     12 #include "cc/animation/layer_animation_value_provider.h"
     13 #include "cc/output/filter_operations.h"
     14 #include "cc/test/geometry_test_utils.h"
     15 
     16 namespace cc {
     17 class LayerImpl;
     18 class Layer;
     19 }
     20 
     21 namespace cc {
     22 
     23 class FakeFloatAnimationCurve : public FloatAnimationCurve {
     24  public:
     25   FakeFloatAnimationCurve();
     26   explicit FakeFloatAnimationCurve(double duration);
     27   virtual ~FakeFloatAnimationCurve();
     28 
     29   virtual double Duration() const OVERRIDE;
     30   virtual float GetValue(double now) const OVERRIDE;
     31   virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
     32 
     33  private:
     34   double duration_;
     35 };
     36 
     37 class FakeTransformTransition : public TransformAnimationCurve {
     38  public:
     39   explicit FakeTransformTransition(double duration);
     40   virtual ~FakeTransformTransition();
     41 
     42   virtual double Duration() const OVERRIDE;
     43   virtual gfx::Transform GetValue(double time) const OVERRIDE;
     44   virtual bool AnimatedBoundsForBox(const gfx::BoxF& box,
     45                                     gfx::BoxF* bounds) const OVERRIDE;
     46   virtual bool AffectsScale() const OVERRIDE;
     47   virtual bool IsTranslation() const OVERRIDE;
     48   virtual bool MaximumTargetScale(bool forward_direction,
     49                                   float* max_scale) const OVERRIDE;
     50 
     51   virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
     52 
     53  private:
     54   double duration_;
     55 };
     56 
     57 class FakeFloatTransition : public FloatAnimationCurve {
     58  public:
     59   FakeFloatTransition(double duration, float from, float to);
     60   virtual ~FakeFloatTransition();
     61 
     62   virtual double Duration() const OVERRIDE;
     63   virtual float GetValue(double time) const OVERRIDE;
     64 
     65   virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE;
     66 
     67  private:
     68   double duration_;
     69   float from_;
     70   float to_;
     71 };
     72 
     73 class FakeLayerAnimationValueObserver : public LayerAnimationValueObserver {
     74  public:
     75   FakeLayerAnimationValueObserver();
     76   virtual ~FakeLayerAnimationValueObserver();
     77 
     78   // LayerAnimationValueObserver implementation
     79   virtual void OnFilterAnimated(const FilterOperations& filters) OVERRIDE;
     80   virtual void OnOpacityAnimated(float opacity) OVERRIDE;
     81   virtual void OnTransformAnimated(const gfx::Transform& transform) OVERRIDE;
     82   virtual void OnScrollOffsetAnimated(
     83       const gfx::Vector2dF& scroll_offset) OVERRIDE;
     84   virtual void OnAnimationWaitingForDeletion() OVERRIDE;
     85   virtual bool IsActive() const OVERRIDE;
     86 
     87   const FilterOperations& filters() const { return filters_; }
     88   float opacity() const  { return opacity_; }
     89   const gfx::Transform& transform() const { return transform_; }
     90   gfx::Vector2dF scroll_offset() { return scroll_offset_; }
     91 
     92   bool animation_waiting_for_deletion() {
     93     return animation_waiting_for_deletion_;
     94   }
     95 
     96  private:
     97   FilterOperations filters_;
     98   float opacity_;
     99   gfx::Transform transform_;
    100   gfx::Vector2dF scroll_offset_;
    101   bool animation_waiting_for_deletion_;
    102 };
    103 
    104 class FakeInactiveLayerAnimationValueObserver
    105     : public FakeLayerAnimationValueObserver {
    106  public:
    107   virtual bool IsActive() const OVERRIDE;
    108 };
    109 
    110 class FakeLayerAnimationValueProvider : public LayerAnimationValueProvider {
    111  public:
    112   virtual gfx::Vector2dF ScrollOffsetForAnimation() const OVERRIDE;
    113 
    114   void set_scroll_offset(const gfx::Vector2dF& scroll_offset) {
    115     scroll_offset_ = scroll_offset;
    116   }
    117 
    118  private:
    119   gfx::Vector2dF scroll_offset_;
    120 };
    121 
    122 int AddOpacityTransitionToController(LayerAnimationController* controller,
    123                                      double duration,
    124                                      float start_opacity,
    125                                      float end_opacity,
    126                                      bool use_timing_function);
    127 
    128 int AddAnimatedTransformToController(LayerAnimationController* controller,
    129                                      double duration,
    130                                      int delta_x,
    131                                      int delta_y);
    132 
    133 int AddAnimatedFilterToController(LayerAnimationController* controller,
    134                                   double duration,
    135                                   float start_brightness,
    136                                   float end_brightness);
    137 
    138 int AddOpacityTransitionToLayer(Layer* layer,
    139                                 double duration,
    140                                 float start_opacity,
    141                                 float end_opacity,
    142                                 bool use_timing_function);
    143 
    144 int AddOpacityTransitionToLayer(LayerImpl* layer,
    145                                 double duration,
    146                                 float start_opacity,
    147                                 float end_opacity,
    148                                 bool use_timing_function);
    149 
    150 int AddAnimatedTransformToLayer(Layer* layer,
    151                                 double duration,
    152                                 int delta_x,
    153                                 int delta_y);
    154 
    155 int AddAnimatedTransformToLayer(LayerImpl* layer,
    156                                 double duration,
    157                                 int delta_x,
    158                                 int delta_y);
    159 
    160 int AddAnimatedTransformToLayer(Layer* layer,
    161                                 double duration,
    162                                 TransformOperations start_operations,
    163                                 TransformOperations operations);
    164 
    165 int AddAnimatedTransformToLayer(LayerImpl* layer,
    166                                 double duration,
    167                                 TransformOperations start_operations,
    168                                 TransformOperations operations);
    169 
    170 int AddAnimatedFilterToLayer(Layer* layer,
    171                              double duration,
    172                              float start_brightness,
    173                              float end_brightness);
    174 
    175 int AddAnimatedFilterToLayer(LayerImpl* layer,
    176                              double duration,
    177                              float start_brightness,
    178                              float end_brightness);
    179 
    180 }  // namespace cc
    181 
    182 #endif  // CC_TEST_ANIMATION_TEST_COMMON_H_
    183