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 16namespace cc { 17class LayerImpl; 18class Layer; 19} 20 21namespace cc { 22 23class 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 37class 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 57class 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 73class 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 104class FakeInactiveLayerAnimationValueObserver 105 : public FakeLayerAnimationValueObserver { 106 public: 107 virtual bool IsActive() const OVERRIDE; 108}; 109 110class 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 122int AddOpacityTransitionToController(LayerAnimationController* controller, 123 double duration, 124 float start_opacity, 125 float end_opacity, 126 bool use_timing_function); 127 128int AddAnimatedTransformToController(LayerAnimationController* controller, 129 double duration, 130 int delta_x, 131 int delta_y); 132 133int AddAnimatedFilterToController(LayerAnimationController* controller, 134 double duration, 135 float start_brightness, 136 float end_brightness); 137 138int AddOpacityTransitionToLayer(Layer* layer, 139 double duration, 140 float start_opacity, 141 float end_opacity, 142 bool use_timing_function); 143 144int AddOpacityTransitionToLayer(LayerImpl* layer, 145 double duration, 146 float start_opacity, 147 float end_opacity, 148 bool use_timing_function); 149 150int AddAnimatedTransformToLayer(Layer* layer, 151 double duration, 152 int delta_x, 153 int delta_y); 154 155int AddAnimatedTransformToLayer(LayerImpl* layer, 156 double duration, 157 int delta_x, 158 int delta_y); 159 160int AddAnimatedTransformToLayer(Layer* layer, 161 double duration, 162 TransformOperations start_operations, 163 TransformOperations operations); 164 165int AddAnimatedTransformToLayer(LayerImpl* layer, 166 double duration, 167 TransformOperations start_operations, 168 TransformOperations operations); 169 170int AddAnimatedFilterToLayer(Layer* layer, 171 double duration, 172 float start_brightness, 173 float end_brightness); 174 175int 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