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

Side by Side Diff: third_party/WebKit/Source/core/animation/CSSBorderImageLengthBoxInterpolationType.cpp

Issue 2283783002: Move static methods out of CSSLengthInterpolationType to LengthInterpolationFunctions (Closed)
Patch Set: Fix compile Created 4 years, 3 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
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
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
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698