OLD | NEW |
1 /* | 1 /* |
2 Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> | 2 Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> |
3 2004, 2005 Rob Buis <buis@kde.org> | 3 2004, 2005 Rob Buis <buis@kde.org> |
4 Copyright (C) 2005, 2006 Apple Computer, Inc. | 4 Copyright (C) 2005, 2006 Apple Computer, Inc. |
5 Copyright (C) Research In Motion Limited 2010. All rights reserved. | 5 Copyright (C) Research In Motion Limited 2010. All rights reserved. |
6 | 6 |
7 This library is free software; you can redistribute it and/or | 7 This library is free software; you can redistribute it and/or |
8 modify it under the terms of the GNU Library General Public | 8 modify it under the terms of the GNU Library General Public |
9 License as published by the Free Software Foundation; either | 9 License as published by the Free Software Foundation; either |
10 version 2 of the License, or (at your option) any later version. | 10 version 2 of the License, or (at your option) any later version. |
(...skipping 11 matching lines...) Expand all Loading... |
22 | 22 |
23 #ifndef SVGRenderStyle_h | 23 #ifndef SVGRenderStyle_h |
24 #define SVGRenderStyle_h | 24 #define SVGRenderStyle_h |
25 | 25 |
26 #include "bindings/core/v8/ExceptionStatePlaceholder.h" | 26 #include "bindings/core/v8/ExceptionStatePlaceholder.h" |
27 #include "core/css/CSSValueList.h" | 27 #include "core/css/CSSValueList.h" |
28 #include "core/rendering/style/DataRef.h" | 28 #include "core/rendering/style/DataRef.h" |
29 #include "core/rendering/style/RenderStyleConstants.h" | 29 #include "core/rendering/style/RenderStyleConstants.h" |
30 #include "core/rendering/style/SVGRenderStyleDefs.h" | 30 #include "core/rendering/style/SVGRenderStyleDefs.h" |
31 #include "core/rendering/style/StyleDifference.h" | 31 #include "core/rendering/style/StyleDifference.h" |
32 #include "core/svg/SVGPaint.h" | |
33 #include "platform/graphics/GraphicsTypes.h" | 32 #include "platform/graphics/GraphicsTypes.h" |
34 #include "platform/graphics/Path.h" | 33 #include "platform/graphics/Path.h" |
35 | 34 |
36 namespace WebCore { | 35 namespace WebCore { |
37 | 36 |
38 class SVGRenderStyle : public RefCounted<SVGRenderStyle> { | 37 class SVGRenderStyle : public RefCounted<SVGRenderStyle> { |
39 public: | 38 public: |
40 static PassRefPtr<SVGRenderStyle> create() { return adoptRef(new SVGRenderSt
yle); } | 39 static PassRefPtr<SVGRenderStyle> create() { return adoptRef(new SVGRenderSt
yle); } |
41 PassRefPtr<SVGRenderStyle> copy() const { return adoptRef(new SVGRenderStyle
(*this));} | 40 PassRefPtr<SVGRenderStyle> copy() const { return adoptRef(new SVGRenderStyle
(*this));} |
42 ~SVGRenderStyle(); | 41 ~SVGRenderStyle(); |
(...skipping 19 matching lines...) Expand all Loading... |
62 static EColorInterpolation initialColorInterpolationFilters() { return CI_LI
NEARRGB; } | 61 static EColorInterpolation initialColorInterpolationFilters() { return CI_LI
NEARRGB; } |
63 static EColorRendering initialColorRendering() { return CR_AUTO; } | 62 static EColorRendering initialColorRendering() { return CR_AUTO; } |
64 static WindRule initialFillRule() { return RULE_NONZERO; } | 63 static WindRule initialFillRule() { return RULE_NONZERO; } |
65 static LineJoin initialJoinStyle() { return MiterJoin; } | 64 static LineJoin initialJoinStyle() { return MiterJoin; } |
66 static EShapeRendering initialShapeRendering() { return SR_AUTO; } | 65 static EShapeRendering initialShapeRendering() { return SR_AUTO; } |
67 static ETextAnchor initialTextAnchor() { return TA_START; } | 66 static ETextAnchor initialTextAnchor() { return TA_START; } |
68 static SVGWritingMode initialWritingMode() { return WM_LRTB; } | 67 static SVGWritingMode initialWritingMode() { return WM_LRTB; } |
69 static EGlyphOrientation initialGlyphOrientationHorizontal() { return GO_0DE
G; } | 68 static EGlyphOrientation initialGlyphOrientationHorizontal() { return GO_0DE
G; } |
70 static EGlyphOrientation initialGlyphOrientationVertical() { return GO_AUTO;
} | 69 static EGlyphOrientation initialGlyphOrientationVertical() { return GO_AUTO;
} |
71 static float initialFillOpacity() { return 1; } | 70 static float initialFillOpacity() { return 1; } |
72 static SVGPaint::SVGPaintType initialFillPaintType() { return SVGPaint::SVG_
PAINTTYPE_RGBCOLOR; } | 71 static SVGPaintType initialFillPaintType() { return SVG_PAINTTYPE_RGBCOLOR;
} |
73 static Color initialFillPaintColor() { return Color::black; } | 72 static Color initialFillPaintColor() { return Color::black; } |
74 static String initialFillPaintUri() { return String(); } | 73 static String initialFillPaintUri() { return String(); } |
75 static float initialStrokeOpacity() { return 1; } | 74 static float initialStrokeOpacity() { return 1; } |
76 static SVGPaint::SVGPaintType initialStrokePaintType() { return SVGPaint::SV
G_PAINTTYPE_NONE; } | 75 static SVGPaintType initialStrokePaintType() { return SVG_PAINTTYPE_NONE; } |
77 static Color initialStrokePaintColor() { return Color(); } | 76 static Color initialStrokePaintColor() { return Color(); } |
78 static String initialStrokePaintUri() { return String(); } | 77 static String initialStrokePaintUri() { return String(); } |
79 static PassRefPtr<SVGLengthList> initialStrokeDashArray() { return SVGLength
List::create(); } | 78 static PassRefPtr<SVGLengthList> initialStrokeDashArray() { return SVGLength
List::create(); } |
80 static float initialStrokeMiterLimit() { return 4; } | 79 static float initialStrokeMiterLimit() { return 4; } |
81 static float initialStopOpacity() { return 1; } | 80 static float initialStopOpacity() { return 1; } |
82 static Color initialStopColor() { return Color(0, 0, 0); } | 81 static Color initialStopColor() { return Color(0, 0, 0); } |
83 static float initialFloodOpacity() { return 1; } | 82 static float initialFloodOpacity() { return 1; } |
84 static Color initialFloodColor() { return Color(0, 0, 0); } | 83 static Color initialFloodColor() { return Color(0, 0, 0); } |
85 static Color initialLightingColor() { return Color(255, 255, 255); } | 84 static Color initialLightingColor() { return Color(255, 255, 255); } |
86 static const AtomicString& initialClipperResource() { return nullAtom; } | 85 static const AtomicString& initialClipperResource() { return nullAtom; } |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
133 void setGlyphOrientationVertical(EGlyphOrientation val) { svg_inherited_flag
s._glyphOrientationVertical = val; } | 132 void setGlyphOrientationVertical(EGlyphOrientation val) { svg_inherited_flag
s._glyphOrientationVertical = val; } |
134 void setMaskType(EMaskType val) { svg_noninherited_flags.f.maskType = val; } | 133 void setMaskType(EMaskType val) { svg_noninherited_flags.f.maskType = val; } |
135 void setPaintOrder(EPaintOrder val) { svg_inherited_flags._paintOrder = (int
)val; } | 134 void setPaintOrder(EPaintOrder val) { svg_inherited_flags._paintOrder = (int
)val; } |
136 | 135 |
137 void setFillOpacity(float obj) | 136 void setFillOpacity(float obj) |
138 { | 137 { |
139 if (!(fill->opacity == obj)) | 138 if (!(fill->opacity == obj)) |
140 fill.access()->opacity = obj; | 139 fill.access()->opacity = obj; |
141 } | 140 } |
142 | 141 |
143 void setFillPaint(SVGPaint::SVGPaintType type, const Color& color, const Str
ing& uri, bool applyToRegularStyle = true, bool applyToVisitedLinkStyle = false) | 142 void setFillPaint(SVGPaintType type, const Color& color, const String& uri,
bool applyToRegularStyle = true, bool applyToVisitedLinkStyle = false) |
144 { | 143 { |
145 if (applyToRegularStyle) { | 144 if (applyToRegularStyle) { |
146 if (!(fill->paintType == type)) | 145 if (!(fill->paintType == type)) |
147 fill.access()->paintType = type; | 146 fill.access()->paintType = type; |
148 if (!(fill->paintColor == color)) | 147 if (!(fill->paintColor == color)) |
149 fill.access()->paintColor = color; | 148 fill.access()->paintColor = color; |
150 if (!(fill->paintUri == uri)) | 149 if (!(fill->paintUri == uri)) |
151 fill.access()->paintUri = uri; | 150 fill.access()->paintUri = uri; |
152 } | 151 } |
153 if (applyToVisitedLinkStyle) { | 152 if (applyToVisitedLinkStyle) { |
154 if (!(fill->visitedLinkPaintType == type)) | 153 if (!(fill->visitedLinkPaintType == type)) |
155 fill.access()->visitedLinkPaintType = type; | 154 fill.access()->visitedLinkPaintType = type; |
156 if (!(fill->visitedLinkPaintColor == color)) | 155 if (!(fill->visitedLinkPaintColor == color)) |
157 fill.access()->visitedLinkPaintColor = color; | 156 fill.access()->visitedLinkPaintColor = color; |
158 if (!(fill->visitedLinkPaintUri == uri)) | 157 if (!(fill->visitedLinkPaintUri == uri)) |
159 fill.access()->visitedLinkPaintUri = uri; | 158 fill.access()->visitedLinkPaintUri = uri; |
160 } | 159 } |
161 } | 160 } |
162 | 161 |
163 void setStrokeOpacity(float obj) | 162 void setStrokeOpacity(float obj) |
164 { | 163 { |
165 if (!(stroke->opacity == obj)) | 164 if (!(stroke->opacity == obj)) |
166 stroke.access()->opacity = obj; | 165 stroke.access()->opacity = obj; |
167 } | 166 } |
168 | 167 |
169 void setStrokePaint(SVGPaint::SVGPaintType type, const Color& color, const S
tring& uri, bool applyToRegularStyle = true, bool applyToVisitedLinkStyle = fals
e) | 168 void setStrokePaint(SVGPaintType type, const Color& color, const String& uri
, bool applyToRegularStyle = true, bool applyToVisitedLinkStyle = false) |
170 { | 169 { |
171 if (applyToRegularStyle) { | 170 if (applyToRegularStyle) { |
172 if (!(stroke->paintType == type)) | 171 if (!(stroke->paintType == type)) |
173 stroke.access()->paintType = type; | 172 stroke.access()->paintType = type; |
174 if (!(stroke->paintColor == color)) | 173 if (!(stroke->paintColor == color)) |
175 stroke.access()->paintColor = color; | 174 stroke.access()->paintColor = color; |
176 if (!(stroke->paintUri == uri)) | 175 if (!(stroke->paintUri == uri)) |
177 stroke.access()->paintUri = uri; | 176 stroke.access()->paintUri = uri; |
178 } | 177 } |
179 if (applyToVisitedLinkStyle) { | 178 if (applyToVisitedLinkStyle) { |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
296 EColorInterpolation colorInterpolationFilters() const { return (EColorInterp
olation) svg_inherited_flags._colorInterpolationFilters; } | 295 EColorInterpolation colorInterpolationFilters() const { return (EColorInterp
olation) svg_inherited_flags._colorInterpolationFilters; } |
297 EColorRendering colorRendering() const { return (EColorRendering) svg_inheri
ted_flags._colorRendering; } | 296 EColorRendering colorRendering() const { return (EColorRendering) svg_inheri
ted_flags._colorRendering; } |
298 WindRule fillRule() const { return (WindRule) svg_inherited_flags._fillRule;
} | 297 WindRule fillRule() const { return (WindRule) svg_inherited_flags._fillRule;
} |
299 LineJoin joinStyle() const { return (LineJoin) svg_inherited_flags._joinStyl
e; } | 298 LineJoin joinStyle() const { return (LineJoin) svg_inherited_flags._joinStyl
e; } |
300 EShapeRendering shapeRendering() const { return (EShapeRendering) svg_inheri
ted_flags._shapeRendering; } | 299 EShapeRendering shapeRendering() const { return (EShapeRendering) svg_inheri
ted_flags._shapeRendering; } |
301 ETextAnchor textAnchor() const { return (ETextAnchor) svg_inherited_flags._t
extAnchor; } | 300 ETextAnchor textAnchor() const { return (ETextAnchor) svg_inherited_flags._t
extAnchor; } |
302 SVGWritingMode writingMode() const { return (SVGWritingMode) svg_inherited_f
lags._writingMode; } | 301 SVGWritingMode writingMode() const { return (SVGWritingMode) svg_inherited_f
lags._writingMode; } |
303 EGlyphOrientation glyphOrientationHorizontal() const { return (EGlyphOrienta
tion) svg_inherited_flags._glyphOrientationHorizontal; } | 302 EGlyphOrientation glyphOrientationHorizontal() const { return (EGlyphOrienta
tion) svg_inherited_flags._glyphOrientationHorizontal; } |
304 EGlyphOrientation glyphOrientationVertical() const { return (EGlyphOrientati
on) svg_inherited_flags._glyphOrientationVertical; } | 303 EGlyphOrientation glyphOrientationVertical() const { return (EGlyphOrientati
on) svg_inherited_flags._glyphOrientationVertical; } |
305 float fillOpacity() const { return fill->opacity; } | 304 float fillOpacity() const { return fill->opacity; } |
306 const SVGPaint::SVGPaintType& fillPaintType() const { return fill->paintType
; } | 305 const SVGPaintType& fillPaintType() const { return fill->paintType; } |
307 const Color& fillPaintColor() const { return fill->paintColor; } | 306 const Color& fillPaintColor() const { return fill->paintColor; } |
308 const String& fillPaintUri() const { return fill->paintUri; } | 307 const String& fillPaintUri() const { return fill->paintUri; } |
309 float strokeOpacity() const { return stroke->opacity; } | 308 float strokeOpacity() const { return stroke->opacity; } |
310 const SVGPaint::SVGPaintType& strokePaintType() const { return stroke->paint
Type; } | 309 const SVGPaintType& strokePaintType() const { return stroke->paintType; } |
311 const Color& strokePaintColor() const { return stroke->paintColor; } | 310 const Color& strokePaintColor() const { return stroke->paintColor; } |
312 const String& strokePaintUri() const { return stroke->paintUri; } | 311 const String& strokePaintUri() const { return stroke->paintUri; } |
313 SVGLengthList* strokeDashArray() const { return stroke->dashArray.get(); } | 312 SVGLengthList* strokeDashArray() const { return stroke->dashArray.get(); } |
314 float strokeMiterLimit() const { return stroke->miterLimit; } | 313 float strokeMiterLimit() const { return stroke->miterLimit; } |
315 SVGLength* strokeWidth() const { return stroke->width.get(); } | 314 SVGLength* strokeWidth() const { return stroke->width.get(); } |
316 SVGLength* strokeDashOffset() const { return stroke->dashOffset.get(); } | 315 SVGLength* strokeDashOffset() const { return stroke->dashOffset.get(); } |
317 float stopOpacity() const { return stops->opacity; } | 316 float stopOpacity() const { return stops->opacity; } |
318 const Color& stopColor() const { return stops->color; } | 317 const Color& stopColor() const { return stops->color; } |
319 float floodOpacity() const { return misc->floodOpacity; } | 318 float floodOpacity() const { return misc->floodOpacity; } |
320 const Color& floodColor() const { return misc->floodColor; } | 319 const Color& floodColor() const { return misc->floodColor; } |
321 const Color& lightingColor() const { return misc->lightingColor; } | 320 const Color& lightingColor() const { return misc->lightingColor; } |
322 SVGLength* baselineShiftValue() const { return misc->baselineShiftValue.get(
); } | 321 SVGLength* baselineShiftValue() const { return misc->baselineShiftValue.get(
); } |
323 const AtomicString& clipperResource() const { return resources->clipper; } | 322 const AtomicString& clipperResource() const { return resources->clipper; } |
324 const AtomicString& filterResource() const { return resources->filter; } | 323 const AtomicString& filterResource() const { return resources->filter; } |
325 const AtomicString& maskerResource() const { return resources->masker; } | 324 const AtomicString& maskerResource() const { return resources->masker; } |
326 const AtomicString& markerStartResource() const { return inheritedResources-
>markerStart; } | 325 const AtomicString& markerStartResource() const { return inheritedResources-
>markerStart; } |
327 const AtomicString& markerMidResource() const { return inheritedResources->m
arkerMid; } | 326 const AtomicString& markerMidResource() const { return inheritedResources->m
arkerMid; } |
328 const AtomicString& markerEndResource() const { return inheritedResources->m
arkerEnd; } | 327 const AtomicString& markerEndResource() const { return inheritedResources->m
arkerEnd; } |
329 EMaskType maskType() const { return (EMaskType) svg_noninherited_flags.f.mas
kType; } | 328 EMaskType maskType() const { return (EMaskType) svg_noninherited_flags.f.mas
kType; } |
330 EPaintOrder paintOrder() const { return (EPaintOrder) svg_inherited_flags._p
aintOrder; } | 329 EPaintOrder paintOrder() const { return (EPaintOrder) svg_inherited_flags._p
aintOrder; } |
331 EPaintOrderType paintOrderType(unsigned index) const; | 330 EPaintOrderType paintOrderType(unsigned index) const; |
332 | 331 |
333 const SVGPaint::SVGPaintType& visitedLinkFillPaintType() const { return fill
->visitedLinkPaintType; } | 332 const SVGPaintType& visitedLinkFillPaintType() const { return fill->visitedL
inkPaintType; } |
334 const Color& visitedLinkFillPaintColor() const { return fill->visitedLinkPai
ntColor; } | 333 const Color& visitedLinkFillPaintColor() const { return fill->visitedLinkPai
ntColor; } |
335 const String& visitedLinkFillPaintUri() const { return fill->visitedLinkPain
tUri; } | 334 const String& visitedLinkFillPaintUri() const { return fill->visitedLinkPain
tUri; } |
336 const SVGPaint::SVGPaintType& visitedLinkStrokePaintType() const { return st
roke->visitedLinkPaintType; } | 335 const SVGPaintType& visitedLinkStrokePaintType() const { return stroke->visi
tedLinkPaintType; } |
337 const Color& visitedLinkStrokePaintColor() const { return stroke->visitedLin
kPaintColor; } | 336 const Color& visitedLinkStrokePaintColor() const { return stroke->visitedLin
kPaintColor; } |
338 const String& visitedLinkStrokePaintUri() const { return stroke->visitedLink
PaintUri; } | 337 const String& visitedLinkStrokePaintUri() const { return stroke->visitedLink
PaintUri; } |
339 | 338 |
340 // convenience | 339 // convenience |
341 bool hasClipper() const { return !clipperResource().isEmpty(); } | 340 bool hasClipper() const { return !clipperResource().isEmpty(); } |
342 bool hasMasker() const { return !maskerResource().isEmpty(); } | 341 bool hasMasker() const { return !maskerResource().isEmpty(); } |
343 bool hasFilter() const { return !filterResource().isEmpty(); } | 342 bool hasFilter() const { return !filterResource().isEmpty(); } |
344 bool hasMarkers() const { return !markerStartResource().isEmpty() || !marker
MidResource().isEmpty() || !markerEndResource().isEmpty(); } | 343 bool hasMarkers() const { return !markerStartResource().isEmpty() || !marker
MidResource().isEmpty() || !markerEndResource().isEmpty(); } |
345 bool hasStroke() const { return strokePaintType() != SVGPaint::SVG_PAINTTYPE
_NONE; } | 344 bool hasStroke() const { return strokePaintType() != SVG_PAINTTYPE_NONE; } |
346 bool hasVisibleStroke() const { return hasStroke() && !strokeWidth()->isZero
(); } | 345 bool hasVisibleStroke() const { return hasStroke() && !strokeWidth()->isZero
(); } |
347 bool hasFill() const { return fillPaintType() != SVGPaint::SVG_PAINTTYPE_NON
E; } | 346 bool hasFill() const { return fillPaintType() != SVG_PAINTTYPE_NONE; } |
348 bool isVerticalWritingMode() const { return writingMode() == WM_TBRL || writ
ingMode() == WM_TB; } | 347 bool isVerticalWritingMode() const { return writingMode() == WM_TBRL || writ
ingMode() == WM_TB; } |
349 | 348 |
350 protected: | 349 protected: |
351 // inherit | 350 // inherit |
352 struct InheritedFlags { | 351 struct InheritedFlags { |
353 bool operator==(const InheritedFlags& other) const | 352 bool operator==(const InheritedFlags& other) const |
354 { | 353 { |
355 return (_colorRendering == other._colorRendering) | 354 return (_colorRendering == other._colorRendering) |
356 && (_shapeRendering == other._shapeRendering) | 355 && (_shapeRendering == other._shapeRendering) |
357 && (_clipRule == other._clipRule) | 356 && (_clipRule == other._clipRule) |
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
449 svg_noninherited_flags.f._baselineShift = initialBaselineShift(); | 448 svg_noninherited_flags.f._baselineShift = initialBaselineShift(); |
450 svg_noninherited_flags.f._vectorEffect = initialVectorEffect(); | 449 svg_noninherited_flags.f._vectorEffect = initialVectorEffect(); |
451 svg_noninherited_flags.f.bufferedRendering = initialBufferedRendering(); | 450 svg_noninherited_flags.f.bufferedRendering = initialBufferedRendering(); |
452 svg_noninherited_flags.f.maskType = initialMaskType(); | 451 svg_noninherited_flags.f.maskType = initialMaskType(); |
453 } | 452 } |
454 }; | 453 }; |
455 | 454 |
456 } // namespace WebCore | 455 } // namespace WebCore |
457 | 456 |
458 #endif // SVGRenderStyle_h | 457 #endif // SVGRenderStyle_h |
OLD | NEW |