Reviewed by Anders.
authorrwlbuis <rwlbuis@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Sep 2006 21:19:26 +0000 (21:19 +0000)
committerrwlbuis <rwlbuis@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 12 Sep 2006 21:19:26 +0000 (21:19 +0000)
        Add exception codes to SVGList functions, adjust all code using it.

        Move SVGPaintType enums from ksvg.h into SVGPaint (needed for js generation)
        Move SVGUnitTypes enums from ksvg.h into it's own file SVGUnitType.h (ditto)
        Move SVGRenderingIntent enums from ksvg.h into it's own file SVGRenderingIntent.h (ditto)
        Move SVGZoomAndPan enums from ksvg.h into SVGSVGElement (ditto)
        Move SVGFE* related enums into their respecitive classes.

        Fix JSSVGNumber to operator on doubles, instead of floats.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@16330 268f45cc-cd09-0410-ab3c-d52691b4dbfc

87 files changed:
WebCore/ChangeLog
WebCore/kcanvas/RenderPath.cpp
WebCore/ksvg2/bindings/js/JSSVGNumber.cpp
WebCore/ksvg2/bindings/js/JSSVGNumber.h
WebCore/ksvg2/css/SVGCSSParser.cpp
WebCore/ksvg2/css/SVGRenderStyleDefs.cpp
WebCore/ksvg2/ksvg.h
WebCore/ksvg2/misc/KCanvasRenderingStyle.cpp
WebCore/ksvg2/misc/KSVGTimeScheduler.cpp
WebCore/ksvg2/svg/SVGAnimateColorElement.cpp
WebCore/ksvg2/svg/SVGAnimateTransformElement.cpp
WebCore/ksvg2/svg/SVGAnimateTransformElement.h
WebCore/ksvg2/svg/SVGAnimatedTemplate.h
WebCore/ksvg2/svg/SVGAnimationElement.cpp
WebCore/ksvg2/svg/SVGAnimationElement.h
WebCore/ksvg2/svg/SVGClipPathElement.cpp
WebCore/ksvg2/svg/SVGComponentTransferFunctionElement.cpp
WebCore/ksvg2/svg/SVGComponentTransferFunctionElement.h
WebCore/ksvg2/svg/SVGDocument.cpp
WebCore/ksvg2/svg/SVGFEBlendElement.cpp
WebCore/ksvg2/svg/SVGFEBlendElement.h
WebCore/ksvg2/svg/SVGFEColorMatrixElement.cpp
WebCore/ksvg2/svg/SVGFEColorMatrixElement.h
WebCore/ksvg2/svg/SVGFEComponentTransferElement.cpp
WebCore/ksvg2/svg/SVGFEComponentTransferElement.h
WebCore/ksvg2/svg/SVGFECompositeElement.cpp
WebCore/ksvg2/svg/SVGFECompositeElement.h
WebCore/ksvg2/svg/SVGFEDiffuseLightingElement.cpp
WebCore/ksvg2/svg/SVGFEDiffuseLightingElement.h
WebCore/ksvg2/svg/SVGFEDisplacementMapElement.cpp
WebCore/ksvg2/svg/SVGFEDisplacementMapElement.h
WebCore/ksvg2/svg/SVGFEFloodElement.cpp
WebCore/ksvg2/svg/SVGFEFloodElement.h
WebCore/ksvg2/svg/SVGFEGaussianBlurElement.cpp
WebCore/ksvg2/svg/SVGFEGaussianBlurElement.h
WebCore/ksvg2/svg/SVGFEMergeElement.cpp
WebCore/ksvg2/svg/SVGFEMergeNodeElement.cpp
WebCore/ksvg2/svg/SVGFEMergeNodeElement.h
WebCore/ksvg2/svg/SVGFEOffsetElement.cpp
WebCore/ksvg2/svg/SVGFEOffsetElement.h
WebCore/ksvg2/svg/SVGFESpecularLightingElement.cpp
WebCore/ksvg2/svg/SVGFESpecularLightingElement.h
WebCore/ksvg2/svg/SVGFETileElement.cpp
WebCore/ksvg2/svg/SVGFETileElement.h
WebCore/ksvg2/svg/SVGFETurbulenceElement.h
WebCore/ksvg2/svg/SVGFilterElement.cpp
WebCore/ksvg2/svg/SVGFilterPrimitiveStandardAttributes.cpp
WebCore/ksvg2/svg/SVGGradientElement.cpp
WebCore/ksvg2/svg/SVGGradientElement.h
WebCore/ksvg2/svg/SVGHelper.cpp
WebCore/ksvg2/svg/SVGLengthList.cpp
WebCore/ksvg2/svg/SVGLinearGradientElement.cpp
WebCore/ksvg2/svg/SVGList.h
WebCore/ksvg2/svg/SVGLocatable.cpp
WebCore/ksvg2/svg/SVGLocatable.h
WebCore/ksvg2/svg/SVGMarkerElement.h
WebCore/ksvg2/svg/SVGNumberList.cpp
WebCore/ksvg2/svg/SVGPaint.cpp
WebCore/ksvg2/svg/SVGPaint.h
WebCore/ksvg2/svg/SVGPathElement.cpp
WebCore/ksvg2/svg/SVGPatternElement.cpp
WebCore/ksvg2/svg/SVGPolyElement.cpp
WebCore/ksvg2/svg/SVGPolygonElement.cpp
WebCore/ksvg2/svg/SVGPolylineElement.cpp
WebCore/ksvg2/svg/SVGRadialGradientElement.cpp
WebCore/ksvg2/svg/SVGRenderingIntent.h [new file with mode: 0644]
WebCore/ksvg2/svg/SVGSVGElement.h
WebCore/ksvg2/svg/SVGScriptElement.cpp
WebCore/ksvg2/svg/SVGScriptElement.h
WebCore/ksvg2/svg/SVGStringList.cpp
WebCore/ksvg2/svg/SVGStyledLocatableElement.cpp
WebCore/ksvg2/svg/SVGStyledLocatableElement.h
WebCore/ksvg2/svg/SVGStyledTransformableElement.cpp
WebCore/ksvg2/svg/SVGStyledTransformableElement.h
WebCore/ksvg2/svg/SVGTests.cpp
WebCore/ksvg2/svg/SVGTests.h
WebCore/ksvg2/svg/SVGTextContentElement.cpp
WebCore/ksvg2/svg/SVGTextContentElement.h
WebCore/ksvg2/svg/SVGTextElement.cpp
WebCore/ksvg2/svg/SVGTextElement.h
WebCore/ksvg2/svg/SVGTransform.h
WebCore/ksvg2/svg/SVGTransformList.cpp
WebCore/ksvg2/svg/SVGTransformable.cpp
WebCore/ksvg2/svg/SVGUnitTypes.h [new file with mode: 0644]
WebCore/ksvg2/svg/SVGUseElement.cpp
WebCore/ksvg2/svg/SVGViewElement.h
WebCore/ksvg2/svg/SVGZoomAndPan.cpp

index 45d42ac..a65197d 100644 (file)
@@ -1,3 +1,235 @@
+2006-09-12  Nikolas Zimmermann  <zimmermann@kde.org>
+
+        Reviewed by Anders.
+
+        Add exception codes to SVGList functions, adjust all code using it.
+
+        Move SVGPaintType enums from ksvg.h into SVGPaint (needed for js generation)
+        Move SVGUnitTypes enums from ksvg.h into it's own file SVGUnitType.h (ditto)
+        Move SVGRenderingIntent enums from ksvg.h into it's own file SVGRenderingIntent.h (ditto)
+        Move SVGZoomAndPan enums from ksvg.h into SVGSVGElement (ditto)
+        Move SVGFE* related enums into their respecitive classes.
+
+        Fix JSSVGNumber to operator on doubles, instead of floats.
+
+        * ksvg2/bindings/js/JSSVGNumber.cpp:
+        (WebCore::getJSSVGNumber):
+        * ksvg2/bindings/js/JSSVGNumber.h:
+        (WebCore::JSSVGNumber::JSSVGNumber):
+        * ksvg2/css/SVGCSSParser.cpp:
+        (WebCore::CSSParser::parseSVGValue):
+        (WebCore::CSSParser::parseSVGPaint):
+        * ksvg2/css/SVGRenderStyleDefs.cpp:
+        (StyleFillData::operator==):
+        * ksvg2/ksvg.h:
+        * ksvg2/misc/KCanvasRenderingStyle.cpp:
+        (WebCore::KSVGPainterFactory::isFilled):
+        (WebCore::KSVGPainterFactory::fillPaintServer):
+        (WebCore::KSVGPainterFactory::isStroked):
+        (WebCore::KSVGPainterFactory::strokePaintServer):
+        * ksvg2/misc/KSVGTimeScheduler.cpp:
+        (WebCore::SVGTimer::notifyAll):
+        * ksvg2/svg/SVGAnimateColorElement.cpp:
+        (WebCore::SVGAnimateColorElement::handleTimerEvent):
+        * ksvg2/svg/SVGAnimateTransformElement.cpp:
+        (WebCore::SVGAnimateTransformElement::SVGAnimateTransformElement):
+        (WebCore::SVGAnimateTransformElement::parseMappedAttribute):
+        (WebCore::SVGAnimateTransformElement::handleTimerEvent):
+        (WebCore::SVGAnimateTransformElement::parseTransformValue):
+        * ksvg2/svg/SVGAnimateTransformElement.h:
+        * ksvg2/svg/SVGAnimatedTemplate.h:
+        * ksvg2/svg/SVGAnimationElement.cpp:
+        (SVGAnimationElement::getSimpleDuration):
+        (SVGAnimationElement::parseMappedAttribute):
+        (SVGAnimationElement::setTargetAttribute):
+        * ksvg2/svg/SVGAnimationElement.h:
+        * ksvg2/svg/SVGClipPathElement.cpp:
+        (SVGClipPathElement::SVGClipPathElement):
+        (SVGClipPathElement::parseMappedAttribute):
+        (SVGClipPathElement::canvasResource):
+        * ksvg2/svg/SVGComponentTransferFunctionElement.cpp:
+        (SVGComponentTransferFunctionElement::transferFunction):
+        * ksvg2/svg/SVGComponentTransferFunctionElement.h:
+        (WebCore::SVGComponentTransferFunctionElement::):
+        * ksvg2/svg/SVGDocument.cpp:
+        (WebCore::SVGDocument::dispatchZoomEvent):
+        (WebCore::SVGDocument::dispatchScrollEvent):
+        * ksvg2/svg/SVGFEBlendElement.cpp:
+        (WebCore::SVGFEBlendElement::parseMappedAttribute):
+        (WebCore::SVGFEBlendElement::filterEffect):
+        * ksvg2/svg/SVGFEBlendElement.h:
+        (WebCore::SVGFEBlendElement::):
+        * ksvg2/svg/SVGFEColorMatrixElement.cpp:
+        (SVGFEColorMatrixElement::parseMappedAttribute):
+        (SVGFEColorMatrixElement::filterEffect):
+        * ksvg2/svg/SVGFEColorMatrixElement.h:
+        (WebCore::SVGFEColorMatrixElement::):
+        * ksvg2/svg/SVGFEComponentTransferElement.cpp:
+        (WebCore::SVGFEComponentTransferElement::parseMappedAttribute):
+        (WebCore::SVGFEComponentTransferElement::filterEffect):
+        * ksvg2/svg/SVGFEComponentTransferElement.h:
+        * ksvg2/svg/SVGFECompositeElement.cpp:
+        (SVGFECompositeElement::parseMappedAttribute):
+        (SVGFECompositeElement::filterEffect):
+        * ksvg2/svg/SVGFECompositeElement.h:
+        (WebCore::SVGFECompositeElement::):
+        * ksvg2/svg/SVGFEDiffuseLightingElement.cpp:
+        (WebCore::SVGFEDiffuseLightingElement::parseMappedAttribute):
+        (WebCore::SVGFEDiffuseLightingElement::filterEffect):
+        * ksvg2/svg/SVGFEDiffuseLightingElement.h:
+        * ksvg2/svg/SVGFEDisplacementMapElement.cpp:
+        (SVGFEDisplacementMapElement::parseMappedAttribute):
+        (SVGFEDisplacementMapElement::filterEffect):
+        * ksvg2/svg/SVGFEDisplacementMapElement.h:
+        (WebCore::SVGFEDisplacementMapElement::):
+        * ksvg2/svg/SVGFEFloodElement.cpp:
+        (WebCore::SVGFEFloodElement::parseMappedAttribute):
+        (WebCore::SVGFEFloodElement::filterEffect):
+        * ksvg2/svg/SVGFEFloodElement.h:
+        * ksvg2/svg/SVGFEGaussianBlurElement.cpp:
+        (SVGFEGaussianBlurElement::parseMappedAttribute):
+        (SVGFEGaussianBlurElement::filterEffect):
+        * ksvg2/svg/SVGFEGaussianBlurElement.h:
+        * ksvg2/svg/SVGFEMergeElement.cpp:
+        (SVGFEMergeElement::filterEffect):
+        * ksvg2/svg/SVGFEMergeNodeElement.cpp:
+        (SVGFEMergeNodeElement::parseMappedAttribute):
+        * ksvg2/svg/SVGFEMergeNodeElement.h:
+        * ksvg2/svg/SVGFEOffsetElement.cpp:
+        (SVGFEOffsetElement::parseMappedAttribute):
+        (SVGFEOffsetElement::filterEffect):
+        * ksvg2/svg/SVGFEOffsetElement.h:
+        * ksvg2/svg/SVGFESpecularLightingElement.cpp:
+        (SVGFESpecularLightingElement::parseMappedAttribute):
+        (SVGFESpecularLightingElement::filterEffect):
+        * ksvg2/svg/SVGFESpecularLightingElement.h:
+        * ksvg2/svg/SVGFETileElement.cpp:
+        (WebCore::SVGFETileElement::parseMappedAttribute):
+        (WebCore::SVGFETileElement::filterEffect):
+        * ksvg2/svg/SVGFETileElement.h:
+        * ksvg2/svg/SVGFETurbulenceElement.h:
+        (WebCore::SVGFETurbulenceElement::):
+        * ksvg2/svg/SVGFilterElement.cpp:
+        (SVGFilterElement::SVGFilterElement):
+        (SVGFilterElement::parseMappedAttribute):
+        (SVGFilterElement::canvasResource):
+        * ksvg2/svg/SVGFilterPrimitiveStandardAttributes.cpp:
+        (SVGFilterPrimitiveStandardAttributes::setStandardAttributes):
+        * ksvg2/svg/SVGGradientElement.cpp:
+        (SVGGradientElement::SVGGradientElement):
+        (SVGGradientElement::parseMappedAttribute):
+        * ksvg2/svg/SVGGradientElement.h:
+        (WebCore::SVGGradientElement::):
+        * ksvg2/svg/SVGHelper.cpp:
+        (WebCore::SVGHelper::ParseSeperatedList):
+        * ksvg2/svg/SVGLengthList.cpp:
+        (WebCore::SVGLengthList::parse):
+        * ksvg2/svg/SVGLinearGradientElement.cpp:
+        (SVGLinearGradientElement::buildGradient):
+        * ksvg2/svg/SVGList.h:
+        (WebCore::SVGListBase::clear):
+        (WebCore::SVGListBase::initialize):
+        (WebCore::SVGListBase::getItem):
+        (WebCore::SVGListBase::insertItemBefore):
+        (WebCore::SVGListBase::replaceItem):
+        (WebCore::SVGListBase::removeItem):
+        (WebCore::SVGListBase::appendItem):
+        * ksvg2/svg/SVGLocatable.cpp:
+        * ksvg2/svg/SVGLocatable.h:
+        * ksvg2/svg/SVGMarkerElement.h:
+        (WebCore::SVGMarkerElement::):
+        * ksvg2/svg/SVGNumberList.cpp:
+        (SVGNumberList::parse):
+        * ksvg2/svg/SVGPaint.cpp:
+        (WebCore::SVGPaint::SVGPaint):
+        (WebCore::SVGPaint::uri):
+        (WebCore::SVGPaint::setUri):
+        (WebCore::SVGPaint::setPaint):
+        * ksvg2/svg/SVGPaint.h:
+        (WebCore::SVGPaint::):
+        * ksvg2/svg/SVGPathElement.cpp:
+        (WebCore::SVGPathElement::svgMoveTo):
+        (WebCore::SVGPathElement::svgLineTo):
+        (WebCore::SVGPathElement::svgLineToHorizontal):
+        (WebCore::SVGPathElement::svgLineToVertical):
+        (WebCore::SVGPathElement::svgCurveToCubic):
+        (WebCore::SVGPathElement::svgCurveToCubicSmooth):
+        (WebCore::SVGPathElement::svgCurveToQuadratic):
+        (WebCore::SVGPathElement::svgCurveToQuadraticSmooth):
+        (WebCore::SVGPathElement::svgArcTo):
+        (WebCore::SVGPathElement::svgClosePath):
+        (WebCore::SVGPathElement::parseMappedAttribute):
+        (WebCore::SVGPathElement::toPathData):
+        * ksvg2/svg/SVGPatternElement.cpp:
+        (WebCore::SVGPatternElement::SVGPatternElement):
+        (WebCore::SVGPatternElement::parseMappedAttribute):
+        (WebCore::SVGPatternElement::fillAttributesFromReferencePattern):
+        (WebCore::SVGPatternElement::drawPatternContentIntoTile):
+        * ksvg2/svg/SVGPolyElement.cpp:
+        (SVGPolyElement::parseMappedAttribute):
+        (SVGPolyElement::svgPolyTo):
+        (SVGPolyElement::notifyAttributeChange):
+        * ksvg2/svg/SVGPolygonElement.cpp:
+        (SVGPolygonElement::toPathData):
+        * ksvg2/svg/SVGPolylineElement.cpp:
+        (SVGPolylineElement::toPathData):
+        * ksvg2/svg/SVGRadialGradientElement.cpp:
+        (WebCore::SVGRadialGradientElement::buildGradient):
+        * ksvg2/svg/SVGRenderingIntent.h: Added.
+        (WebCore::SVGRenderingIntent::):
+        (WebCore::SVGRenderingIntent::SVGRenderingIntent):
+        (WebCore::SVGRenderingIntent::~SVGRenderingIntent):
+        * ksvg2/svg/SVGSVGElement.h:
+        (WebCore::SVGSVGElement::):
+        * ksvg2/svg/SVGScriptElement.cpp:
+        (WebCore::SVGScriptElement::type):
+        (WebCore::SVGScriptElement::setType):
+        (WebCore::SVGScriptElement::parseMappedAttribute):
+        * ksvg2/svg/SVGScriptElement.h:
+        * ksvg2/svg/SVGStringList.cpp:
+        (WebCore::SVGStringList::reset):
+        * ksvg2/svg/SVGStyledLocatableElement.cpp:
+        (SVGStyledLocatableElement::getTransformToElement):
+        * ksvg2/svg/SVGStyledLocatableElement.h:
+        * ksvg2/svg/SVGStyledTransformableElement.cpp:
+        (SVGStyledTransformableElement::parseMappedAttribute):
+        (SVGStyledTransformableElement::getTransformToElement):
+        * ksvg2/svg/SVGStyledTransformableElement.h:
+        * ksvg2/svg/SVGTests.cpp:
+        (WebCore::SVGTests::hasExtension):
+        (WebCore::SVGTests::isValid):
+        * ksvg2/svg/SVGTests.h:
+        * ksvg2/svg/SVGTextContentElement.cpp:
+        (SVGTextContentElement::getSubStringLength):
+        (SVGTextContentElement::getStartPositionOfChar):
+        (SVGTextContentElement::getEndPositionOfChar):
+        (SVGTextContentElement::getExtentOfChar):
+        (SVGTextContentElement::getRotationOfChar):
+        (SVGTextContentElement::selectSubString):
+        * ksvg2/svg/SVGTextContentElement.h:
+        (WebCore::SVGTextContentElement::):
+        * ksvg2/svg/SVGTextElement.cpp:
+        (WebCore::SVGTextElement::parseMappedAttribute):
+        * ksvg2/svg/SVGTextElement.h:
+        (WebCore::SVGTextElement::getTransformToElement):
+        * ksvg2/svg/SVGTransform.h:
+        * ksvg2/svg/SVGTransformList.cpp:
+        (SVGTransformList::consolidate):
+        (SVGTransformList::concatenate):
+        * ksvg2/svg/SVGTransformable.cpp:
+        (SVGTransformable::parseTransformAttribute):
+        * ksvg2/svg/SVGUnitTypes.h: Added.
+        (WebCore::SVGUnitTypes::):
+        (WebCore::SVGUnitTypes::SVGUnitTypes):
+        (WebCore::SVGUnitTypes::~SVGUnitTypes):
+        * ksvg2/svg/SVGUseElement.cpp:
+        (SVGUseElement::closeRenderer):
+        * ksvg2/svg/SVGViewElement.h:
+        (WebCore::SVGViewElement::):
+        * ksvg2/svg/SVGZoomAndPan.cpp:
+        (WebCore::SVGZoomAndPan::SVGZoomAndPan):
+        (WebCore::SVGZoomAndPan::parseMappedAttribute):
+
 2006-09-12  John Sullivan  <sullivan@apple.com>
 
         Reviewed by Adele Peterson.
index 5c76952..c87c49b 100644 (file)
@@ -302,8 +302,8 @@ bool RenderPath::nodeAtPoint(NodeInfo& info, int _x, int _y, int _tx, int _ty, H
     
     bool isVisible = (style()->visibility() == VISIBLE);
     if (isVisible || !hitRules.requireVisible) {
-        bool hasFill = (style()->svgStyle()->fillPaint() && style()->svgStyle()->fillPaint()->paintType() != SVG_PAINTTYPE_NONE);
-        bool hasStroke = (style()->svgStyle()->strokePaint() && style()->svgStyle()->strokePaint()->paintType() != SVG_PAINTTYPE_NONE);
+        bool hasFill = (style()->svgStyle()->fillPaint() && style()->svgStyle()->fillPaint()->paintType() != SVGPaint::SVG_PAINTTYPE_NONE);
+        bool hasStroke = (style()->svgStyle()->strokePaint() && style()->svgStyle()->strokePaint()->paintType() != SVGPaint::SVG_PAINTTYPE_NONE);
         FloatPoint hitPoint(_x,_y);
         if ((hitRules.canHitStroke && (hasStroke || !hitRules.requireStroke) && strokeContains(hitPoint, hitRules.requireStroke))
             || (hitRules.canHitFill && (hasFill || !hitRules.requireFill) && fillContains(hitPoint, hitRules.requireFill))) {
index d9eb07e..bed7d59 100644 (file)
@@ -53,7 +53,7 @@ JSValue* JSSVGNumber::getValue(ExecState* exec, JSObject* originalObject, const
     return 0;
 }
 
-JSValue* getJSSVGNumber(ExecState* exec, float v)
+JSValue* getJSSVGNumber(ExecState* exec, double v)
 {
     return new JSSVGNumber(exec, v);
 }
index f018ee9..96b8798 100644 (file)
@@ -32,7 +32,7 @@ namespace WebCore {
 
 class JSSVGNumber : public KJS::DOMObject {
 public:
-    JSSVGNumber(KJS::ExecState*, float v) : m_value(v) { }
+    JSSVGNumber(KJS::ExecState*, double v) : m_value(v) { }
     ~JSSVGNumber();
     
     virtual bool getOwnPropertySlot(KJS::ExecState*, const KJS::Identifier&, KJS::PropertySlot&);
@@ -42,10 +42,10 @@ public:
     virtual const KJS::ClassInfo* classInfo() const { return &info; }
     static const KJS::ClassInfo info;
 private:
-    float m_value;
+    double m_value;
 };
 
-KJS::JSValue* getJSSVGNumber(KJS::ExecState*, float);
+KJS::JSValue* getJSSVGNumber(KJS::ExecState*, double);
 
 }
 
index e69a57f..6bfafb7 100644 (file)
@@ -214,11 +214,11 @@ bool CSSParser::parseSVGValue(int propId, bool important)
     case SVGCSS_PROP_STROKE:               // <paint> | inherit
         {
             if (id == CSS_VAL_NONE)
-                parsedValue = new SVGPaint(SVG_PAINTTYPE_NONE);
+                parsedValue = new SVGPaint(SVGPaint::SVG_PAINTTYPE_NONE);
             else if (id == SVGCSS_VAL_CURRENTCOLOR)
-                parsedValue = new SVGPaint(SVG_PAINTTYPE_CURRENTCOLOR);
+                parsedValue = new SVGPaint(SVGPaint::SVG_PAINTTYPE_CURRENTCOLOR);
             else if (value->unit == CSSPrimitiveValue::CSS_URI)
-                parsedValue = new SVGPaint(SVG_PAINTTYPE_URI, domString(value->string).impl());
+                parsedValue = new SVGPaint(SVGPaint::SVG_PAINTTYPE_URI, domString(value->string).impl());
             else
                 parsedValue = parseSVGPaint();
 
@@ -354,13 +354,13 @@ CSSValue* CSSParser::parseSVGPaint()
     if (!strict && value->unit == CSSPrimitiveValue::CSS_NUMBER &&
        value->fValue >= 0. && value->fValue < 1000000.) {
         String str = String::sprintf("%06d", (int)(value->fValue+.5));
-        return new SVGPaint(SVG_PAINTTYPE_RGBCOLOR, 0, str.impl());
+        return new SVGPaint(SVGPaint::SVG_PAINTTYPE_RGBCOLOR, String(), str);
     } else if (value->unit == CSSPrimitiveValue::CSS_RGBCOLOR) {
         String str = "#" + domString(value->string);
-        return new SVGPaint(SVG_PAINTTYPE_RGBCOLOR, 0, str.impl());
+        return new SVGPaint(SVGPaint::SVG_PAINTTYPE_RGBCOLOR, String(), str);
     } else if (value->unit == CSSPrimitiveValue::CSS_IDENT ||
            (!strict && value->unit == CSSPrimitiveValue::CSS_DIMENSION))
-        return new SVGPaint(SVG_PAINTTYPE_RGBCOLOR, 0, domString(value->string).impl());
+        return new SVGPaint(SVGPaint::SVG_PAINTTYPE_RGBCOLOR, String(), domString(value->string));
     else if (value->unit == Value::Function && value->function->args != 0 &&
             domString(value->function->name).lower() == "rgb(") {
         ValueList* args = value->function->args;
@@ -386,7 +386,7 @@ CSSValue* CSSParser::parseSVGPaint()
         g = max(0, min(255, g));
         b = max(0, min(255, b));
         
-        return new SVGPaint(SVG_PAINTTYPE_RGBCOLOR, 0, String::sprintf("rgb(%d, %d, %d)", r, g, b).impl());
+        return new SVGPaint(SVGPaint::SVG_PAINTTYPE_RGBCOLOR, String(), String::sprintf("rgb(%d, %d, %d)", r, g, b).impl());
     }
     else
         return 0;
index 9d51707..1ef6de9 100644 (file)
@@ -58,10 +58,10 @@ bool StyleFillData::operator==(const StyleFillData &other) const
     if(paint->paintType() != other.paint->paintType())
         return false;
 
-    if(paint->paintType() == SVG_PAINTTYPE_URI)
+    if(paint->paintType() == SVGPaint::SVG_PAINTTYPE_URI)
         return paint->uri() == other.paint->uri();
 
-    if(paint->paintType() == SVG_PAINTTYPE_RGBCOLOR)
+    if(paint->paintType() == SVGPaint::SVG_PAINTTYPE_RGBCOLOR)
         return paint->color() == other.paint->color();
 
     return (paint == other.paint) && (opacity == other.opacity);
index efd6712..77b79e5 100644 (file)
@@ -36,42 +36,11 @@ namespace WebCore {
         SVG_INVALID_VALUE_ERR        = 2,
         SVG_MATRIX_NOT_INVERTABLE    = 3
     };
-    
-    enum SVGUnitTypes {
-        SVG_UNIT_TYPE_UNKNOWN               = 0,
-        SVG_UNIT_TYPE_USERSPACEONUSE        = 1,
-        SVG_UNIT_TYPE_OBJECTBOUNDINGBOX     = 2
-    };
-
-    enum SVGRenderingIntentType {
-        RENDERING_INTENT_UNKNOWN                  = 0,
-        RENDERING_INTENT_AUTO                     = 1,
-        RENDERING_INTENT_PERCEPTUAL               = 2,
-        RENDERING_INTENT_RELATIVE_COLORIMETRIC    = 3,
-        RENDERING_INTENT_SATURATION               = 4,
-        RENDERING_INTENT_ABSOLUTE_COLORIMETRIC    = 5
-    };
-    
-    enum SVGTransformType {
-        SVG_TRANSFORM_UNKNOWN           = 0,
-        SVG_TRANSFORM_MATRIX            = 1,
-        SVG_TRANSFORM_TRANSLATE         = 2,
-        SVG_TRANSFORM_SCALE             = 3,
-        SVG_TRANSFORM_ROTATE            = 4,
-        SVG_TRANSFORM_SKEWX             = 5,
-        SVG_TRANSFORM_SKEWY             = 6
-    };
-
+       
     enum SVGCSSRuleType {
         COLOR_PROFILE_RULE = 7
     };
 
-    enum SVGLengthAdjustType {
-        LENGTHADJUST_UNKNOWN            = 0,
-        LENGTHADJUST_SPACING            = 1,
-        LENGTHADJUST_SPACINGANDGLYPHS   = 2
-    };
-
     enum SVGTextPathMethodType {
         TEXTPATH_METHODTYPE_UNKNOWN    = 0,
         TEXTPATH_METHODTYPE_ALIGN      = 1,
@@ -84,80 +53,6 @@ namespace WebCore {
         TEXTPATH_SPACINGTYPE_EXACT      = 2
     };
 
-    enum SVGPaintType {
-        SVG_PAINTTYPE_UNKNOWN               = 0,
-        SVG_PAINTTYPE_RGBCOLOR              = 1,
-        SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR     = 2,
-        SVG_PAINTTYPE_NONE                  = 101,
-        SVG_PAINTTYPE_CURRENTCOLOR          = 102,
-        SVG_PAINTTYPE_URI_NONE              = 103,
-        SVG_PAINTTYPE_URI_CURRENTCOLOR      = 104,
-        SVG_PAINTTYPE_URI_RGBCOLOR          = 105,
-        SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106,
-        SVG_PAINTTYPE_URI                   = 107
-    };
-
-    enum SVGMarkerUnitsType {
-        SVG_MARKERUNITS_UNKNOWN           = 0,
-        SVG_MARKERUNITS_USERSPACEONUSE    = 1,
-        SVG_MARKERUNITS_STROKEWIDTH       = 2
-    };
-
-    enum SVGMarkerOrientType {
-        SVG_MARKER_ORIENT_UNKNOWN    = 0,
-        SVG_MARKER_ORIENT_AUTO       = 1,
-        SVG_MARKER_ORIENT_ANGLE      = 2
-    };
-
-    enum SVGGradientType {
-        SVG_SPREADMETHOD_UNKNOWN = 0,
-        SVG_SPREADMETHOD_PAD     = 1,
-        SVG_SPREADMETHOD_REFLECT = 2,
-        SVG_SPREADMETHOD_REPEAT  = 3
-    };
-
-    enum SVGZoomAndPanType {
-        SVG_ZOOMANDPAN_UNKNOWN = 0,
-        SVG_ZOOMANDPAN_DISABLE = 1,
-        SVG_ZOOMANDPAN_MAGNIFY = 2
-    };
-
-    enum SVGBlendModeType {
-        SVG_FEBLEND_MODE_UNKNOWN  = 0,
-        SVG_FEBLEND_MODE_NORMAL   = 1,
-        SVG_FEBLEND_MODE_MULTIPLY = 2,
-        SVG_FEBLEND_MODE_SCREEN   = 3,
-        SVG_FEBLEND_MODE_DARKEN   = 4,
-        SVG_FEBLEND_MODE_LIGHTEN  = 5
-    };
-
-    enum SVGColorMatrixType {
-        SVG_FECOLORMATRIX_TYPE_UNKNOWN          = 0,
-        SVG_FECOLORMATRIX_TYPE_MATRIX           = 1,
-        SVG_FECOLORMATRIX_TYPE_SATURATE         = 2,
-        SVG_FECOLORMATRIX_TYPE_HUEROTATE        = 3,
-        SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
-    };
-
-    enum SVGComponentTransferType {
-        SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN  = 0,
-        SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1,
-        SVG_FECOMPONENTTRANSFER_TYPE_TABLE    = 2,
-        SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3,
-        SVG_FECOMPONENTTRANSFER_TYPE_LINEAR   = 4,
-        SVG_FECOMPONENTTRANSFER_TYPE_GAMMA    = 5
-    };
-
-    enum SVGCompositeOperators {
-        SVG_FECOMPOSITE_OPERATOR_UNKNOWN    = 0,
-        SVG_FECOMPOSITE_OPERATOR_OVER       = 1,
-        SVG_FECOMPOSITE_OPERATOR_IN         = 2,
-        SVG_FECOMPOSITE_OPERATOR_OUT        = 3,
-        SVG_FECOMPOSITE_OPERATOR_ATOP       = 4,
-        SVG_FECOMPOSITE_OPERATOR_XOR        = 5,
-        SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6
-    };
-
     enum SVGEdgeModes {
         SVG_EDGEMODE_UNKNOWN   = 0,
         SVG_EDGEMODE_DUPLICATE = 1,
@@ -165,32 +60,12 @@ namespace WebCore {
         SVG_EDGEMODE_NONE      = 3
     };
 
-    enum SVGChannelSelectors {
-        SVG_CHANNEL_UNKNOWN = 0,
-        SVG_CHANNEL_R       = 1,
-        SVG_CHANNEL_G       = 2,
-        SVG_CHANNEL_B       = 3,
-        SVG_CHANNEL_A       = 4
-    };
-
     enum SVGMorphologyOperators {
         SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0,
         SVG_MORPHOLOGY_OPERATOR_ERODE   = 1,
         SVG_MORPHOLOGY_OPERATOR_DILATE  = 2
     };
 
-    enum SVGTurbulenceType {
-        SVG_TURBULENCE_TYPE_UNKNOWN      = 0,
-        SVG_TURBULENCE_TYPE_FRACTALNOISE = 1,
-        SVG_TURBULENCE_TYPE_TURBULENCE   = 2
-    };
-
-    enum SVGStitchOptions {
-        SVG_STITCHTYPE_UNKNOWN  = 0,
-        SVG_STITCHTYPE_STITCH   = 1,
-        SVG_STITCHTYPE_NOSTITCH = 2
-    };
-
 } // namespace WebCore
 
 #endif // SVG_SUPPORT
index 8571483..be52d49 100644 (file)
@@ -54,7 +54,7 @@ static KRenderingPaintServerSolid* sharedSolidPaintServer()
 bool KSVGPainterFactory::isFilled(const RenderStyle *style)
 {
     SVGPaint *fill = style->svgStyle()->fillPaint();
-    if (fill && fill->paintType() == SVG_PAINTTYPE_NONE)
+    if (fill && fill->paintType() == SVGPaint::SVG_PAINTTYPE_NONE)
         return false;
     return true;
 }
@@ -71,7 +71,7 @@ KRenderingPaintServer *KSVGPainterFactory::fillPaintServer(const RenderStyle* st
         // initial value (black)
         fillPaintServer = sharedSolidPaintServer();
         static_cast<KRenderingPaintServerSolid *>(fillPaintServer)->setColor(Color::black);
-    } else if (fill->paintType() == SVG_PAINTTYPE_URI) {
+    } else if (fill->paintType() == SVGPaint::SVG_PAINTTYPE_URI) {
         String id(fill->uri());
         fillPaintServer = getPaintServerById(item->document(), AtomicString(id.substring(1)));
         if (item && fillPaintServer && item->isRenderPath())
@@ -79,7 +79,7 @@ KRenderingPaintServer *KSVGPainterFactory::fillPaintServer(const RenderStyle* st
     } else {
         fillPaintServer = sharedSolidPaintServer();
         KRenderingPaintServerSolid *fillPaintServerSolid = static_cast<KRenderingPaintServerSolid *>(fillPaintServer);
-        if (fill->paintType() == SVG_PAINTTYPE_CURRENTCOLOR)
+        if (fill->paintType() == SVGPaint::SVG_PAINTTYPE_CURRENTCOLOR)
             fillPaintServerSolid->setColor(style->color());
         else
             fillPaintServerSolid->setColor(fill->color());
@@ -92,7 +92,7 @@ KRenderingPaintServer *KSVGPainterFactory::fillPaintServer(const RenderStyle* st
 bool KSVGPainterFactory::isStroked(const RenderStyle *style)
 {
     SVGPaint *stroke = style->svgStyle()->strokePaint();
-    if (!stroke || stroke->paintType() == SVG_PAINTTYPE_NONE)
+    if (!stroke || stroke->paintType() == SVGPaint::SVG_PAINTTYPE_NONE)
         return false;
     return true;
 }
@@ -105,7 +105,7 @@ KRenderingPaintServer *KSVGPainterFactory::strokePaintServer(const RenderStyle*
     SVGPaint *stroke = style->svgStyle()->strokePaint();
 
     KRenderingPaintServer *strokePaintServer;
-    if (stroke && stroke->paintType() == SVG_PAINTTYPE_URI) {
+    if (stroke && stroke->paintType() == SVGPaint::SVG_PAINTTYPE_URI) {
         String id(stroke->uri());
         strokePaintServer = getPaintServerById(item->document(), AtomicString(id.substring(1)));
         if(item && strokePaintServer && item->isRenderPath())
@@ -113,7 +113,7 @@ KRenderingPaintServer *KSVGPainterFactory::strokePaintServer(const RenderStyle*
     } else {
         strokePaintServer = sharedSolidPaintServer();
         KRenderingPaintServerSolid *strokePaintServerSolid = static_cast<KRenderingPaintServerSolid *>(strokePaintServer);
-        if (stroke->paintType() == SVG_PAINTTYPE_CURRENTCOLOR)
+        if (stroke->paintType() == SVGPaint::SVG_PAINTTYPE_CURRENTCOLOR)
             strokePaintServerSolid->setColor(style->color());
         else
             strokePaintServerSolid->setColor(stroke->color());
index cdba1e2..83949b9 100644 (file)
@@ -114,7 +114,9 @@ void SVGTimer::notifyAll()
     // the animations -> 'additive' support is handled this way.
     typedef HashMap<SVGElement*, Vector<SVGAnimationElement*> > TargetAnimationMap;
     TargetAnimationMap targetMap;
-    
+
+    ExceptionCode ec = 0;
+
     SVGNotifySet::const_iterator end = m_notifySet.end();
     for (SVGNotifySet::const_iterator it = m_notifySet.begin(); it != end; ++it) {
         SVGAnimationElement* animation = *it;
@@ -124,7 +126,7 @@ void SVGTimer::notifyAll()
         if (!m_enabledNotifySet.contains(animation)) {
             if (!animation->isFrozen())
                 continue;
-            if (elapsed <= (animation->getStartTime() + animation->getSimpleDuration()))
+            if (elapsed <= (animation->getStartTime() + animation->getSimpleDuration(ec)))
                 continue;
         }
 
@@ -151,7 +153,7 @@ void SVGTimer::notifyAll()
 
             double end = animation->getEndTime();
             double start = animation->getStartTime();
-            double duration = animation->getSimpleDuration();
+            double duration = animation->getSimpleDuration(ec);
             double repetitions = animation->repeations();
 
             // Validate animation timing settings:
index 516fd01..faa193c 100644 (file)
@@ -150,9 +150,11 @@ void SVGAnimateColorElement::handleTimerEvent(double timePercentage)
 
         if (m_currentItem != itemByPercentage) // Item changed...
         {
+            ExceptionCode ec = 0;
+
             // Extract current 'from' / 'to' values
-            String value1 = String(m_values->getItem(itemByPercentage));
-            String value2 = String(m_values->getItem(itemByPercentage + 1));
+            String value1 = String(m_values->getItem(itemByPercentage, ec));
+            String value2 = String(m_values->getItem(itemByPercentage + 1, ec));
 
             // Calculate r/g/b shifting values...
             if (!value1.isEmpty() && !value2.isEmpty()) {
index 7a27203..df11d7a 100644 (file)
@@ -47,7 +47,7 @@ namespace WebCore {
 SVGAnimateTransformElement::SVGAnimateTransformElement(const QualifiedName& tagName, Document *doc)
     : SVGAnimationElement(tagName, doc)
     , m_currentItem(-1)
-    , m_type(SVG_TRANSFORM_UNKNOWN)
+    , m_type(SVGTransform::SVG_TRANSFORM_UNKNOWN)
     , m_rotateSpecialCase(false)
     , m_toRotateSpecialCase(false)
     , m_fromRotateSpecialCase(false)
@@ -63,15 +63,15 @@ void SVGAnimateTransformElement::parseMappedAttribute(MappedAttribute *attr)
     if (attr->name() == SVGNames::typeAttr) {
         const String& value = attr->value();
         if (value == "translate")
-            m_type = SVG_TRANSFORM_TRANSLATE;
+            m_type = SVGTransform::SVG_TRANSFORM_TRANSLATE;
         else if (value == "scale")
-            m_type = SVG_TRANSFORM_SCALE;
+            m_type = SVGTransform::SVG_TRANSFORM_SCALE;
         else if (value == "rotate")
-            m_type = SVG_TRANSFORM_ROTATE;
+            m_type = SVGTransform::SVG_TRANSFORM_ROTATE;
         else if (value == "skewX")
-            m_type = SVG_TRANSFORM_SKEWX;
+            m_type = SVGTransform::SVG_TRANSFORM_SKEWX;
         else if (value == "skewY")
-            m_type = SVG_TRANSFORM_SKEWY;
+            m_type = SVGTransform::SVG_TRANSFORM_SKEWY;
     } else
         SVGAnimationElement::parseMappedAttribute(attr);
 }
@@ -87,8 +87,9 @@ void SVGAnimateTransformElement::handleTimerEvent(double timePercentage)
             SVGStyledTransformableElement *transform = static_cast<SVGStyledTransformableElement *>(targetElement());
             RefPtr<SVGTransformList> transformList = transform->transformBaseValue();
             if (transformList) {
+                ExceptionCode ec = 0;
                 for (unsigned long i = 0; i < transformList->numberOfItems(); i++) {
-                    SVGTransform *value = transformList->getItem(i);
+                    SVGTransform *value = transformList->getItem(i, ec);
                     if (!value)
                         continue;
                         
@@ -182,9 +183,11 @@ void SVGAnimateTransformElement::handleTimerEvent(double timePercentage)
         
         if (m_currentItem != itemByPercentage) // Item changed...
         {
+            ExceptionCode ec = 0;
+
             // Extract current 'from' / 'to' values
-            String value1 = String(m_values->getItem(itemByPercentage));
-            String value2 = String(m_values->getItem(itemByPercentage + 1));
+            String value1 = String(m_values->getItem(itemByPercentage, ec));
+            String value2 = String(m_values->getItem(itemByPercentage + 1, ec));
 
             // Calculate new from/to transform values...
             if (!value1.isEmpty() && !value2.isEmpty()) {
@@ -230,7 +233,7 @@ void SVGAnimateTransformElement::handleTimerEvent(double timePercentage)
     
     switch(m_type)
     {
-        case SVG_TRANSFORM_TRANSLATE:
+        case SVGTransform::SVG_TRANSFORM_TRANSLATE:
         {
             double dx = ((qToMatrix.dx() - qFromMatrix.dx()) * useTimePercentage) + qFromMatrix.dx();
             double dy = ((qToMatrix.dy() - qFromMatrix.dy()) * useTimePercentage) + qFromMatrix.dy();
@@ -238,7 +241,7 @@ void SVGAnimateTransformElement::handleTimerEvent(double timePercentage)
             m_transformMatrix->translate(dx, dy);
             break;
         }
-        case SVG_TRANSFORM_SCALE:
+        case SVGTransform::SVG_TRANSFORM_SCALE:
         {
             double sx = ((qToMatrix.m11() - qFromMatrix.m11()) * useTimePercentage) + qFromMatrix.m11();
             double sy = ((qToMatrix.m22() - qFromMatrix.m22()) * useTimePercentage) + qFromMatrix.m22();
@@ -246,7 +249,7 @@ void SVGAnimateTransformElement::handleTimerEvent(double timePercentage)
             m_transformMatrix->scaleNonUniform(sx, sy);
             break;
         }
-        case SVG_TRANSFORM_ROTATE:
+        case SVGTransform::SVG_TRANSFORM_ROTATE:
         {
             double toAngle, toCx, toCy, fromAngle, fromCx, fromCy;
             calculateRotationFromMatrix(qToMatrix, toAngle, toCx, toCy);
@@ -275,7 +278,7 @@ void SVGAnimateTransformElement::handleTimerEvent(double timePercentage)
             m_transformMatrix->translate(-cx, -cy);
             break;
         }
-        case SVG_TRANSFORM_SKEWX:
+        case SVGTransform::SVG_TRANSFORM_SKEWX:
         {
             double sx = (SVGAngle::todeg(atan(qToMatrix.m21()) - atan(qFromMatrix.m21())) *
                          useTimePercentage) + SVGAngle::todeg(atan(qFromMatrix.m21()));
@@ -283,7 +286,7 @@ void SVGAnimateTransformElement::handleTimerEvent(double timePercentage)
             m_transformMatrix->skewX(sx);
             break;
         }
-        case SVG_TRANSFORM_SKEWY:
+        case SVGTransform::SVG_TRANSFORM_SKEWY:
         {
             double sy = (SVGAngle::todeg(atan(qToMatrix.m12()) - atan(qFromMatrix.m12())) *
                          useTimePercentage) + SVGAngle::todeg(atan(qFromMatrix.m12()));
@@ -340,7 +343,7 @@ RefPtr<SVGTransform> SVGAnimateTransformElement::parseTransformValue(const Depre
     
     switch(m_type)
     {
-        case SVG_TRANSFORM_TRANSLATE:
+        case SVGTransform::SVG_TRANSFORM_TRANSLATE:
         {
             double tx = 0.0, ty = 0.0;
             if (commaPos != - 1) {
@@ -352,7 +355,7 @@ RefPtr<SVGTransform> SVGAnimateTransformElement::parseTransformValue(const Depre
             parsedTransform->setTranslate(tx, ty);
             break;    
         }
-        case SVG_TRANSFORM_SCALE:
+        case SVGTransform::SVG_TRANSFORM_SCALE:
         {
             double sx = 1.0, sy = 1.0;
             if (commaPos != - 1) {
@@ -366,7 +369,7 @@ RefPtr<SVGTransform> SVGAnimateTransformElement::parseTransformValue(const Depre
             parsedTransform->setScale(sx, sy);
             break;
         }
-        case SVG_TRANSFORM_ROTATE:
+        case SVGTransform::SVG_TRANSFORM_ROTATE:
         {
             double angle = 0, cx = 0, cy = 0;
             if (commaPos != - 1) {
@@ -399,12 +402,12 @@ RefPtr<SVGTransform> SVGAnimateTransformElement::parseTransformValue(const Depre
             parsedTransform->setRotate(angle, cx, cy);
             break;    
         }
-        case SVG_TRANSFORM_SKEWX:
-        case SVG_TRANSFORM_SKEWY:
+        case SVGTransform::SVG_TRANSFORM_SKEWX:
+        case SVGTransform::SVG_TRANSFORM_SKEWY:
         {
             double angle = parse.toDouble(); // TODO: probably needs it's own 'angle' parser
             
-            if (m_type == SVG_TRANSFORM_SKEWX)
+            if (m_type == SVGTransform::SVG_TRANSFORM_SKEWX)
                 parsedTransform->setSkewX(angle);
             else
                 parsedTransform->setSkewY(angle);
index b2fb333..2640520 100644 (file)
 #define KSVG_SVGAnimateTransformElementImpl_H
 #ifdef SVG_SUPPORT
 
-#include "ksvg.h"
+#include "SVGTransform.h"
 #include "SVGAnimationElement.h"
 
 namespace WebCore {
 
-    class SVGTransform;
     class AffineTransform;
 
     class SVGAnimateTransformElement : public SVGAnimationElement {
@@ -53,7 +52,7 @@ namespace WebCore {
 
     private:
         int m_currentItem;
-        SVGTransformType m_type;
+        SVGTransform::SVGTransformType m_type;
 
         RefPtr<SVGTransform> m_toTransform;
         RefPtr<SVGTransform> m_fromTransform;
index 8ab800a..0fe0c96 100644 (file)
 namespace WebCore {
     class SVGAngle;
     class SVGLength;
+    class SVGLengthList;
+    class SVGNumberList;
     class SVGPreserveAspectRatio;
+    class SVGTransformList;
     class String;
     class FloatRect;
 
@@ -53,10 +56,13 @@ namespace WebCore {
     typedef SVGAnimatedTemplate<int> SVGAnimatedEnumeration;
     typedef SVGAnimatedTemplate<long> SVGAnimatedInteger;
     typedef SVGAnimatedTemplate<SVGLength*> SVGAnimatedLength;
+    typedef SVGAnimatedTemplate<SVGLengthList*> SVGAnimatedLengthList;
     typedef SVGAnimatedTemplate<double> SVGAnimatedNumber;
+    typedef SVGAnimatedTemplate<SVGNumberList*> SVGAnimatedNumberList; 
     typedef SVGAnimatedTemplate<SVGPreserveAspectRatio*> SVGAnimatedPreserveAspectRatio;
     typedef SVGAnimatedTemplate<FloatRect> SVGAnimatedRect;
     typedef SVGAnimatedTemplate<String> SVGAnimatedString;
+    typedef SVGAnimatedTemplate<SVGTransformList*> SVGAnimatedTransformList; 
 }
 
 #endif // SVG_SUPPORT
index 68a9221..b37aaeb 100644 (file)
@@ -111,7 +111,7 @@ double SVGAnimationElement::getCurrentTime() const
     return m_currentTime;
 }
 
-double SVGAnimationElement::getSimpleDuration() const
+double SVGAnimationElement::getSimpleDuration(ExceptionCode&) const
 {
     return m_simpleDuration;
 }
@@ -140,9 +140,11 @@ void SVGAnimationElement::parseMappedAttribute(MappedAttribute *attr)
         // Feed data into list
         SVGHelper::ParseSeperatedList(temp.get(), value.deprecatedString(), ';');
 
+        ExceptionCode ec = 0;
+
         // Parse data
         for (unsigned int i = 0; i < temp->numberOfItems(); i++) {
-            DeprecatedString current = String(temp->getItem(i)).deprecatedString();
+            DeprecatedString current = String(temp->getItem(i, ec)).deprecatedString();
 
             if (current.startsWith("accessKey")) {
                 // Register keyDownEventListener for the character
@@ -461,7 +463,7 @@ void SVGAnimationElement::setTargetAttribute(SVGElement *target, StringImpl *nam
                 attributeType = ATTRIBUTETYPE_CSS;
         }
     }
-    ExceptionCode ec;
+    ExceptionCode ec = 0;
     if (attributeType == ATTRIBUTETYPE_CSS && styled && styled->style())
         styled->style()->setProperty(name, value, "", ec);
     else if (attributeType == ATTRIBUTETYPE_XML)
index 6f79686..dafeb42 100644 (file)
@@ -90,7 +90,7 @@ namespace WebCore {
         double getEndTime() const;
         double getStartTime() const;
         double getCurrentTime() const;
-        double getSimpleDuration() const;
+        double getSimpleDuration(ExceptionCode&) const;
     
         virtual void parseMappedAttribute(MappedAttribute *attr);
         virtual bool rendererIsNeeded(RenderStyle *) { return false; }
index 0c8f327..2423b22 100644 (file)
@@ -32,7 +32,7 @@
 #include "SVGMatrix.h"
 #include "SVGRenderStyle.h"
 #include "cssstyleselector.h"
-#include "ksvg.h"
+#include "SVGUnitTypes.h"
 #include <kcanvas/device/KRenderingDevice.h>
 
 using namespace WebCore;
@@ -42,7 +42,7 @@ SVGClipPathElement::SVGClipPathElement(const QualifiedName& tagName, Document *d
     , SVGTests()
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
-    , m_clipPathUnits(SVG_UNIT_TYPE_USERSPACEONUSE)
+    , m_clipPathUnits(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE)
 {
     m_clipper = 0;
 }
@@ -59,9 +59,9 @@ void SVGClipPathElement::parseMappedAttribute(MappedAttribute *attr)
     const String& value = attr->value();
     if (attr->name() == SVGNames::clipPathUnitsAttr) {
         if (value == "userSpaceOnUse")
-            setClipPathUnitsBaseValue(SVG_UNIT_TYPE_USERSPACEONUSE);
+            setClipPathUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE);
         else if (value == "objectBoundingBox")
-            setClipPathUnitsBaseValue(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            setClipPathUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
     } else {
         if (SVGTests::parseMappedAttribute(attr))
             return;
@@ -82,7 +82,7 @@ KCanvasClipper *SVGClipPathElement::canvasResource()
     else
         m_clipper->resetClipData();
 
-    bool bbox = clipPathUnits() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
+    bool bbox = clipPathUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
 
     RenderStyle *clipPathStyle = styleForRenderer(parent()->renderer()); // FIXME: Manual style resolution is a hack
     for (Node *n = firstChild(); n != 0; n = n->nextSibling()) {
index f1a6fcd..e630c38 100644 (file)
 
 #include "Attr.h"
 
-#include "ksvg.h"
 #include "SVGNames.h"
 #include "SVGHelper.h"
 #include "SVGRenderStyle.h"
+#include "SVGFEComponentTransferElement.h"
 #include "SVGComponentTransferFunctionElement.h"
 #include "SVGNumberList.h"
 
@@ -101,9 +101,11 @@ KCComponentTransferFunction SVGComponentTransferFunctionElement::transferFunctio
     func.exponent = exponent();
     func.offset = offset();
     SVGNumberList *numbers = tableValues();
+
+    ExceptionCode ec = 0;
     unsigned int nr = numbers->numberOfItems();
     for (unsigned int i = 0; i < nr; i++)
-        func.tableValues.append(numbers->getItem(i));
+        func.tableValues.append(numbers->getItem(i, ec));
     return func;
 }
 
index 7a098f8..94e0798 100644 (file)
@@ -34,6 +34,15 @@ namespace WebCore
     class SVGComponentTransferFunctionElement : public SVGElement
     {
     public:
+        enum SVGComponentTransferType {
+            SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN  = 0,
+            SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1,
+            SVG_FECOMPONENTTRANSFER_TYPE_TABLE    = 2,
+            SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3,
+            SVG_FECOMPONENTTRANSFER_TYPE_LINEAR   = 4,
+            SVG_FECOMPONENTTRANSFER_TYPE_GAMMA    = 5
+        };
+
         SVGComponentTransferFunctionElement(const QualifiedName&, Document*);
         virtual ~SVGComponentTransferFunctionElement();
 
index 35f3b25..7d3a16d 100644 (file)
@@ -52,7 +52,7 @@ SVGSVGElement *SVGDocument::rootElement() const
 void SVGDocument::dispatchZoomEvent(float prevScale, float newScale)
 {
     // dispatch zoom event
-    ExceptionCode ec;
+    ExceptionCode ec = 0;
     RefPtr<SVGZoomEvent> event = static_pointer_cast<SVGZoomEvent>(createEvent("SVGZoomEvents", ec));
     event->initEvent(EventNames::zoomEvent, true, false);
     event->setPreviousScale(prevScale);
@@ -63,7 +63,7 @@ void SVGDocument::dispatchZoomEvent(float prevScale, float newScale)
 void SVGDocument::dispatchScrollEvent()
 {
     // dispatch zoom event
-    ExceptionCode ec;
+    ExceptionCode ec = 0;
     RefPtr<Event> event = createEvent("SVGEvents", ec);
     event->initEvent(EventNames::scrollEvent, true, false);
     rootElement()->dispatchEvent(event.get(), ec);
index 6f930a0..59bafde 100644 (file)
@@ -46,7 +46,7 @@ SVGFEBlendElement::~SVGFEBlendElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFEBlendElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEBlendElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEBlendElement, String, String, string, In2, in2, SVGNames::in2Attr.localName(), m_in2)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEBlendElement, int, Enumeration, enumeration, Mode, mode, SVGNames::modeAttr.localName(), m_mode)
 
@@ -67,7 +67,7 @@ void SVGFEBlendElement::parseMappedAttribute(MappedAttribute *attr)
             setModeBaseValue(SVG_FEBLEND_MODE_LIGHTEN);
     }
     else if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else if (attr->name() == SVGNames::in2Attr)
         setIn2BaseValue(value);
     else
@@ -81,7 +81,7 @@ KCanvasFEBlend *SVGFEBlendElement::filterEffect() const
     if (!m_filterEffect)
         return 0;
     m_filterEffect->setBlendMode((KCBlendModeType)(mode()-1));
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     m_filterEffect->setIn2(in2());
     setStandardAttributes(m_filterEffect);
     return m_filterEffect;
index 023dde2..1965804 100644 (file)
@@ -33,6 +33,15 @@ namespace WebCore
     class SVGFEBlendElement : public SVGFilterPrimitiveStandardAttributes
     {
     public:
+        enum SVGBlendModeType {
+            SVG_FEBLEND_MODE_UNKNOWN  = 0,
+            SVG_FEBLEND_MODE_NORMAL   = 1,
+            SVG_FEBLEND_MODE_MULTIPLY = 2,
+            SVG_FEBLEND_MODE_SCREEN   = 3,
+            SVG_FEBLEND_MODE_DARKEN   = 4,
+            SVG_FEBLEND_MODE_LIGHTEN  = 5
+        };
+
         SVGFEBlendElement(const QualifiedName&, Document*);
         virtual ~SVGFEBlendElement();
 
@@ -46,7 +55,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFEBlendElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFEBlendElement, String, String, In1, in1)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEBlendElement, String, String, In2, in2)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEBlendElement, int, int, Mode, mode)
         mutable KCanvasFEBlend *m_filterEffect;
index 1bea3cd..062297b 100644 (file)
@@ -53,7 +53,7 @@ SVGFEColorMatrixElement::~SVGFEColorMatrixElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFEColorMatrixElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEColorMatrixElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEColorMatrixElement, int, Enumeration, enumeration, Type, type, SVGNames::typeAttr.localName(), m_type)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEColorMatrixElement, SVGNumberList*, NumberList, numberList, Values, values, SVGNames::valuesAttr.localName(), m_values.get())
 
@@ -71,7 +71,7 @@ void SVGFEColorMatrixElement::parseMappedAttribute(MappedAttribute *attr)
             setTypeBaseValue(SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA);
     }
     else if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else if (attr->name() == SVGNames::valuesAttr)
         valuesBaseValue()->parse(value.deprecatedString());
     else
@@ -85,13 +85,15 @@ KCanvasFEColorMatrix *SVGFEColorMatrixElement::filterEffect() const
     if (!m_filterEffect)
         return 0;
         
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     setStandardAttributes(m_filterEffect);
     DeprecatedValueList<float> _values;
     SVGNumberList *numbers = values();
+
+    ExceptionCode ec = 0;
     unsigned int nr = numbers->numberOfItems();
     for(unsigned int i = 0;i < nr;i++)
-        _values.append(numbers->getItem(i));
+        _values.append(numbers->getItem(i, ec));
     m_filterEffect->setValues(_values);
     m_filterEffect->setType((KCColorMatrixType)(type() - 1));
     
index d4c359b..7df7c0a 100644 (file)
@@ -34,6 +34,14 @@ namespace WebCore
     class SVGFEColorMatrixElement : public SVGFilterPrimitiveStandardAttributes
     {
     public:
+        enum SVGColorMatrixType {
+            SVG_FECOLORMATRIX_TYPE_UNKNOWN          = 0,
+            SVG_FECOLORMATRIX_TYPE_MATRIX           = 1,
+            SVG_FECOLORMATRIX_TYPE_SATURATE         = 2,
+            SVG_FECOLORMATRIX_TYPE_HUEROTATE        = 3,
+            SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4
+        };
+
         SVGFEColorMatrixElement(const QualifiedName&, Document*);
         virtual ~SVGFEColorMatrixElement();
 
@@ -47,7 +55,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFEColorMatrixElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFEColorMatrixElement, String, String, In1, in1)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEColorMatrixElement, int, int, Type, type)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEColorMatrixElement, SVGNumberList*, RefPtr<SVGNumberList>, Values, values)
         mutable KCanvasFEColorMatrix *m_filterEffect;
index f67d067..b68e676 100644 (file)
@@ -50,13 +50,13 @@ SVGFEComponentTransferElement::~SVGFEComponentTransferElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFEComponentTransferElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEComponentTransferElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 
 void SVGFEComponentTransferElement::parseMappedAttribute(MappedAttribute *attr)
 {
     const String& value = attr->value();
     if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else
         SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
 }
@@ -68,7 +68,7 @@ KCanvasFEComponentTransfer *SVGFEComponentTransferElement::filterEffect() const
     if (!m_filterEffect)
         return 0;
     
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     setStandardAttributes(m_filterEffect);
     
     for (Node *n = firstChild(); n != 0; n = n->nextSibling()) {
index 284ce61..7a817c7 100644 (file)
@@ -46,7 +46,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFEComponentTransferElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFEComponentTransferElement, String, String, In1, in1)
         mutable KCanvasFEComponentTransfer *m_filterEffect;
     };
 
index 00be6ba..68eee26 100644 (file)
@@ -53,7 +53,7 @@ SVGFECompositeElement::~SVGFECompositeElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFECompositeElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFECompositeElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFECompositeElement, String, String, string, In2, in2, SVGNames::in2Attr.localName(), m_in2)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFECompositeElement, int, Enumeration, enumeration, _operator, _operator, SVGNames::operatorAttr.localName(), m__operator)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFECompositeElement, double, Number, number, K1, k1, SVGNames::k1Attr.localName(), m_k1)
@@ -80,7 +80,7 @@ void SVGFECompositeElement::parseMappedAttribute(MappedAttribute *attr)
             set_operatorBaseValue(SVG_FECOMPOSITE_OPERATOR_ARITHMETIC);
     }
     else if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else if (attr->name() == SVGNames::in2Attr)
         setIn2BaseValue(value);
     else if (attr->name() == SVGNames::k1Attr)
@@ -102,7 +102,7 @@ KCanvasFEComposite *SVGFECompositeElement::filterEffect() const
     if (!m_filterEffect)
         return 0;
     m_filterEffect->setOperation((KCCompositeOperationType)(_operator() - 1));
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     m_filterEffect->setIn2(in2());
     setStandardAttributes(m_filterEffect);
     m_filterEffect->setK1(k1());
index 0bda4ae..dee9f5a 100644 (file)
@@ -33,6 +33,16 @@ namespace WebCore
     class SVGFECompositeElement : public SVGFilterPrimitiveStandardAttributes
     {
     public:
+        enum SVGCompositeOperators {
+            SVG_FECOMPOSITE_OPERATOR_UNKNOWN    = 0,
+            SVG_FECOMPOSITE_OPERATOR_OVER       = 1,
+            SVG_FECOMPOSITE_OPERATOR_IN         = 2,
+            SVG_FECOMPOSITE_OPERATOR_OUT        = 3,
+            SVG_FECOMPOSITE_OPERATOR_ATOP       = 4,
+            SVG_FECOMPOSITE_OPERATOR_XOR        = 5,
+            SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6
+        };
+
         SVGFECompositeElement(const QualifiedName&, Document*);
         virtual ~SVGFECompositeElement();
 
@@ -46,7 +56,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFECompositeElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFECompositeElement, String, String, In1, in1)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFECompositeElement, String, String, In2, in2)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFECompositeElement, int, int, _operator, _operator)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFECompositeElement, double, double, K1, k1)
index 095d21b..4e60ee4 100644 (file)
@@ -52,7 +52,7 @@ SVGFEDiffuseLightingElement::~SVGFEDiffuseLightingElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFEDiffuseLightingElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEDiffuseLightingElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEDiffuseLightingElement, double, Number, number, DiffuseConstant, diffuseConstant, SVGNames::diffuseConstantAttr.localName(), m_diffuseConstant)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEDiffuseLightingElement, double, Number, number, SurfaceScale, surfaceScale, SVGNames::surfaceScaleAttr.localName(), m_surfaceScale)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEDiffuseLightingElement, double, Number, number, KernelUnitLengthX, kernelUnitLengthX, "kernelUnitLengthX", m_kernelUnitLengthX)
@@ -63,7 +63,7 @@ void SVGFEDiffuseLightingElement::parseMappedAttribute(MappedAttribute *attr)
 {
     const String& value = attr->value();
     if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else if (attr->name() == SVGNames::surfaceScaleAttr)
         setSurfaceScaleBaseValue(value.deprecatedString().toDouble());
     else if (attr->name() == SVGNames::diffuseConstantAttr)
@@ -81,11 +81,11 @@ void SVGFEDiffuseLightingElement::parseMappedAttribute(MappedAttribute *attr)
         SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
 }
 
-KCanvasFEDiffuseLighting *SVGFEDiffuseLightingElement::filterEffect() const
+KCanvasFilterEffect *SVGFEDiffuseLightingElement::filterEffect() const
 {
     if (!m_filterEffect) 
         m_filterEffect = static_cast<KCanvasFEDiffuseLighting *>(renderingDevice()->createFilterEffect(FE_DIFFUSE_LIGHTING));
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     setStandardAttributes(m_filterEffect);
     m_filterEffect->setDiffuseConstant((diffuseConstant()));
     m_filterEffect->setSurfaceScale((surfaceScale()));
index 6c49125..cbf15d6 100644 (file)
@@ -39,13 +39,13 @@ namespace WebCore {
         // Derived from: 'Element'
         virtual void parseMappedAttribute(MappedAttribute *attr);
 
-        virtual KCanvasFEDiffuseLighting *filterEffect() const;
+        virtual KCanvasFilterEffect *filterEffect() const;
 
     protected:
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFEDiffuseLightingElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFEDiffuseLightingElement, String, String, In1, in1)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEDiffuseLightingElement, double, double, DiffuseConstant, diffuseConstant)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEDiffuseLightingElement, double, double, SurfaceScale, surfaceScale)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEDiffuseLightingElement, SVGColor*, RefPtr<SVGColor>, LightingColor, lightingColor)
index 77079cc..07bcc80 100644 (file)
@@ -48,7 +48,7 @@ SVGFEDisplacementMapElement::~SVGFEDisplacementMapElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFEDisplacementMapElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEDisplacementMapElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEDisplacementMapElement, String, String, string, In2, in2, SVGNames::in2Attr.localName(), m_in2)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEDisplacementMapElement, int, Enumeration, enumeration, XChannelSelector, xChannelSelector, SVGNames::xChannelSelectorAttr.localName(), m_xChannelSelector)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEDisplacementMapElement, int, Enumeration, enumeration, YChannelSelector, yChannelSelector, SVGNames::yChannelSelectorAttr.localName(), m_yChannelSelector)
@@ -76,7 +76,7 @@ void SVGFEDisplacementMapElement::parseMappedAttribute(MappedAttribute* attr)
     else if (attr->name() == SVGNames::yChannelSelectorAttr)
         setYChannelSelectorBaseValue(stringToChannel(value));
     else if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else if (attr->name() == SVGNames::in2Attr)
         setIn2BaseValue(value);
     else if (attr->name() == SVGNames::scaleAttr)
@@ -93,7 +93,7 @@ KCanvasFEDisplacementMap* SVGFEDisplacementMapElement::filterEffect() const
         return 0;
     m_filterEffect->setXChannelSelector((KCChannelSelectorType)(xChannelSelector()));
     m_filterEffect->setYChannelSelector((KCChannelSelectorType)(yChannelSelector()));
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     m_filterEffect->setIn2(in2());
     m_filterEffect->setScale(scale());
     setStandardAttributes(m_filterEffect);
index 40320fc..01515da 100644 (file)
@@ -28,6 +28,14 @@ namespace WebCore {
     
     class SVGFEDisplacementMapElement : public SVGFilterPrimitiveStandardAttributes {
     public:
+        enum SVGChannelSelectors {
+            SVG_CHANNEL_UNKNOWN = 0,
+            SVG_CHANNEL_R       = 1,
+            SVG_CHANNEL_G       = 2,
+            SVG_CHANNEL_B       = 3,
+            SVG_CHANNEL_A       = 4
+        };
+
         SVGFEDisplacementMapElement(const QualifiedName& tagName, Document*);
         virtual ~SVGFEDisplacementMapElement();
         
@@ -43,7 +51,7 @@ namespace WebCore {
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFEDisplacementMapElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFEDisplacementMapElement, String, String, In1, in1)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEDisplacementMapElement, String, String, In2, in2)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEDisplacementMapElement, int, int, XChannelSelector, xChannelSelector)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEDisplacementMapElement, int, int, YChannelSelector, yChannelSelector)
index d90d9a9..731034e 100644 (file)
@@ -45,13 +45,13 @@ SVGFEFloodElement::~SVGFEFloodElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFEFloodElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEFloodElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 
 void SVGFEFloodElement::parseMappedAttribute(MappedAttribute *attr)
 {
     const String& value = attr->value();
     if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else
         SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
 }
@@ -62,7 +62,7 @@ KCanvasFEFlood *SVGFEFloodElement::filterEffect() const
         m_filterEffect = static_cast<KCanvasFEFlood *>(renderingDevice()->createFilterEffect(FE_FLOOD));
     if (!m_filterEffect)
         return 0;
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     setStandardAttributes(m_filterEffect);
     RenderStyle *filterStyle = const_cast<SVGFEFloodElement *>(this)->styleForRenderer(parentNode()->renderer());
     const SVGRenderStyle *svgStyle = filterStyle->svgStyle();
index f429f80..6cb1154 100644 (file)
@@ -46,7 +46,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFEFloodElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFEFloodElement, String, String, In1, in1)
         mutable KCanvasFEFlood *m_filterEffect;
     };
 
index bb74787..7711e18 100644 (file)
@@ -51,7 +51,7 @@ SVGFEGaussianBlurElement::~SVGFEGaussianBlurElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFEGaussianBlurElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEGaussianBlurElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEGaussianBlurElement, double, Number, number, StdDeviationX, stdDeviationX, "stdDeviationX", m_stdDeviationX)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEGaussianBlurElement, double, Number, number, StdDeviationY, stdDeviationY, "stdDeviationY", m_stdDeviationY)
 
@@ -71,7 +71,7 @@ void SVGFEGaussianBlurElement::parseMappedAttribute(MappedAttribute *attr)
             setStdDeviationYBaseValue(numbers[1].toDouble());
     }
     else if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else
         SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
 }
@@ -82,7 +82,7 @@ KCanvasFEGaussianBlur *SVGFEGaussianBlurElement::filterEffect() const
         m_filterEffect = static_cast<KCanvasFEGaussianBlur *>(renderingDevice()->createFilterEffect(FE_GAUSSIAN_BLUR));
     if (!m_filterEffect)
         return 0;
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     setStandardAttributes(m_filterEffect);
     m_filterEffect->setStdDeviationX(stdDeviationX());
     m_filterEffect->setStdDeviationY(stdDeviationY());
index bbd987b..6e1a45f 100644 (file)
@@ -48,7 +48,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFEGaussianBlurElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFEGaussianBlurElement, String, String, In1, in1)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEGaussianBlurElement, double, double, StdDeviationX, stdDeviationX)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEGaussianBlurElement, double, double, StdDeviationY, stdDeviationY)
         mutable KCanvasFEGaussianBlur *m_filterEffect;
index cf03d19..9a360e9 100644 (file)
@@ -59,7 +59,7 @@ KCanvasFEMerge *SVGFEMergeElement::filterEffect() const
     Vector<String> mergeInputs;
     for (Node* n = firstChild(); n != 0; n = n->nextSibling()) {
         if (n->hasTagName(SVGNames::feMergeNodeTag))
-            mergeInputs.append(static_cast<SVGFEMergeNodeElement *>(n)->in());
+            mergeInputs.append(static_cast<SVGFEMergeNodeElement *>(n)->in1());
     }
 
     m_filterEffect->setMergeInputs(mergeInputs);
index fd4b4fb..1b558cb 100644 (file)
@@ -37,13 +37,13 @@ SVGFEMergeNodeElement::~SVGFEMergeNodeElement()
 {
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFEMergeNodeElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEMergeNodeElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 
 void SVGFEMergeNodeElement::parseMappedAttribute(MappedAttribute *attr)
 {
     const String& value = attr->value();
     if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else
         SVGElement::parseMappedAttribute(attr);
 }
index 9df0412..c5d2738 100644 (file)
@@ -43,7 +43,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFEMergeNodeElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFEMergeNodeElement, String, String, In1, in1)
     };
 
 } // namespace WebCore
index 2878a5a..581c417 100644 (file)
@@ -50,7 +50,7 @@ SVGFEOffsetElement::~SVGFEOffsetElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFEOffsetElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFEOffsetElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEOffsetElement, double, Number, number, Dx, dx, SVGNames::dxAttr.localName(), m_dx)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFEOffsetElement, double, Number, number, Dy, dy, SVGNames::dyAttr.localName(), m_dy)
 
@@ -62,7 +62,7 @@ void SVGFEOffsetElement::parseMappedAttribute(MappedAttribute *attr)
     else if (attr->name() == SVGNames::dyAttr)
         setDyBaseValue(value.deprecatedString().toDouble());
     else if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else
         SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
 }
@@ -73,7 +73,7 @@ KCanvasFEOffset *SVGFEOffsetElement::filterEffect() const
         m_filterEffect = static_cast<KCanvasFEOffset *>(renderingDevice()->createFilterEffect(FE_OFFSET));
     if (!m_filterEffect)
         return 0;
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     setStandardAttributes(m_filterEffect);
     m_filterEffect->setDx(dx());
     m_filterEffect->setDy(dy());
index 9d3b845..257018b 100644 (file)
@@ -46,7 +46,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFEOffsetElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFEOffsetElement, String, String, In1, in1)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEOffsetElement, double, double, Dx, dx)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFEOffsetElement, double, double, Dy, dy)
         mutable KCanvasFEOffset *m_filterEffect;
index 51ec411..921af40 100644 (file)
@@ -55,7 +55,7 @@ SVGFESpecularLightingElement::~SVGFESpecularLightingElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFESpecularLightingElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFESpecularLightingElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFESpecularLightingElement, double, Number, number, SpecularConstant, specularConstant, SVGNames::specularConstantAttr.localName(), m_specularConstant)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFESpecularLightingElement, double, Number, number, SpecularExponent, specularExponent, SVGNames::specularExponentAttr.localName(), m_specularExponent)
 ANIMATED_PROPERTY_DEFINITIONS(SVGFESpecularLightingElement, double, Number, number, SurfaceScale, surfaceScale, SVGNames::surfaceScaleAttr.localName(), m_surfaceScale)
@@ -67,7 +67,7 @@ void SVGFESpecularLightingElement::parseMappedAttribute(MappedAttribute *attr)
 {    
     const String& value = attr->value();
     if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else if (attr->name() == SVGNames::surfaceScaleAttr)
         setSurfaceScaleBaseValue(value.deprecatedString().toDouble());
     else if (attr->name() == SVGNames::specularConstantAttr)
@@ -91,7 +91,7 @@ KCanvasFESpecularLighting *SVGFESpecularLightingElement::filterEffect() const
 {
     if (!m_filterEffect) 
         m_filterEffect = static_cast<KCanvasFESpecularLighting *>(renderingDevice()->createFilterEffect(FE_SPECULAR_LIGHTING));
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     setStandardAttributes(m_filterEffect);
     m_filterEffect->setSpecularConstant((specularConstant()));
     m_filterEffect->setSpecularExponent((specularExponent()));
index bd756a7..0091c55 100644 (file)
@@ -46,7 +46,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFESpecularLightingElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFESpecularLightingElement, String, String, In1, in1)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFESpecularLightingElement, double, double, SpecularConstant, specularConstant)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFESpecularLightingElement, double, double, SpecularExponent, specularExponent)
         ANIMATED_PROPERTY_DECLARATIONS(SVGFESpecularLightingElement, double, double, SurfaceScale, surfaceScale)
index 66d1697..9f7ee14 100644 (file)
@@ -44,13 +44,13 @@ SVGFETileElement::~SVGFETileElement()
     delete m_filterEffect;
 }
 
-ANIMATED_PROPERTY_DEFINITIONS(SVGFETileElement, String, String, string, In, in, SVGNames::inAttr.localName(), m_in)
+ANIMATED_PROPERTY_DEFINITIONS(SVGFETileElement, String, String, string, In1, in1, SVGNames::inAttr.localName(), m_in1)
 
 void SVGFETileElement::parseMappedAttribute(MappedAttribute *attr)
 {
     const String& value = attr->value();
     if (attr->name() == SVGNames::inAttr)
-        setInBaseValue(value);
+        setIn1BaseValue(value);
     else
         SVGFilterPrimitiveStandardAttributes::parseMappedAttribute(attr);
 }
@@ -61,7 +61,7 @@ KCanvasFETile *SVGFETileElement::filterEffect() const
         m_filterEffect = static_cast<KCanvasFETile *>(renderingDevice()->createFilterEffect(FE_TILE));
     if (!m_filterEffect)
         return 0;
-    m_filterEffect->setIn(in());
+    m_filterEffect->setIn(in1());
     setStandardAttributes(m_filterEffect);
     return m_filterEffect;
 }
index 9d63003..a854c28 100644 (file)
@@ -46,7 +46,7 @@ namespace WebCore
         virtual const SVGElement* contextElement() const { return this; }
 
     private:
-        ANIMATED_PROPERTY_DECLARATIONS(SVGFETileElement, String, String, In, in)
+        ANIMATED_PROPERTY_DECLARATIONS(SVGFETileElement, String, String, In1, in1)
         mutable KCanvasFETile *m_filterEffect;
     };
 
index bbbb61f..17bb627 100644 (file)
@@ -33,6 +33,18 @@ namespace WebCore
     class SVGFETurbulenceElement : public SVGFilterPrimitiveStandardAttributes
     {
     public:
+        enum SVGTurbulenceType {
+            SVG_TURBULENCE_TYPE_UNKNOWN      = 0,
+            SVG_TURBULENCE_TYPE_FRACTALNOISE = 1,
+            SVG_TURBULENCE_TYPE_TURBULENCE   = 2
+        };
+
+        enum SVGStitchOptions {
+            SVG_STITCHTYPE_UNKNOWN  = 0,
+            SVG_STITCHTYPE_STITCH   = 1,
+            SVG_STITCHTYPE_NOSTITCH = 2
+        };
+
         SVGFETurbulenceElement(const QualifiedName&, Document*);
         virtual ~SVGFETurbulenceElement();
 
index 8acb032..87a9a82 100644 (file)
@@ -27,7 +27,7 @@
 #include <kcanvas/KCanvasResources.h>
 #include <kcanvas/device/KRenderingDevice.h>
 #include <kcanvas/KCanvasFilters.h>
-#include "ksvg.h"
+#include "SVGUnitTypes.h"
 #include "SVGNames.h"
 #include "SVGHelper.h"
 #include "SVGFilterElement.h"
@@ -42,8 +42,8 @@ SVGFilterElement::SVGFilterElement(const QualifiedName& tagName, Document *doc)
     , SVGURIReference()
     , SVGLangSpace()
     , SVGExternalResourcesRequired()
-    , m_filterUnits(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
-    , m_primitiveUnits(SVG_UNIT_TYPE_USERSPACEONUSE)
+    , m_filterUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
+    , m_primitiveUnits(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE)
     , m_x(new SVGLength(this, LM_WIDTH, viewportElement()))
     , m_y(new SVGLength(this, LM_HEIGHT, viewportElement()))
     , m_width(new SVGLength(this, LM_WIDTH, viewportElement()))
@@ -87,16 +87,16 @@ void SVGFilterElement::parseMappedAttribute(MappedAttribute *attr)
     if (attr->name() == SVGNames::filterUnitsAttr)
     {
         if(value == "userSpaceOnUse")
-            setFilterUnitsBaseValue(SVG_UNIT_TYPE_USERSPACEONUSE);
+            setFilterUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE);
         else if(value == "objectBoundingBox")
-            setFilterUnitsBaseValue(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            setFilterUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
     }
     else if (attr->name() == SVGNames::primitiveUnitsAttr)
     {
         if(value == "userSpaceOnUse")
-            setPrimitiveUnitsBaseValue(SVG_UNIT_TYPE_USERSPACEONUSE);
+            setPrimitiveUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE);
         else if(value == "objectBoundingBox")
-            setPrimitiveUnitsBaseValue(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            setPrimitiveUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
     }
     else if (attr->name() == SVGNames::xAttr)
         xBaseValue()->setValueAsString(value);
@@ -124,7 +124,7 @@ KCanvasFilter *SVGFilterElement::canvasResource()
     if (!m_filter)
         m_filter = static_cast<KCanvasFilter *>(renderingDevice()->createResource(RS_FILTER));
 
-    bool filterBBoxMode = filterUnits() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
+    bool filterBBoxMode = filterUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
     m_filter->setFilterBoundingBoxMode(filterBBoxMode);
     
     x()->setBboxRelative(filterBBoxMode);
@@ -133,7 +133,7 @@ KCanvasFilter *SVGFilterElement::canvasResource()
     height()->setBboxRelative(filterBBoxMode);
     m_filter->setFilterRect(FloatRect(x()->value(), y()->value(), width()->value(), height()->value()));
     
-    bool primitiveBBoxMode = primitiveUnits() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
+    bool primitiveBBoxMode = primitiveUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
     m_filter->setEffectBoundingBoxMode(primitiveBBoxMode);
     // FIXME: When does this info get passed to the filters elements?
 
index 6809b9b..8dd1893 100644 (file)
@@ -25,7 +25,7 @@
 #include "Attr.h"
 #include <wtf/Assertions.h>
 
-#include "ksvg.h"
+#include "SVGUnitTypes.h"
 #include "SVGNames.h"
 #include "SVGFilterPrimitiveStandardAttributes.h"
 #include "SVGLength.h"
@@ -82,7 +82,7 @@ void SVGFilterPrimitiveStandardAttributes::setStandardAttributes(KCanvasFilterEf
         return;
     bool bbox = false;
     if (parentNode() && parentNode()->hasTagName(SVGNames::filterTag))
-        bbox = static_cast<SVGFilterElement *>(parentNode())->primitiveUnits() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
+        bbox = static_cast<SVGFilterElement *>(parentNode())->primitiveUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
 
     x()->setBboxRelative(bbox);
     y()->setBboxRelative(bbox);
index dc5b1a7..9b513c0 100644 (file)
@@ -35,7 +35,7 @@
 #include "SVGTransformList.h"
 #include "SVGTransformable.h"
 #include "cssstyleselector.h"
-#include "ksvg.h"
+#include "SVGUnitTypes.h"
 #include <kcanvas/device/KRenderingDevice.h>
 #include <kcanvas/device/KRenderingPaintServerGradient.h>
 
@@ -46,7 +46,7 @@ SVGGradientElement::SVGGradientElement(const QualifiedName& tagName, Document *d
     , SVGURIReference()
     , SVGExternalResourcesRequired()
     , m_spreadMethod(0)
-    , m_gradientUnits(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
+    , m_gradientUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
     , m_gradientTransform(new SVGTransformList)
 {
     m_resource = 0;
@@ -66,9 +66,9 @@ void SVGGradientElement::parseMappedAttribute(MappedAttribute *attr)
     const String& value = attr->value();
     if (attr->name() == SVGNames::gradientUnitsAttr) {
         if(value == "userSpaceOnUse")
-            setGradientUnitsBaseValue(SVG_UNIT_TYPE_USERSPACEONUSE);
+            setGradientUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE);
         else if(value == "objectBoundingBox")
-            setGradientUnitsBaseValue(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            setGradientUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
     } else if (attr->name() == SVGNames::gradientTransformAttr) {
         SVGTransformList *gradientTransforms = gradientTransformBaseValue();
         SVGTransformable::parseTransformAttribute(gradientTransforms, attr->value());
index 6a955db..00c4a13 100644 (file)
@@ -39,6 +39,13 @@ namespace WebCore {
                                    public KCanvasResourceListener
     {
     public:
+        enum SVGGradientType {
+            SVG_SPREADMETHOD_UNKNOWN = 0,
+            SVG_SPREADMETHOD_PAD     = 1,
+            SVG_SPREADMETHOD_REFLECT = 2,
+            SVG_SPREADMETHOD_REPEAT  = 3
+        };
+
         SVGGradientElement(const QualifiedName&, Document*);
         virtual ~SVGGradientElement();
 
index 0c83b2f..fddb065 100644 (file)
@@ -80,18 +80,15 @@ float SVGHelper::PercentageOfViewport(float value, const SVGElement* viewportEle
 void SVGHelper::ParseSeperatedList(SVGStringList *list, const DeprecatedString &data, const DeprecatedChar &delimiter)
 {
     // TODO : more error checking/reporting
-    list->clear();
+    ExceptionCode ec = 0;
+    list->clear(ec);
 
     DeprecatedStringList substrings = DeprecatedStringList::split(delimiter, data);
     
     DeprecatedStringList::ConstIterator it = substrings.begin();
     DeprecatedStringList::ConstIterator end = substrings.end();
-    for (; it != end; ++it) {
-        StringImpl* string = new StringImpl(*it);
-        string->ref();
-
-        list->appendItem(string);
-    }
+    for (; it != end; ++it)
+        list->appendItem(String(*it), ec);
 }
 
 }
index d1532ed..0fb2124 100644 (file)
@@ -43,12 +43,14 @@ SVGLengthList::~SVGLengthList()
 
 void SVGLengthList::parse(const DeprecatedString& value, const SVGStyledElement* context, LengthMode mode)
 {
+    ExceptionCode ec = 0;
+
     DeprecatedStringList lengths = DeprecatedStringList::split(' ', value);
     for (unsigned int i = 0; i < lengths.count(); i++) {
         SVGLength* length = new SVGLength(context, mode);
         String str(lengths[i]);
         length->setValueAsString(str);
-        appendItem(length);
+        appendItem(length, ec);
     }
 }
 
index 42af40a..684907c 100644 (file)
@@ -24,7 +24,7 @@
 #ifdef SVG_SUPPORT
 #include "Attr.h"
 
-#include "ksvg.h"
+#include "SVGUnitTypes.h"
 #include "SVGNames.h"
 #include "SVGHelper.h"
 #include "SVGMatrix.h"
@@ -79,7 +79,7 @@ void SVGLinearGradientElement::buildGradient(KRenderingPaintServerGradient *_gra
 {
     rebuildStops(); // rebuild stops before possibly importing them from any referenced gradient.
 
-    bool bbox = (gradientUnits() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+    bool bbox = (gradientUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
     
     x1()->setBboxRelative(bbox);
     y1()->setBboxRelative(bbox);
index 32d1347..e29d006 100644 (file)
 
 #include "Shared.h"
 #include "FloatPoint.h"
+#include "ExceptionCode.h"
 #include "PlatformString.h"
 
 namespace WebCore {
 
-    // TODO: We will probably need to pass ExceptionCodes around here...
-
     template<class Item>
     class SVGListBase : public Shared<SVGListBase<Item> >
     {
@@ -45,12 +44,12 @@ namespace WebCore {
         virtual Item nullItem() const = 0;
 
         unsigned int numberOfItems() const { return m_vector.size(); }
-        void clear() { m_vector.clear(); }
+        void clear(ExceptionCode &) { m_vector.clear(); }
 
-        Item initialize(Item newItem)
+        Item initialize(Item newItem, ExceptionCode& ec)
         {
-            clear();
-            return appendItem(newItem);
+            clear(ec);
+            return appendItem(newItem, ec);
         }
 
         Item getFirst() const
@@ -69,44 +68,52 @@ namespace WebCore {
             return m_vector.last();
         }
 
-        Item getItem(unsigned int index)
+        Item getItem(unsigned int index, ExceptionCode& ec)
         {
-            if (m_vector.size() < index)
+            if (m_vector.size() < index) {
+                ec = INDEX_SIZE_ERR;
                 return nullItem();
+            }
 
             return m_vector.at(index);
         }
 
-        const Item getItem(unsigned int index) const
+        const Item getItem(unsigned int index, ExceptionCode& ec) const
         {
-            if (m_vector.size() < index)
+            if (m_vector.size() < index) {
+                ec = INDEX_SIZE_ERR;
                 return nullItem();
+            }
 
             return m_vector.at(index);
         }
 
-        Item insertItemBefore(Item newItem, unsigned int index)
+        Item insertItemBefore(Item newItem, unsigned int index, ExceptionCode&)
         {
             m_vector.insert(index, newItem);
             return newItem;
         }
 
-        Item replaceItem(Item newItem, unsigned int index)
+        Item replaceItem(Item newItem, unsigned int index, ExceptionCode& ec)
         {
-            if (m_vector.size() < index)
+            if (m_vector.size() < index) {
+                ec = INDEX_SIZE_ERR;
                 return nullItem();
+            }
 
             m_vector.at(index) = newItem;
             return newItem;
         }
 
-        Item removeItem(unsigned int index)
+        Item removeItem(unsigned int index, ExceptionCode& ec)
         {
-            if (m_vector.size() < index)
+            if (m_vector.size() < index) {
+                ec = INDEX_SIZE_ERR;
                 return nullItem();
+            }
 
             Item item = m_vector.at(index);
-            remove(index);
+            removeItem(index, ec);
             return item;
         }
 
@@ -115,7 +122,7 @@ namespace WebCore {
             m_vector.remove(item);
         }
 
-        Item appendItem(Item newItem)
+        Item appendItem(Item newItem, ExceptionCode&)
         {
             m_vector.append(newItem);
             return newItem;
index b2c2636..828ce08 100644 (file)
@@ -126,13 +126,7 @@ SVGMatrix *SVGLocatable::getScreenCTM(const SVGElement *element)
 
     return ctm;
 }
-/*
-SVGMatrix *SVGLocatable::getTransformToElement(SVGElement *) const
-{
-    // TODO!
-    return 0;
-}
-*/
-// vim:ts=4:noet
+
 #endif // SVG_SUPPORT
 
+// vim:ts=4:noet
index d5b9b02..dd3d0d1 100644 (file)
 
 #ifndef SVGLocatable_H
 #define SVGLocatable_H
+
 #ifdef SVG_SUPPORT
 
+#include "ExceptionCode.h"
+
 namespace WebCore {
 
     class FloatRect;
@@ -43,7 +46,7 @@ namespace WebCore {
         virtual FloatRect getBBox() const = 0;
         virtual SVGMatrix* getCTM() const = 0;
         virtual SVGMatrix* getScreenCTM() const = 0;
-        virtual SVGMatrix* getTransformToElement(SVGElement*) const = 0;
+        virtual SVGMatrix* getTransformToElement(SVGElement*, ExceptionCode&) const = 0;
 
     protected:
         static SVGElement* nearestViewportElement(const SVGStyledElement*);
index 89d61a3..aa4457c 100644 (file)
@@ -42,6 +42,18 @@ namespace WebCore
                                  public SVGFitToViewBox
     {
     public:
+        enum SVGMarkerUnitsType {
+            SVG_MARKERUNITS_UNKNOWN           = 0,
+            SVG_MARKERUNITS_USERSPACEONUSE    = 1,
+            SVG_MARKERUNITS_STROKEWIDTH       = 2
+        };
+
+        enum SVGMarkerOrientType {
+            SVG_MARKER_ORIENT_UNKNOWN    = 0,
+            SVG_MARKER_ORIENT_AUTO       = 1,
+            SVG_MARKER_ORIENT_ANGLE      = 2
+        };
+
         SVGMarkerElement(const QualifiedName&, Document*);
         virtual ~SVGMarkerElement();
 
index b67bbf4..c94a815 100644 (file)
@@ -42,9 +42,11 @@ SVGNumberList::~SVGNumberList()
 
 void SVGNumberList::parse(const DeprecatedString& value)
 {
+    ExceptionCode ec = 0;
+
     DeprecatedStringList numbers = DeprecatedStringList::split(' ', value);
     for (unsigned int i = 0; i < numbers.count(); i++)
-        appendItem(numbers[i].toDouble());
+        appendItem(numbers[i].toDouble(), ec);
 }
 
 // vim:ts=4:noet
index f2f8fd4..b764187 100644 (file)
@@ -33,7 +33,7 @@ SVGPaint::SVGPaint()
 {
 }
 
-SVGPaint::SVGPaint(StringImpl* uri)
+SVGPaint::SVGPaint(const String& uri)
     : SVGColor()
     , m_paintType(SVG_PAINTTYPE_URI)
 {
@@ -46,7 +46,7 @@ SVGPaint::SVGPaint(SVGPaintType paintType)
 {
 }
 
-SVGPaint::SVGPaint(SVGPaintType paintType, StringImpl* uri, StringImpl* rgbPaint, StringImpl*)
+SVGPaint::SVGPaint(SVGPaintType paintType, const String& uri, const String& rgbPaint, const String&)
     : SVGColor(rgbPaint)
     , m_paintType(paintType)
 {
@@ -57,17 +57,17 @@ SVGPaint::~SVGPaint()
 {
 }
 
-StringImpl* SVGPaint::uri() const
+String SVGPaint::uri() const
 {
-    return m_uri.impl();
+    return m_uri;
 }
 
-void SVGPaint::setUri(StringImpl* uri)
+void SVGPaint::setUri(const String& uri)
 {
     m_uri = uri;
 }
 
-void SVGPaint::setPaint(SVGPaintType paintType, StringImpl* uri, StringImpl* rgbPaint, StringImpl*)
+void SVGPaint::setPaint(SVGPaintType paintType, const String& uri, const String& rgbPaint, const String&, ExceptionCode&)
 {
     m_paintType = paintType;
 
index ac380bb..54eaf79 100644 (file)
@@ -31,18 +31,31 @@ namespace WebCore {
 
     class SVGPaint : public SVGColor {
     public:
+        enum SVGPaintType {
+            SVG_PAINTTYPE_UNKNOWN               = 0,
+            SVG_PAINTTYPE_RGBCOLOR              = 1,
+            SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR     = 2,
+            SVG_PAINTTYPE_NONE                  = 101,
+            SVG_PAINTTYPE_CURRENTCOLOR          = 102,
+            SVG_PAINTTYPE_URI_NONE              = 103,
+            SVG_PAINTTYPE_URI_CURRENTCOLOR      = 104,
+            SVG_PAINTTYPE_URI_RGBCOLOR          = 105,
+            SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106,
+            SVG_PAINTTYPE_URI                   = 107
+        };
+
         SVGPaint();
-        SVGPaint(StringImpl* uri);
+        SVGPaint(const String& uri);
         SVGPaint(SVGPaintType);
-        SVGPaint(SVGPaintType, StringImpl* uri, StringImpl* rgbPaint = 0, StringImpl* iccPaint = 0);
+        SVGPaint(SVGPaintType, const String& uri, const String& rgbPaint = String(), const String& iccPaint = String());
         virtual ~SVGPaint();
 
         // 'SVGPaint' functions
         SVGPaintType paintType() const { return m_paintType; }
-        StringImpl* uri() const;
+        String uri() const;
 
-        void setUri(StringImpl*);
-        void setPaint(SVGPaintType, StringImpl* uri, StringImpl* rgbPaint, StringImpl* iccPaint);
+        void setUri(const String&);
+        void setPaint(SVGPaintType, const String& uri, const String& rgbPaint, const String& iccPaint, ExceptionCode&);
 
         virtual String cssText() const;
 
index c58addb..aee3640 100644 (file)
@@ -260,85 +260,105 @@ SVGPathSegCurvetoQuadraticSmoothRel *SVGPathElement::createSVGPathSegCurvetoQuad
 
 void SVGPathElement::svgMoveTo(double x1, double y1, bool, bool abs)
 {
+    ExceptionCode ec = 0;
+
     if(abs)
-        pathSegList()->appendItem(createSVGPathSegMovetoAbs(x1, y1, this));
+        pathSegList()->appendItem(createSVGPathSegMovetoAbs(x1, y1, this), ec);
     else
-        pathSegList()->appendItem(createSVGPathSegMovetoRel(x1, y1, this));
+        pathSegList()->appendItem(createSVGPathSegMovetoRel(x1, y1, this), ec);
 }
 
 void SVGPathElement::svgLineTo(double x1, double y1, bool abs)
 {
+    ExceptionCode ec = 0;
+
     if(abs)
-        pathSegList()->appendItem(createSVGPathSegLinetoAbs(x1, y1, this));
+        pathSegList()->appendItem(createSVGPathSegLinetoAbs(x1, y1, this), ec);
     else
-        pathSegList()->appendItem(createSVGPathSegLinetoRel(x1, y1, this));
+        pathSegList()->appendItem(createSVGPathSegLinetoRel(x1, y1, this), ec);
 }
 
 void SVGPathElement::svgLineToHorizontal(double x, bool abs)
 {
+    ExceptionCode ec = 0;
+
     if(abs)
-        pathSegList()->appendItem(createSVGPathSegLinetoHorizontalAbs(x, this));
+        pathSegList()->appendItem(createSVGPathSegLinetoHorizontalAbs(x, this), ec);
     else
-        pathSegList()->appendItem(createSVGPathSegLinetoHorizontalRel(x, this));
+        pathSegList()->appendItem(createSVGPathSegLinetoHorizontalRel(x, this), ec);
 }
 
 void SVGPathElement::svgLineToVertical(double y, bool abs)
 {
+    ExceptionCode ec = 0;
+
     if(abs)
-        pathSegList()->appendItem(createSVGPathSegLinetoVerticalAbs(y, this));
+        pathSegList()->appendItem(createSVGPathSegLinetoVerticalAbs(y, this), ec);
     else
-        pathSegList()->appendItem(createSVGPathSegLinetoVerticalRel(y, this));
+        pathSegList()->appendItem(createSVGPathSegLinetoVerticalRel(y, this), ec);
 }
 
 void SVGPathElement::svgCurveToCubic(double x1, double y1, double x2, double y2, double x, double y, bool abs)
 {
+    ExceptionCode ec = 0;
+
     if(abs)
-        pathSegList()->appendItem(createSVGPathSegCurvetoCubicAbs(x, y, x1, y1, x2, y2, this));
+        pathSegList()->appendItem(createSVGPathSegCurvetoCubicAbs(x, y, x1, y1, x2, y2, this), ec);
     else
-        pathSegList()->appendItem(createSVGPathSegCurvetoCubicRel(x, y, x1, y1, x2, y2, this));
+        pathSegList()->appendItem(createSVGPathSegCurvetoCubicRel(x, y, x1, y1, x2, y2, this), ec);
 }
 
 void SVGPathElement::svgCurveToCubicSmooth(double x, double y, double x2, double y2, bool abs)
 {
+    ExceptionCode ec = 0;
+
     if(abs)
-        pathSegList()->appendItem(createSVGPathSegCurvetoCubicSmoothAbs(x2, y2, x, y, this));
+        pathSegList()->appendItem(createSVGPathSegCurvetoCubicSmoothAbs(x2, y2, x, y, this), ec);
     else
-        pathSegList()->appendItem(createSVGPathSegCurvetoCubicSmoothRel(x2, y2, x, y, this));
+        pathSegList()->appendItem(createSVGPathSegCurvetoCubicSmoothRel(x2, y2, x, y, this), ec);
 }
 
 void SVGPathElement::svgCurveToQuadratic(double x, double y, double x1, double y1, bool abs)
 {
+    ExceptionCode ec = 0;
+
     if(abs)
-        pathSegList()->appendItem(createSVGPathSegCurvetoQuadraticAbs(x1, y1, x, y, this));
+        pathSegList()->appendItem(createSVGPathSegCurvetoQuadraticAbs(x1, y1, x, y, this), ec);
     else
-        pathSegList()->appendItem(createSVGPathSegCurvetoQuadraticRel(x1, y1, x, y, this));
+        pathSegList()->appendItem(createSVGPathSegCurvetoQuadraticRel(x1, y1, x, y, this), ec);
 }
 
 void SVGPathElement::svgCurveToQuadraticSmooth(double x, double y, bool abs)
 {
+    ExceptionCode ec = 0;
+
     if(abs)
-        pathSegList()->appendItem(createSVGPathSegCurvetoQuadraticSmoothAbs(x, y, this));
+        pathSegList()->appendItem(createSVGPathSegCurvetoQuadraticSmoothAbs(x, y, this), ec);
     else
-        pathSegList()->appendItem(createSVGPathSegCurvetoQuadraticSmoothRel(x, y, this));
+        pathSegList()->appendItem(createSVGPathSegCurvetoQuadraticSmoothRel(x, y, this), ec);
 }
 
 void SVGPathElement::svgArcTo(double x, double y, double r1, double r2, double angle, bool largeArcFlag, bool sweepFlag, bool abs)
 {
+    ExceptionCode ec = 0;
+
     if(abs)
-        pathSegList()->appendItem(createSVGPathSegArcAbs(x, y, r1, r2, angle, largeArcFlag, sweepFlag, this));
+        pathSegList()->appendItem(createSVGPathSegArcAbs(x, y, r1, r2, angle, largeArcFlag, sweepFlag, this), ec);
     else
-        pathSegList()->appendItem(createSVGPathSegArcRel(x, y, r1, r2, angle, largeArcFlag, sweepFlag, this));
+        pathSegList()->appendItem(createSVGPathSegArcRel(x, y, r1, r2, angle, largeArcFlag, sweepFlag, this), ec);
 }
 
 void SVGPathElement::svgClosePath()
 {
-    pathSegList()->appendItem(createSVGPathSegClosePath());
+    ExceptionCode ec = 0;
+    pathSegList()->appendItem(createSVGPathSegClosePath(), ec);
 }
 
 void SVGPathElement::parseMappedAttribute(MappedAttribute *attr)
 {
     if (attr->name() == SVGNames::dAttr) {
-        pathSegList()->clear();
+        ExceptionCode ec;
+        pathSegList()->clear(ec);
         parseSVG(attr->value().deprecatedString(), true);
     } else {
         if(SVGTests::parseMappedAttribute(attr)) return;
@@ -380,9 +400,10 @@ Path SVGPathElement::toPathData() const
     if(len < 1)
         return pathData;
 
+    ExceptionCode ec = 0;
     for(int i = 0; i < len; ++i)
     {
-        SVGPathSeg *p = pathSegList()->getItem(i);
+        SVGPathSeg *p = pathSegList()->getItem(i, ec);
         switch(p->pathSegType())
         {
             case SVGPathSeg::PATHSEG_MOVETO_ABS:
index f0b6d9a..6b8d0c5 100644 (file)
@@ -40,7 +40,7 @@
 #include "SVGSVGElement.h"
 #include "SVGTransformList.h"
 #include "SVGTransformable.h"
-#include "ksvg.h"
+#include "SVGUnitTypes.h"
 #include <wtf/OwnPtr.h>
 #include <math.h>
 
@@ -58,8 +58,8 @@ SVGPatternElement::SVGPatternElement(const QualifiedName& tagName, Document *doc
     , m_y(new SVGLength(this, LM_HEIGHT, viewportElement()))
     , m_width(new SVGLength(this, LM_WIDTH, viewportElement()))
     , m_height(new SVGLength(this, LM_HEIGHT, viewportElement()))
-    , m_patternUnits(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
-    , m_patternContentUnits(SVG_UNIT_TYPE_USERSPACEONUSE)
+    , m_patternUnits(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
+    , m_patternContentUnits(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE)
     , m_patternTransform(new SVGTransformList)
 {
     m_tile = 0;
@@ -85,14 +85,14 @@ void SVGPatternElement::parseMappedAttribute(MappedAttribute *attr)
     const AtomicString &value = attr->value();
     if (attr->name() == SVGNames::patternUnitsAttr) {
         if (value == "userSpaceOnUse")
-            setPatternUnitsBaseValue(SVG_UNIT_TYPE_USERSPACEONUSE);
+            setPatternUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE);
         else if (value == "objectBoundingBox")
-            setPatternUnitsBaseValue(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            setPatternUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
     } else if (attr->name() == SVGNames::patternContentUnitsAttr) {
         if (value == "userSpaceOnUse")
-            setPatternContentUnitsBaseValue(SVG_UNIT_TYPE_USERSPACEONUSE);
+            setPatternContentUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE);
         else if (value == "objectBoundingBox")
-            setPatternContentUnitsBaseValue(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            setPatternContentUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
     } else if (attr->name() == SVGNames::patternTransformAttr) {
         SVGTransformList *patternTransforms = patternTransformBaseValue();
         SVGTransformable::parseTransformAttribute(patternTransforms, value);
@@ -152,17 +152,17 @@ void SVGPatternElement::fillAttributesFromReferencePattern(const SVGPatternEleme
     if (!hasAttribute(SVGNames::patternUnitsAttr)) {
         const AtomicString& value = target->getAttribute(SVGNames::patternUnitsAttr);
         if (value == "userSpaceOnUse")
-            setPatternUnitsBaseValue(SVG_UNIT_TYPE_USERSPACEONUSE);
+            setPatternUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE);
         else if (value == "objectBoundingBox")
-            setPatternUnitsBaseValue(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            setPatternUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
     }
     
     if (!hasAttribute(SVGNames::patternContentUnitsAttr)) {
         const AtomicString& value = target->getAttribute(SVGNames::patternContentUnitsAttr);
         if (value == "userSpaceOnUse")
-            setPatternContentUnitsBaseValue(SVG_UNIT_TYPE_USERSPACEONUSE);
+            setPatternContentUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_USERSPACEONUSE);
         else if (value == "objectBoundingBox")
-            setPatternContentUnitsBaseValue(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+            setPatternContentUnitsBaseValue(SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
     }
 
     if (!hasAttribute(SVGNames::patternTransformAttr))
@@ -175,7 +175,7 @@ void SVGPatternElement::drawPatternContentIntoTile(const SVGPatternElement* targ
     
     SVGStyledElement* activeElement = static_cast<SVGStyledElement*>(m_paintServer->activeClient()->element());
 
-    bool bbox = (patternUnits() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+    bool bbox = (patternUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
 
     const SVGStyledElement* savedContext = 0;
     if (bbox) {
@@ -219,7 +219,7 @@ void SVGPatternElement::drawPatternContentIntoTile(const SVGPatternElement* targ
         KCanvasMatrix savedMatrix = item->localTransform();
 
         const SVGStyledElement* savedContext = 0;
-        if (patternContentUnits() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
+        if (patternContentUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
         {
             if (activeElement)
                 savedContext = e->pushAttributeContext(activeElement);
index bda4a2d..27dac59 100644 (file)
@@ -54,7 +54,8 @@ SVGPointList *SVGPolyElement::animatedPoints() const
 void SVGPolyElement::parseMappedAttribute(MappedAttribute *attr)
 {
     if (attr->name() == SVGNames::pointsAttr) {
-        points()->clear();
+        ExceptionCode ec = 0;
+        points()->clear(ec);
         parsePoints(attr->value().deprecatedString());
     } else {
         if(SVGTests::parseMappedAttribute(attr)) return;
@@ -66,7 +67,8 @@ void SVGPolyElement::parseMappedAttribute(MappedAttribute *attr)
 
 void SVGPolyElement::svgPolyTo(double x1, double y1, int) const
 {
-    points()->appendItem(FloatPoint(x1, y1));
+    ExceptionCode ec = 0;
+    points()->appendItem(FloatPoint(x1, y1), ec);
 }
 
 void SVGPolyElement::notifyAttributeChange() const
@@ -77,20 +79,22 @@ void SVGPolyElement::notifyAttributeChange() const
 
     SVGStyledElement::notifyAttributeChange();
 
+    ExceptionCode ec = 0;
+
     // Spec: Additionally, the 'points' attribute on the original element
     // accessed via the XML DOM (e.g., using the getAttribute() method call)
     // will reflect any changes made to points.
     String _points;
     int len = points()->numberOfItems();
     for (int i = 0; i < len; ++i) {
-        FloatPoint p = points()->getItem(i);
+        FloatPoint p = points()->getItem(i, ec);
         _points += String::sprintf("%.6lg %.6lg ", p.x(), p.y());
     }
 
     String p("points");
     RefPtr<Attr> attr = const_cast<SVGPolyElement *>(this)->getAttributeNode(p.impl());
     if (attr) {
-        ExceptionCode ec;
+        ExceptionCode ec = 0;
         ignoreNotifications = true; // prevent recursion.
         attr->setValue(_points, ec);
         ignoreNotifications = false;
index 26881cd..dc0daab 100644 (file)
@@ -45,9 +45,10 @@ Path SVGPolygonElement::toPathData() const
     if(len < 1)
         return polyData;
     
-    polyData.moveTo(points()->getItem(0));
+    ExceptionCode ec = 0;
+    polyData.moveTo(points()->getItem(0, ec));
     for (int i = 1; i < len; ++i)
-        polyData.addLineTo(points()->getItem(i));
+        polyData.addLineTo(points()->getItem(i, ec));
 
     polyData.closeSubpath();
     return polyData;
index a9dd7c0..6913658 100644 (file)
@@ -45,9 +45,10 @@ Path SVGPolylineElement::toPathData() const
     if(len < 1)
         return polyData;
 
-    polyData.moveTo(points()->getItem(0));
+    ExceptionCode ec = 0;
+    polyData.moveTo(points()->getItem(0, ec));
     for (int i = 1; i < len; ++i)
-        polyData.addLineTo(points()->getItem(i));
+        polyData.addLineTo(points()->getItem(i, ec));
     
     return polyData;
 }
index 2bb1cbe..0f18fba 100644 (file)
@@ -24,7 +24,7 @@
 #ifdef SVG_SUPPORT
 #include "Attr.h"
 
-#include "ksvg.h"
+#include "SVGUnitTypes.h"
 #include "SVGNames.h"
 #include "SVGHelper.h"
 #include "SVGMatrix.h"
@@ -85,7 +85,7 @@ void SVGRadialGradientElement::buildGradient(KRenderingPaintServerGradient *_gra
 {
     rebuildStops(); // rebuild stops before possibly importing them from any referenced gradient.
 
-    bool bbox = (gradientUnits() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
+    bool bbox = (gradientUnits() == SVGUnitTypes::SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
     bool fxSet = hasAttribute(SVGNames::fxAttr);
     bool fySet = hasAttribute(SVGNames::fyAttr);
     cx()->setBboxRelative(bbox);
diff --git a/WebCore/ksvg2/svg/SVGRenderingIntent.h b/WebCore/ksvg2/svg/SVGRenderingIntent.h
new file mode 100644 (file)
index 0000000..b99fea4
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+    Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
+
+    This file is part of the KDE project
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public License
+    along with this library; see the file COPYING.LIB.  If not, write to
+    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+    Boston, MA 02111-1307, USA.
+*/
+
+#ifndef SVGRenderingIntent_H
+#define SVGRenderingIntent_H
+
+#ifdef SVG_SUPPORT
+
+#include "Shared.h"
+
+namespace WebCore {
+
+class SVGRenderingIntent : public Shared<SVGRenderingIntent>
+{
+public:
+    enum SVGRenderingIntentType {
+        RENDERING_INTENT_UNKNOWN                  = 0,
+        RENDERING_INTENT_AUTO                     = 1,
+        RENDERING_INTENT_PERCEPTUAL               = 2,
+        RENDERING_INTENT_RELATIVE_COLORIMETRIC    = 3,
+        RENDERING_INTENT_SATURATION               = 4,
+        RENDERING_INTENT_ABSOLUTE_COLORIMETRIC    = 5
+    };
+
+    SVGRenderingIntent() { } 
+    ~SVGRenderingIntent() { }
+};
+
+} // namespace WebCore
+
+#endif // SVG_SUPPORT
+#endif // SVGRenderingIntent_H
+
+// vim:ts=4:noet
index b406f2e..b3d51e9 100644 (file)
@@ -48,6 +48,12 @@ namespace WebCore
                               public SVGZoomAndPan
     {
     public:
+        enum SVGZoomAndPanType {
+            SVG_ZOOMANDPAN_UNKNOWN = 0,
+            SVG_ZOOMANDPAN_DISABLE = 1,
+            SVG_ZOOMANDPAN_MAGNIFY = 2
+        };
+
         SVGSVGElement(const QualifiedName&, Document*);
         virtual ~SVGSVGElement();
 
index 159238b..0a79126 100644 (file)
@@ -43,12 +43,12 @@ SVGScriptElement::~SVGScriptElement()
 {
 }
 
-StringImpl *SVGScriptElement::type() const
+String SVGScriptElement::type() const
 {
-    return m_type.impl();
+    return m_type;
 }
 
-void SVGScriptElement::setType(StringImpl *type)
+void SVGScriptElement::setType(const String& type)
 {
     m_type = type;
 }
@@ -56,7 +56,7 @@ void SVGScriptElement::setType(StringImpl *type)
 void SVGScriptElement::parseMappedAttribute(MappedAttribute *attr)
 {
     if (attr->name() == SVGNames::typeAttr)
-            setType(attr->value().impl());
+            setType(attr->value());
     else {
         if(SVGURIReference::parseMappedAttribute(attr))
             return;
index ed6d4a7..9c6bb7e 100644 (file)
@@ -39,8 +39,8 @@ namespace WebCore
         virtual ~SVGScriptElement();
 
         // 'SVGScriptElement' functions
-        StringImpl *type() const;
-        void setType(StringImpl *type);
+        String type() const;
+        void setType(const String&);
 
         // Internal
         virtual void parseMappedAttribute(MappedAttribute *attr);
index ba65f3e..a960f57 100644 (file)
@@ -40,12 +40,14 @@ SVGStringList::~SVGStringList()
 
 void SVGStringList::reset(const DeprecatedString& str)
 {
+    ExceptionCode ec = 0;
+
     DeprecatedStringList list = DeprecatedStringList::split(' ', str);
     if (list.count() == 0) {
-        appendItem(String("")); // Create empty string...
+        appendItem(String(""), ec); // Create empty string...
     } else {
         for(DeprecatedStringList::Iterator it = list.begin(); it != list.end(); ++it)
-            appendItem(String(*it));
+            appendItem(String(*it), ec);
     }
 }
 
index 2601e43..e28c417 100644 (file)
@@ -65,7 +65,7 @@ SVGMatrix *SVGStyledLocatableElement::getScreenCTM() const
     return SVGLocatable::getScreenCTM(this);
 }
 
-SVGMatrix *SVGStyledLocatableElement::getTransformToElement(SVGElement *) const
+SVGMatrix *SVGStyledLocatableElement::getTransformToElement(SVGElement *, ExceptionCode&) const
 {
     // TODO!
     return 0;
index 0243fd8..4f070bb 100644 (file)
@@ -46,7 +46,7 @@ namespace WebCore {
         virtual FloatRect getBBox() const;
         virtual SVGMatrix* getCTM() const;
         virtual SVGMatrix* getScreenCTM() const;
-        virtual SVGMatrix* getTransformToElement(SVGElement*) const;
+        virtual SVGMatrix* getTransformToElement(SVGElement*, ExceptionCode&) const;
     };
 
 } // namespace WebCore
index 40da500..26977bc 100644 (file)
@@ -91,7 +91,9 @@ void SVGStyledTransformableElement::parseMappedAttribute(MappedAttribute *attr)
 {
     if (attr->name() == SVGNames::transformAttr) {
         SVGTransformList *localTransforms = transformBaseValue();
-        localTransforms->clear();
+
+        ExceptionCode ec = 0;
+        localTransforms->clear(ec);
         
         SVGTransformable::parseTransformAttribute(localTransforms, attr->value());
         updateLocalTransform(localTransforms);
@@ -114,7 +116,7 @@ FloatRect SVGStyledTransformableElement::getBBox() const
     return SVGTransformable::getBBox(this);
 }
 
-SVGMatrix *SVGStyledTransformableElement::getTransformToElement(SVGElement *) const
+SVGMatrix *SVGStyledTransformableElement::getTransformToElement(SVGElement*, ExceptionCode&) const
 {
     return 0;
 }
index 02e4641..bfb9c3a 100644 (file)
@@ -54,7 +54,7 @@ namespace WebCore {
         virtual SVGElement *farthestViewportElement() const;
 
         virtual FloatRect getBBox() const;
-        virtual SVGMatrix *getTransformToElement(SVGElement *element) const;
+        virtual SVGMatrix *getTransformToElement(SVGElement*, ExceptionCode&) const;
 
         virtual void parseMappedAttribute(MappedAttribute *attr);
 
index 1deb6f1..bc48652 100644 (file)
@@ -57,23 +57,25 @@ SVGStringList *SVGTests::systemLanguage() const
     return lazy_create<SVGStringList>(m_systemLanguage);
 }
 
-bool SVGTests::hasExtension(StringImpl *) const
+bool SVGTests::hasExtension(const String&) const
 {
     return false;
 }
 
 bool SVGTests::isValid() const
 {
+    ExceptionCode ec = 0;
+
     SVGStringList *list = requiredFeatures();
     for (unsigned long i = 0;i < list->numberOfItems();i++) {
-        String value = String(list->getItem(i));
+        String value = String(list->getItem(i, ec));
         if(value.isEmpty() || !DOMImplementation::instance()->hasFeature(value, String()))
             return false;
     }
 
     list = systemLanguage();
     for (unsigned long i = 0; i < list->numberOfItems(); i++)
-        if (list->getItem(i) != defaultLanguage().substring(0, 2))
+        if (list->getItem(i, ec) != defaultLanguage().substring(0, 2))
             return false;
 
     list = requiredExtensions();
index 9d8328d..6457d1c 100644 (file)
@@ -29,7 +29,7 @@
 namespace WebCore {
 
     class MappedAttribute;
-    class StringImpl;
+    class String;
     class SVGStringList;
 
     class SVGTests {
@@ -42,7 +42,7 @@ namespace WebCore {
         SVGStringList *requiredExtensions() const;
         SVGStringList *systemLanguage() const;
 
-        bool hasExtension(StringImpl *extension) const;
+        bool hasExtension(const String&) const;
 
         bool isValid() const;
         
index f726048..81fcad8 100644 (file)
@@ -60,27 +60,27 @@ float SVGTextContentElement::getComputedTextLength() const
     return 0.;
 }
 
-float SVGTextContentElement::getSubStringLength(unsigned long charnum, unsigned long nchars) const
+float SVGTextContentElement::getSubStringLength(unsigned long charnum, unsigned long nchars, ExceptionCode&) const
 {
     return 0.;
 }
 
-FloatPoint SVGTextContentElement::getStartPositionOfChar(unsigned long charnum) const
+FloatPoint SVGTextContentElement::getStartPositionOfChar(unsigned long charnum, ExceptionCode&) const
 {
     return FloatPoint();
 }
 
-FloatPoint SVGTextContentElement::getEndPositionOfChar(unsigned long charnum) const
+FloatPoint SVGTextContentElement::getEndPositionOfChar(unsigned long charnum, ExceptionCode&) const
 {
     return FloatPoint();
 }
 
-FloatRect SVGTextContentElement::getExtentOfChar(unsigned long charnum) const
+FloatRect SVGTextContentElement::getExtentOfChar(unsigned long charnum, ExceptionCode&) const
 {
     return FloatRect();
 }
 
-float SVGTextContentElement::getRotationOfChar(unsigned long charnum) const
+float SVGTextContentElement::getRotationOfChar(unsigned long charnum, ExceptionCode&) const
 {
     return 0.;
 }
@@ -90,7 +90,7 @@ long SVGTextContentElement::getCharNumAtPosition(const FloatPoint& point) const
     return 0;
 }
 
-void SVGTextContentElement::selectSubString(unsigned long charnum, unsigned long nchars) const
+void SVGTextContentElement::selectSubString(unsigned long charnum, unsigned long nchars, ExceptionCode&) const
 {
 }
 
index 8ba935c..810d950 100644 (file)
@@ -38,6 +38,12 @@ namespace WebCore {
                                       public SVGExternalResourcesRequired
     {
     public:
+        enum SVGLengthAdjustType {
+            LENGTHADJUST_UNKNOWN            = 0,
+            LENGTHADJUST_SPACING            = 1,
+            LENGTHADJUST_SPACINGANDGLYPHS   = 2
+        };
+
         SVGTextContentElement(const QualifiedName&, Document*);
         virtual ~SVGTextContentElement();
         
@@ -46,13 +52,13 @@ namespace WebCore {
         // 'SVGTextContentElement' functions
         long getNumberOfChars() const;
         float getComputedTextLength() const;
-        float getSubStringLength(unsigned long charnum, unsigned long nchars) const;
-        FloatPoint getStartPositionOfChar(unsigned long charnum) const;
-        FloatPoint getEndPositionOfChar(unsigned long charnum) const;
-        FloatRect getExtentOfChar(unsigned long charnum) const;
-        float getRotationOfChar(unsigned long charnum) const;
+        float getSubStringLength(unsigned long charnum, unsigned long nchars, ExceptionCode&) const;
+        FloatPoint getStartPositionOfChar(unsigned long charnum, ExceptionCode&) const;
+        FloatPoint getEndPositionOfChar(unsigned long charnum, ExceptionCode&) const;
+        FloatRect getExtentOfChar(unsigned long charnum, ExceptionCode&) const;
+        float getRotationOfChar(unsigned long charnum, ExceptionCode&) const;
         long getCharNumAtPosition(const FloatPoint&) const;
-        void selectSubString(unsigned long charnum, unsigned long nchars) const;
+        void selectSubString(unsigned long charnum, unsigned long nchars, ExceptionCode&) const;
 
         virtual void parseMappedAttribute(MappedAttribute*);
 
index 7693b0e..2e4309b 100644 (file)
@@ -58,7 +58,9 @@ void SVGTextElement::parseMappedAttribute(MappedAttribute *attr)
 {
     if (attr->name() == SVGNames::transformAttr) {
         SVGTransformList *localTransforms = transformBaseValue();
-        localTransforms->clear();
+
+        ExceptionCode ec = 0;
+        localTransforms->clear(ec);
         
         SVGTransformable::parseTransformAttribute(localTransforms, attr->value());
         updateLocalTransform(localTransforms);
index 7346d93..5aa2206 100644 (file)
@@ -45,7 +45,7 @@ namespace WebCore
         virtual FloatRect getBBox() const;
         virtual SVGMatrix *getCTM() const;
         virtual SVGMatrix *getScreenCTM() const;
-        virtual SVGMatrix *getTransformToElement(SVGElement *element) const { return 0; }
+        virtual SVGMatrix *getTransformToElement(SVGElement*, ExceptionCode&) const { return 0; }
 
         virtual bool rendererIsNeeded(RenderStyle *style) { return StyledElement::rendererIsNeeded(style); }
         virtual RenderObject *createRenderer(RenderArena *arena, RenderStyle *style);
index 7fadb49..aa6b5c2 100644 (file)
@@ -32,9 +32,6 @@ namespace WebCore {
     class SVGMatrix;
     class SVGTransform : public Shared<SVGTransform> {
     public:
-        SVGTransform();
-        virtual ~SVGTransform();
-        
         enum SVGTransformType {
             SVG_TRANSFORM_UNKNOWN           = 0,
             SVG_TRANSFORM_MATRIX            = 1,
@@ -44,7 +41,10 @@ namespace WebCore {
             SVG_TRANSFORM_SKEWX             = 5,
             SVG_TRANSFORM_SKEWY             = 6
         };
-        
+        SVGTransform();
+        virtual ~SVGTransform();
+               
         unsigned short type() const;
 
         SVGMatrix* matrix() const;
index 5e18e31..2f870a4 100644 (file)
@@ -51,7 +51,8 @@ SVGTransform* SVGTransformList::consolidate()
     if (!obj)
         return 0;
 
-    return initialize(obj);
+    ExceptionCode ec = 0;
+    return initialize(obj, ec);
 }
 
 SVGTransform* SVGTransformList::concatenate() const
@@ -63,8 +64,9 @@ SVGTransform* SVGTransformList::concatenate() const
     SVGTransform* obj = SVGSVGElement::createSVGTransform();
     SVGMatrix* matrix = SVGSVGElement::createSVGMatrix();
 
+    ExceptionCode ec = 0;
     for(unsigned int i = 0; i < length; i++)
-        matrix->multiply(getItem(i)->matrix());
+        matrix->multiply(getItem(i, ec)->matrix());
 
     obj->setMatrix(matrix);
     return obj;
index a7efdc6..45a02dd 100644 (file)
@@ -114,10 +114,11 @@ void SVGTransformable::parseTransformAttribute(SVGTransformList *list, const Ato
             t->setMatrix(ret);
         }
         
-        if (t->type() == SVG_TRANSFORM_UNKNOWN)
+        if (t->type() == SVGTransform::SVG_TRANSFORM_UNKNOWN)
             break; // failed to parse a valid transform, abort.
         
-        list->appendItem(t.release().release());
+        ExceptionCode ec = 0;
+        list->appendItem(t.release().release(), ec);
     }
 }
 
diff --git a/WebCore/ksvg2/svg/SVGUnitTypes.h b/WebCore/ksvg2/svg/SVGUnitTypes.h
new file mode 100644 (file)
index 0000000..1c5830c
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+    Copyright (C) 2006 Nikolas Zimmermann <zimmermann@kde.org>
+
+    This file is part of the KDE project
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public License
+    along with this library; see the file COPYING.LIB.  If not, write to
+    the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+    Boston, MA 02111-1307, USA.
+*/
+
+#ifndef SVGUnitTypes_H
+#define SVGUnitTypes_H
+
+#ifdef SVG_SUPPORT
+
+#include "Shared.h"
+
+namespace WebCore {
+
+class SVGUnitTypes : public Shared<SVGUnitTypes>
+{
+public:
+    enum SVGUnitType {
+        SVG_UNIT_TYPE_UNKNOWN               = 0,
+        SVG_UNIT_TYPE_USERSPACEONUSE        = 1,
+        SVG_UNIT_TYPE_OBJECTBOUNDINGBOX     = 2
+    };
+
+    SVGUnitTypes() { } 
+    ~SVGUnitTypes() { }
+};
+
+} // namespace WebCore
+
+#endif // SVG_SUPPORT
+#endif // SVGUnitTypes_H
+
+// vim:ts=4:noet
index c26bb11..7041ed3 100644 (file)
@@ -104,7 +104,7 @@ void SVGUseElement::closeRenderer()
     String wString = String::number(_w);
     String hString = String::number(_h);
     
-    ExceptionCode ec;
+    ExceptionCode ec = 0;
     String trans = String::sprintf("translate(%f, %f)", _x, _y);
     if (target->hasTagName(SVGNames::symbolTag)) {
         RefPtr<SVGElement> dummy = new SVGSVGElement(SVGNames::svgTag, document());
index ff47e61..590601c 100644 (file)
@@ -38,6 +38,12 @@ namespace WebCore
                                public SVGZoomAndPan
     {
     public:
+        enum SVGZoomAndPanType {
+            SVG_ZOOMANDPAN_UNKNOWN = 0,
+            SVG_ZOOMANDPAN_DISABLE = 1,
+            SVG_ZOOMANDPAN_MAGNIFY = 2
+        };
+
         SVGViewElement(const QualifiedName&, Document*);
         virtual ~SVGViewElement();
 
index f26ace5..bd64d67 100644 (file)
 #include "ksvg.h"
 #include "SVGNames.h"
 #include "SVGHelper.h"
+#include "SVGSVGElement.h"
 #include "SVGZoomAndPan.h"
 
 namespace WebCore {
 
 SVGZoomAndPan::SVGZoomAndPan()
-    : m_zoomAndPan(SVG_ZOOMANDPAN_MAGNIFY)
+    : m_zoomAndPan(SVGSVGElement::SVG_ZOOMANDPAN_MAGNIFY)
 {
 }
 
@@ -56,9 +57,9 @@ bool SVGZoomAndPan::parseMappedAttribute(MappedAttribute *attr)
     const String& value = attr->value();
     if (attr->name() == SVGNames::zoomAndPanAttr) {
         if(value == "disable")
-            setZoomAndPan(SVG_ZOOMANDPAN_DISABLE);
+            setZoomAndPan(SVGSVGElement::SVG_ZOOMANDPAN_DISABLE);
         else if(value == "magnify")
-            setZoomAndPan(SVG_ZOOMANDPAN_MAGNIFY);
+            setZoomAndPan(SVGSVGElement::SVG_ZOOMANDPAN_MAGNIFY);
         return true;
     }