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

Unified Diff: third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp

Issue 2609803002: Use ShadowData in DropShadowFilterOperation (Closed)
Patch Set: Fix blend(...) order Created 3 years, 12 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 side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp
diff --git a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp
index 3aa55be0cbd2530e75488a0a4e5ad97f7edb2cee..06dc0ecc726e2d826625c44867a2514f03fdbbde 100644
--- a/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp
+++ b/third_party/WebKit/Source/core/css/resolver/StyleBuilderConverter.cpp
@@ -998,7 +998,29 @@ LengthSize StyleBuilderConverter::convertRadius(StyleResolverState& state,
return LengthSize(radiusWidth, radiusHeight);
}
-PassRefPtr<ShadowList> StyleBuilderConverter::convertShadow(
+ShadowData StyleBuilderConverter::convertShadow(StyleResolverState& state,
+ const CSSValue& value) {
+ const CSSShadowValue& shadow = toCSSShadowValue(value);
+ float x = shadow.x->computeLength<float>(state.cssToLengthConversionData());
+ float y = shadow.y->computeLength<float>(state.cssToLengthConversionData());
+ float blur =
+ shadow.blur
+ ? shadow.blur->computeLength<float>(state.cssToLengthConversionData())
+ : 0;
+ float spread = shadow.spread
+ ? shadow.spread->computeLength<float>(
+ state.cssToLengthConversionData())
+ : 0;
+ ShadowStyle shadowStyle =
+ shadow.style && shadow.style->getValueID() == CSSValueInset ? Inset
+ : Normal;
+ StyleColor color = StyleColor::currentColor();
+ if (shadow.color)
+ color = convertStyleColor(state, *shadow.color);
+ return ShadowData(FloatPoint(x, y), blur, spread, shadowStyle, color);
+}
+
+PassRefPtr<ShadowList> StyleBuilderConverter::convertShadowList(
StyleResolverState& state,
const CSSValue& value) {
if (value.isIdentifierValue()) {
@@ -1006,30 +1028,10 @@ PassRefPtr<ShadowList> StyleBuilderConverter::convertShadow(
return PassRefPtr<ShadowList>();
}
- const CSSValueList& valueList = toCSSValueList(value);
- size_t shadowCount = valueList.length();
ShadowDataVector shadows;
- for (size_t i = 0; i < shadowCount; ++i) {
- const CSSShadowValue& item = toCSSShadowValue(valueList.item(i));
- float x = item.x->computeLength<float>(state.cssToLengthConversionData());
- float y = item.y->computeLength<float>(state.cssToLengthConversionData());
- float blur =
- item.blur
- ? item.blur->computeLength<float>(state.cssToLengthConversionData())
- : 0;
- float spread = item.spread
- ? item.spread->computeLength<float>(
- state.cssToLengthConversionData())
- : 0;
- ShadowStyle shadowStyle =
- item.style && item.style->getValueID() == CSSValueInset ? Inset
- : Normal;
- StyleColor color = StyleColor::currentColor();
- if (item.color)
- color = convertStyleColor(state, *item.color);
- shadows.append(
- ShadowData(FloatPoint(x, y), blur, spread, shadowStyle, color));
- }
+ for (const auto& item : toCSSValueList(value))
+ shadows.append(convertShadow(state, *item));
+
return ShadowList::adopt(shadows);
}

Powered by Google App Engine
This is Rietveld 408576698