OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "config.h" | 5 #include "config.h" |
6 #include "core/animation/SampledEffect.h" | 6 #include "core/animation/SampledEffect.h" |
7 | 7 |
8 #include "core/animation/StyleInterpolation.h" | 8 #include "core/animation/StyleInterpolation.h" |
9 | 9 |
10 namespace blink { | 10 namespace blink { |
11 | 11 |
12 SampledEffect::SampledEffect(Animation* animation, PassOwnPtrWillBeRawPtr<WillBe
HeapVector<RefPtrWillBeMember<Interpolation> > > interpolations) | 12 SampledEffect::SampledEffect(Animation* animation, PassOwnPtrWillBeRawPtr<WillBe
HeapVector<RefPtrWillBeMember<Interpolation> > > interpolations) |
13 : m_animation(animation) | 13 : m_animation(animation) |
14 #if !ENABLE(OILPAN) | |
15 , m_player(animation->player()) | 14 , m_player(animation->player()) |
16 #endif | |
17 , m_interpolations(interpolations) | 15 , m_interpolations(interpolations) |
18 , m_sequenceNumber(animation->player()->sequenceNumber()) | 16 , m_sequenceNumber(animation->player()->sequenceNumber()) |
19 , m_priority(animation->priority()) | 17 , m_priority(animation->priority()) |
20 { | 18 { |
21 ASSERT(m_interpolations && !m_interpolations->isEmpty()); | 19 ASSERT(m_interpolations && !m_interpolations->isEmpty()); |
22 } | 20 } |
23 | 21 |
24 bool SampledEffect::canChange() const | |
25 { | |
26 #if ENABLE(OILPAN) | |
27 return m_animation; | |
28 #else | |
29 if (!m_animation) | |
30 return false; | |
31 // FIXME: This check won't be needed when Animation and AnimationPlayer are
moved to Oilpan. | |
32 return !m_player->canFree(); | |
33 #endif | |
34 } | |
35 | |
36 void SampledEffect::clear() | 22 void SampledEffect::clear() |
37 { | 23 { |
38 #if !ENABLE(OILPAN) | |
39 m_player = nullptr; | 24 m_player = nullptr; |
40 #endif | |
41 m_animation = nullptr; | 25 m_animation = nullptr; |
42 m_interpolations->clear(); | 26 m_interpolations->clear(); |
43 } | 27 } |
44 | 28 |
45 void SampledEffect::removeReplacedInterpolationsIfNeeded(const BitArray<numCSSPr
operties>& replacedProperties) | |
46 { | |
47 if (canChange() && m_animation->isCurrent()) | |
48 return; | |
49 | |
50 size_t dest = 0; | |
51 for (auto& interpolation : *m_interpolations) { | |
52 if (!replacedProperties.get(toStyleInterpolation(interpolation.get())->i
d())) | |
53 m_interpolations->at(dest++) = interpolation; | |
54 } | |
55 m_interpolations->shrink(dest); | |
56 } | |
57 | |
58 DEFINE_TRACE(SampledEffect) | 29 DEFINE_TRACE(SampledEffect) |
59 { | 30 { |
60 visitor->trace(m_animation); | 31 visitor->trace(m_animation); |
61 #if ENABLE(OILPAN) | 32 #if ENABLE(OILPAN) |
62 visitor->trace(m_interpolations); | 33 visitor->trace(m_interpolations); |
63 #endif | 34 #endif |
64 } | 35 } |
65 | 36 |
66 } // namespace blink | 37 } // namespace blink |
OLD | NEW |