layer_animation_element.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
15208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI// Use of this source code is governed by a BSD-style license that can be 35208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI// found in the LICENSE file. 45208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI 55208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI#include "ui/compositor/layer_animation_element.h" 65208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI 75208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI#include "base/compiler_specific.h" 85208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI#include "ui/base/animation/tween.h" 95208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI#include "ui/compositor/layer_animation_delegate.h" 105208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI#include "ui/compositor/layer_animator.h" 115208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI#include "ui/gfx/interpolated_transform.h" 125208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI 135208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAInamespace ui { 145208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI 155208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAInamespace { 165208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI 175208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI// Pause ----------------------------------------------------------------------- 183c871010888e1479ef8fca2048485b979ec2661aJan Engelhardtclass Pause : public LayerAnimationElement { 19d61b02fbbbe7f6e643aad8649c8559c175c68c52Jan Engelhardt public: 203dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI Pause(const AnimatableProperties& properties, base::TimeDelta duration) 210b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI : LayerAnimationElement(properties, duration) { 220b7a140944738d67b9c4e6f09992c8407eefb18aJan Engelhardt } 2304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI virtual ~Pause() {} 24aafd269675fc45bac6340027c866ea6073643c3bJan Engelhardt 25cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt private: 263dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE {} 273dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI virtual bool OnProgress(double t, 280b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI LayerAnimationDelegate* delegate) OVERRIDE { 290b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI return false; 300d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI } 310b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI virtual void OnGetTarget(TargetValue* target) const OVERRIDE {} 32b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski virtual void OnAbort() OVERRIDE {} 330b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 34f56b8a8bf4b1041cb875fd8439778f35276bdb30Jan Engelhardt DISALLOW_COPY_AND_ASSIGN(Pause); 350b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI}; 3608b1616e068166e016b3ee7110db10ae5d853422Jan Engelhardt 373c871010888e1479ef8fca2048485b979ec2661aJan Engelhardt// TransformTransition --------------------------------------------------------- 383c871010888e1479ef8fca2048485b979ec2661aJan Engelhardt 393c871010888e1479ef8fca2048485b979ec2661aJan Engelhardtclass TransformTransition : public LayerAnimationElement { 403c871010888e1479ef8fca2048485b979ec2661aJan Engelhardt public: 4141a9b481693b4c43c16d0588cc558dd455168af0Jan Engelhardt TransformTransition(const gfx::Transform& target, base::TimeDelta duration) 4241a9b481693b4c43c16d0588cc558dd455168af0Jan Engelhardt : LayerAnimationElement(GetProperties(), duration), 433c871010888e1479ef8fca2048485b979ec2661aJan Engelhardt target_(target) { 443dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI } 455208806f2708f761e97e62550561e3164b541770Yasuyuki KOZAKAI virtual ~TransformTransition() {} 464e41854423b529d3107c23b85434d50a75d08057Jan Engelhardt 4777f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt protected: 4877f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE { 49ef18e8147903885708d1c264904129af4fb636d6Jan Engelhardt start_ = delegate->GetTransformForAnimation(); 503dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI } 515a26b5fd7bf11ca93d54fe7dc24b3423fb7d89b2Mike Frysinger 525a26b5fd7bf11ca93d54fe7dc24b3423fb7d89b2Mike Frysinger virtual bool OnProgress(double t, LayerAnimationDelegate* delegate) OVERRIDE { 535a26b5fd7bf11ca93d54fe7dc24b3423fb7d89b2Mike Frysinger delegate->SetTransformFromAnimation( 54c31870f9bebb3d4d082016fcfaf8c2177ae32eb2Jan Engelhardt Tween::ValueBetween(t, start_, target_)); 55c31870f9bebb3d4d082016fcfaf8c2177ae32eb2Jan Engelhardt return true; 56c31870f9bebb3d4d082016fcfaf8c2177ae32eb2Jan Engelhardt } 57c31870f9bebb3d4d082016fcfaf8c2177ae32eb2Jan Engelhardt 58c31870f9bebb3d4d082016fcfaf8c2177ae32eb2Jan Engelhardt virtual void OnGetTarget(TargetValue* target) const OVERRIDE { 59c31870f9bebb3d4d082016fcfaf8c2177ae32eb2Jan Engelhardt target->transform = target_; 60c31870f9bebb3d4d082016fcfaf8c2177ae32eb2Jan Engelhardt } 61c31870f9bebb3d4d082016fcfaf8c2177ae32eb2Jan Engelhardt 6270581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim virtual void OnAbort() OVERRIDE {} 63aa37acc1423126f555135935c687eb91995b9440Jan Engelhardt 641e128bd804b676ee91beca48312de9b251845d09Jan Engelhardt private: 655a26b5fd7bf11ca93d54fe7dc24b3423fb7d89b2Mike Frysinger static AnimatableProperties GetProperties() { 660d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI AnimatableProperties properties; 670d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI properties.insert(LayerAnimationElement::TRANSFORM); 680b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI return properties; 690b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI } 700b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 710b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI gfx::Transform start_; 7237911de507d0597980ad218a044a482501a21b01Maciej Zenczykowski const gfx::Transform target_; 7337911de507d0597980ad218a044a482501a21b01Maciej Zenczykowski 7437911de507d0597980ad218a044a482501a21b01Maciej Zenczykowski DISALLOW_COPY_AND_ASSIGN(TransformTransition); 7537911de507d0597980ad218a044a482501a21b01Maciej Zenczykowski}; 7637911de507d0597980ad218a044a482501a21b01Maciej Zenczykowski 7737911de507d0597980ad218a044a482501a21b01Maciej Zenczykowski// InterpolatedTransformTransition --------------------------------------------- 788b7baebc93989106fd5d26b262d0ce191f8ef7c0Jamal Hadi Salim 798b7baebc93989106fd5d26b262d0ce191f8ef7c0Jamal Hadi Salimclass InterpolatedTransformTransition : public LayerAnimationElement { 8040a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim public: 8140a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim InterpolatedTransformTransition(InterpolatedTransform* interpolated_transform, 828b7baebc93989106fd5d26b262d0ce191f8ef7c0Jamal Hadi Salim base::TimeDelta duration) 8340a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim : LayerAnimationElement(GetProperties(), duration), 8440a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim interpolated_transform_(interpolated_transform) { 8540a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim } 8640a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim virtual ~InterpolatedTransformTransition() {} 8740a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim 8840a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim protected: 8940a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE { 9040a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim } 9140a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim 9240a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim virtual bool OnProgress(double t, LayerAnimationDelegate* delegate) OVERRIDE { 9340a8343d3ad0cdbc3a7e69c8d970ad75807c29edJamal Hadi Salim delegate->SetTransformFromAnimation( 94600f38db82548a683775fd89b6e136673e924097Jan Engelhardt interpolated_transform_->Interpolate(static_cast<float>(t))); 9584c3055bf08d0a8fe5db6e5f3f96dd826a290147Jamal Hadi Salim return true; 96df288236cd254798be3759fef4cbc3e535f5a1c3Jan Engelhardt } 9759e8114c6792242e80785f4461d5e663fb9a3d64Jan Engelhardt 98df288236cd254798be3759fef4cbc3e535f5a1c3Jan Engelhardt virtual void OnGetTarget(TargetValue* target) const OVERRIDE { 99df288236cd254798be3759fef4cbc3e535f5a1c3Jan Engelhardt target->transform = interpolated_transform_->Interpolate(1.0f); 10084c3055bf08d0a8fe5db6e5f3f96dd826a290147Jamal Hadi Salim } 10184c3055bf08d0a8fe5db6e5f3f96dd826a290147Jamal Hadi Salim 102600f38db82548a683775fd89b6e136673e924097Jan Engelhardt virtual void OnAbort() OVERRIDE {} 103600f38db82548a683775fd89b6e136673e924097Jan Engelhardt 10470581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim private: 10570581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim static AnimatableProperties GetProperties() { 10670581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim AnimatableProperties properties; 107600f38db82548a683775fd89b6e136673e924097Jan Engelhardt properties.insert(LayerAnimationElement::TRANSFORM); 108600f38db82548a683775fd89b6e136673e924097Jan Engelhardt return properties; 10970581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim } 11070581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim 11170581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim scoped_ptr<InterpolatedTransform> interpolated_transform_; 11270581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim 113600f38db82548a683775fd89b6e136673e924097Jan Engelhardt DISALLOW_COPY_AND_ASSIGN(InterpolatedTransformTransition); 114600f38db82548a683775fd89b6e136673e924097Jan Engelhardt}; 115600f38db82548a683775fd89b6e136673e924097Jan Engelhardt 11670581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim// BoundsTransition ------------------------------------------------------------ 11770581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim 1181dc27393b7ba401e6228a5ee2472a6eb72836c43Jan Engelhardtclass BoundsTransition : public LayerAnimationElement { 1191dc27393b7ba401e6228a5ee2472a6eb72836c43Jan Engelhardt public: 1201dc27393b7ba401e6228a5ee2472a6eb72836c43Jan Engelhardt BoundsTransition(const gfx::Rect& target, base::TimeDelta duration) 1211dc27393b7ba401e6228a5ee2472a6eb72836c43Jan Engelhardt : LayerAnimationElement(GetProperties(), duration), 1221dc27393b7ba401e6228a5ee2472a6eb72836c43Jan Engelhardt target_(target) { 1231dc27393b7ba401e6228a5ee2472a6eb72836c43Jan Engelhardt } 1241dc27393b7ba401e6228a5ee2472a6eb72836c43Jan Engelhardt virtual ~BoundsTransition() {} 125600f38db82548a683775fd89b6e136673e924097Jan Engelhardt 126600f38db82548a683775fd89b6e136673e924097Jan Engelhardt protected: 127600f38db82548a683775fd89b6e136673e924097Jan Engelhardt virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE { 128600f38db82548a683775fd89b6e136673e924097Jan Engelhardt start_ = delegate->GetBoundsForAnimation(); 129600f38db82548a683775fd89b6e136673e924097Jan Engelhardt } 130600f38db82548a683775fd89b6e136673e924097Jan Engelhardt 131600f38db82548a683775fd89b6e136673e924097Jan Engelhardt virtual bool OnProgress(double t, LayerAnimationDelegate* delegate) OVERRIDE { 132600f38db82548a683775fd89b6e136673e924097Jan Engelhardt delegate->SetBoundsFromAnimation(Tween::ValueBetween(t, start_, target_)); 133600f38db82548a683775fd89b6e136673e924097Jan Engelhardt return true; 1341e128bd804b676ee91beca48312de9b251845d09Jan Engelhardt } 13570581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim 136600f38db82548a683775fd89b6e136673e924097Jan Engelhardt virtual void OnGetTarget(TargetValue* target) const OVERRIDE { 13770581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim target->bounds = target_; 138600f38db82548a683775fd89b6e136673e924097Jan Engelhardt } 139600f38db82548a683775fd89b6e136673e924097Jan Engelhardt 140600f38db82548a683775fd89b6e136673e924097Jan Engelhardt virtual void OnAbort() OVERRIDE {} 141600f38db82548a683775fd89b6e136673e924097Jan Engelhardt 142600f38db82548a683775fd89b6e136673e924097Jan Engelhardt private: 143600f38db82548a683775fd89b6e136673e924097Jan Engelhardt static AnimatableProperties GetProperties() { 144600f38db82548a683775fd89b6e136673e924097Jan Engelhardt AnimatableProperties properties; 14570581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim properties.insert(LayerAnimationElement::BOUNDS); 146600f38db82548a683775fd89b6e136673e924097Jan Engelhardt return properties; 147600f38db82548a683775fd89b6e136673e924097Jan Engelhardt } 14870581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim 14970581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim gfx::Rect start_; 15070581922f873a88306dd5b1cb83c5081ee239eb8Jamal Hadi Salim const gfx::Rect target_; 15177f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt 15277f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt DISALLOW_COPY_AND_ASSIGN(BoundsTransition); 153b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski}; 15477f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt 15577f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt// OpacityTransition ----------------------------------------------------------- 15677f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt 15777f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardtclass OpacityTransition : public LayerAnimationElement { 15877f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt public: 15977f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt OpacityTransition(float target, base::TimeDelta duration) 16077f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt : LayerAnimationElement(GetProperties(), duration), 16177f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt start_(0.0f), 16277f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt target_(target) { 163b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski } 16477f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt virtual ~OpacityTransition() {} 16577f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt 16677f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt protected: 16777f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE { 16877f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt start_ = delegate->GetOpacityForAnimation(); 16977f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt } 17077f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt 171aa37acc1423126f555135935c687eb91995b9440Jan Engelhardt virtual bool OnProgress(double t, LayerAnimationDelegate* delegate) OVERRIDE { 17277f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt delegate->SetOpacityFromAnimation(Tween::ValueBetween(t, start_, target_)); 17339bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt return true; 17439bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt } 1750d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI 1760b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI virtual void OnGetTarget(TargetValue* target) const OVERRIDE { 177c021c3ce7b1583eb5dd71b10ac3d8ab3cd36beaaJan Engelhardt target->opacity = target_; 1780b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI } 1792c6ac071a9c660b61a76565d1024d372deac8a98Maciej Zenczykowski 1802c6ac071a9c660b61a76565d1024d372deac8a98Maciej Zenczykowski virtual void OnAbort() OVERRIDE {} 1812c6ac071a9c660b61a76565d1024d372deac8a98Maciej Zenczykowski 1822c6ac071a9c660b61a76565d1024d372deac8a98Maciej Zenczykowski private: 1832c6ac071a9c660b61a76565d1024d372deac8a98Maciej Zenczykowski static AnimatableProperties GetProperties() { 1840d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI AnimatableProperties properties; 1850d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI properties.insert(LayerAnimationElement::OPACITY); 1860d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI return properties; 1872c6ac071a9c660b61a76565d1024d372deac8a98Maciej Zenczykowski } 1882c6ac071a9c660b61a76565d1024d372deac8a98Maciej Zenczykowski 1892c6ac071a9c660b61a76565d1024d372deac8a98Maciej Zenczykowski float start_; 1902c6ac071a9c660b61a76565d1024d372deac8a98Maciej Zenczykowski const float target_; 19139bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt 19239bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt DISALLOW_COPY_AND_ASSIGN(OpacityTransition); 19339bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt}; 19439bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt 19539bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt// VisibilityTransition -------------------------------------------------------- 19639bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt 19739bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardtclass VisibilityTransition : public LayerAnimationElement { 19839bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt public: 19939bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt VisibilityTransition(bool target, base::TimeDelta duration) 20039bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt : LayerAnimationElement(GetProperties(), duration), 20139bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt start_(false), 202ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt target_(target) { 203ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt } 204ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt virtual ~VisibilityTransition() {} 205ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt 206ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt protected: 207ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE { 208ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt start_ = delegate->GetVisibilityForAnimation(); 209ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt } 210ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt 211ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt virtual bool OnProgress(double t, LayerAnimationDelegate* delegate) OVERRIDE { 212ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt delegate->SetVisibilityFromAnimation(t == 1.0 ? target_ : start_); 213ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt return t == 1.0; 214ec934198bd6ee2f21171dba440ca96334b0d874bJan Engelhardt } 21539bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt 21639bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt virtual void OnGetTarget(TargetValue* target) const OVERRIDE { 21739bf9c8214d3073a496a8a1eff91046a8d6fbbdfJan Engelhardt target->visibility = target_; 21877f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt } 21977f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt 22077f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt virtual void OnAbort() OVERRIDE {} 22177f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt 22277f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt private: 22377f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt static AnimatableProperties GetProperties() { 22477f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt AnimatableProperties properties; 22577f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt properties.insert(LayerAnimationElement::VISIBILITY); 22677f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt return properties; 22777f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt } 22877f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt 22977f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt bool start_; 23077f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt const bool target_; 23177f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt 23277f48c2f1ef21fa43aa68c25a1457db319ca2526Jan Engelhardt DISALLOW_COPY_AND_ASSIGN(VisibilityTransition); 233630ef48037f3602333addfdb53789c9c6a4bb4c8Jan Engelhardt}; 2347e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim 2357e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim// BrightnessTransition -------------------------------------------------------- 2367e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim 2377e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salimclass BrightnessTransition : public LayerAnimationElement { 2387e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim public: 2397e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim BrightnessTransition(float target, base::TimeDelta duration) 2407e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim : LayerAnimationElement(GetProperties(), duration), 2417e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim start_(0.0f), 2427e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim target_(target) { 2437e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim } 2447e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim virtual ~BrightnessTransition() {} 2457e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim 2467e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim protected: 2477e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE { 2487e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim start_ = delegate->GetBrightnessForAnimation(); 2497e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim } 2507e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim 2517e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim virtual bool OnProgress(double t, LayerAnimationDelegate* delegate) OVERRIDE { 2527e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim delegate->SetBrightnessFromAnimation( 2537e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim Tween::ValueBetween(t, start_, target_)); 2547e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim return true; 2557e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim } 2567e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim 2577e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim virtual void OnGetTarget(TargetValue* target) const OVERRIDE { 2587e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim target->brightness = target_; 2597e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim } 2607e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim 2617e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim virtual void OnAbort() OVERRIDE {} 2627e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim 2637e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim private: 2647e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim static AnimatableProperties GetProperties() { 2657e4db2f50133007f549f222468bde4f3adcf41acJamal Hadi Salim AnimatableProperties properties; 266630ef48037f3602333addfdb53789c9c6a4bb4c8Jan Engelhardt properties.insert(LayerAnimationElement::BRIGHTNESS); 267630ef48037f3602333addfdb53789c9c6a4bb4c8Jan Engelhardt return properties; 268630ef48037f3602333addfdb53789c9c6a4bb4c8Jan Engelhardt } 2693dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI 2703dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI float start_; 2713dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI const float target_; 2723dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI 2733dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI DISALLOW_COPY_AND_ASSIGN(BrightnessTransition); 2743dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI}; 2753dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI 2763dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI// GrayscaleTransition --------------------------------------------------------- 2773dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI 2783dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAIclass GrayscaleTransition : public LayerAnimationElement { 2793dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI public: 280630ef48037f3602333addfdb53789c9c6a4bb4c8Jan Engelhardt GrayscaleTransition(float target, base::TimeDelta duration) 2813dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI : LayerAnimationElement(GetProperties(), duration), 2823dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI start_(0.0f), 2833dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI target_(target) { 2843dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI } 2853dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI virtual ~GrayscaleTransition() {} 2863dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI 2873dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI protected: 2883dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE { 2893dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI start_ = delegate->GetGrayscaleForAnimation(); 2903dfa4488b032fc32aaf2470f48ac1fc3a534794fYasuyuki KOZAKAI } 2910b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 292332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow virtual bool OnProgress(double t, LayerAnimationDelegate* delegate) OVERRIDE { 293332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow delegate->SetGrayscaleFromAnimation( 294332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow Tween::ValueBetween(t, start_, target_)); 295332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow return true; 296332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow } 297332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow 298332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow virtual void OnGetTarget(TargetValue* target) const OVERRIDE { 299332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow target->grayscale = target_; 300332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow } 301332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow 302332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow virtual void OnAbort() OVERRIDE {} 303332e4acc574e3a348fe611d55bf642de0d50fbdaMichael Granzow 3040b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI private: 3050b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI static AnimatableProperties GetProperties() { 3060b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI AnimatableProperties properties; 3070b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI properties.insert(LayerAnimationElement::GRAYSCALE); 3080b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI return properties; 3090b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI } 3100b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 3110b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI float start_; 3120b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI const float target_; 313a239728ec064666025de2723997d87b176d57fd6Maciej Zenczykowski 314a239728ec064666025de2723997d87b176d57fd6Maciej Zenczykowski DISALLOW_COPY_AND_ASSIGN(GrayscaleTransition); 315a239728ec064666025de2723997d87b176d57fd6Maciej Zenczykowski}; 316a239728ec064666025de2723997d87b176d57fd6Maciej Zenczykowski 317a239728ec064666025de2723997d87b176d57fd6Maciej Zenczykowski// ColorTransition ------------------------------------------------------------- 3180b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 319371cea299f0b2eb100b9fc9fb99089640d2d606fJan Engelhardtclass ColorTransition : public LayerAnimationElement { 3200b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI public: 3210b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI ColorTransition(SkColor target, base::TimeDelta duration) 3220b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI : LayerAnimationElement(GetProperties(), duration), 3230b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI start_(SK_ColorBLACK), 3240b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI target_(target) { 3250b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI } 3260b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI virtual ~ColorTransition() {} 3270b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 3280b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI protected: 3290b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI virtual void OnStart(LayerAnimationDelegate* delegate) OVERRIDE { 3300b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI start_ = delegate->GetColorForAnimation(); 3310b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI } 3320b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 3330b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI virtual bool OnProgress(double t, LayerAnimationDelegate* delegate) OVERRIDE { 3340b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI delegate->SetColorFromAnimation( 3350b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI SkColorSetARGB( 3360b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI Tween::ValueBetween(t, 337c021c3ce7b1583eb5dd71b10ac3d8ab3cd36beaaJan Engelhardt static_cast<int>(SkColorGetA(start_)), 3380b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI static_cast<int>(SkColorGetA(target_))), 3390b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI Tween::ValueBetween(t, 3400b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI static_cast<int>(SkColorGetR(start_)), 3410b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI static_cast<int>(SkColorGetR(target_))), 3420b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI Tween::ValueBetween(t, 3430b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI static_cast<int>(SkColorGetG(start_)), 3440b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI static_cast<int>(SkColorGetG(target_))), 3450b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI Tween::ValueBetween(t, 3460b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI static_cast<int>(SkColorGetB(start_)), 3470b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI static_cast<int>(SkColorGetB(target_))))); 3480b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI return true; 3490b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI } 3500b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 351c19f880d8aac7c0372381e29d7cea09accd0db26Jan Engelhardt virtual void OnGetTarget(TargetValue* target) const OVERRIDE { 352c19f880d8aac7c0372381e29d7cea09accd0db26Jan Engelhardt target->color = target_; 353c19f880d8aac7c0372381e29d7cea09accd0db26Jan Engelhardt } 354c19f880d8aac7c0372381e29d7cea09accd0db26Jan Engelhardt 355c19f880d8aac7c0372381e29d7cea09accd0db26Jan Engelhardt virtual void OnAbort() OVERRIDE {} 356c19f880d8aac7c0372381e29d7cea09accd0db26Jan Engelhardt 35794aa2ea67d7b8a669e8541f094661a1dc89722a3Jan Engelhardt private: 3580b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI static AnimatableProperties GetProperties() { 3590b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI AnimatableProperties properties; 3600b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI properties.insert(LayerAnimationElement::COLOR); 3610b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI return properties; 3620b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI } 3630b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 3640b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI SkColor start_; 3650b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI const SkColor target_; 3660b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 3670b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI DISALLOW_COPY_AND_ASSIGN(ColorTransition); 3680b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI}; 3690b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 3700b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI} // namespace 3710b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 3720b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI// LayerAnimationElement::TargetValue ------------------------------------------ 373f53710b16c2bae1843c3f5fee390f496dfa82526Jiri Popelka 3740b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAILayerAnimationElement::TargetValue::TargetValue() 3750b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI : opacity(0.0f), 3760b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI visibility(false), 3770b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI brightness(0.0f), 3780b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI grayscale(0.0f), 3790b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI color(SK_ColorBLACK) { 3800b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI} 3810b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI 3820b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAILayerAnimationElement::TargetValue::TargetValue( 3830b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI const LayerAnimationDelegate* delegate) 3840b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI : bounds(delegate ? delegate->GetBoundsForAnimation() : gfx::Rect()), 3850b82e8e81e887843011c8771f70d2302901f7e5eYasuyuki KOZAKAI transform(delegate ? 386b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski delegate->GetTransformForAnimation() : gfx::Transform()), 387b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski opacity(delegate ? delegate->GetOpacityForAnimation() : 0.0f), 388b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski visibility(delegate ? delegate->GetVisibilityForAnimation() : false), 389b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski brightness(delegate ? delegate->GetBrightnessForAnimation() : 0.0f), 390b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski grayscale(delegate ? delegate->GetGrayscaleForAnimation() : 0.0f), 391b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski color(delegate ? delegate->GetColorForAnimation() : 0.0f) { 392b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski} 393b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski 394b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski// LayerAnimationElement ------------------------------------------------------- 395b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski 396b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej ZenczykowskiLayerAnimationElement::LayerAnimationElement( 397b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski const AnimatableProperties& properties, 398b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski base::TimeDelta duration) 399b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski : first_frame_(true), 400b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski properties_(properties), 401b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski duration_(GetEffectiveDuration(duration)), 402b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski tween_type_(Tween::LINEAR) { 403c021c3ce7b1583eb5dd71b10ac3d8ab3cd36beaaJan Engelhardt} 4040d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI 405c021c3ce7b1583eb5dd71b10ac3d8ab3cd36beaaJan EngelhardtLayerAnimationElement::~LayerAnimationElement() { 406b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski} 4070d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI 408b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowskibool LayerAnimationElement::Progress(double t, 409b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski LayerAnimationDelegate* delegate) { 410b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski if (first_frame_) 411b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski OnStart(delegate); 412b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski bool need_draw = OnProgress(Tween::CalculateValue(tween_type_, t), delegate); 413b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski first_frame_ = t == 1.0; 414b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski return need_draw; 415b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski} 416b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski 417b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowskivoid LayerAnimationElement::GetTargetValue(TargetValue* target) const { 418b32b361a725c8fe3a3aa494e6cdec09a80785aacMaciej Zenczykowski OnGetTarget(target); 4190d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI} 4200d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI 4210d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAIvoid LayerAnimationElement::Abort() { 4220d502bcdbc97ed359e84f6a21dfa0049b3b60a6cYasuyuki KOZAKAI first_frame_ = true; 4235f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt OnAbort(); 4245f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt} 4255f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt 4265f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt// static 4275f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardtbase::TimeDelta LayerAnimationElement::GetEffectiveDuration( 4285f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt const base::TimeDelta& duration) { 4295f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt if (LayerAnimator::disable_animations_for_test()) 4305f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt return base::TimeDelta(); 4315f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt 4325f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt if (LayerAnimator::slow_animation_mode()) 4335f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt return duration * LayerAnimator::slow_animation_scale_factor(); 4345f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt 435cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt return duration; 4365f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt} 4375f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt 438cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt// static 4390b7a140944738d67b9c4e6f09992c8407eefb18aJan EngelhardtLayerAnimationElement* LayerAnimationElement::CreateTransformElement( 4400b7a140944738d67b9c4e6f09992c8407eefb18aJan Engelhardt const gfx::Transform& transform, 441cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt base::TimeDelta duration) { 4420b7a140944738d67b9c4e6f09992c8407eefb18aJan Engelhardt return new TransformTransition(transform, duration); 443d61b02fbbbe7f6e643aad8649c8559c175c68c52Jan Engelhardt} 444cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt 445cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt// static 446cd9e7aa106e80c44bd526af74b616701b0772d05Jan EngelhardtLayerAnimationElement* 447d61b02fbbbe7f6e643aad8649c8559c175c68c52Jan EngelhardtLayerAnimationElement::CreateInterpolatedTransformElement( 448d61b02fbbbe7f6e643aad8649c8559c175c68c52Jan Engelhardt InterpolatedTransform* interpolated_transform, 449d61b02fbbbe7f6e643aad8649c8559c175c68c52Jan Engelhardt base::TimeDelta duration) { 450d61b02fbbbe7f6e643aad8649c8559c175c68c52Jan Engelhardt return new InterpolatedTransformTransition(interpolated_transform, duration); 451d61b02fbbbe7f6e643aad8649c8559c175c68c52Jan Engelhardt} 4520b7a140944738d67b9c4e6f09992c8407eefb18aJan Engelhardt 453cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt// static 454cd9e7aa106e80c44bd526af74b616701b0772d05Jan EngelhardtLayerAnimationElement* LayerAnimationElement::CreateBoundsElement( 455cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt const gfx::Rect& bounds, 456cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt base::TimeDelta duration) { 457cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt return new BoundsTransition(bounds, duration); 458cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt} 459cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt 460cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt// static 461cd9e7aa106e80c44bd526af74b616701b0772d05Jan EngelhardtLayerAnimationElement* LayerAnimationElement::CreateOpacityElement( 462cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt float opacity, 463cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt base::TimeDelta duration) { 464cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt return new OpacityTransition(opacity, duration); 465cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt} 466cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt 467cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt// static 468cd9e7aa106e80c44bd526af74b616701b0772d05Jan EngelhardtLayerAnimationElement* LayerAnimationElement::CreateVisibilityElement( 4695f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt bool visibility, 4705f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt base::TimeDelta duration) { 471cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt return new VisibilityTransition(visibility, duration); 4720b7a140944738d67b9c4e6f09992c8407eefb18aJan Engelhardt} 473cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt 474cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt// static 4755f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan EngelhardtLayerAnimationElement* LayerAnimationElement::CreateBrightnessElement( 476cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt float brightness, 477cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt base::TimeDelta duration) { 478cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt return new BrightnessTransition(brightness, duration); 479cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt} 480cd9e7aa106e80c44bd526af74b616701b0772d05Jan Engelhardt 481aae6be9edc99e58164a3592c510fe5488141c698Jan Engelhardt// static 48204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAILayerAnimationElement* LayerAnimationElement::CreateGrayscaleElement( 48304f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI float grayscale, 48404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI base::TimeDelta duration) { 48504f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI return new GrayscaleTransition(grayscale, duration); 48604f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI} 48704f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI 48804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI// static 48904f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAILayerAnimationElement* LayerAnimationElement::CreatePauseElement( 49004f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI const AnimatableProperties& properties, 4917ac405297ec38449b30e3b05fd6bf2082fd3d803Jan Engelhardt base::TimeDelta duration) { 49204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI return new Pause(properties, duration); 4937a236f4cc685a420c1a782a5db614a93baf37ccfJan Engelhardt} 49404f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI 4955f2922cfc0bbfbeb878f5c12e9fb3eb602ae5507Jan Engelhardt// static 496aae6be9edc99e58164a3592c510fe5488141c698Jan EngelhardtLayerAnimationElement* LayerAnimationElement::CreateColorElement( 497213e185afbb298e6708881e4c2adffdc47a8b6daJan Engelhardt SkColor color, 49804f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI base::TimeDelta duration) { 4998b7baebc93989106fd5d26b262d0ce191f8ef7c0Jamal Hadi Salim return new ColorTransition(color, duration); 50004f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI} 50104f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI 50204f8c54dc52e19096d31d94593bd1040716afe4dYasuyuki KOZAKAI} // namespace ui 503aae6be9edc99e58164a3592c510fe5488141c698Jan Engelhardt