| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 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 | 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 "core/animation/CSSTranslateInterpolationType.h" | 5 #include "core/animation/CSSTranslateInterpolationType.h" |
| 6 | 6 |
| 7 #include "core/animation/LengthInterpolationFunctions.h" | 7 #include "core/animation/LengthInterpolationFunctions.h" |
| 8 #include "core/css/CSSValueList.h" | 8 #include "core/css/CSSValueList.h" |
| 9 #include "core/css/resolver/StyleResolverState.h" | 9 #include "core/css/resolver/StyleResolverState.h" |
| 10 #include "platform/transforms/TranslateTransformOperation.h" | 10 #include "platform/transforms/TranslateTransformOperation.h" |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 52 RefPtr<TransformOperation> m_inheritedTranslate; | 52 RefPtr<TransformOperation> m_inheritedTranslate; |
| 53 }; | 53 }; |
| 54 | 54 |
| 55 enum TranslateComponentIndex : unsigned { | 55 enum TranslateComponentIndex : unsigned { |
| 56 TranslateX, | 56 TranslateX, |
| 57 TranslateY, | 57 TranslateY, |
| 58 TranslateZ, | 58 TranslateZ, |
| 59 TranslateComponentIndexCount, | 59 TranslateComponentIndexCount, |
| 60 }; | 60 }; |
| 61 | 61 |
| 62 std::unique_ptr<InterpolableValue> createIdentityInterpolableValue() { | 62 std::unique_ptr<InterpolableValue> createTranslateIdentity() { |
| 63 std::unique_ptr<InterpolableList> result = | 63 std::unique_ptr<InterpolableList> result = |
| 64 InterpolableList::create(TranslateComponentIndexCount); | 64 InterpolableList::create(TranslateComponentIndexCount); |
| 65 result->set(TranslateX, | 65 result->set(TranslateX, |
| 66 LengthInterpolationFunctions::createNeutralInterpolableValue()); | 66 LengthInterpolationFunctions::createNeutralInterpolableValue()); |
| 67 result->set(TranslateY, | 67 result->set(TranslateY, |
| 68 LengthInterpolationFunctions::createNeutralInterpolableValue()); | 68 LengthInterpolationFunctions::createNeutralInterpolableValue()); |
| 69 result->set(TranslateZ, | 69 result->set(TranslateZ, |
| 70 LengthInterpolationFunctions::createNeutralInterpolableValue()); | 70 LengthInterpolationFunctions::createNeutralInterpolableValue()); |
| 71 return std::move(result); | 71 return std::move(result); |
| 72 } | 72 } |
| (...skipping 16 matching lines...) Expand all Loading... |
| 89 Length(translate->z(), Fixed), zoom) | 89 Length(translate->z(), Fixed), zoom) |
| 90 .interpolableValue); | 90 .interpolableValue); |
| 91 return InterpolationValue(std::move(result)); | 91 return InterpolationValue(std::move(result)); |
| 92 } | 92 } |
| 93 | 93 |
| 94 } // namespace | 94 } // namespace |
| 95 | 95 |
| 96 InterpolationValue CSSTranslateInterpolationType::maybeConvertNeutral( | 96 InterpolationValue CSSTranslateInterpolationType::maybeConvertNeutral( |
| 97 const InterpolationValue& underlying, | 97 const InterpolationValue& underlying, |
| 98 ConversionCheckers&) const { | 98 ConversionCheckers&) const { |
| 99 return InterpolationValue(createIdentityInterpolableValue()); | 99 return InterpolationValue(createTranslateIdentity()); |
| 100 } | 100 } |
| 101 | 101 |
| 102 InterpolationValue CSSTranslateInterpolationType::maybeConvertInitial( | 102 InterpolationValue CSSTranslateInterpolationType::maybeConvertInitial( |
| 103 const StyleResolverState&, | 103 const StyleResolverState&, |
| 104 ConversionCheckers&) const { | 104 ConversionCheckers&) const { |
| 105 return createNoneValue(); | 105 return createNoneValue(); |
| 106 } | 106 } |
| 107 | 107 |
| 108 InterpolationValue CSSTranslateInterpolationType::maybeConvertInherit( | 108 InterpolationValue CSSTranslateInterpolationType::maybeConvertInherit( |
| 109 const StyleResolverState& state, | 109 const StyleResolverState& state, |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 146 return InterpolationValue(std::move(result)); | 146 return InterpolationValue(std::move(result)); |
| 147 } | 147 } |
| 148 | 148 |
| 149 PairwiseInterpolationValue CSSTranslateInterpolationType::maybeMergeSingles( | 149 PairwiseInterpolationValue CSSTranslateInterpolationType::maybeMergeSingles( |
| 150 InterpolationValue&& start, | 150 InterpolationValue&& start, |
| 151 InterpolationValue&& end) const { | 151 InterpolationValue&& end) const { |
| 152 size_t startListLength = | 152 size_t startListLength = |
| 153 toInterpolableList(*start.interpolableValue).length(); | 153 toInterpolableList(*start.interpolableValue).length(); |
| 154 size_t endListLength = toInterpolableList(*end.interpolableValue).length(); | 154 size_t endListLength = toInterpolableList(*end.interpolableValue).length(); |
| 155 if (startListLength < endListLength) | 155 if (startListLength < endListLength) |
| 156 start.interpolableValue = createIdentityInterpolableValue(); | 156 start.interpolableValue = createTranslateIdentity(); |
| 157 else if (endListLength < startListLength) | 157 else if (endListLength < startListLength) |
| 158 end.interpolableValue = createIdentityInterpolableValue(); | 158 end.interpolableValue = createTranslateIdentity(); |
| 159 | 159 |
| 160 return PairwiseInterpolationValue(std::move(start.interpolableValue), | 160 return PairwiseInterpolationValue(std::move(start.interpolableValue), |
| 161 std::move(end.interpolableValue)); | 161 std::move(end.interpolableValue)); |
| 162 } | 162 } |
| 163 | 163 |
| 164 InterpolationValue | 164 InterpolationValue |
| 165 CSSTranslateInterpolationType::maybeConvertStandardPropertyUnderlyingValue( | 165 CSSTranslateInterpolationType::maybeConvertStandardPropertyUnderlyingValue( |
| 166 const ComputedStyle& style) const { | 166 const ComputedStyle& style) const { |
| 167 return convertTranslateOperation(style.translate(), style.effectiveZoom()); | 167 return convertTranslateOperation(style.translate(), style.effectiveZoom()); |
| 168 } | 168 } |
| 169 | 169 |
| 170 void CSSTranslateInterpolationType::composite( | 170 void CSSTranslateInterpolationType::composite( |
| 171 UnderlyingValueOwner& underlyingValueOwner, | 171 UnderlyingValueOwner& underlyingValueOwner, |
| 172 double underlyingFraction, | 172 double underlyingFraction, |
| 173 const InterpolationValue& value, | 173 const InterpolationValue& value, |
| 174 double interpolationFraction) const { | 174 double interpolationFraction) const { |
| 175 if (isNoneValue(value)) { | 175 if (isNoneValue(value)) { |
| 176 return; | 176 return; |
| 177 } | 177 } |
| 178 | 178 |
| 179 if (isNoneValue(underlyingValueOwner.mutableValue())) { | 179 if (isNoneValue(underlyingValueOwner.mutableValue())) { |
| 180 underlyingValueOwner.mutableValue().interpolableValue = | 180 underlyingValueOwner.mutableValue().interpolableValue = |
| 181 createIdentityInterpolableValue(); | 181 createTranslateIdentity(); |
| 182 } | 182 } |
| 183 | 183 |
| 184 return CSSInterpolationType::composite( | 184 return CSSInterpolationType::composite( |
| 185 underlyingValueOwner, underlyingFraction, value, interpolationFraction); | 185 underlyingValueOwner, underlyingFraction, value, interpolationFraction); |
| 186 } | 186 } |
| 187 | 187 |
| 188 void CSSTranslateInterpolationType::applyStandardPropertyValue( | 188 void CSSTranslateInterpolationType::applyStandardPropertyValue( |
| 189 const InterpolableValue& interpolableValue, | 189 const InterpolableValue& interpolableValue, |
| 190 const NonInterpolableValue*, | 190 const NonInterpolableValue*, |
| 191 StyleResolverState& state) const { | 191 StyleResolverState& state) const { |
| (...skipping 12 matching lines...) Expand all Loading... |
| 204 *list.get(TranslateZ), nullptr, conversionData, ValueRangeAll) | 204 *list.get(TranslateZ), nullptr, conversionData, ValueRangeAll) |
| 205 .pixels(); | 205 .pixels(); |
| 206 | 206 |
| 207 RefPtr<TranslateTransformOperation> result = | 207 RefPtr<TranslateTransformOperation> result = |
| 208 TranslateTransformOperation::create(x, y, z, | 208 TranslateTransformOperation::create(x, y, z, |
| 209 TransformOperation::Translate3D); | 209 TransformOperation::Translate3D); |
| 210 state.style()->setTranslate(std::move(result)); | 210 state.style()->setTranslate(std::move(result)); |
| 211 } | 211 } |
| 212 | 212 |
| 213 } // namespace blink | 213 } // namespace blink |
| OLD | NEW |