Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
| 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 3 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) |
| 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 4 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) |
| 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. | 5 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. |
| 6 * All rights reserved. | 6 * All rights reserved. |
| 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> | 7 * Copyright (C) 2007 Alexey Proskuryakov <ap@webkit.org> |
| 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> | 8 * Copyright (C) 2007, 2008 Eric Seidel <eric@webkit.org> |
| 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. | 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. |
| 10 * (http://www.torchmobile.com/) | 10 * (http://www.torchmobile.com/) |
| (...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 110 feature = UseCounter::CSSFilterBlur; | 110 feature = UseCounter::CSSFilterBlur; |
| 111 break; | 111 break; |
| 112 case FilterOperation::DROP_SHADOW: | 112 case FilterOperation::DROP_SHADOW: |
| 113 feature = UseCounter::CSSFilterDropShadow; | 113 feature = UseCounter::CSSFilterDropShadow; |
| 114 break; | 114 break; |
| 115 }; | 115 }; |
| 116 UseCounter::count(document, feature); | 116 UseCounter::count(document, feature); |
| 117 } | 117 } |
| 118 | 118 |
| 119 FilterOperations FilterOperationResolver::createFilterOperations( | 119 FilterOperations FilterOperationResolver::createFilterOperations( |
| 120 StyleResolverState& state, | 120 StyleResolverState* state, |
| 121 const CSSValue& inValue) { | 121 const CSSValue& inValue) { |
| 122 FilterOperations operations; | 122 FilterOperations operations; |
| 123 | 123 |
| 124 if (inValue.isIdentifierValue()) { | 124 if (inValue.isIdentifierValue()) { |
| 125 DCHECK_EQ(toCSSIdentifierValue(inValue).getValueID(), CSSValueNone); | 125 DCHECK_EQ(toCSSIdentifierValue(inValue).getValueID(), CSSValueNone); |
| 126 return operations; | 126 return operations; |
| 127 } | 127 } |
| 128 | 128 |
| 129 const CSSToLengthConversionData& conversionData = | 129 const CSSToLengthConversionData* conversionData; |
| 130 state.cssToLengthConversionData(); | 130 if (state) { |
| 131 conversionData = &(state->cssToLengthConversionData()); | |
| 132 } else { | |
| 133 FontDescription fontDescription; | |
| 134 Font font(fontDescription); | |
| 135 static CSSToLengthConversionData::FontSizes fontSizes(10, 16, &font); | |
|
Justin Novosad
2016/11/08 20:59:23
These hard-coded values should be in constants. A
fserb
2017/01/17 17:58:44
Couldn't find it anywhere. The default on CSS Font
| |
| 136 static CSSToLengthConversionData::ViewportSize viewportSize(1024, 768); | |
| 137 static CSSToLengthConversionData baseData(&ComputedStyle::initialStyle(), | |
|
esprehn
2016/11/22 01:38:37
I don't think you can do this, any number of worke
fserb
2017/01/17 17:58:44
I've removed the statics.
| |
| 138 fontSizes, viewportSize, 1); | |
| 139 conversionData = &baseData; | |
| 140 } | |
| 141 | |
| 131 for (auto& currValue : toCSSValueList(inValue)) { | 142 for (auto& currValue : toCSSValueList(inValue)) { |
| 132 if (currValue->isURIValue()) { | 143 if (currValue->isURIValue()) { |
| 133 countFilterUse(FilterOperation::REFERENCE, state.document()); | 144 if (!state) |
|
Justin Novosad
2016/11/08 20:59:23
Add a comment here to explain the the !state case
fserb
2017/01/17 17:58:44
done.
| |
| 145 continue; | |
| 146 countFilterUse(FilterOperation::REFERENCE, state->document()); | |
| 134 | 147 |
| 135 const CSSURIValue& urlValue = toCSSURIValue(*currValue); | 148 const CSSURIValue& urlValue = toCSSURIValue(*currValue); |
| 136 SVGElementProxy& elementProxy = | 149 SVGElementProxy& elementProxy = |
| 137 state.elementStyleResources().cachedOrPendingFromValue(urlValue); | 150 state->elementStyleResources().cachedOrPendingFromValue(urlValue); |
| 138 operations.operations().append( | 151 operations.operations().append( |
| 139 ReferenceFilterOperation::create(urlValue.value(), elementProxy)); | 152 ReferenceFilterOperation::create(urlValue.value(), elementProxy)); |
| 140 continue; | 153 continue; |
| 141 } | 154 } |
| 142 | 155 |
| 143 const CSSFunctionValue* filterValue = toCSSFunctionValue(currValue.get()); | 156 const CSSFunctionValue* filterValue = toCSSFunctionValue(currValue.get()); |
| 144 FilterOperation::OperationType operationType = | 157 FilterOperation::OperationType operationType = |
| 145 filterOperationForType(filterValue->functionType()); | 158 filterOperationForType(filterValue->functionType()); |
| 146 countFilterUse(operationType, state.document()); | 159 if (state) |
| 160 countFilterUse(operationType, state->document()); | |
|
esprehn
2016/11/22 01:38:37
I think you actually want to take an ExecutionCont
fserb
2017/01/17 17:58:44
added TODO.
| |
| 147 DCHECK_LE(filterValue->length(), 1u); | 161 DCHECK_LE(filterValue->length(), 1u); |
| 148 | 162 |
| 149 const CSSPrimitiveValue* firstValue = | 163 const CSSPrimitiveValue* firstValue = |
| 150 filterValue->length() && filterValue->item(0).isPrimitiveValue() | 164 filterValue->length() && filterValue->item(0).isPrimitiveValue() |
| 151 ? &toCSSPrimitiveValue(filterValue->item(0)) | 165 ? &toCSSPrimitiveValue(filterValue->item(0)) |
| 152 : nullptr; | 166 : nullptr; |
| 153 switch (filterValue->functionType()) { | 167 switch (filterValue->functionType()) { |
| 154 case CSSValueGrayscale: | 168 case CSSValueGrayscale: |
| 155 case CSSValueSepia: | 169 case CSSValueSepia: |
| 156 case CSSValueSaturate: { | 170 case CSSValueSaturate: { |
| (...skipping 29 matching lines...) Expand all Loading... | |
| 186 amount /= 100; | 200 amount /= 100; |
| 187 } | 201 } |
| 188 | 202 |
| 189 operations.operations().append( | 203 operations.operations().append( |
| 190 BasicComponentTransferFilterOperation::create(amount, | 204 BasicComponentTransferFilterOperation::create(amount, |
| 191 operationType)); | 205 operationType)); |
| 192 break; | 206 break; |
| 193 } | 207 } |
| 194 case CSSValueBlur: { | 208 case CSSValueBlur: { |
| 195 Length stdDeviation = Length(0, Fixed); | 209 Length stdDeviation = Length(0, Fixed); |
| 196 if (filterValue->length() >= 1) | 210 if (filterValue->length() >= 1) { |
| 197 stdDeviation = firstValue->convertToLength(conversionData); | 211 stdDeviation = firstValue->convertToLength(*conversionData); |
| 212 } | |
| 198 operations.operations().append( | 213 operations.operations().append( |
| 199 BlurFilterOperation::create(stdDeviation)); | 214 BlurFilterOperation::create(stdDeviation)); |
| 200 break; | 215 break; |
| 201 } | 216 } |
| 202 case CSSValueDropShadow: { | 217 case CSSValueDropShadow: { |
| 203 const CSSShadowValue& item = toCSSShadowValue(filterValue->item(0)); | 218 const CSSShadowValue& item = toCSSShadowValue(filterValue->item(0)); |
| 204 IntPoint location(item.x->computeLength<int>(conversionData), | 219 IntPoint location; |
| 205 item.y->computeLength<int>(conversionData)); | 220 int blur; |
| 206 int blur = | 221 |
| 207 item.blur ? item.blur->computeLength<int>(conversionData) : 0; | 222 location = IntPoint(item.x->computeLength<int>(*conversionData), |
| 223 item.y->computeLength<int>(*conversionData)); | |
| 224 blur = item.blur ? item.blur->computeLength<int>(*conversionData) : 0; | |
| 208 Color shadowColor = Color::black; | 225 Color shadowColor = Color::black; |
|
esprehn
2016/11/22 01:38:37
This is going to force all shadows to be black, th
fserb
2017/01/17 17:58:44
yep. This code got refactored on StyleBuilderConve
| |
| 209 if (item.color) | 226 if (item.color && state) { |
| 210 shadowColor = state.document().textLinkColors().colorFromCSSValue( | 227 shadowColor = state->document().textLinkColors().colorFromCSSValue( |
| 211 *item.color, state.style()->color()); | 228 *item.color, state->style()->color()); |
| 229 } | |
| 212 | 230 |
| 213 operations.operations().append( | 231 operations.operations().append( |
| 214 DropShadowFilterOperation::create(location, blur, shadowColor)); | 232 DropShadowFilterOperation::create(location, blur, shadowColor)); |
| 215 break; | 233 break; |
| 216 } | 234 } |
| 217 default: | 235 default: |
| 218 ASSERT_NOT_REACHED(); | 236 ASSERT_NOT_REACHED(); |
| 219 break; | 237 break; |
| 220 } | 238 } |
| 221 } | 239 } |
| 222 | 240 |
| 223 return operations; | 241 return operations; |
| 224 } | 242 } |
| 225 | 243 |
| 226 } // namespace blink | 244 } // namespace blink |
| OLD | NEW |