| 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/InterpolableValue.h" | 6 #include "core/animation/InterpolableValue.h" |
| 7 | 7 |
| 8 namespace blink { | 8 namespace blink { |
| 9 | 9 |
| 10 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(InterpolableValue); | 10 DEFINE_EMPTY_DESTRUCTOR_WILL_BE_REMOVED(InterpolableValue); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 41 ASSERT(toList.m_size == m_size); | 41 ASSERT(toList.m_size == m_size); |
| 42 ASSERT(resultList.m_size == m_size); | 42 ASSERT(resultList.m_size == m_size); |
| 43 | 43 |
| 44 for (size_t i = 0; i < m_size; i++) { | 44 for (size_t i = 0; i < m_size; i++) { |
| 45 ASSERT(m_values[i]); | 45 ASSERT(m_values[i]); |
| 46 ASSERT(toList.m_values[i]); | 46 ASSERT(toList.m_values[i]); |
| 47 m_values[i]->interpolate(*(toList.m_values[i]), progress, *(resultList.m
_values[i])); | 47 m_values[i]->interpolate(*(toList.m_values[i]), progress, *(resultList.m
_values[i])); |
| 48 } | 48 } |
| 49 } | 49 } |
| 50 | 50 |
| 51 void InterpolableNumber::add(const InterpolableValue& rhs, InterpolableValue& re
sult) const | 51 void InterpolableNumber::scaleAndAdd(double scale, const InterpolableValue& othe
r) |
| 52 { | 52 { |
| 53 const InterpolableNumber& rhsNumber = toInterpolableNumber(rhs); | 53 m_value = m_value * scale + toInterpolableNumber(other).m_value; |
| 54 InterpolableNumber& resultNumber = toInterpolableNumber(result); | |
| 55 | |
| 56 resultNumber.m_value = m_value + rhsNumber.m_value; | |
| 57 } | 54 } |
| 58 | 55 |
| 59 void InterpolableNumber::multiply(double scalar, InterpolableValue& result) cons
t | 56 void InterpolableList::scaleAndAdd(double scale, const InterpolableValue& other) |
| 60 { | 57 { |
| 61 InterpolableNumber& resultNumber = toInterpolableNumber(result); | 58 const InterpolableList& otherList = toInterpolableList(other); |
| 62 | 59 ASSERT(otherList.m_size == m_size); |
| 63 resultNumber.m_value = scalar * m_value; | 60 for (size_t i = 0; i < m_size; i++) |
| 64 } | 61 m_values[i]->scaleAndAdd(scale, *otherList.m_values[i]); |
| 65 | |
| 66 void InterpolableBool::add(const InterpolableValue& rhs, InterpolableValue& resu
lt) const | |
| 67 { | |
| 68 const InterpolableBool& rhsBool = toInterpolableBool(rhs); | |
| 69 InterpolableBool& resultBool = toInterpolableBool(result); | |
| 70 | |
| 71 resultBool.m_value = m_value || rhsBool.m_value; | |
| 72 } | |
| 73 | |
| 74 void InterpolableList::add(const InterpolableValue& rhs, InterpolableValue& resu
lt) const | |
| 75 { | |
| 76 const InterpolableList& rhsList = toInterpolableList(rhs); | |
| 77 InterpolableList& resultList = toInterpolableList(result); | |
| 78 | |
| 79 ASSERT(rhsList.m_size == m_size); | |
| 80 ASSERT(resultList.m_size == m_size); | |
| 81 | |
| 82 for (size_t i = 0; i < m_size; i++) { | |
| 83 ASSERT(m_values[i]); | |
| 84 ASSERT(rhsList.m_values[i]); | |
| 85 m_values[i]->add(*(rhsList.m_values[i]), *(resultList.m_values[i])); | |
| 86 } | |
| 87 } | |
| 88 | |
| 89 void InterpolableList::multiply(double scalar, InterpolableValue& result) const | |
| 90 { | |
| 91 InterpolableList& resultList = toInterpolableList(result); | |
| 92 | |
| 93 ASSERT(resultList.m_size == m_size); | |
| 94 | |
| 95 for (size_t i = 0; i < m_size; i++) { | |
| 96 ASSERT(m_values[i]); | |
| 97 m_values[i]->multiply(scalar, *(resultList.m_values[i])); | |
| 98 } | |
| 99 } | 62 } |
| 100 | 63 |
| 101 DEFINE_TRACE(InterpolableList) | 64 DEFINE_TRACE(InterpolableList) |
| 102 { | 65 { |
| 103 visitor->trace(m_values); | 66 visitor->trace(m_values); |
| 104 InterpolableValue::trace(visitor); | 67 InterpolableValue::trace(visitor); |
| 105 } | 68 } |
| 106 | 69 |
| 107 void InterpolableAnimatableValue::interpolate(const InterpolableValue& to, const
double progress, InterpolableValue& result) const | 70 void InterpolableAnimatableValue::interpolate(const InterpolableValue& to, const
double progress, InterpolableValue& result) const |
| 108 { | 71 { |
| 109 const InterpolableAnimatableValue& toValue = toInterpolableAnimatableValue(t
o); | 72 const InterpolableAnimatableValue& toValue = toInterpolableAnimatableValue(t
o); |
| 110 InterpolableAnimatableValue& resultValue = toInterpolableAnimatableValue(res
ult); | 73 InterpolableAnimatableValue& resultValue = toInterpolableAnimatableValue(res
ult); |
| 111 if (progress == 0) | 74 if (progress == 0) |
| 112 resultValue.m_value = m_value; | 75 resultValue.m_value = m_value; |
| 113 if (progress == 1) | 76 if (progress == 1) |
| 114 resultValue.m_value = toValue.m_value; | 77 resultValue.m_value = toValue.m_value; |
| 115 resultValue.m_value = AnimatableValue::interpolate(m_value.get(), toValue.m_
value.get(), progress); | 78 resultValue.m_value = AnimatableValue::interpolate(m_value.get(), toValue.m_
value.get(), progress); |
| 116 } | 79 } |
| 117 | 80 |
| 118 DEFINE_TRACE(InterpolableAnimatableValue) | 81 DEFINE_TRACE(InterpolableAnimatableValue) |
| 119 { | 82 { |
| 120 visitor->trace(m_value); | 83 visitor->trace(m_value); |
| 121 InterpolableValue::trace(visitor); | 84 InterpolableValue::trace(visitor); |
| 122 } | 85 } |
| 123 | 86 |
| 124 } | 87 } |
| OLD | NEW |