transform_animation_curve_adapter.h revision 1675a649fd7a8b3cb80ffddae2dc181f122353c5
12a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Copyright (c) 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)#ifndef UI_COMPOSITOR_TRANSFORM_ANIMATION_CURVE_ADAPTER_H_ 62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#define UI_COMPOSITOR_TRANSFORM_ANIMATION_CURVE_ADAPTER_H_ 72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/time/time.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "cc/animation/animation_curve.h" 1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "ui/compositor/compositor_export.h" 11d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/gfx/animation/tween.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/transform.h" 132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/transform_util.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace ui { 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class COMPOSITOR_EXPORT TransformAnimationCurveAdapter 1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) : public cc::TransformAnimationCurve { 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 20d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) TransformAnimationCurveAdapter(gfx::Tween::Type tween_type, 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Transform intial_value, 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Transform target_value, 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::TimeDelta duration); 242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~TransformAnimationCurveAdapter(); 262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // TransformAnimationCurve implementation. 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual double Duration() const OVERRIDE; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE; 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual gfx::Transform GetValue(double t) const OVERRIDE; 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual bool AnimatedBoundsForBox(const gfx::BoxF& box, 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) gfx::BoxF* bounds) const OVERRIDE; 33e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch virtual bool AffectsScale() const OVERRIDE; 34c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool IsTranslation() const OVERRIDE; 351675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch virtual bool MaximumTargetScale(bool forward_direction, 361675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch float* max_scale) const OVERRIDE; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) private: 39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) gfx::Tween::Type tween_type_; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Transform initial_value_; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::Transform target_value_; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::DecomposedTransform decomposed_initial_value_; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) gfx::DecomposedTransform decomposed_target_value_; 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::TimeDelta duration_; 4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_ASSIGN(TransformAnimationCurveAdapter); 4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}; 4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class COMPOSITOR_EXPORT InverseTransformCurveAdapter 5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) : public cc::TransformAnimationCurve { 5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public: 5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) InverseTransformCurveAdapter(TransformAnimationCurveAdapter base_curve, 5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) gfx::Transform initial_value, 5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::TimeDelta duration); 5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual ~InverseTransformCurveAdapter(); 5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual double Duration() const OVERRIDE; 5958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual scoped_ptr<AnimationCurve> Clone() const OVERRIDE; 6058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual gfx::Transform GetValue(double t) const OVERRIDE; 6158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) virtual bool AnimatedBoundsForBox(const gfx::BoxF& box, 6258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) gfx::BoxF* bounds) const OVERRIDE; 63e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch virtual bool AffectsScale() const OVERRIDE; 64c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch virtual bool IsTranslation() const OVERRIDE; 651675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch virtual bool MaximumTargetScale(bool forward_direction, 661675a649fd7a8b3cb80ffddae2dc181f122353c5Ben Murdoch float* max_scale) const OVERRIDE; 6758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 6858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private: 6958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) TransformAnimationCurveAdapter base_curve_; 7058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) gfx::Transform initial_value_; 7158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) gfx::Transform effective_initial_value_; 7258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) base::TimeDelta duration_; 7358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) 7458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) DISALLOW_ASSIGN(InverseTransformCurveAdapter); 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace ui 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif // UI_COMPOSITOR_TRANSFORM_ANIMATION_CURVE_ADAPTER_H_ 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 81