OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2013 Google Inc. All rights reserved. | 2 * Copyright (C) 2013 Google Inc. All rights reserved. |
3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 3 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |
4 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) | 4 * (C) 2004-2005 Allan Sandfeld Jensen (kde@carewolf.com) |
5 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) | 5 * Copyright (C) 2006, 2007 Nicholas Shanks (webkit@nickshanks.com) |
6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc.
All rights reserved. | 6 * Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc.
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. (http://www.t
orchmobile.com/) | 9 * Copyright (C) 2008, 2009 Torch Mobile Inc. All rights reserved. (http://www.t
orchmobile.com/) |
10 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. | 10 * Copyright (c) 2011, Code Aurora Forum. All rights reserved. |
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
70 #include "core/frame/LocalFrame.h" | 70 #include "core/frame/LocalFrame.h" |
71 #include "core/frame/Settings.h" | 71 #include "core/frame/Settings.h" |
72 #include "core/rendering/style/CounterContent.h" | 72 #include "core/rendering/style/CounterContent.h" |
73 #include "core/rendering/style/CursorList.h" | 73 #include "core/rendering/style/CursorList.h" |
74 #include "core/rendering/style/QuotesData.h" | 74 #include "core/rendering/style/QuotesData.h" |
75 #include "core/rendering/style/RenderStyle.h" | 75 #include "core/rendering/style/RenderStyle.h" |
76 #include "core/rendering/style/RenderStyleConstants.h" | 76 #include "core/rendering/style/RenderStyleConstants.h" |
77 #include "core/rendering/style/SVGRenderStyle.h" | 77 #include "core/rendering/style/SVGRenderStyle.h" |
78 #include "core/rendering/style/SVGRenderStyleDefs.h" | 78 #include "core/rendering/style/SVGRenderStyleDefs.h" |
79 #include "core/rendering/style/StyleGeneratedImage.h" | 79 #include "core/rendering/style/StyleGeneratedImage.h" |
80 #include "core/svg/SVGColor.h" | |
81 #include "core/svg/SVGPaint.h" | 80 #include "core/svg/SVGPaint.h" |
82 #include "platform/fonts/FontDescription.h" | 81 #include "platform/fonts/FontDescription.h" |
83 #include "wtf/MathExtras.h" | 82 #include "wtf/MathExtras.h" |
84 #include "wtf/StdLibExtras.h" | 83 #include "wtf/StdLibExtras.h" |
85 #include "wtf/Vector.h" | 84 #include "wtf/Vector.h" |
86 | 85 |
87 namespace WebCore { | 86 namespace WebCore { |
88 | 87 |
89 static Length clipConvertToLength(StyleResolverState& state, CSSPrimitiveValue*
value) | 88 static Length clipConvertToLength(StyleResolverState& state, CSSPrimitiveValue*
value) |
90 { | 89 { |
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1067 return true; | 1066 return true; |
1068 } | 1067 } |
1069 if (angle > 135.0f && angle <= 225.0f) { | 1068 if (angle > 135.0f && angle <= 225.0f) { |
1070 orientation = GO_180DEG; | 1069 orientation = GO_180DEG; |
1071 return true; | 1070 return true; |
1072 } | 1071 } |
1073 orientation = GO_270DEG; | 1072 orientation = GO_270DEG; |
1074 return true; | 1073 return true; |
1075 } | 1074 } |
1076 | 1075 |
1077 static Color colorFromSVGColorCSSValue(SVGColor* svgColor, const Color& fgColor) | 1076 static Color colorFromSVGPaintCSSValue(SVGPaint* svgPaint, const Color& fgColor) |
1078 { | 1077 { |
1079 Color color; | 1078 Color color; |
1080 if (svgColor->colorType() == SVGColor::SVG_COLORTYPE_CURRENTCOLOR) | 1079 if (svgPaint->paintType() == SVGPaint::SVG_PAINTTYPE_CURRENTCOLOR |
| 1080 || svgPaint->paintType() == SVGPaint::SVG_PAINTTYPE_URI_CURRENTCOLOR) |
1081 color = fgColor; | 1081 color = fgColor; |
1082 else | 1082 else |
1083 color = svgColor->color(); | 1083 color = svgPaint->color(); |
1084 return color; | 1084 return color; |
1085 } | 1085 } |
1086 | 1086 |
1087 static EPaintOrder paintOrderFlattened(CSSValue* cssPaintOrder) | 1087 static EPaintOrder paintOrderFlattened(CSSValue* cssPaintOrder) |
1088 { | 1088 { |
1089 if (cssPaintOrder->isValueList()) { | 1089 if (cssPaintOrder->isValueList()) { |
1090 int paintOrder = 0; | 1090 int paintOrder = 0; |
1091 CSSValueListInspector iter(cssPaintOrder); | 1091 CSSValueListInspector iter(cssPaintOrder); |
1092 for (size_t i = 0; i < iter.length(); i++) { | 1092 for (size_t i = 0; i < iter.length(); i++) { |
1093 CSSPrimitiveValue* value = toCSSPrimitiveValue(iter.item(i)); | 1093 CSSPrimitiveValue* value = toCSSPrimitiveValue(iter.item(i)); |
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2070 const SVGRenderStyle* svgParentStyle = state.parentStyle()->svgStyle
(); | 2070 const SVGRenderStyle* svgParentStyle = state.parentStyle()->svgStyle
(); |
2071 svgStyle->setFillPaint(svgParentStyle->fillPaintType(), svgParentSty
le->fillPaintColor(), svgParentStyle->fillPaintUri(), state.applyPropertyToRegul
arStyle(), state.applyPropertyToVisitedLinkStyle()); | 2071 svgStyle->setFillPaint(svgParentStyle->fillPaintType(), svgParentSty
le->fillPaintColor(), svgParentStyle->fillPaintUri(), state.applyPropertyToRegul
arStyle(), state.applyPropertyToVisitedLinkStyle()); |
2072 return; | 2072 return; |
2073 } | 2073 } |
2074 if (isInitial) { | 2074 if (isInitial) { |
2075 svgStyle->setFillPaint(SVGRenderStyle::initialFillPaintType(), SVGRe
nderStyle::initialFillPaintColor(), SVGRenderStyle::initialFillPaintUri(), state
.applyPropertyToRegularStyle(), state.applyPropertyToVisitedLinkStyle()); | 2075 svgStyle->setFillPaint(SVGRenderStyle::initialFillPaintType(), SVGRe
nderStyle::initialFillPaintColor(), SVGRenderStyle::initialFillPaintUri(), state
.applyPropertyToRegularStyle(), state.applyPropertyToVisitedLinkStyle()); |
2076 return; | 2076 return; |
2077 } | 2077 } |
2078 if (value->isSVGPaint()) { | 2078 if (value->isSVGPaint()) { |
2079 SVGPaint* svgPaint = toSVGPaint(value); | 2079 SVGPaint* svgPaint = toSVGPaint(value); |
2080 svgStyle->setFillPaint(svgPaint->paintType(), colorFromSVGColorCSSVa
lue(svgPaint, state.style()->color()), svgPaint->uri(), state.applyPropertyToReg
ularStyle(), state.applyPropertyToVisitedLinkStyle()); | 2080 svgStyle->setFillPaint(svgPaint->paintType(), colorFromSVGPaintCSSVa
lue(svgPaint, state.style()->color()), svgPaint->uri(), state.applyPropertyToReg
ularStyle(), state.applyPropertyToVisitedLinkStyle()); |
2081 } | 2081 } |
2082 break; | 2082 break; |
2083 } | 2083 } |
2084 case CSSPropertyStroke: | 2084 case CSSPropertyStroke: |
2085 { | 2085 { |
2086 SVGRenderStyle* svgStyle = state.style()->accessSVGStyle(); | 2086 SVGRenderStyle* svgStyle = state.style()->accessSVGStyle(); |
2087 if (isInherit) { | 2087 if (isInherit) { |
2088 const SVGRenderStyle* svgParentStyle = state.parentStyle()->svgStyle
(); | 2088 const SVGRenderStyle* svgParentStyle = state.parentStyle()->svgStyle
(); |
2089 svgStyle->setStrokePaint(svgParentStyle->strokePaintType(), svgParen
tStyle->strokePaintColor(), svgParentStyle->strokePaintUri(), state.applyPropert
yToRegularStyle(), state.applyPropertyToVisitedLinkStyle()); | 2089 svgStyle->setStrokePaint(svgParentStyle->strokePaintType(), svgParen
tStyle->strokePaintColor(), svgParentStyle->strokePaintUri(), state.applyPropert
yToRegularStyle(), state.applyPropertyToVisitedLinkStyle()); |
2090 return; | 2090 return; |
2091 } | 2091 } |
2092 if (isInitial) { | 2092 if (isInitial) { |
2093 svgStyle->setStrokePaint(SVGRenderStyle::initialStrokePaintType(), S
VGRenderStyle::initialStrokePaintColor(), SVGRenderStyle::initialStrokePaintUri(
), state.applyPropertyToRegularStyle(), state.applyPropertyToVisitedLinkStyle())
; | 2093 svgStyle->setStrokePaint(SVGRenderStyle::initialStrokePaintType(), S
VGRenderStyle::initialStrokePaintColor(), SVGRenderStyle::initialStrokePaintUri(
), state.applyPropertyToRegularStyle(), state.applyPropertyToVisitedLinkStyle())
; |
2094 return; | 2094 return; |
2095 } | 2095 } |
2096 if (value->isSVGPaint()) { | 2096 if (value->isSVGPaint()) { |
2097 SVGPaint* svgPaint = toSVGPaint(value); | 2097 SVGPaint* svgPaint = toSVGPaint(value); |
2098 svgStyle->setStrokePaint(svgPaint->paintType(), colorFromSVGColorCSS
Value(svgPaint, state.style()->color()), svgPaint->uri(), state.applyPropertyToR
egularStyle(), state.applyPropertyToVisitedLinkStyle()); | 2098 svgStyle->setStrokePaint(svgPaint->paintType(), colorFromSVGPaintCSS
Value(svgPaint, state.style()->color()), svgPaint->uri(), state.applyPropertyToR
egularStyle(), state.applyPropertyToVisitedLinkStyle()); |
2099 } | 2099 } |
2100 break; | 2100 break; |
2101 } | 2101 } |
2102 case CSSPropertyStrokeDasharray: | 2102 case CSSPropertyStrokeDasharray: |
2103 { | 2103 { |
2104 HANDLE_SVG_INHERIT_AND_INITIAL(strokeDashArray, StrokeDashArray) | 2104 HANDLE_SVG_INHERIT_AND_INITIAL(strokeDashArray, StrokeDashArray) |
2105 if (!value->isValueList()) { | 2105 if (!value->isValueList()) { |
2106 state.style()->accessSVGStyle()->setStrokeDashArray(SVGRenderStyle::
initialStrokeDashArray()); | 2106 state.style()->accessSVGStyle()->setStrokeDashArray(SVGRenderStyle::
initialStrokeDashArray()); |
2107 break; | 2107 break; |
2108 } | 2108 } |
(...skipping 10 matching lines...) Expand all Loading... |
2119 CSSPrimitiveValue* dash = toCSSPrimitiveValue(dashes->itemWithoutBou
ndsCheck(i)); | 2119 CSSPrimitiveValue* dash = toCSSPrimitiveValue(dashes->itemWithoutBou
ndsCheck(i)); |
2120 array->append(SVGLength::fromCSSPrimitiveValue(dash)); | 2120 array->append(SVGLength::fromCSSPrimitiveValue(dash)); |
2121 } | 2121 } |
2122 | 2122 |
2123 state.style()->accessSVGStyle()->setStrokeDashArray(array.release()); | 2123 state.style()->accessSVGStyle()->setStrokeDashArray(array.release()); |
2124 break; | 2124 break; |
2125 } | 2125 } |
2126 case CSSPropertyStopColor: | 2126 case CSSPropertyStopColor: |
2127 { | 2127 { |
2128 HANDLE_SVG_INHERIT_AND_INITIAL(stopColor, StopColor); | 2128 HANDLE_SVG_INHERIT_AND_INITIAL(stopColor, StopColor); |
2129 if (value->isSVGColor()) | 2129 if (primitiveValue->isRGBColor()) |
2130 state.style()->accessSVGStyle()->setStopColor(colorFromSVGColorCSSVa
lue(toSVGColor(value), state.style()->color())); | 2130 state.style()->accessSVGStyle()->setStopColor(primitiveValue->getRGB
A32Value()); |
| 2131 else if (primitiveValue->getValueID() == CSSValueCurrentcolor) |
| 2132 state.style()->accessSVGStyle()->setStopColor(state.style()->color()
); |
2131 break; | 2133 break; |
2132 } | 2134 } |
2133 case CSSPropertyLightingColor: | 2135 case CSSPropertyLightingColor: |
2134 { | 2136 { |
2135 HANDLE_SVG_INHERIT_AND_INITIAL(lightingColor, LightingColor); | 2137 HANDLE_SVG_INHERIT_AND_INITIAL(lightingColor, LightingColor); |
2136 if (value->isSVGColor()) | 2138 if (primitiveValue->isRGBColor()) |
2137 state.style()->accessSVGStyle()->setLightingColor(colorFromSVGColorC
SSValue(toSVGColor(value), state.style()->color())); | 2139 state.style()->accessSVGStyle()->setLightingColor(primitiveValue->ge
tRGBA32Value()); |
| 2140 else if (primitiveValue->getValueID() == CSSValueCurrentcolor) |
| 2141 state.style()->accessSVGStyle()->setLightingColor(state.style()->col
or()); |
2138 break; | 2142 break; |
2139 } | 2143 } |
2140 case CSSPropertyFloodColor: | 2144 case CSSPropertyFloodColor: |
2141 { | 2145 { |
2142 HANDLE_SVG_INHERIT_AND_INITIAL(floodColor, FloodColor); | 2146 HANDLE_SVG_INHERIT_AND_INITIAL(floodColor, FloodColor); |
2143 if (value->isSVGColor()) | 2147 if (primitiveValue->isRGBColor()) |
2144 state.style()->accessSVGStyle()->setFloodColor(colorFromSVGColorCSSV
alue(toSVGColor(value), state.style()->color())); | 2148 state.style()->accessSVGStyle()->setFloodColor(primitiveValue->getRG
BA32Value()); |
| 2149 else if (primitiveValue->getValueID() == CSSValueCurrentcolor) |
| 2150 state.style()->accessSVGStyle()->setFloodColor(state.style()->color(
)); |
2145 break; | 2151 break; |
2146 } | 2152 } |
2147 case CSSPropertyGlyphOrientationHorizontal: | 2153 case CSSPropertyGlyphOrientationHorizontal: |
2148 { | 2154 { |
2149 HANDLE_SVG_INHERIT_AND_INITIAL(glyphOrientationHorizontal, GlyphOrientat
ionHorizontal) | 2155 HANDLE_SVG_INHERIT_AND_INITIAL(glyphOrientationHorizontal, GlyphOrientat
ionHorizontal) |
2150 EGlyphOrientation orientation; | 2156 EGlyphOrientation orientation; |
2151 if (degreeToGlyphOrientation(primitiveValue, orientation)) | 2157 if (degreeToGlyphOrientation(primitiveValue, orientation)) |
2152 state.style()->accessSVGStyle()->setGlyphOrientationHorizontal(orien
tation); | 2158 state.style()->accessSVGStyle()->setGlyphOrientationHorizontal(orien
tation); |
2153 break; | 2159 break; |
2154 } | 2160 } |
(...skipping 16 matching lines...) Expand all Loading... |
2171 break; | 2177 break; |
2172 } | 2178 } |
2173 case CSSPropertyEnableBackground: | 2179 case CSSPropertyEnableBackground: |
2174 // Silently ignoring this property for now | 2180 // Silently ignoring this property for now |
2175 // http://bugs.webkit.org/show_bug.cgi?id=6022 | 2181 // http://bugs.webkit.org/show_bug.cgi?id=6022 |
2176 break; | 2182 break; |
2177 } | 2183 } |
2178 } | 2184 } |
2179 | 2185 |
2180 } // namespace WebCore | 2186 } // namespace WebCore |
OLD | NEW |