Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(333)

Side by Side Diff: third_party/WebKit/Source/core/animation/TransitionEffectModel.h

Issue 2236193002: WIP: Implement CSS transitions on top of InterpolationTypes instead of AnimatableValues (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@_environmentStyle
Patch Set: Created 4 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2016 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 TransitionEffectModel_h
6 #define TransitionEffectModel_h
7
8 #include "core/animation/EffectModel.h"
9 #include "core/animation/PairwiseInterpolation.h"
10 #include "platform/animation/TimingFunction.h"
11
12 namespace blink {
13
14 class Element;
15 class TransitionEffectModelTest;
16
17 class TransitionEffectModel : public EffectModel {
18 public:
19 static TransitionEffectModel* create(PassRefPtr<PairwiseInterpolation> pairw iseInterpolation, double delayOffset, PassRefPtr<TimingFunction> timingFunction)
20 {
21 return new TransitionEffectModel(pairwiseInterpolation, delayOffset, tim ingFunction);
22 }
23
24 private:
25 TransitionEffectModel(PassRefPtr<PairwiseInterpolation> pairwiseInterpolatio n, double delayOffset, PassRefPtr<TimingFunction> timingFunction)
26 : m_interpolation(pairwiseInterpolation)
27 , m_delayOffset(delayOffset)
28 , m_timingFunction(timingFunction)
29 {
30 DCHECK(delayOffset >= 0 && delayOffset < 1);
31 }
32
33 bool affects(PropertyHandle property) const final
34 {
35 return m_interpolation->getProperty() == property;
36 }
37
38 bool isTransitionEffectModel() const final { return true; }
39
40 void sampleImpl(int iteration, double fraction, double iterationDuration, Ve ctor<RefPtr<Interpolation>>& result) const final
41 {
42 double delayedFraction = 0;
43 if (fraction > m_delayOffset) {
44 delayedFraction = (fraction - m_delayOffset) / (1 - m_delayOffset);
45 }
46 delayedFraction = m_timingFunction->evaluate(delayedFraction, iterationD uration);
47 m_interpolation->interpolate(0, delayedFraction);
48 if (result.isEmpty()) {
49 result.append(m_interpolation);
50 } else {
51 result[0] = m_interpolation;
52 result.shrink(1);
53 }
54 }
55
56 const RefPtr<PairwiseInterpolation> m_interpolation;
57 const double m_delayOffset;
58 RefPtr<TimingFunction> m_timingFunction;
59 };
60
61 } // namespace blink
62
63 #endif // TransitionEffectModel_h
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698