| 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/CSSBorderImageLengthBoxInterpolationType.h" | 5 #include "core/animation/CSSBorderImageLengthBoxInterpolationType.h" |
| 6 | 6 |
| 7 #include "core/animation/BorderImageLengthBoxPropertyFunctions.h" | 7 #include "core/animation/BorderImageLengthBoxPropertyFunctions.h" |
| 8 #include "core/animation/CSSLengthInterpolationType.h" | 8 #include "core/animation/LengthInterpolationFunctions.h" |
| 9 #include "core/css/CSSQuadValue.h" | 9 #include "core/css/CSSQuadValue.h" |
| 10 #include "core/css/resolver/StyleResolverState.h" | 10 #include "core/css/resolver/StyleResolverState.h" |
| 11 #include "wtf/PtrUtil.h" | 11 #include "wtf/PtrUtil.h" |
| 12 #include <memory> | 12 #include <memory> |
| 13 | 13 |
| 14 namespace blink { | 14 namespace blink { |
| 15 | 15 |
| 16 namespace { | 16 namespace { |
| 17 | 17 |
| 18 enum SideIndex : unsigned { | 18 enum SideIndex : unsigned { |
| (...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 139 sides[SideTop] = &box.top(); | 139 sides[SideTop] = &box.top(); |
| 140 sides[SideRight] = &box.right(); | 140 sides[SideRight] = &box.right(); |
| 141 sides[SideBottom] = &box.bottom(); | 141 sides[SideBottom] = &box.bottom(); |
| 142 sides[SideLeft] = &box.left(); | 142 sides[SideLeft] = &box.left(); |
| 143 | 143 |
| 144 for (size_t i = 0; i < SideIndexCount; i++) { | 144 for (size_t i = 0; i < SideIndexCount; i++) { |
| 145 const BorderImageLength& side = *sides[i]; | 145 const BorderImageLength& side = *sides[i]; |
| 146 if (side.isNumber()) { | 146 if (side.isNumber()) { |
| 147 list->set(i, InterpolableNumber::create(side.number())); | 147 list->set(i, InterpolableNumber::create(side.number())); |
| 148 } else { | 148 } else { |
| 149 InterpolationValue convertedSide = CSSLengthInterpolationType::maybe
ConvertLength(side.length(), zoom); | 149 InterpolationValue convertedSide = LengthInterpolationFunctions::may
beConvertLength(side.length(), zoom); |
| 150 if (!convertedSide) | 150 if (!convertedSide) |
| 151 return nullptr; | 151 return nullptr; |
| 152 list->set(i, std::move(convertedSide.interpolableValue)); | 152 list->set(i, std::move(convertedSide.interpolableValue)); |
| 153 nonInterpolableValues[i] = convertedSide.nonInterpolableValue.releas
e(); | 153 nonInterpolableValues[i] = convertedSide.nonInterpolableValue.releas
e(); |
| 154 } | 154 } |
| 155 } | 155 } |
| 156 | 156 |
| 157 return InterpolationValue(std::move(list), CSSBorderImageLengthBoxNonInterpo
lableValue::create(SideNumbers(box), std::move(nonInterpolableValues))); | 157 return InterpolationValue(std::move(list), CSSBorderImageLengthBoxNonInterpo
lableValue::create(SideNumbers(box), std::move(nonInterpolableValues))); |
| 158 } | 158 } |
| 159 | 159 |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 199 sides[SideTop] = quad.top(); | 199 sides[SideTop] = quad.top(); |
| 200 sides[SideRight] = quad.right(); | 200 sides[SideRight] = quad.right(); |
| 201 sides[SideBottom] = quad.bottom(); | 201 sides[SideBottom] = quad.bottom(); |
| 202 sides[SideLeft] = quad.left(); | 202 sides[SideLeft] = quad.left(); |
| 203 | 203 |
| 204 for (size_t i = 0; i < SideIndexCount; i++) { | 204 for (size_t i = 0; i < SideIndexCount; i++) { |
| 205 const CSSPrimitiveValue& side = *sides[i]; | 205 const CSSPrimitiveValue& side = *sides[i]; |
| 206 if (side.isNumber()) { | 206 if (side.isNumber()) { |
| 207 list->set(i, InterpolableNumber::create(side.getDoubleValue())); | 207 list->set(i, InterpolableNumber::create(side.getDoubleValue())); |
| 208 } else { | 208 } else { |
| 209 InterpolationValue convertedSide = CSSLengthInterpolationType::maybe
ConvertCSSValue(side); | 209 InterpolationValue convertedSide = LengthInterpolationFunctions::may
beConvertCSSValue(side); |
| 210 if (!convertedSide) | 210 if (!convertedSide) |
| 211 return nullptr; | 211 return nullptr; |
| 212 list->set(i, std::move(convertedSide.interpolableValue)); | 212 list->set(i, std::move(convertedSide.interpolableValue)); |
| 213 nonInterpolableValues[i] = convertedSide.nonInterpolableValue.releas
e(); | 213 nonInterpolableValues[i] = convertedSide.nonInterpolableValue.releas
e(); |
| 214 } | 214 } |
| 215 } | 215 } |
| 216 | 216 |
| 217 return InterpolationValue(std::move(list), CSSBorderImageLengthBoxNonInterpo
lableValue::create(SideNumbers(quad), std::move(nonInterpolableValues))); | 217 return InterpolationValue(std::move(list), CSSBorderImageLengthBoxNonInterpo
lableValue::create(SideNumbers(quad), std::move(nonInterpolableValues))); |
| 218 } | 218 } |
| 219 | 219 |
| (...skipping 28 matching lines...) Expand all Loading... |
| 248 InterpolationValue& underlyingValue = underlyingValueOwner.mutableValue(); | 248 InterpolationValue& underlyingValue = underlyingValueOwner.mutableValue(); |
| 249 InterpolableList& underlyingList = toInterpolableList(*underlyingValue.inter
polableValue); | 249 InterpolableList& underlyingList = toInterpolableList(*underlyingValue.inter
polableValue); |
| 250 Vector<RefPtr<NonInterpolableValue>>& underlyingSideNonInterpolableValues =
toCSSBorderImageLengthBoxNonInterpolableValue(*underlyingValue.nonInterpolableVa
lue).sideNonInterpolableValues(); | 250 Vector<RefPtr<NonInterpolableValue>>& underlyingSideNonInterpolableValues =
toCSSBorderImageLengthBoxNonInterpolableValue(*underlyingValue.nonInterpolableVa
lue).sideNonInterpolableValues(); |
| 251 const InterpolableList& list = toInterpolableList(*value.interpolableValue); | 251 const InterpolableList& list = toInterpolableList(*value.interpolableValue); |
| 252 const Vector<RefPtr<NonInterpolableValue>>& sideNonInterpolableValues = nonI
nterpolableValue.sideNonInterpolableValues(); | 252 const Vector<RefPtr<NonInterpolableValue>>& sideNonInterpolableValues = nonI
nterpolableValue.sideNonInterpolableValues(); |
| 253 | 253 |
| 254 for (size_t i = 0; i < SideIndexCount; i++) { | 254 for (size_t i = 0; i < SideIndexCount; i++) { |
| 255 if (sideNumbers.isNumber[i]) | 255 if (sideNumbers.isNumber[i]) |
| 256 underlyingList.getMutable(i)->scaleAndAdd(underlyingFraction, *list.
get(i)); | 256 underlyingList.getMutable(i)->scaleAndAdd(underlyingFraction, *list.
get(i)); |
| 257 else | 257 else |
| 258 CSSLengthInterpolationType::composite(underlyingList.getMutable(i),
underlyingSideNonInterpolableValues[i], underlyingFraction, *list.get(i), sideNo
nInterpolableValues[i].get()); | 258 LengthInterpolationFunctions::composite(underlyingList.getMutable(i)
, underlyingSideNonInterpolableValues[i], underlyingFraction, *list.get(i), side
NonInterpolableValues[i].get()); |
| 259 } | 259 } |
| 260 } | 260 } |
| 261 | 261 |
| 262 void CSSBorderImageLengthBoxInterpolationType::apply(const InterpolableValue& in
terpolableValue, const NonInterpolableValue* nonInterpolableValue, Interpolation
Environment& environment) const | 262 void CSSBorderImageLengthBoxInterpolationType::apply(const InterpolableValue& in
terpolableValue, const NonInterpolableValue* nonInterpolableValue, Interpolation
Environment& environment) const |
| 263 { | 263 { |
| 264 const SideNumbers& sideNumbers = toCSSBorderImageLengthBoxNonInterpolableVal
ue(nonInterpolableValue)->sideNumbers(); | 264 const SideNumbers& sideNumbers = toCSSBorderImageLengthBoxNonInterpolableVal
ue(nonInterpolableValue)->sideNumbers(); |
| 265 const Vector<RefPtr<NonInterpolableValue>>& nonInterpolableValues = toCSSBor
derImageLengthBoxNonInterpolableValue(nonInterpolableValue)->sideNonInterpolable
Values(); | 265 const Vector<RefPtr<NonInterpolableValue>>& nonInterpolableValues = toCSSBor
derImageLengthBoxNonInterpolableValue(nonInterpolableValue)->sideNonInterpolable
Values(); |
| 266 const InterpolableList& list = toInterpolableList(interpolableValue); | 266 const InterpolableList& list = toInterpolableList(interpolableValue); |
| 267 const auto& convertSide = [&sideNumbers, &list, &environment, &nonInterpolab
leValues](size_t index) -> BorderImageLength { | 267 const auto& convertSide = [&sideNumbers, &list, &environment, &nonInterpolab
leValues](size_t index) -> BorderImageLength { |
| 268 if (sideNumbers.isNumber[index]) | 268 if (sideNumbers.isNumber[index]) |
| 269 return clampTo<double>(toInterpolableNumber(list.get(index))->value(
), 0); | 269 return clampTo<double>(toInterpolableNumber(list.get(index))->value(
), 0); |
| 270 return CSSLengthInterpolationType::createLength(*list.get(index), nonInt
erpolableValues[index].get(), environment.state().cssToLengthConversionData(), V
alueRangeNonNegative); | 270 return LengthInterpolationFunctions::createLength(*list.get(index), nonI
nterpolableValues[index].get(), environment.state().cssToLengthConversionData(),
ValueRangeNonNegative); |
| 271 }; | 271 }; |
| 272 BorderImageLengthBox box( | 272 BorderImageLengthBox box( |
| 273 convertSide(SideTop), | 273 convertSide(SideTop), |
| 274 convertSide(SideRight), | 274 convertSide(SideRight), |
| 275 convertSide(SideBottom), | 275 convertSide(SideBottom), |
| 276 convertSide(SideLeft)); | 276 convertSide(SideLeft)); |
| 277 BorderImageLengthBoxPropertyFunctions::setBorderImageLengthBox(cssProperty()
, *environment.state().style(), box); | 277 BorderImageLengthBoxPropertyFunctions::setBorderImageLengthBox(cssProperty()
, *environment.state().style(), box); |
| 278 } | 278 } |
| 279 | 279 |
| 280 } // namespace blink | 280 } // namespace blink |
| OLD | NEW |