| 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 14 matching lines...) Expand all Loading... |
| 25 * You should have received a copy of the GNU Library General Public License | 25 * You should have received a copy of the GNU Library General Public License |
| 26 * along with this library; see the file COPYING.LIB. If not, write to | 26 * along with this library; see the file COPYING.LIB. If not, write to |
| 27 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, | 27 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, |
| 28 * Boston, MA 02110-1301, USA. | 28 * Boston, MA 02110-1301, USA. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 #include "core/css/resolver/FilterOperationResolver.h" | 31 #include "core/css/resolver/FilterOperationResolver.h" |
| 32 | 32 |
| 33 #include "core/css/CSSFunctionValue.h" | 33 #include "core/css/CSSFunctionValue.h" |
| 34 #include "core/css/CSSPrimitiveValueMappings.h" | 34 #include "core/css/CSSPrimitiveValueMappings.h" |
| 35 #include "core/css/CSSShadowValue.h" | |
| 36 #include "core/css/CSSURIValue.h" | 35 #include "core/css/CSSURIValue.h" |
| 36 #include "core/css/resolver/StyleBuilderConverter.h" |
| 37 #include "core/css/resolver/StyleResolverState.h" | 37 #include "core/css/resolver/StyleResolverState.h" |
| 38 #include "core/frame/UseCounter.h" | 38 #include "core/frame/UseCounter.h" |
| 39 | 39 |
| 40 namespace blink { | 40 namespace blink { |
| 41 | 41 |
| 42 FilterOperation::OperationType FilterOperationResolver::filterOperationForType( | 42 FilterOperation::OperationType FilterOperationResolver::filterOperationForType( |
| 43 CSSValueID type) { | 43 CSSValueID type) { |
| 44 switch (type) { | 44 switch (type) { |
| 45 case CSSValueGrayscale: | 45 case CSSValueGrayscale: |
| 46 return FilterOperation::GRAYSCALE; | 46 return FilterOperation::GRAYSCALE; |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 193 } | 193 } |
| 194 case CSSValueBlur: { | 194 case CSSValueBlur: { |
| 195 Length stdDeviation = Length(0, Fixed); | 195 Length stdDeviation = Length(0, Fixed); |
| 196 if (filterValue->length() >= 1) | 196 if (filterValue->length() >= 1) |
| 197 stdDeviation = firstValue->convertToLength(conversionData); | 197 stdDeviation = firstValue->convertToLength(conversionData); |
| 198 operations.operations().push_back( | 198 operations.operations().push_back( |
| 199 BlurFilterOperation::create(stdDeviation)); | 199 BlurFilterOperation::create(stdDeviation)); |
| 200 break; | 200 break; |
| 201 } | 201 } |
| 202 case CSSValueDropShadow: { | 202 case CSSValueDropShadow: { |
| 203 const CSSShadowValue& item = toCSSShadowValue(filterValue->item(0)); | 203 ShadowData shadow = |
| 204 IntPoint location(item.x->computeLength<int>(conversionData), | 204 StyleBuilderConverter::convertShadow(state, filterValue->item(0)); |
| 205 item.y->computeLength<int>(conversionData)); | 205 // TODO(fs): Resolve 'currentcolor' when constructing the filter chain. |
| 206 int blur = | 206 if (shadow.color().isCurrentColor()) |
| 207 item.blur ? item.blur->computeLength<int>(conversionData) : 0; | 207 shadow.overrideColor(state.style()->color()); |
| 208 Color shadowColor = Color::black; | |
| 209 if (item.color) | |
| 210 shadowColor = state.document().textLinkColors().colorFromCSSValue( | |
| 211 *item.color, state.style()->color()); | |
| 212 | |
| 213 operations.operations().push_back( | 208 operations.operations().push_back( |
| 214 DropShadowFilterOperation::create(location, blur, shadowColor)); | 209 DropShadowFilterOperation::create(shadow)); |
| 215 break; | 210 break; |
| 216 } | 211 } |
| 217 default: | 212 default: |
| 218 ASSERT_NOT_REACHED(); | 213 ASSERT_NOT_REACHED(); |
| 219 break; | 214 break; |
| 220 } | 215 } |
| 221 } | 216 } |
| 222 | 217 |
| 223 return operations; | 218 return operations; |
| 224 } | 219 } |
| 225 | 220 |
| 226 } // namespace blink | 221 } // namespace blink |
| OLD | NEW |