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/CSSClipInterpolationType.h" | 5 #include "core/animation/CSSClipInterpolationType.h" |
6 | 6 |
7 #include "core/animation/LengthInterpolationFunctions.h" | 7 #include "core/animation/LengthInterpolationFunctions.h" |
| 8 #include "core/css/CSSIdentifierValue.h" |
8 #include "core/css/CSSQuadValue.h" | 9 #include "core/css/CSSQuadValue.h" |
9 #include "core/css/resolver/StyleResolverState.h" | 10 #include "core/css/resolver/StyleResolverState.h" |
10 #include "wtf/PtrUtil.h" | 11 #include "wtf/PtrUtil.h" |
11 #include <memory> | 12 #include <memory> |
12 | 13 |
13 namespace blink { | 14 namespace blink { |
14 | 15 |
15 struct ClipAutos { | 16 struct ClipAutos { |
16 ClipAutos() | 17 ClipAutos() |
17 : isAuto(true) | 18 : isAuto(true) |
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 | 185 |
185 InterpolationValue CSSClipInterpolationType::maybeConvertInherit(const StyleReso
lverState& state, ConversionCheckers& conversionCheckers) const | 186 InterpolationValue CSSClipInterpolationType::maybeConvertInherit(const StyleReso
lverState& state, ConversionCheckers& conversionCheckers) const |
186 { | 187 { |
187 ClipAutos parentAutos = getClipAutos(*state.parentStyle()); | 188 ClipAutos parentAutos = getClipAutos(*state.parentStyle()); |
188 conversionCheckers.append(ParentAutosChecker::create(parentAutos)); | 189 conversionCheckers.append(ParentAutosChecker::create(parentAutos)); |
189 if (parentAutos.isAuto) | 190 if (parentAutos.isAuto) |
190 return nullptr; | 191 return nullptr; |
191 return createClipValue(state.parentStyle()->clip(), state.parentStyle()->eff
ectiveZoom()); | 192 return createClipValue(state.parentStyle()->clip(), state.parentStyle()->eff
ectiveZoom()); |
192 } | 193 } |
193 | 194 |
194 static bool isCSSAuto(const CSSPrimitiveValue& value) | 195 static bool isCSSAuto(const CSSValue& value) |
195 { | 196 { |
196 return value.getValueID() == CSSValueAuto; | 197 return value.isIdentifierValue() && toCSSIdentifierValue(value).getValueID()
== CSSValueAuto; |
197 } | 198 } |
198 | 199 |
199 static std::unique_ptr<InterpolableValue> convertClipComponent(const CSSPrimitiv
eValue& length) | 200 static std::unique_ptr<InterpolableValue> convertClipComponent(const CSSValue& l
ength) |
200 { | 201 { |
201 if (isCSSAuto(length)) | 202 if (isCSSAuto(length)) |
202 return InterpolableList::create(0); | 203 return InterpolableList::create(0); |
203 return LengthInterpolationFunctions::maybeConvertCSSValue(length).interpolab
leValue; | 204 return LengthInterpolationFunctions::maybeConvertCSSValue(length).interpolab
leValue; |
204 } | 205 } |
205 | 206 |
206 InterpolationValue CSSClipInterpolationType::maybeConvertValue(const CSSValue& v
alue, const StyleResolverState& state, ConversionCheckers&) const | 207 InterpolationValue CSSClipInterpolationType::maybeConvertValue(const CSSValue& v
alue, const StyleResolverState& state, ConversionCheckers&) const |
207 { | 208 { |
208 if (!value.isQuadValue()) | 209 if (!value.isQuadValue()) |
209 return nullptr; | 210 return nullptr; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
258 return LengthInterpolationFunctions::createLength(*list.get(index), null
ptr, environment.state().cssToLengthConversionData(), ValueRangeAll); | 259 return LengthInterpolationFunctions::createLength(*list.get(index), null
ptr, environment.state().cssToLengthConversionData(), ValueRangeAll); |
259 }; | 260 }; |
260 environment.state().style()->setClip(LengthBox( | 261 environment.state().style()->setClip(LengthBox( |
261 convertIndex(autos.isTopAuto, ClipTop), | 262 convertIndex(autos.isTopAuto, ClipTop), |
262 convertIndex(autos.isRightAuto, ClipRight), | 263 convertIndex(autos.isRightAuto, ClipRight), |
263 convertIndex(autos.isBottomAuto, ClipBottom), | 264 convertIndex(autos.isBottomAuto, ClipBottom), |
264 convertIndex(autos.isLeftAuto, ClipLeft))); | 265 convertIndex(autos.isLeftAuto, ClipLeft))); |
265 } | 266 } |
266 | 267 |
267 } // namespace blink | 268 } // namespace blink |
OLD | NEW |