15c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)/* 25c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Copyright (C) 2004, 2005, 2007 Nikolas Zimmermann <zimmermann@kde.org> 35c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2004, 2005 Rob Buis <buis@kde.org> 45c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Copyright (C) 2005, 2006 Apple Computer, Inc. 55c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Copyright (C) Research In Motion Limited 2010. All rights reserved. 65c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 75c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) This library is free software; you can redistribute it and/or 85c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) modify it under the terms of the GNU Library General Public 95c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) License as published by the Free Software Foundation; either 105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) version 2 of the License, or (at your option) any later version. 115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) This library is distributed in the hope that it will be useful, 135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) but WITHOUT ANY WARRANTY; without even the implied warranty of 145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Library General Public License for more details. 165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) You should have received a copy of the GNU Library General Public License 185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) along with this library; see the file COPYING.LIB. If not, write to 195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Boston, MA 02110-1301, USA. 215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)*/ 225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#ifndef SVGRenderStyle_h 245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#define SVGRenderStyle_h 255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 26df95704c49daea886ddad70775bda23618d6274dBen Murdoch#include "bindings/v8/ExceptionStatePlaceholder.h" 2753e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/css/CSSValueList.h" 2853e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/graphics/GraphicsTypes.h" 2953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/platform/graphics/Path.h" 3053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/style/DataRef.h" 3153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/style/RenderStyleConstants.h" 3253e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/rendering/style/SVGRenderStyleDefs.h" 3353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles)#include "core/svg/SVGPaint.h" 345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)namespace WebCore { 365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class FloatRect; 385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class IntRect; 395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)class RenderObject; 405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4102772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdochclass SVGRenderStyle : public RefCounted<SVGRenderStyle> { 425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)public: 435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static PassRefPtr<SVGRenderStyle> create() { return adoptRef(new SVGRenderStyle); } 445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) PassRefPtr<SVGRenderStyle> copy() const { return adoptRef(new SVGRenderStyle(*this));} 455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ~SVGRenderStyle(); 465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool inheritedNotEqual(const SVGRenderStyle*) const; 485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void inheritFrom(const SVGRenderStyle*); 495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void copyNonInheritedFrom(const SVGRenderStyle*); 505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) StyleDifference diff(const SVGRenderStyle*) const; 525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool operator==(const SVGRenderStyle&) const; 545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool operator!=(const SVGRenderStyle& o) const { return !(*this == o); } 555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Initial values for all the properties 575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EAlignmentBaseline initialAlignmentBaseline() { return AB_AUTO; } 585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EDominantBaseline initialDominantBaseline() { return DB_AUTO; } 595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EBaselineShift initialBaselineShift() { return BS_BASELINE; } 605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EVectorEffect initialVectorEffect() { return VE_NONE; } 6153e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) static EBufferedRendering initialBufferedRendering() { return BR_AUTO; } 625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static LineCap initialCapStyle() { return ButtCap; } 635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static WindRule initialClipRule() { return RULE_NONZERO; } 645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EColorInterpolation initialColorInterpolation() { return CI_SRGB; } 655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EColorInterpolation initialColorInterpolationFilters() { return CI_LINEARRGB; } 665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EColorRendering initialColorRendering() { return CR_AUTO; } 675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static WindRule initialFillRule() { return RULE_NONZERO; } 685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static LineJoin initialJoinStyle() { return MiterJoin; } 695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EShapeRendering initialShapeRendering() { return SR_AUTO; } 705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static ETextAnchor initialTextAnchor() { return TA_START; } 715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static SVGWritingMode initialWritingMode() { return WM_LRTB; } 725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EGlyphOrientation initialGlyphOrientationHorizontal() { return GO_0DEG; } 735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EGlyphOrientation initialGlyphOrientationVertical() { return GO_AUTO; } 745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static float initialFillOpacity() { return 1; } 755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static SVGPaint::SVGPaintType initialFillPaintType() { return SVGPaint::SVG_PAINTTYPE_RGBCOLOR; } 765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static Color initialFillPaintColor() { return Color::black; } 775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static String initialFillPaintUri() { return String(); } 785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static float initialStrokeOpacity() { return 1; } 795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static SVGPaint::SVGPaintType initialStrokePaintType() { return SVGPaint::SVG_PAINTTYPE_NONE; } 805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static Color initialStrokePaintColor() { return Color(); } 815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static String initialStrokePaintUri() { return String(); } 825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static Vector<SVGLength> initialStrokeDashArray() { return Vector<SVGLength>(); } 835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static float initialStrokeMiterLimit() { return 4; } 845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static float initialStopOpacity() { return 1; } 855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static Color initialStopColor() { return Color(0, 0, 0); } 865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static float initialFloodOpacity() { return 1; } 875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static Color initialFloodColor() { return Color(0, 0, 0); } 885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static Color initialLightingColor() { return Color(255, 255, 255); } 895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static String initialClipperResource() { return String(); } 905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static String initialFilterResource() { return String(); } 915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static String initialMaskerResource() { return String(); } 925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static String initialMarkerStartResource() { return String(); } 935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static String initialMarkerMidResource() { return String(); } 945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static String initialMarkerEndResource() { return String(); } 955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static EMaskType initialMaskType() { return MT_LUMINANCE; } 965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static SVGLength initialBaselineShiftValue() 985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGLength length; 1001fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch length.newValueSpecifiedUnits(LengthTypeNumber, 0, ASSERT_NO_EXCEPTION); 1015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return length; 1025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static SVGLength initialKerning() 1055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGLength length; 1071fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch length.newValueSpecifiedUnits(LengthTypeNumber, 0, ASSERT_NO_EXCEPTION); 1085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return length; 1095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static SVGLength initialStrokeDashOffset() 1125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGLength length; 1141fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch length.newValueSpecifiedUnits(LengthTypeNumber, 0, ASSERT_NO_EXCEPTION); 1155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return length; 1165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) static SVGLength initialStrokeWidth() 1195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGLength length; 1211fad5ca6c42d689812b66fc493992aa6d747a6fbBen Murdoch length.newValueSpecifiedUnits(LengthTypeNumber, 1, ASSERT_NO_EXCEPTION); 1225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return length; 1235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // SVG CSS Property setters 1265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setAlignmentBaseline(EAlignmentBaseline val) { svg_noninherited_flags.f._alignmentBaseline = val; } 1275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setDominantBaseline(EDominantBaseline val) { svg_noninherited_flags.f._dominantBaseline = val; } 1285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setBaselineShift(EBaselineShift val) { svg_noninherited_flags.f._baselineShift = val; } 1295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setVectorEffect(EVectorEffect val) { svg_noninherited_flags.f._vectorEffect = val; } 13053e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) void setBufferedRendering(EBufferedRendering val) { svg_noninherited_flags.f.bufferedRendering = val; } 1315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setCapStyle(LineCap val) { svg_inherited_flags._capStyle = val; } 1325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setClipRule(WindRule val) { svg_inherited_flags._clipRule = val; } 1335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setColorInterpolation(EColorInterpolation val) { svg_inherited_flags._colorInterpolation = val; } 1345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setColorInterpolationFilters(EColorInterpolation val) { svg_inherited_flags._colorInterpolationFilters = val; } 1355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setColorRendering(EColorRendering val) { svg_inherited_flags._colorRendering = val; } 1365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFillRule(WindRule val) { svg_inherited_flags._fillRule = val; } 1375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setJoinStyle(LineJoin val) { svg_inherited_flags._joinStyle = val; } 1385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setShapeRendering(EShapeRendering val) { svg_inherited_flags._shapeRendering = val; } 1395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setTextAnchor(ETextAnchor val) { svg_inherited_flags._textAnchor = val; } 1405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setWritingMode(SVGWritingMode val) { svg_inherited_flags._writingMode = val; } 1415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setGlyphOrientationHorizontal(EGlyphOrientation val) { svg_inherited_flags._glyphOrientationHorizontal = val; } 1425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setGlyphOrientationVertical(EGlyphOrientation val) { svg_inherited_flags._glyphOrientationVertical = val; } 1435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setMaskType(EMaskType val) { svg_noninherited_flags.f.maskType = val; } 1445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFillOpacity(float obj) 1465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(fill->opacity == obj)) 1485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fill.access()->opacity = obj; 1495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFillPaint(SVGPaint::SVGPaintType type, const Color& color, const String& uri, bool applyToRegularStyle = true, bool applyToVisitedLinkStyle = false) 1525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (applyToRegularStyle) { 1545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(fill->paintType == type)) 1555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fill.access()->paintType = type; 1565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(fill->paintColor == color)) 1575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fill.access()->paintColor = color; 1585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(fill->paintUri == uri)) 1595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fill.access()->paintUri = uri; 1605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (applyToVisitedLinkStyle) { 1625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(fill->visitedLinkPaintType == type)) 1635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fill.access()->visitedLinkPaintType = type; 1645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(fill->visitedLinkPaintColor == color)) 1655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fill.access()->visitedLinkPaintColor = color; 1665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(fill->visitedLinkPaintUri == uri)) 1675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) fill.access()->visitedLinkPaintUri = uri; 1685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeOpacity(float obj) 1725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->opacity == obj)) 1745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->opacity = obj; 1755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokePaint(SVGPaint::SVGPaintType type, const Color& color, const String& uri, bool applyToRegularStyle = true, bool applyToVisitedLinkStyle = false) 1785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (applyToRegularStyle) { 1805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->paintType == type)) 1815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->paintType = type; 1825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->paintColor == color)) 1835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->paintColor = color; 1845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->paintUri == uri)) 1855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->paintUri = uri; 1865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (applyToVisitedLinkStyle) { 1885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->visitedLinkPaintType == type)) 1895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->visitedLinkPaintType = type; 1905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->visitedLinkPaintColor == color)) 1915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->visitedLinkPaintColor = color; 1925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->visitedLinkPaintUri == uri)) 1935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->visitedLinkPaintUri = uri; 1945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 1965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 1975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeDashArray(const Vector<SVGLength>& obj) 1985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 1995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->dashArray == obj)) 2005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->dashArray = obj; 2015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeMiterLimit(float obj) 2045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->miterLimit == obj)) 2065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->miterLimit = obj; 2075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeWidth(const SVGLength& obj) 2105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->width == obj)) 2125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->width = obj; 2135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStrokeDashOffset(const SVGLength& obj) 2165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stroke->dashOffset == obj)) 2185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stroke.access()->dashOffset = obj; 2195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setKerning(const SVGLength& obj) 2225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(text->kerning == obj)) 2245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) text.access()->kerning = obj; 2255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStopOpacity(float obj) 2285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stops->opacity == obj)) 2305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stops.access()->opacity = obj; 2315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setStopColor(const Color& obj) 2345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(stops->color == obj)) 2365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) stops.access()->color = obj; 2375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFloodOpacity(float obj) 2405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(misc->floodOpacity == obj)) 2425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) misc.access()->floodOpacity = obj; 2435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFloodColor(const Color& obj) 2465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(misc->floodColor == obj)) 2485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) misc.access()->floodColor = obj; 2495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setLightingColor(const Color& obj) 2525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(misc->lightingColor == obj)) 2545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) misc.access()->lightingColor = obj; 2555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setBaselineShiftValue(const SVGLength& obj) 2585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(misc->baselineShiftValue == obj)) 2605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) misc.access()->baselineShiftValue = obj; 2615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Setters for non-inherited resources 2645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setClipperResource(const String& obj) 2655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(resources->clipper == obj)) 2675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resources.access()->clipper = obj; 2685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setFilterResource(const String& obj) 2715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(resources->filter == obj)) 2735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resources.access()->filter = obj; 2745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setMaskerResource(const String& obj) 2775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(resources->masker == obj)) 2795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) resources.access()->masker = obj; 2805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Setters for inherited resources 2835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setMarkerStartResource(const String& obj) 2845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(inheritedResources->markerStart == obj)) 2865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inheritedResources.access()->markerStart = obj; 2875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2885c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setMarkerMidResource(const String& obj) 2905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(inheritedResources->markerMid == obj)) 2925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inheritedResources.access()->markerMid = obj; 2935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 2945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 2955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setMarkerEndResource(const String& obj) 2965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 2975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) if (!(inheritedResources->markerEnd == obj)) 2985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) inheritedResources.access()->markerEnd = obj; 2995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // Read accessors for all the properties 3025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EAlignmentBaseline alignmentBaseline() const { return (EAlignmentBaseline) svg_noninherited_flags.f._alignmentBaseline; } 3035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EDominantBaseline dominantBaseline() const { return (EDominantBaseline) svg_noninherited_flags.f._dominantBaseline; } 3045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EBaselineShift baselineShift() const { return (EBaselineShift) svg_noninherited_flags.f._baselineShift; } 3055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EVectorEffect vectorEffect() const { return (EVectorEffect) svg_noninherited_flags.f._vectorEffect; } 30653e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) EBufferedRendering bufferedRendering() const { return (EBufferedRendering) svg_noninherited_flags.f.bufferedRendering; } 3075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) LineCap capStyle() const { return (LineCap) svg_inherited_flags._capStyle; } 3085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WindRule clipRule() const { return (WindRule) svg_inherited_flags._clipRule; } 3095c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EColorInterpolation colorInterpolation() const { return (EColorInterpolation) svg_inherited_flags._colorInterpolation; } 3105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EColorInterpolation colorInterpolationFilters() const { return (EColorInterpolation) svg_inherited_flags._colorInterpolationFilters; } 3115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EColorRendering colorRendering() const { return (EColorRendering) svg_inherited_flags._colorRendering; } 3125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) WindRule fillRule() const { return (WindRule) svg_inherited_flags._fillRule; } 3135c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) LineJoin joinStyle() const { return (LineJoin) svg_inherited_flags._joinStyle; } 3145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EShapeRendering shapeRendering() const { return (EShapeRendering) svg_inherited_flags._shapeRendering; } 3155c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) ETextAnchor textAnchor() const { return (ETextAnchor) svg_inherited_flags._textAnchor; } 3165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGWritingMode writingMode() const { return (SVGWritingMode) svg_inherited_flags._writingMode; } 3175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EGlyphOrientation glyphOrientationHorizontal() const { return (EGlyphOrientation) svg_inherited_flags._glyphOrientationHorizontal; } 3185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EGlyphOrientation glyphOrientationVertical() const { return (EGlyphOrientation) svg_inherited_flags._glyphOrientationVertical; } 3195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float fillOpacity() const { return fill->opacity; } 3205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const SVGPaint::SVGPaintType& fillPaintType() const { return fill->paintType; } 3215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Color& fillPaintColor() const { return fill->paintColor; } 32202772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch const String& fillPaintUri() const { return fill->paintUri; } 3235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float strokeOpacity() const { return stroke->opacity; } 3245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const SVGPaint::SVGPaintType& strokePaintType() const { return stroke->paintType; } 3255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Color& strokePaintColor() const { return stroke->paintColor; } 3265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const String& strokePaintUri() const { return stroke->paintUri; } 3275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) Vector<SVGLength> strokeDashArray() const { return stroke->dashArray; } 3285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float strokeMiterLimit() const { return stroke->miterLimit; } 3295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGLength strokeWidth() const { return stroke->width; } 3305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGLength strokeDashOffset() const { return stroke->dashOffset; } 3315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGLength kerning() const { return text->kerning; } 3325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float stopOpacity() const { return stops->opacity; } 3335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Color& stopColor() const { return stops->color; } 3345c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) float floodOpacity() const { return misc->floodOpacity; } 3355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Color& floodColor() const { return misc->floodColor; } 3365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Color& lightingColor() const { return misc->lightingColor; } 3375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGLength baselineShiftValue() const { return misc->baselineShiftValue; } 3385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String clipperResource() const { return resources->clipper; } 3395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String filterResource() const { return resources->filter; } 3405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String maskerResource() const { return resources->masker; } 3415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String markerStartResource() const { return inheritedResources->markerStart; } 3425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String markerMidResource() const { return inheritedResources->markerMid; } 3435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) String markerEndResource() const { return inheritedResources->markerEnd; } 3445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) EMaskType maskType() const { return (EMaskType) svg_noninherited_flags.f.maskType; } 3455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const SVGPaint::SVGPaintType& visitedLinkFillPaintType() const { return fill->visitedLinkPaintType; } 3475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Color& visitedLinkFillPaintColor() const { return fill->visitedLinkPaintColor; } 3485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const String& visitedLinkFillPaintUri() const { return fill->visitedLinkPaintUri; } 3495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const SVGPaint::SVGPaintType& visitedLinkStrokePaintType() const { return stroke->visitedLinkPaintType; } 3505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const Color& visitedLinkStrokePaintColor() const { return stroke->visitedLinkPaintColor; } 3515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) const String& visitedLinkStrokePaintUri() const { return stroke->visitedLinkPaintUri; } 3525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // convenience 3545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool hasClipper() const { return !clipperResource().isEmpty(); } 3555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool hasMasker() const { return !maskerResource().isEmpty(); } 3565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool hasFilter() const { return !filterResource().isEmpty(); } 3575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool hasMarkers() const { return !markerStartResource().isEmpty() || !markerMidResource().isEmpty() || !markerEndResource().isEmpty(); } 3585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool hasStroke() const { return strokePaintType() != SVGPaint::SVG_PAINTTYPE_NONE; } 3595c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool hasVisibleStroke() const { return hasStroke() && !strokeWidth().isZero(); } 3605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool hasFill() const { return fillPaintType() != SVGPaint::SVG_PAINTTYPE_NONE; } 3615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool isVerticalWritingMode() const { return writingMode() == WM_TBRL || writingMode() == WM_TB; } 3625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)protected: 3645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // inherit 3655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) struct InheritedFlags { 3665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool operator==(const InheritedFlags& other) const 3675c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3685c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return (_colorRendering == other._colorRendering) 3695c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_shapeRendering == other._shapeRendering) 3705c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_clipRule == other._clipRule) 3715c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_fillRule == other._fillRule) 3725c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_capStyle == other._capStyle) 3735c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_joinStyle == other._joinStyle) 3745c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_textAnchor == other._textAnchor) 3755c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_colorInterpolation == other._colorInterpolation) 3765c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_colorInterpolationFilters == other._colorInterpolationFilters) 3775c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_writingMode == other._writingMode) 3785c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_glyphOrientationHorizontal == other._glyphOrientationHorizontal) 3795c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) && (_glyphOrientationVertical == other._glyphOrientationVertical); 3805c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3815c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3825c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool operator!=(const InheritedFlags& other) const 3835c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 3845c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) return !(*this == other); 3855c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 3865c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 3875c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _colorRendering : 2; // EColorRendering 38802772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch unsigned _shapeRendering : 2; // EShapeRendering 3895c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _clipRule : 1; // WindRule 3905c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _fillRule : 1; // WindRule 3915c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _capStyle : 2; // LineCap 3925c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _joinStyle : 2; // LineJoin 3935c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _textAnchor : 2; // ETextAnchor 3945c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _colorInterpolation : 2; // EColorInterpolation 3955c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _colorInterpolationFilters : 2; // EColorInterpolation 3965c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _writingMode : 3; // SVGWritingMode 3975c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _glyphOrientationHorizontal : 3; // EGlyphOrientation 3985c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _glyphOrientationVertical : 3; // EGlyphOrientation 3995c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } svg_inherited_flags; 4005c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4015c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // don't inherit 4025c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) struct NonInheritedFlags { 4035c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // 32 bit non-inherited, don't add to the struct, or the operator will break. 4045c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool operator==(const NonInheritedFlags &other) const { return _niflags == other._niflags; } 4055c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) bool operator!=(const NonInheritedFlags &other) const { return _niflags != other._niflags; } 4065c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4075c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) union { 4085c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) struct { 40902772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch unsigned _alignmentBaseline : 4; // EAlignmentBaseline 4105c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _dominantBaseline : 4; // EDominantBaseline 4115c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _baselineShift : 2; // EBaselineShift 4125c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned _vectorEffect: 1; // EVectorEffect 41353e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) unsigned bufferedRendering: 2; // EBufferedRendering 4145c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) unsigned maskType: 1; // EMaskType 41553e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) // 18 bits unused 4165c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } f; 4175c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) uint32_t _niflags; 4185c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) }; 4195c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } svg_noninherited_flags; 4205c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4215c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // inherited attributes 4225c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DataRef<StyleFillData> fill; 4235c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DataRef<StyleStrokeData> stroke; 4245c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DataRef<StyleTextData> text; 4255c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DataRef<StyleInheritedResourceData> inheritedResources; 4265c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4275c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) // non-inherited attributes 4285c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DataRef<StyleStopData> stops; 4295c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DataRef<StyleMiscData> misc; 4305c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) DataRef<StyleResourceData> resources; 4315c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4325c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)private: 4335c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) enum CreateDefaultType { CreateDefault }; 43402772c6a72f1ee0b226341a4f4439970c29fc861Ben Murdoch 4355c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGRenderStyle(); 4365c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGRenderStyle(const SVGRenderStyle&); 4375c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) SVGRenderStyle(CreateDefaultType); // Used to create the default style. 4385c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4395c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) void setBitDefaults() 4405c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) { 4415c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._clipRule = initialClipRule(); 4425c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._colorRendering = initialColorRendering(); 4435c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._fillRule = initialFillRule(); 4445c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._shapeRendering = initialShapeRendering(); 4455c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._textAnchor = initialTextAnchor(); 4465c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._capStyle = initialCapStyle(); 4475c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._joinStyle = initialJoinStyle(); 4485c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._colorInterpolation = initialColorInterpolation(); 4495c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._colorInterpolationFilters = initialColorInterpolationFilters(); 4505c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._writingMode = initialWritingMode(); 4515c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._glyphOrientationHorizontal = initialGlyphOrientationHorizontal(); 4525c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_inherited_flags._glyphOrientationVertical = initialGlyphOrientationVertical(); 4535c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4545c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_noninherited_flags._niflags = 0; 4555c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_noninherited_flags.f._alignmentBaseline = initialAlignmentBaseline(); 4565c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_noninherited_flags.f._dominantBaseline = initialDominantBaseline(); 4575c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_noninherited_flags.f._baselineShift = initialBaselineShift(); 4585c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_noninherited_flags.f._vectorEffect = initialVectorEffect(); 45953e740f4a82e17f3ae59772501622dc354e42336Torne (Richard Coles) svg_noninherited_flags.f.bufferedRendering = initialBufferedRendering(); 4605c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) svg_noninherited_flags.f.maskType = initialMaskType(); 4615c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) } 4625c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)}; 4635c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4645c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)} // namespace WebCore 4655c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles) 4665c87bf8b86a7c82ef50fb7a89697d8e02e2553beTorne (Richard Coles)#endif // SVGRenderStyle_h 467