12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright 2012 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/animation_curve.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/logging.h"
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "cc/animation/scroll_offset_animation_curve.h"
92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace cc {
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
121e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)const ColorAnimationCurve* AnimationCurve::ToColorAnimationCurve() const {
131e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  DCHECK(Type() == AnimationCurve::Color);
141e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)  return static_cast<const ColorAnimationCurve*>(this);
151e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)}
161e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
171e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)AnimationCurve::CurveType ColorAnimationCurve::Type() const { return Color; }
181e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const FloatAnimationCurve* AnimationCurve::ToFloatAnimationCurve() const {
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DCHECK(Type() == AnimationCurve::Float);
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return static_cast<const FloatAnimationCurve*>(this);
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AnimationCurve::CurveType FloatAnimationCurve::Type() const {
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return Float;
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const TransformAnimationCurve* AnimationCurve::ToTransformAnimationCurve()
292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    const {
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DCHECK(Type() == AnimationCurve::Transform);
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return static_cast<const TransformAnimationCurve*>(this);
322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)AnimationCurve::CurveType TransformAnimationCurve::Type() const {
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return Transform;
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
38ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochconst FilterAnimationCurve* AnimationCurve::ToFilterAnimationCurve() const {
39ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  DCHECK(Type() == AnimationCurve::Filter);
40ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  return static_cast<const FilterAnimationCurve*>(this);
41ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
42ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
43ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochAnimationCurve::CurveType FilterAnimationCurve::Type() const {
44ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  return Filter;
45ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
46ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)const ScrollOffsetAnimationCurve* AnimationCurve::ToScrollOffsetAnimationCurve()
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    const {
49f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DCHECK(Type() == AnimationCurve::ScrollOffset);
50f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return static_cast<const ScrollOffsetAnimationCurve*>(this);
51f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
53f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)ScrollOffsetAnimationCurve* AnimationCurve::ToScrollOffsetAnimationCurve() {
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  DCHECK(Type() == AnimationCurve::ScrollOffset);
55f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  return static_cast<ScrollOffsetAnimationCurve*>(this);
56f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
57f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}  // namespace cc
59