Add default implementations for AppWindowRegistry::Observer notifications.
[chromium-blink-merge.git] / cc / animation / animation_curve.h
blob72aadefbf8e8f72a1b360b9c58151245e67c6cea
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.
5 #ifndef CC_ANIMATION_ANIMATION_CURVE_H_
6 #define CC_ANIMATION_ANIMATION_CURVE_H_
8 #include "base/memory/scoped_ptr.h"
9 #include "cc/base/cc_export.h"
10 #include "cc/output/filter_operations.h"
11 #include "ui/gfx/transform.h"
13 namespace gfx {
14 class BoxF;
17 namespace cc {
19 class ColorAnimationCurve;
20 class FilterAnimationCurve;
21 class FloatAnimationCurve;
22 class ScrollOffsetAnimationCurve;
23 class TransformAnimationCurve;
24 class TransformOperations;
26 // An animation curve is a function that returns a value given a time.
27 class CC_EXPORT AnimationCurve {
28 public:
29 enum CurveType { Color, Float, Transform, Filter, ScrollOffset };
31 virtual ~AnimationCurve() {}
33 virtual double Duration() const = 0;
34 virtual CurveType Type() const = 0;
35 virtual scoped_ptr<AnimationCurve> Clone() const = 0;
37 const ColorAnimationCurve* ToColorAnimationCurve() const;
38 const FloatAnimationCurve* ToFloatAnimationCurve() const;
39 const TransformAnimationCurve* ToTransformAnimationCurve() const;
40 const FilterAnimationCurve* ToFilterAnimationCurve() const;
41 const ScrollOffsetAnimationCurve* ToScrollOffsetAnimationCurve() const;
43 ScrollOffsetAnimationCurve* ToScrollOffsetAnimationCurve();
46 class CC_EXPORT ColorAnimationCurve : public AnimationCurve {
47 public:
48 virtual ~ColorAnimationCurve() {}
50 virtual SkColor GetValue(double t) const = 0;
52 // Partial Animation implementation.
53 virtual CurveType Type() const OVERRIDE;
56 class CC_EXPORT FloatAnimationCurve : public AnimationCurve {
57 public:
58 virtual ~FloatAnimationCurve() {}
60 virtual float GetValue(double t) const = 0;
62 // Partial Animation implementation.
63 virtual CurveType Type() const OVERRIDE;
66 class CC_EXPORT TransformAnimationCurve : public AnimationCurve {
67 public:
68 virtual ~TransformAnimationCurve() {}
70 virtual gfx::Transform GetValue(double t) const = 0;
72 // Sets |bounds| to be the bounding box for the region within which |box|
73 // will move during this animation. If this region cannot be computed,
74 // returns false.
75 virtual bool AnimatedBoundsForBox(const gfx::BoxF& box,
76 gfx::BoxF* bounds) const = 0;
78 // Returns true if this animation affects scale.
79 virtual bool AffectsScale() const = 0;
81 // Returns true if this animation is a translation.
82 virtual bool IsTranslation() const = 0;
84 // Set |max_scale| to the maximum scale along any dimension during this
85 // animation. Returns false if the maximum scale cannot be computed.
86 virtual bool MaximumScale(float* max_scale) const = 0;
88 // Partial Animation implementation.
89 virtual CurveType Type() const OVERRIDE;
92 class CC_EXPORT FilterAnimationCurve : public AnimationCurve {
93 public:
94 virtual ~FilterAnimationCurve() {}
96 virtual FilterOperations GetValue(double t) const = 0;
97 virtual bool HasFilterThatMovesPixels() const = 0;
99 // Partial Animation implementation.
100 virtual CurveType Type() const OVERRIDE;
103 } // namespace cc
105 #endif // CC_ANIMATION_ANIMATION_CURVE_H_