[webkit-changes] cvs commit: SVGSupport/ksvg2/svg SVGStyledLocatableElementImpl.cpp SVGStyledLocatableElementImpl.h SVGStyledTransformableElementImpl.cpp SVGStyledTransformableElementImpl.h SVGAElementImpl.cpp SVGAElementImpl.h SVGAngleImpl.cpp SVGAnimateColorElementImpl.cpp SVGAnimateColorElementImpl.h SVGAnimateElementImpl.cpp SVGAnimateElementImpl.h SVGAnimateTransformElementImpl.cpp SVGAnimateTransformElementImpl.h SVGAnimatedLengthListImpl.cpp SVGAnimatedLengthListImpl.h SVGAnimatedNumberListImpl.cpp SVGAnimatedNumberListImpl.h SVGAnimatedStringImpl.cpp SVGAnimatedStringImpl.h SVGAnimatedTemplate.h SVGAnimatedTransformListImpl.cpp SVGAnimatedTransformListImpl.h SVGAnimationElementImpl.cpp SVGAnimationElementImpl.h SVGCircleElementImpl.cpp SVGCircleElementImpl.h SVGClipPathElementImpl.cpp SVGClipPathElementImpl.h SVGColorImpl.cpp SVGColorImpl.h SVGComponentTransferFunctionElementImpl.cpp SVGComponentTransferFunctionElementImpl.h SVGCursorElementImpl.cpp SVGCursorElementImpl.h SVG DOMImplementationImpl.cpp SVGDOMImplementationImpl.h SVGDefsElementImpl.cpp SVGDefsElementImpl.h SVGDescElementImpl.cpp SVGDescElementImpl.h SVGDocumentImpl.cpp SVGDocumentImpl.h SVGElementImpl.cpp SVGElementImpl.h SVGEllipseElementImpl.cpp SVGEllipseElementImpl.h SVGExternalResourcesRequiredImpl.cpp SVGExternalResourcesRequiredImpl.h SVGFEBlendElementImpl.cpp SVGFEBlendElementImpl.h SVGFEColorMatrixElementImpl.cpp SVGFEColorMatrixElementImpl.h SVGFEComponentTransferElementImpl.cpp SVGFEComponentTransferElementImpl.h SVGFECompositeElementImpl.cpp SVGFECompositeElementImpl.h SVGFEFloodElementImpl.cpp SVGFEFloodElementImpl.h SVGFEFuncAElementImpl.cpp SVGFEFuncAElementImpl.h SVGFEFuncBElementImpl.cpp SVGFEFuncBElementImpl.h SVGFEFuncGElementImpl.cpp SVGFEFuncGElementImpl.h SVGFEFuncRElementImpl.cpp SVGFEFuncRElementImpl.h SVGFEGaussianBlurElementImpl.cpp SVGFEGaussianBlurElementImpl.h SVGFEImageElementImpl.cpp SVGFEImageElementImpl.h SVGFEMergeElementImpl.cpp SVGFEMergeElementI mpl.h SVGFEMergeNodeElementImpl.cpp SVGFEMergeNodeElementImpl.h SVGFEOffsetElementImpl.cpp SVGFEOffsetElementImpl.h SVGFETileElementImpl.cpp SVGFETileElementImpl.h SVGFETurbulenceElementImpl.cpp SVGFETurbulenceElementImpl.h SVGFilterElementImpl.cpp SVGFilterElementImpl.h SVGFilterPrimitiveStandardAttributesImpl.cpp SVGFilterPrimitiveStandardAttributesImpl.h SVGFitToViewBoxImpl.cpp SVGFitToViewBoxImpl.h SVGGElementImpl.cpp SVGGElementImpl.h SVGGradientElementImpl.cpp SVGGradientElementImpl.h SVGHelper.cpp SVGImageElementImpl.cpp SVGImageElementImpl.h SVGLangSpaceImpl.cpp SVGLangSpaceImpl.h SVGLengthImpl.cpp SVGLengthImpl.h SVGLengthListImpl.cpp SVGLineElementImpl.cpp SVGLineElementImpl.h SVGLinearGradientElementImpl.cpp SVGLinearGradientElementImpl.h SVGLocatableImpl.cpp SVGLocatableImpl.h SVGMarkerElementImpl.cpp SVGMarkerElementImpl.h SVGPaintImpl.cpp SVGPaintImpl.h SVGPathElementImpl.cpp SVGPathElementImpl.h SVGPatternElementImpl.cpp SVGPatternElementImpl.h SVGPolyElementI mpl.cpp SVGPolyElementImpl.h SVGPolygonElementImpl.cpp SVGPolygonElementImpl.h SVGPolylineElementImpl.cpp SVGPolylineElementImpl.h SVGPreserveAspectRatioImpl.cpp SVGRadialGradientElementImpl.cpp SVGRadialGradientElementImpl.h SVGRectElementImpl.cpp SVGRectElementImpl.h SVGSVGElementImpl.cpp SVGSVGElementImpl.h SVGScriptElementImpl.cpp SVGScriptElementImpl.h SVGSetElementImpl.cpp SVGSetElementImpl.h SVGStopElementImpl.cpp SVGStopElementImpl.h SVGStylableImpl.h SVGStyleElementImpl.cpp SVGStyleElementImpl.h SVGStyledElementImpl.cpp SVGStyledElementImpl.h SVGSwitchElementImpl.cpp SVGSwitchElementImpl.h SVGSymbolElementImpl.cpp SVGSymbolElementImpl.h SVGTSpanElementImpl.cpp SVGTSpanElementImpl.h SVGTestsImpl.cpp SVGTestsImpl.h SVGTextContentElementImpl.cpp SVGTextContentElementImpl.h SVGTextElementImpl.cpp SVGTextElementImpl.h SVGTextPositioningElementImpl.cpp SVGTextPositioningElementImpl.h SVGTitleElementImpl.cpp SVGTitleElementImpl.h SVGTransformImpl.cpp SVGTransformableImpl.c pp SVGTransformableImpl.h SVGURIReferenceImpl.cpp SVGURIReferenceImpl.h SVGUseElementImpl.cpp SVGUseElementImpl.h SVGViewElementImpl.cpp SVGViewElementImpl.h SVGZoomAndPanImpl.cpp SVGZoomAndPanImpl.h CDFInterface.cpp CDFInterface.h SVGElementFactory.cpp SVGElementFactory.h SVGNames.cpp SVGNames.h

Eric eseidel at opensource.apple.com
Mon Nov 21 00:30:19 PST 2005


eseidel     05/11/21 00:30:16

  Modified:    .        ChangeLog
               WebCore+SVG DrawCanvasItem.mm DrawDocument.mm KDOMHeaders.h
                        KDOMSettings.cpp
               WebCore.xcodeproj project.pbxproj
               kcanvas  KCanvasContainer.cpp KCanvasContainer.h
                        KCanvasCreator.cpp KCanvasCreator.h
                        KCanvasFilters.cpp KCanvasFilters.h KCanvasItem.cpp
                        KCanvasItem.h KCanvasResources.cpp
                        KCanvasResources.h KCanvasTreeDebug.cpp
                        KCanvasTreeDebug.h KCanvasTypes.h
               kcanvas/device KRenderingDevice.cpp KRenderingDevice.h
                        KRenderingPaintServer.h
                        KRenderingPaintServerGradient.cpp
                        KRenderingPaintServerPattern.cpp
                        KRenderingStrokePainter.h
               kcanvas/device/quartz KCanvasFilterQuartz.h
                        KCanvasFilterQuartz.mm KCanvasItemQuartz.h
                        KCanvasItemQuartz.mm KCanvasResourcesQuartz.h
                        KCanvasResourcesQuartz.mm KRenderingDeviceQuartz.h
                        KRenderingDeviceQuartz.mm
                        KRenderingPaintServerGradientQuartz.mm
                        KRenderingPaintServerQuartz.mm QuartzSupport.h
                        QuartzSupport.mm
               ksvg2/css KSVGCSSParser.cpp SVGCSSStyleSelector.cpp
                        SVGRenderStyle.cpp SVGRenderStyle.h
                        SVGRenderStyleDefs.cpp SVGRenderStyleDefs.h
               ksvg2/ecma Ecma.cpp GlobalObject.cpp
               ksvg2/events SVGZoomEventImpl.cpp SVGZoomEventImpl.h
               ksvg2/misc KCanvasRenderingStyle.cpp KCanvasRenderingStyle.h
                        KSVGTimeScheduler.cpp KSVGTimeScheduler.h
               ksvg2/svg SVGAElementImpl.cpp SVGAElementImpl.h
                        SVGAngleImpl.cpp SVGAnimateColorElementImpl.cpp
                        SVGAnimateColorElementImpl.h
                        SVGAnimateElementImpl.cpp SVGAnimateElementImpl.h
                        SVGAnimateTransformElementImpl.cpp
                        SVGAnimateTransformElementImpl.h
                        SVGAnimatedLengthListImpl.cpp
                        SVGAnimatedLengthListImpl.h
                        SVGAnimatedNumberListImpl.cpp
                        SVGAnimatedNumberListImpl.h
                        SVGAnimatedStringImpl.cpp SVGAnimatedStringImpl.h
                        SVGAnimatedTemplate.h
                        SVGAnimatedTransformListImpl.cpp
                        SVGAnimatedTransformListImpl.h
                        SVGAnimationElementImpl.cpp
                        SVGAnimationElementImpl.h SVGCircleElementImpl.cpp
                        SVGCircleElementImpl.h SVGClipPathElementImpl.cpp
                        SVGClipPathElementImpl.h SVGColorImpl.cpp
                        SVGColorImpl.h
                        SVGComponentTransferFunctionElementImpl.cpp
                        SVGComponentTransferFunctionElementImpl.h
                        SVGCursorElementImpl.cpp SVGCursorElementImpl.h
                        SVGDOMImplementationImpl.cpp
                        SVGDOMImplementationImpl.h SVGDefsElementImpl.cpp
                        SVGDefsElementImpl.h SVGDescElementImpl.cpp
                        SVGDescElementImpl.h SVGDocumentImpl.cpp
                        SVGDocumentImpl.h SVGElementImpl.cpp
                        SVGElementImpl.h SVGEllipseElementImpl.cpp
                        SVGEllipseElementImpl.h
                        SVGExternalResourcesRequiredImpl.cpp
                        SVGExternalResourcesRequiredImpl.h
                        SVGFEBlendElementImpl.cpp SVGFEBlendElementImpl.h
                        SVGFEColorMatrixElementImpl.cpp
                        SVGFEColorMatrixElementImpl.h
                        SVGFEComponentTransferElementImpl.cpp
                        SVGFEComponentTransferElementImpl.h
                        SVGFECompositeElementImpl.cpp
                        SVGFECompositeElementImpl.h
                        SVGFEFloodElementImpl.cpp SVGFEFloodElementImpl.h
                        SVGFEFuncAElementImpl.cpp SVGFEFuncAElementImpl.h
                        SVGFEFuncBElementImpl.cpp SVGFEFuncBElementImpl.h
                        SVGFEFuncGElementImpl.cpp SVGFEFuncGElementImpl.h
                        SVGFEFuncRElementImpl.cpp SVGFEFuncRElementImpl.h
                        SVGFEGaussianBlurElementImpl.cpp
                        SVGFEGaussianBlurElementImpl.h
                        SVGFEImageElementImpl.cpp SVGFEImageElementImpl.h
                        SVGFEMergeElementImpl.cpp SVGFEMergeElementImpl.h
                        SVGFEMergeNodeElementImpl.cpp
                        SVGFEMergeNodeElementImpl.h
                        SVGFEOffsetElementImpl.cpp SVGFEOffsetElementImpl.h
                        SVGFETileElementImpl.cpp SVGFETileElementImpl.h
                        SVGFETurbulenceElementImpl.cpp
                        SVGFETurbulenceElementImpl.h
                        SVGFilterElementImpl.cpp SVGFilterElementImpl.h
                        SVGFilterPrimitiveStandardAttributesImpl.cpp
                        SVGFilterPrimitiveStandardAttributesImpl.h
                        SVGFitToViewBoxImpl.cpp SVGFitToViewBoxImpl.h
                        SVGGElementImpl.cpp SVGGElementImpl.h
                        SVGGradientElementImpl.cpp SVGGradientElementImpl.h
                        SVGHelper.cpp SVGImageElementImpl.cpp
                        SVGImageElementImpl.h SVGLangSpaceImpl.cpp
                        SVGLangSpaceImpl.h SVGLengthImpl.cpp
                        SVGLengthImpl.h SVGLengthListImpl.cpp
                        SVGLineElementImpl.cpp SVGLineElementImpl.h
                        SVGLinearGradientElementImpl.cpp
                        SVGLinearGradientElementImpl.h SVGLocatableImpl.cpp
                        SVGLocatableImpl.h SVGMarkerElementImpl.cpp
                        SVGMarkerElementImpl.h SVGPaintImpl.cpp
                        SVGPaintImpl.h SVGPathElementImpl.cpp
                        SVGPathElementImpl.h SVGPatternElementImpl.cpp
                        SVGPatternElementImpl.h SVGPolyElementImpl.cpp
                        SVGPolyElementImpl.h SVGPolygonElementImpl.cpp
                        SVGPolygonElementImpl.h SVGPolylineElementImpl.cpp
                        SVGPolylineElementImpl.h
                        SVGPreserveAspectRatioImpl.cpp
                        SVGRadialGradientElementImpl.cpp
                        SVGRadialGradientElementImpl.h
                        SVGRectElementImpl.cpp SVGRectElementImpl.h
                        SVGSVGElementImpl.cpp SVGSVGElementImpl.h
                        SVGScriptElementImpl.cpp SVGScriptElementImpl.h
                        SVGSetElementImpl.cpp SVGSetElementImpl.h
                        SVGStopElementImpl.cpp SVGStopElementImpl.h
                        SVGStylableImpl.h SVGStyleElementImpl.cpp
                        SVGStyleElementImpl.h SVGStyledElementImpl.cpp
                        SVGStyledElementImpl.h SVGSwitchElementImpl.cpp
                        SVGSwitchElementImpl.h SVGSymbolElementImpl.cpp
                        SVGSymbolElementImpl.h SVGTSpanElementImpl.cpp
                        SVGTSpanElementImpl.h SVGTestsImpl.cpp
                        SVGTestsImpl.h SVGTextContentElementImpl.cpp
                        SVGTextContentElementImpl.h SVGTextElementImpl.cpp
                        SVGTextElementImpl.h
                        SVGTextPositioningElementImpl.cpp
                        SVGTextPositioningElementImpl.h
                        SVGTitleElementImpl.cpp SVGTitleElementImpl.h
                        SVGTransformImpl.cpp SVGTransformableImpl.cpp
                        SVGTransformableImpl.h SVGURIReferenceImpl.cpp
                        SVGURIReferenceImpl.h SVGUseElementImpl.cpp
                        SVGUseElementImpl.h SVGViewElementImpl.cpp
                        SVGViewElementImpl.h SVGZoomAndPanImpl.cpp
                        SVGZoomAndPanImpl.h
  Added:       ForwardingHeaders/kcanvas KCanvas.h RenderPath.h
               ForwardingHeaders/kdom/core AttrImpl.h CDFInterface.h
                        DOMConfigurationImpl.h DOMExceptionImpl.h
                        DOMImplementationImpl.h DOMList.h DOMStringImpl.h
                        DocumentImpl.h DocumentTypeImpl.h ElementImpl.h
                        NamedAttrMapImpl.h NodeImpl.h NodeListImpl.h
                        ProcessingInstructionImpl.h XMLElementImpl.h
                        domattrs.h
               WebCore+SVG SVGElementFactoryWrapper.cpp SVGNamesWrapper.cpp
               ksvg2/scripts cssmakeprops cssmakevalues make_names.pl
               ksvg2/svg SVGStyledLocatableElementImpl.cpp
                        SVGStyledLocatableElementImpl.h
                        SVGStyledTransformableElementImpl.cpp
                        SVGStyledTransformableElementImpl.h
  Removed:     WebCore+SVG SVGNames.cpp SVGNames.h
                        dom_kdomdocumentwrapper.cpp
                        dom_kdomdocumentwrapper.h
                        dom_kdomnodetreewrapper.cpp
                        dom_kdomnodetreewrapper.h render_kcanvaswrapper.cpp
                        render_kcanvaswrapper.h xml_kdomtokenizer.cpp
               kcanvas  KCanvas.cpp KCanvas.h KCanvasView.cpp KCanvasView.h
                        KCanvasView.moc
               kcanvas/device KRenderingDeviceFactory.cpp
                        KRenderingDeviceFactory.h KRenderingStyle.cpp
                        KRenderingStyle.h
               kcanvas/device/quartz KCanvasViewQuartz.h
                        KCanvasViewQuartz.mm
               kdom/bindings DocParser.pm IDLCodeGenerator.pm
                        IDLCodeGeneratorCpp.pm
                        IDLCodeGeneratorEcmaInterface.pm
                        IDLCodeGeneratorJs.pm IDLParser.pm IDLStructure.pm
                        kdombinder.sh kdomidl.pl
               kdom/bindings/idl/core Attr.idl CDATASection.idl
                        CharacterData.idl Comment.idl DOMConfiguration.idl
                        DOMError.idl DOMErrorHandler.idl DOMException.idl
                        DOMImplementation.idl DOMLocator.idl DOMObject.idl
                        DOMStringList.idl DOMUserData.idl Document.idl
                        DocumentFragment.idl DocumentType.idl Element.idl
                        Entity.idl EntityReference.idl NamedNodeMap.idl
                        Node.idl NodeList.idl Notation.idl
                        ProcessingInstruction.idl Text.idl TypeInfo.idl
                        kdomdefs.idl
               kdom/bindings/idl/css CSS2Properties.idl CSSCharsetRule.idl
                        CSSFontFaceRule.idl CSSImportRule.idl
                        CSSMediaRule.idl CSSPageRule.idl
                        CSSPrimitiveValue.idl CSSRule.idl CSSRuleList.idl
                        CSSStyleDeclaration.idl CSSStyleRule.idl
                        CSSStyleSheet.idl CSSUnknownRule.idl CSSValue.idl
                        CSSValueList.idl Counter.idl DocumentCSS.idl
                        ElementCSSInlineStyle.idl RGBColor.idl Rect.idl
                        kdomdefs.idl
               kdom/bindings/idl/events DocumentEvent.idl Event.idl
                        EventException.idl EventListener.idl
                        EventTarget.idl MouseEvent.idl MutationEvent.idl
                        UIEvent.idl kdomdefs.idl
               kdom/bindings/idl/ls DOMImplementationLS.idl LSException.idl
                        LSInput.idl LSOutput.idl LSParser.idl
                        LSParserFilter.idl LSResourceResolver.idl
                        LSSerializer.idl LSSerializerFilter.idl
                        kdomdefs.idl
               kdom/bindings/idl/range DocumentRange.idl Range.idl
                        RangeException.idl kdomdefs.idl
               kdom/bindings/idl/stylesheets DocumentStyle.idl
                        LinkStyle.idl MediaList.idl StyleSheet.idl
                        StyleSheetList.idl kdomdefs.idl
               kdom/bindings/idl/traversal DocumentTraversal.idl
                        NodeFilter.idl NodeIterator.idl TreeWalker.idl
                        kdomdefs.idl
               kdom/bindings/idl/views AbstractView.idl DocumentView.idl
                        kdomdefs.idl
               kdom/bindings/idl/xpath XPathEvaluator.idl
                        XPathException.idl XPathExpression.idl
                        XPathNSResolver.idl XPathNamespace.idl
                        XPathResult.idl kdomdefs.idl
               kdom/bindings/idl/xpointer XPointerEvaluator.idl
                        XPointerException.idl XPointerExpression.idl
                        XPointerResult.idl kdomdefs.idl
               kdom/ls  DOMImplementationLSImpl.cpp
                        DOMImplementationLSImpl.h LSExceptionImpl.cpp
                        LSExceptionImpl.h LSInputImpl.cpp LSInputImpl.h
                        LSOutputImpl.cpp LSOutputImpl.h
                        LSParserFilterImpl.cpp LSParserFilterImpl.h
                        LSParserImpl.cpp LSParserImpl.h
                        LSResourceResolverImpl.cpp LSResourceResolverImpl.h
                        LSSerializerFilterImpl.cpp LSSerializerFilterImpl.h
                        LSSerializerImpl.cpp LSSerializerImpl.h kdomls.h
               kdom/scripts cssmakeprops cssmakevalues
               ksvg2    KSVGFactory.cpp KSVGFactory.h
               ksvg2/css SVGCSSStyleDeclarationImpl.cpp
                        SVGCSSStyleDeclarationImpl.h
                        SVGCSSStyleSheetImpl.cpp SVGCSSStyleSheetImpl.h
               ksvg2/svg CDFInterface.cpp CDFInterface.h
                        SVGElementFactory.cpp SVGElementFactory.h
                        SVGNames.cpp SVGNames.h
  Log:
  Bug #: 3249
  Submitted by: eseidel
  Reviewed by: Only affects SVG; no review required (or possible due to size).
          The KSVG/KCanvas section of the big DOM merger.
          http://bugzilla.opendarwin.org/show_bug.cgi?id=3249
          At least the following were addressed in this patch:
  
          - Namespace mapping (KDOM -> DOM, khtml)
          - Forwarding Headers (temp. all kdom .h map to all webcore .h)
          - Various KDOM stub classes added to WebCore+SVG folder
          - Various DOMStringImpl -> DOMString changes
          - DOMString::string() -> DOMString::qstring() in ksvg2
          - DOMString::handle() -> DOMString::impl() in ksvg2
          - DocumentImpl, DocumentType  ::impl() -> ::implentation() in khtml
          - Moved NodeImpl::Id to QualifiedString/AtomicString in ksvg2
          - SVGNames.*, SVGElementFactory.* (and generating perl script)
          - EventImpl::id() -> type() with AtomicString
          - Removal of SVGEventImpl
          - Adding svg document and event creation in xml_docimpl.h
          - All in SVGDocumentImpl, also now using SharedPtr
          - Mapped KSVGPart, KDOMPart, KSVGView, KDOMView to KHTML*
          - Removed all throw calls, replacing with exceptioncode parameters
          - SVGElement now derives from StyledElementImpl
          - Corrected SVGNames cases (viewBoxAttr vs. viewboxAttr)
          - Moved TimeScheduler from Doc -> SVGSVGElement (temp. & wrong)
          - Moved off of DocPtr onto DocumentImpl * directly in ksvg2
          - Made SVGRenderStyle a member of khtml::RenderStyle
          - Worked KSVGCSSParser into CSSParser
          - Worked SVGCSSStyleSelector into CSSStyleSelector
          - Changed parseAttribute -> parseMappedAttribute
          - Moved KCanvasContainer onto RenderContainer
          - Renamed KCanvasItem, RenderPath, now subclass of RenderObject
          - Added RenderObject: bbox(), isRenderPath(), isKCanvasContainer()
          - Moved KCanvasContainer and RenderPath from draw() -> paint()
          - Removed RenderSVGBox && render_kcanvaswrapper hacks
          - Gutted KCanvasItem (now RenderPath) and KCanvasContainer
          - Merged KCanvasTreeDebug into KWQRenderTreeDebug
          - Made SVGNames.* SVGElementFactory.* generation a build phase
          - Removed KRenderingStyle
          - Gutted KCanvasRenderingStyle
          - Moved objectTransform onto RenderObject as "localTransform"
          - Removed KCanvasRegistry
          - Changed the way Graidents build their stop lists
          - Removed all dynamic_cast, turned off RTTI and Exceptions
          - Picked up recent marker fix & relative transform fixes from KDE
  
          * ForwardingHeaders/kcanvas/KCanvas.h: Added.
          * ForwardingHeaders/kcanvas/RenderPath.h: Added.
          * ForwardingHeaders/kdom/core/AttrImpl.h: Added.
          * ForwardingHeaders/kdom/core/CDFInterface.h: Added.
          * ForwardingHeaders/kdom/core/DOMConfigurationImpl.h: Added.
          * ForwardingHeaders/kdom/core/DOMExceptionImpl.h: Added.
          * ForwardingHeaders/kdom/core/DOMImplementationImpl.h: Added.
          * ForwardingHeaders/kdom/core/DOMList.h: Added.
          * ForwardingHeaders/kdom/core/DOMStringImpl.h: Added.
          * ForwardingHeaders/kdom/core/DocumentImpl.h: Added.
          * ForwardingHeaders/kdom/core/DocumentTypeImpl.h: Added.
          * ForwardingHeaders/kdom/core/ElementImpl.h: Added.
          * ForwardingHeaders/kdom/core/NamedAttrMapImpl.h: Added.
          * ForwardingHeaders/kdom/core/NodeImpl.h: Added.
          * ForwardingHeaders/kdom/core/NodeListImpl.h: Added.
          * ForwardingHeaders/kdom/core/ProcessingInstructionImpl.h: Added.
          * ForwardingHeaders/kdom/core/XMLElementImpl.h: Added.
          * ForwardingHeaders/kdom/core/domattrs.h: Added.
          * WebCore+SVG/DrawCanvasItem.mm:
          (-[DrawCanvasItem dragAnchorPointForControlPointIndex:]):
          (-[DrawCanvasItem controlPoints]):
          (-[DrawCanvasItem fitToNewBBox:]):
          (-[DrawCanvasItem valueForKey:]):
          (-[DrawCanvasItem attributedXMLString]):
          * WebCore+SVG/DrawDocument.mm:
          (-[DrawView initWithSVGData:]):
          (-[DrawView svgText]):
          (-[DrawDocument documentListensForMouseMovedEvents]):
          (-[DrawDocument documentListensForMouseDownEvents]):
          (-[DrawDocument documentListensForMouseUpEvents]):
          (-[DrawDocument KDOM::newMouseEventWithEventId:KDOM::qMouseEvent:]):
          (cursorForStyle):
          (-[DrawDocument cursorAfterPropagatingMouseMovedEvent:fromView:]):
          (-[DrawDocument removeItemFromDOM:]):
          (-[DrawDocument createItemForTool:atPoint:]):
          * WebCore+SVG/KDOMHeaders.h:
          * WebCore+SVG/KDOMSettings.cpp:
          * WebCore+SVG/SVGElementFactoryWrapper.cpp: Added.
          * WebCore+SVG/SVGNames.cpp: Removed.
          * WebCore+SVG/SVGNames.h: Removed.
          * WebCore+SVG/SVGNamesWrapper.cpp: Added.
          * WebCore+SVG/dom_kdomdocumentwrapper.cpp: Removed.
          * WebCore+SVG/dom_kdomdocumentwrapper.h: Removed.
          * WebCore+SVG/dom_kdomnodetreewrapper.cpp: Removed.
          * WebCore+SVG/dom_kdomnodetreewrapper.h: Removed.
          * WebCore+SVG/render_kcanvaswrapper.cpp: Removed.
          * WebCore+SVG/render_kcanvaswrapper.h: Removed.
          * WebCore+SVG/xml_kdomtokenizer.cpp: Removed.
          * WebCore.xcodeproj/project.pbxproj:
          * kcanvas/KCanvas.cpp: Removed.
          * kcanvas/KCanvas.h: Removed.
          * kcanvas/KCanvasContainer.cpp:
          (KCanvasContainer::Private::Private):
          (KCanvasContainer::KCanvasContainer):
          (KCanvasContainer::~KCanvasContainer):
          (KCanvasContainer::localTransform):
          (KCanvasContainer::setLocalTransform):
          (KCanvasContainer::fillContains):
          (KCanvasContainer::strokeContains):
          (KCanvasContainer::bbox):
          (KCanvasContainer::setSlice):
          (KCanvasContainer::slice):
          (KCanvasContainer::getAspectRatio):
          * kcanvas/KCanvasContainer.h:
          (KCanvasContainer::isKCanvasContainer):
          (KCanvasContainer::renderName):
          * kcanvas/KCanvasCreator.cpp:
          (KCanvasCreator::createCanvasPathData):
          * kcanvas/KCanvasCreator.h:
          * kcanvas/KCanvasFilters.cpp:
          (getFilterById):
          * kcanvas/KCanvasFilters.h:
          (KCanvasFEImage::image):
          (KCanvasFEImage::setImage):
          * kcanvas/KCanvasItem.cpp:
          (RenderPath::Private::Private):
          (RenderPath::Private::~Private):
          (RenderPath::RenderPath):
          (RenderPath::~RenderPath):
          (RenderPath::setStyle):
          (RenderPath::localTransform):
          (RenderPath::setLocalTransform):
          (RenderPath::fillContains):
          (RenderPath::strokeContains):
          (RenderPath::bbox):
          (RenderPath::hitsPath):
          (RenderPath::bboxPath):
          (RenderPath::setupForDraw):
          (RenderPath::changePath):
          (RenderPath::path):
          (RenderPath::canvasStyle):
          (RenderPath::commonArgs):
          * kcanvas/KCanvasItem.h:
          (RenderPath::isRenderPath):
          (RenderPath::renderName):
          * kcanvas/KCanvasResources.cpp:
          (KCanvasResource::addClient):
          (KCanvasResource::invalidate):
          (KCanvasMarker::KCanvasMarker):
          (KCanvasMarker::setMarker):
          (KCanvasMarker::setUseStrokeWidth):
          (KCanvasMarker::useStrokeWidth):
          (KCanvasMarker::setScaleX):
          (KCanvasMarker::scaleX):
          (KCanvasMarker::setScaleY):
          (KCanvasMarker::scaleY):
          (KCanvasMarker::draw):
          (getResourceById):
          (getMarkerById):
          (getClipperById):
          (getPaintServerById):
          * kcanvas/KCanvasResources.h:
          (KCanvasResource::isPaintServer):
          (KCanvasResource::isFilter):
          (KCanvasResource::isClipper):
          (KCanvasResource::isMarker):
          * kcanvas/KCanvasTreeDebug.cpp:
          (operator<<):
          (writeStyle):
          (getTagName):
          (write):
          * kcanvas/KCanvasTreeDebug.h:
          * kcanvas/KCanvasTypes.h:
          * kcanvas/KCanvasView.cpp: Removed.
          * kcanvas/KCanvasView.h: Removed.
          * kcanvas/KCanvasView.moc: Removed.
          * kcanvas/device/KRenderingDevice.cpp:
          (KCanvasCommonArgs::KCanvasCommonArgs):
          (KCanvasCommonArgs::canvasStyle):
          (KCanvasCommonArgs::setStyle):
          * kcanvas/device/KRenderingDevice.h:
          * kcanvas/device/KRenderingDeviceFactory.cpp: Removed.
          * kcanvas/device/KRenderingDeviceFactory.h: Removed.
          * kcanvas/device/KRenderingPaintServer.h:
          (KRenderingPaintServer::activeClient):
          (KRenderingPaintServer::setActiveClient):
          * kcanvas/device/KRenderingPaintServerGradient.cpp:
          (KRenderingPaintServerGradient::externalRepresentation):
          * kcanvas/device/KRenderingPaintServerPattern.cpp:
          (KRenderingPaintServerPattern::externalRepresentation):
          * kcanvas/device/KRenderingStrokePainter.h:
          * kcanvas/device/KRenderingStyle.cpp: Removed.
          * kcanvas/device/KRenderingStyle.h: Removed.
          * kcanvas/device/quartz/KCanvasFilterQuartz.h:
          * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
          (KCanvasFilterQuartz::applyFilter):
          * kcanvas/device/quartz/KCanvasItemQuartz.h:
          (KCanvasItemQuartz::requiresLayer):
          (KCanvasItemQuartz::layout):
          * kcanvas/device/quartz/KCanvasItemQuartz.mm:
          (KCanvasItemQuartz::KCanvasItemQuartz):
          (KCanvasItemQuartz::drawMarkersIfNeeded):
          (KCanvasItemQuartz::paint):
          (KCanvasItemQuartz::nodeAtPoint):
          (KCanvasItemQuartz::bboxPath):
          (KCanvasItemQuartz::hitsPath):
          * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
          (KCanvasContainerQuartz::KCanvasContainerQuartz):
          (KCanvasContainerQuartz::canHaveChildren):
          (KCanvasContainerQuartz::requiresLayer):
          * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
          (KCanvasContainerQuartz::calcMinMaxWidth):
          (KCanvasContainerQuartz::layout):
          (KCanvasContainerQuartz::paint):
          (KCanvasContainerQuartz::setViewport):
          (KCanvasContainerQuartz::viewport):
          (KCanvasContainerQuartz::setViewBox):
          (KCanvasContainerQuartz::viewBox):
          (KCanvasContainerQuartz::setAlign):
          (KCanvasContainerQuartz::align):
          (KCanvasClipperQuartz::applyClip):
          * kcanvas/device/quartz/KCanvasViewQuartz.h: Removed.
          * kcanvas/device/quartz/KCanvasViewQuartz.mm: Removed.
          * kcanvas/device/quartz/KRenderingDeviceQuartz.h:
          * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
          (KRenderingDeviceContextQuartz::concatCTM):
          (KRenderingDeviceContextQuartz::ctm):
          (KRenderingDeviceQuartz::stringForPath):
          (KRenderingDeviceQuartz::createContainer):
          (KRenderingDeviceQuartz::createItem):
          * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
          (drawShadingWithStyle):
          (KRenderingPaintServerLinearGradientQuartz::draw):
          (KRenderingPaintServerRadialGradientQuartz::draw):
          * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
          (KRenderingPaintServerSolidQuartz::draw):
          (KRenderingPaintServerPatternQuartz::draw):
          * kcanvas/device/quartz/QuartzSupport.h:
          * kcanvas/device/quartz/QuartzSupport.mm:
          (CFStringFromCGAffineTransform):
          (CGAffineTransformMakeMapBetweenRects):
          (CGPathTransformCallback):
          (CGPathApplyTransform):
          (applyStrokeStyleToContext):
          (CGPathToCFStringApplierFunction):
          (CFStringFromCGPath):
          * kdom/bindings/DocParser.pm: Removed.
          * kdom/bindings/IDLCodeGenerator.pm: Removed.
          * kdom/bindings/IDLCodeGeneratorCpp.pm: Removed.
          * kdom/bindings/IDLCodeGeneratorEcmaInterface.pm: Removed.
          * kdom/bindings/IDLCodeGeneratorJs.pm: Removed.
          * kdom/bindings/IDLParser.pm: Removed.
          * kdom/bindings/IDLStructure.pm: Removed.
          * kdom/bindings/idl/core/Attr.idl: Removed.
          * kdom/bindings/idl/core/CDATASection.idl: Removed.
          * kdom/bindings/idl/core/CharacterData.idl: Removed.
          * kdom/bindings/idl/core/Comment.idl: Removed.
          * kdom/bindings/idl/core/DOMConfiguration.idl: Removed.
          * kdom/bindings/idl/core/DOMError.idl: Removed.
          * kdom/bindings/idl/core/DOMErrorHandler.idl: Removed.
          * kdom/bindings/idl/core/DOMException.idl: Removed.
          * kdom/bindings/idl/core/DOMImplementation.idl: Removed.
          * kdom/bindings/idl/core/DOMLocator.idl: Removed.
          * kdom/bindings/idl/core/DOMObject.idl: Removed.
          * kdom/bindings/idl/core/DOMStringList.idl: Removed.
          * kdom/bindings/idl/core/DOMUserData.idl: Removed.
          * kdom/bindings/idl/core/Document.idl: Removed.
          * kdom/bindings/idl/core/DocumentFragment.idl: Removed.
          * kdom/bindings/idl/core/DocumentType.idl: Removed.
          * kdom/bindings/idl/core/Element.idl: Removed.
          * kdom/bindings/idl/core/Entity.idl: Removed.
          * kdom/bindings/idl/core/EntityReference.idl: Removed.
          * kdom/bindings/idl/core/NamedNodeMap.idl: Removed.
          * kdom/bindings/idl/core/Node.idl: Removed.
          * kdom/bindings/idl/core/NodeList.idl: Removed.
          * kdom/bindings/idl/core/Notation.idl: Removed.
          * kdom/bindings/idl/core/ProcessingInstruction.idl: Removed.
          * kdom/bindings/idl/core/Text.idl: Removed.
          * kdom/bindings/idl/core/TypeInfo.idl: Removed.
          * kdom/bindings/idl/core/kdomdefs.idl: Removed.
          * kdom/bindings/idl/css/CSS2Properties.idl: Removed.
          * kdom/bindings/idl/css/CSSCharsetRule.idl: Removed.
          * kdom/bindings/idl/css/CSSFontFaceRule.idl: Removed.
          * kdom/bindings/idl/css/CSSImportRule.idl: Removed.
          * kdom/bindings/idl/css/CSSMediaRule.idl: Removed.
          * kdom/bindings/idl/css/CSSPageRule.idl: Removed.
          * kdom/bindings/idl/css/CSSPrimitiveValue.idl: Removed.
          * kdom/bindings/idl/css/CSSRule.idl: Removed.
          * kdom/bindings/idl/css/CSSRuleList.idl: Removed.
          * kdom/bindings/idl/css/CSSStyleDeclaration.idl: Removed.
          * kdom/bindings/idl/css/CSSStyleRule.idl: Removed.
          * kdom/bindings/idl/css/CSSStyleSheet.idl: Removed.
          * kdom/bindings/idl/css/CSSUnknownRule.idl: Removed.
          * kdom/bindings/idl/css/CSSValue.idl: Removed.
          * kdom/bindings/idl/css/CSSValueList.idl: Removed.
          * kdom/bindings/idl/css/Counter.idl: Removed.
          * kdom/bindings/idl/css/DocumentCSS.idl: Removed.
          * kdom/bindings/idl/css/ElementCSSInlineStyle.idl: Removed.
          * kdom/bindings/idl/css/RGBColor.idl: Removed.
          * kdom/bindings/idl/css/Rect.idl: Removed.
          * kdom/bindings/idl/css/kdomdefs.idl: Removed.
          * kdom/bindings/idl/events/DocumentEvent.idl: Removed.
          * kdom/bindings/idl/events/Event.idl: Removed.
          * kdom/bindings/idl/events/EventException.idl: Removed.
          * kdom/bindings/idl/events/EventListener.idl: Removed.
          * kdom/bindings/idl/events/EventTarget.idl: Removed.
          * kdom/bindings/idl/events/MouseEvent.idl: Removed.
          * kdom/bindings/idl/events/MutationEvent.idl: Removed.
          * kdom/bindings/idl/events/UIEvent.idl: Removed.
          * kdom/bindings/idl/events/kdomdefs.idl: Removed.
          * kdom/bindings/idl/ls/DOMImplementationLS.idl: Removed.
          * kdom/bindings/idl/ls/LSException.idl: Removed.
          * kdom/bindings/idl/ls/LSInput.idl: Removed.
          * kdom/bindings/idl/ls/LSOutput.idl: Removed.
          * kdom/bindings/idl/ls/LSParser.idl: Removed.
          * kdom/bindings/idl/ls/LSParserFilter.idl: Removed.
          * kdom/bindings/idl/ls/LSResourceResolver.idl: Removed.
          * kdom/bindings/idl/ls/LSSerializer.idl: Removed.
          * kdom/bindings/idl/ls/LSSerializerFilter.idl: Removed.
          * kdom/bindings/idl/ls/kdomdefs.idl: Removed.
          * kdom/bindings/idl/range/DocumentRange.idl: Removed.
          * kdom/bindings/idl/range/Range.idl: Removed.
          * kdom/bindings/idl/range/RangeException.idl: Removed.
          * kdom/bindings/idl/range/kdomdefs.idl: Removed.
          * kdom/bindings/idl/stylesheets/DocumentStyle.idl: Removed.
          * kdom/bindings/idl/stylesheets/LinkStyle.idl: Removed.
          * kdom/bindings/idl/stylesheets/MediaList.idl: Removed.
          * kdom/bindings/idl/stylesheets/StyleSheet.idl: Removed.
          * kdom/bindings/idl/stylesheets/StyleSheetList.idl: Removed.
          * kdom/bindings/idl/stylesheets/kdomdefs.idl: Removed.
          * kdom/bindings/idl/traversal/DocumentTraversal.idl: Removed.
          * kdom/bindings/idl/traversal/NodeFilter.idl: Removed.
          * kdom/bindings/idl/traversal/NodeIterator.idl: Removed.
          * kdom/bindings/idl/traversal/TreeWalker.idl: Removed.
          * kdom/bindings/idl/traversal/kdomdefs.idl: Removed.
          * kdom/bindings/idl/views/AbstractView.idl: Removed.
          * kdom/bindings/idl/views/DocumentView.idl: Removed.
          * kdom/bindings/idl/views/kdomdefs.idl: Removed.
          * kdom/bindings/idl/xpath/XPathEvaluator.idl: Removed.
          * kdom/bindings/idl/xpath/XPathException.idl: Removed.
          * kdom/bindings/idl/xpath/XPathExpression.idl: Removed.
          * kdom/bindings/idl/xpath/XPathNSResolver.idl: Removed.
          * kdom/bindings/idl/xpath/XPathNamespace.idl: Removed.
          * kdom/bindings/idl/xpath/XPathResult.idl: Removed.
          * kdom/bindings/idl/xpath/kdomdefs.idl: Removed.
          * kdom/bindings/idl/xpointer/XPointerEvaluator.idl: Removed.
          * kdom/bindings/idl/xpointer/XPointerException.idl: Removed.
          * kdom/bindings/idl/xpointer/XPointerExpression.idl: Removed.
          * kdom/bindings/idl/xpointer/XPointerResult.idl: Removed.
          * kdom/bindings/idl/xpointer/kdomdefs.idl: Removed.
          * kdom/bindings/kdombinder.sh: Removed.
          * kdom/bindings/kdomidl.pl: Removed.
          * kdom/ls/DOMImplementationLSImpl.cpp: Removed.
          * kdom/ls/DOMImplementationLSImpl.h: Removed.
          * kdom/ls/LSExceptionImpl.cpp: Removed.
          * kdom/ls/LSExceptionImpl.h: Removed.
          * kdom/ls/LSInputImpl.cpp: Removed.
          * kdom/ls/LSInputImpl.h: Removed.
          * kdom/ls/LSOutputImpl.cpp: Removed.
          * kdom/ls/LSOutputImpl.h: Removed.
          * kdom/ls/LSParserFilterImpl.cpp: Removed.
          * kdom/ls/LSParserFilterImpl.h: Removed.
          * kdom/ls/LSParserImpl.cpp: Removed.
          * kdom/ls/LSParserImpl.h: Removed.
          * kdom/ls/LSResourceResolverImpl.cpp: Removed.
          * kdom/ls/LSResourceResolverImpl.h: Removed.
          * kdom/ls/LSSerializerFilterImpl.cpp: Removed.
          * kdom/ls/LSSerializerFilterImpl.h: Removed.
          * kdom/ls/LSSerializerImpl.cpp: Removed.
          * kdom/ls/LSSerializerImpl.h: Removed.
          * kdom/ls/kdomls.h: Removed.
          * kdom/scripts/cssmakeprops: Removed.
          * kdom/scripts/cssmakevalues: Removed.
          * ksvg2/KSVGFactory.cpp: Removed.
          * ksvg2/KSVGFactory.h: Removed.
          * ksvg2/css/KSVGCSSParser.cpp:
          (DOM::CSSParser::parseSVGValue):
          (DOM::CSSParser::parseSVGStrokeDasharray):
          (DOM::CSSParser::parseSVGPaint):
          (DOM::CSSParser::parseSVGColor):
          * ksvg2/css/SVGCSSStyleDeclarationImpl.cpp: Removed.
          * ksvg2/css/SVGCSSStyleDeclarationImpl.h: Removed.
          * ksvg2/css/SVGCSSStyleSelector.cpp:
          (KDOM::CSSStyleSelector::applySVGProperty):
          * ksvg2/css/SVGCSSStyleSheetImpl.cpp: Removed.
          * ksvg2/css/SVGCSSStyleSheetImpl.h: Removed.
          * ksvg2/css/SVGRenderStyle.cpp:
          (SVGRenderStyle::SVGRenderStyle):
          (SVGRenderStyle::equals):
          (SVGRenderStyle::inheritFrom):
          * ksvg2/css/SVGRenderStyle.h:
          (KSVG::SVGRenderStyle::SVGRenderStyle):
          * ksvg2/css/SVGRenderStyleDefs.cpp:
          (StyleMiscData::StyleMiscData):
          (StyleMiscData::operator==):
          * ksvg2/css/SVGRenderStyleDefs.h:
          * ksvg2/ecma/Ecma.cpp:
          (Ecma::inheritedGetDOMNode):
          * ksvg2/ecma/GlobalObject.cpp:
          * ksvg2/events/SVGZoomEventImpl.cpp:
          (SVGZoomEventImpl::SVGZoomEventImpl):
          * ksvg2/events/SVGZoomEventImpl.h:
          * ksvg2/misc/KCanvasRenderingStyle.cpp:
          (KCanvasRenderingStyle::KCanvasRenderingStyle):
          (KCanvasRenderingStyle::updateFill):
          (KCanvasRenderingStyle::updateStroke):
          (KCanvasRenderingStyle::updateStyle):
          (KCanvasRenderingStyle::cssPrimitiveToLength):
          * ksvg2/misc/KCanvasRenderingStyle.h:
          (KSVG::KCanvasRenderingStyle::renderStyle):
          * ksvg2/misc/KSVGTimeScheduler.cpp:
          (KSVG::SVGTimer::notifyAll):
          (KSVG::TimeScheduler::TimeScheduler):
          * ksvg2/misc/KSVGTimeScheduler.h:
          (KSVG::TimeScheduler::document):
          * ksvg2/scripts/cssmakeprops: Added.
          * ksvg2/scripts/cssmakevalues: Added.
          * ksvg2/scripts/make_names.pl: Added.
          * ksvg2/svg/CDFInterface.cpp: Removed.
          * ksvg2/svg/CDFInterface.h: Removed.
          * ksvg2/svg/SVGAElementImpl.cpp:
          (SVGAElementImpl::SVGAElementImpl):
          (SVGAElementImpl::parseMappedAttribute):
          (SVGAElementImpl::createRenderer):
          (SVGAElementImpl::defaultEventHandler):
          * ksvg2/svg/SVGAElementImpl.h:
          (KSVG::SVGAElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGAngleImpl.cpp:
          (SVGAngleImpl::setValueAsString):
          (SVGAngleImpl::valueAsString):
          * ksvg2/svg/SVGAnimateColorElementImpl.cpp:
          (SVGAnimateColorElementImpl::SVGAnimateColorElementImpl):
          (SVGAnimateColorElementImpl::handleTimerEvent):
          * ksvg2/svg/SVGAnimateColorElementImpl.h:
          * ksvg2/svg/SVGAnimateElementImpl.cpp:
          (SVGAnimateElementImpl::SVGAnimateElementImpl):
          (SVGAnimateElementImpl::handleTimerEvent):
          * ksvg2/svg/SVGAnimateElementImpl.h:
          * ksvg2/svg/SVGAnimateTransformElementImpl.cpp:
          (SVGAnimateTransformElementImpl::SVGAnimateTransformElementImpl):
          (SVGAnimateTransformElementImpl::~SVGAnimateTransformElementImpl):
          (SVGAnimateTransformElementImpl::parseMappedAttribute):
          (SVGAnimateTransformElementImpl::handleTimerEvent):
          (SVGAnimateTransformElementImpl::initialMatrix):
          (SVGAnimateTransformElementImpl::transformMatrix):
          * ksvg2/svg/SVGAnimateTransformElementImpl.h:
          * ksvg2/svg/SVGAnimatedLengthListImpl.cpp:
          * ksvg2/svg/SVGAnimatedLengthListImpl.h:
          * ksvg2/svg/SVGAnimatedNumberListImpl.cpp:
          * ksvg2/svg/SVGAnimatedNumberListImpl.h:
          * ksvg2/svg/SVGAnimatedStringImpl.cpp:
          (SVGAnimatedStringImpl::create):
          * ksvg2/svg/SVGAnimatedStringImpl.h:
          * ksvg2/svg/SVGAnimatedTemplate.h:
          (KSVG::SVGAnimatedTemplate::setBaseVal):
          (KSVG::SVGAnimatedTemplate::setAnimVal):
          * ksvg2/svg/SVGAnimatedTransformListImpl.cpp:
          * ksvg2/svg/SVGAnimatedTransformListImpl.h:
          * ksvg2/svg/SVGAnimationElementImpl.cpp:
          (SVGAnimationElementImpl::SVGAnimationElementImpl):
          (SVGAnimationElementImpl::targetElement):
          (SVGAnimationElementImpl::parseMappedAttribute):
          (SVGAnimationElementImpl::closeRenderer):
          (SVGAnimationElementImpl::targetAttribute):
          (SVGAnimationElementImpl::setTargetAttribute):
          * ksvg2/svg/SVGAnimationElementImpl.h:
          (KSVG::SVGAnimationElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGCircleElementImpl.cpp:
          (SVGCircleElementImpl::SVGCircleElementImpl):
          (SVGCircleElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGCircleElementImpl.h:
          (KSVG::SVGCircleElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGClipPathElementImpl.cpp:
          (SVGClipPathElementImpl::SVGClipPathElementImpl):
          (SVGClipPathElementImpl::parseMappedAttribute):
          (SVGClipPathElementImpl::canvasResource):
          * ksvg2/svg/SVGClipPathElementImpl.h:
          * ksvg2/svg/SVGColorImpl.cpp:
          (SVGColorImpl::rgbColor):
          (SVGColorImpl::setRGBColor):
          (SVGColorImpl::cssText):
          * ksvg2/svg/SVGColorImpl.h:
          * ksvg2/svg/SVGComponentTransferFunctionElementImpl.cpp:
          (SVGComponentTransferFunctionElementImpl::SVGComponentTransferFunctionElementImpl):
          (SVGComponentTransferFunctionElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGComponentTransferFunctionElementImpl.h:
          * ksvg2/svg/SVGCursorElementImpl.cpp:
          (SVGCursorElementImpl::SVGCursorElementImpl):
          (SVGCursorElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGCursorElementImpl.h:
          * ksvg2/svg/SVGDOMImplementationImpl.cpp:
          (SVGDOMImplementationImpl::~SVGDOMImplementationImpl):
          (SVGDOMImplementationImpl::hasFeature):
          (SVGDOMImplementationImpl::createDocumentType):
          (SVGDOMImplementationImpl::createDocument):
          (SVGDOMImplementationImpl::createCSSStyleSheet):
          * ksvg2/svg/SVGDOMImplementationImpl.h:
          * ksvg2/svg/SVGDefsElementImpl.cpp:
          (SVGDefsElementImpl::SVGDefsElementImpl):
          * ksvg2/svg/SVGDefsElementImpl.h:
          * ksvg2/svg/SVGDescElementImpl.cpp:
          (SVGDescElementImpl::SVGDescElementImpl):
          (SVGDescElementImpl::description):
          * ksvg2/svg/SVGDescElementImpl.h:
          * ksvg2/svg/SVGDocumentImpl.cpp:
          (SVGDocumentImpl::SVGDocumentImpl):
          (SVGDocumentImpl::~SVGDocumentImpl):
          (SVGDocumentImpl::title):
          (SVGDocumentImpl::createElement):
          (SVGDocumentImpl::rootElement):
          (SVGDocumentImpl::notifyFinished):
          (SVGDocumentImpl::dispatchRecursiveEvent):
          (SVGDocumentImpl::dispatchZoomEvent):
          (SVGDocumentImpl::dispatchScrollEvent):
          (SVGDocumentImpl::dispatchKeyEvent):
          (SVGDocumentImpl::createStyleSelector):
          (SVGDocumentImpl::addScripts):
          (SVGDocumentImpl::executeScripts):
          (SVGDocumentImpl::dispatchUIEvent):
          (SVGDocumentImpl::dispatchMouseEvent):
          * ksvg2/svg/SVGDocumentImpl.h:
          * ksvg2/svg/SVGElementFactory.cpp: Removed.
          * ksvg2/svg/SVGElementFactory.h: Removed.
          * ksvg2/svg/SVGElementImpl.cpp:
          (SVGElementImpl::SVGElementImpl):
          (SVGElementImpl::isSupported):
          (SVGElementImpl::ownerSVGElement):
          (SVGElementImpl::viewportElement):
          (SVGElementImpl::tryGetAttribute):
          (SVGElementImpl::tryGetAttributeNS):
          (SVGElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGElementImpl.h:
          (KSVG::SVGElementImpl::isSVGElement):
          (KSVG::SVGElementImpl::adjustViewportClipping):
          (KSVG::SVGElementImpl::isStyledTransformable):
          (KSVG::SVGElementImpl::isStyledLocatable):
          (KSVG::SVGElementImpl::isFilterEffect):
          (KSVG::SVGElementImpl::isGradientStop):
          (KSVG::SVGElementImpl::isValid):
          (KSVG::SVGElementImpl::closeRenderer):
          (KSVG::SVGElementImpl::rendererIsNeeded):
          (KSVG::SVGElementImpl::isClosed):
          * ksvg2/svg/SVGEllipseElementImpl.cpp:
          (KSVG::SVGEllipseElementImpl::SVGEllipseElementImpl):
          (KSVG::SVGEllipseElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGEllipseElementImpl.h:
          (KSVG::SVGEllipseElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGExternalResourcesRequiredImpl.cpp:
          (SVGExternalResourcesRequiredImpl::parseMappedAttribute):
          * ksvg2/svg/SVGExternalResourcesRequiredImpl.h:
          * ksvg2/svg/SVGFEBlendElementImpl.cpp:
          (SVGFEBlendElementImpl::SVGFEBlendElementImpl):
          (SVGFEBlendElementImpl::parseMappedAttribute):
          (SVGFEBlendElementImpl::createRenderer):
          * ksvg2/svg/SVGFEBlendElementImpl.h:
          (KSVG::SVGFEBlendElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFEColorMatrixElementImpl.cpp:
          (SVGFEColorMatrixElementImpl::SVGFEColorMatrixElementImpl):
          (SVGFEColorMatrixElementImpl::parseMappedAttribute):
          (SVGFEColorMatrixElementImpl::createRenderer):
          * ksvg2/svg/SVGFEColorMatrixElementImpl.h:
          (KSVG::SVGFEColorMatrixElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFEComponentTransferElementImpl.cpp:
          (SVGFEComponentTransferElementImpl::SVGFEComponentTransferElementImpl):
          (SVGFEComponentTransferElementImpl::parseMappedAttribute):
          (SVGFEComponentTransferElementImpl::createRenderer):
          (SVGFEComponentTransferElementImpl::closeRenderer):
          * ksvg2/svg/SVGFEComponentTransferElementImpl.h:
          (KSVG::SVGFEComponentTransferElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFECompositeElementImpl.cpp:
          (SVGFECompositeElementImpl::SVGFECompositeElementImpl):
          (SVGFECompositeElementImpl::parseMappedAttribute):
          (SVGFECompositeElementImpl::createRenderer):
          * ksvg2/svg/SVGFECompositeElementImpl.h:
          (KSVG::SVGFECompositeElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFEFloodElementImpl.cpp:
          (SVGFEFloodElementImpl::SVGFEFloodElementImpl):
          (SVGFEFloodElementImpl::parseMappedAttribute):
          (SVGFEFloodElementImpl::createRenderer):
          * ksvg2/svg/SVGFEFloodElementImpl.h:
          (KSVG::SVGFEFloodElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFEFuncAElementImpl.cpp:
          (SVGFEFuncAElementImpl::SVGFEFuncAElementImpl):
          * ksvg2/svg/SVGFEFuncAElementImpl.h:
          * ksvg2/svg/SVGFEFuncBElementImpl.cpp:
          (SVGFEFuncBElementImpl::SVGFEFuncBElementImpl):
          * ksvg2/svg/SVGFEFuncBElementImpl.h:
          * ksvg2/svg/SVGFEFuncGElementImpl.cpp:
          (SVGFEFuncGElementImpl::SVGFEFuncGElementImpl):
          * ksvg2/svg/SVGFEFuncGElementImpl.h:
          * ksvg2/svg/SVGFEFuncRElementImpl.cpp:
          (SVGFEFuncRElementImpl::SVGFEFuncRElementImpl):
          * ksvg2/svg/SVGFEFuncRElementImpl.h:
          * ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp:
          (SVGFEGaussianBlurElementImpl::SVGFEGaussianBlurElementImpl):
          (SVGFEGaussianBlurElementImpl::parseMappedAttribute):
          (SVGFEGaussianBlurElementImpl::createRenderer):
          * ksvg2/svg/SVGFEGaussianBlurElementImpl.h:
          (KSVG::SVGFEGaussianBlurElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFEImageElementImpl.cpp:
          (SVGFEImageElementImpl::SVGFEImageElementImpl):
          (SVGFEImageElementImpl::parseMappedAttribute):
          (SVGFEImageElementImpl::finalizeStyle):
          (SVGFEImageElementImpl::createRenderer):
          * ksvg2/svg/SVGFEImageElementImpl.h:
          (KSVG::SVGFEImageElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFEMergeElementImpl.cpp:
          (SVGFEMergeElementImpl::SVGFEMergeElementImpl):
          (SVGFEMergeElementImpl::createRenderer):
          (SVGFEMergeElementImpl::closeRenderer):
          * ksvg2/svg/SVGFEMergeElementImpl.h:
          (KSVG::SVGFEMergeElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFEMergeNodeElementImpl.cpp:
          (SVGFEMergeNodeElementImpl::SVGFEMergeNodeElementImpl):
          (SVGFEMergeNodeElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGFEMergeNodeElementImpl.h:
          * ksvg2/svg/SVGFEOffsetElementImpl.cpp:
          (SVGFEOffsetElementImpl::SVGFEOffsetElementImpl):
          (SVGFEOffsetElementImpl::parseMappedAttribute):
          (SVGFEOffsetElementImpl::createRenderer):
          * ksvg2/svg/SVGFEOffsetElementImpl.h:
          (KSVG::SVGFEOffsetElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFETileElementImpl.cpp:
          (SVGFETileElementImpl::SVGFETileElementImpl):
          (SVGFETileElementImpl::parseMappedAttribute):
          (SVGFETileElementImpl::createRenderer):
          * ksvg2/svg/SVGFETileElementImpl.h:
          (KSVG::SVGFETileElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFETurbulenceElementImpl.cpp:
          (SVGFETurbulenceElementImpl::SVGFETurbulenceElementImpl):
          (SVGFETurbulenceElementImpl::parseMappedAttribute):
          (SVGFETurbulenceElementImpl::createRenderer):
          * ksvg2/svg/SVGFETurbulenceElementImpl.h:
          (KSVG::SVGFETurbulenceElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGFilterElementImpl.cpp:
          (SVGFilterElementImpl::SVGFilterElementImpl):
          (SVGFilterElementImpl::x):
          (SVGFilterElementImpl::y):
          (SVGFilterElementImpl::width):
          (SVGFilterElementImpl::height):
          (SVGFilterElementImpl::parseMappedAttribute):
          (SVGFilterElementImpl::canvasResource):
          * ksvg2/svg/SVGFilterElementImpl.h:
          * ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.cpp:
          (SVGFilterPrimitiveStandardAttributesImpl::SVGFilterPrimitiveStandardAttributesImpl):
          (SVGFilterPrimitiveStandardAttributesImpl::width):
          (SVGFilterPrimitiveStandardAttributesImpl::height):
          (SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute):
          (SVGFilterPrimitiveStandardAttributesImpl::setStandardAttributes):
          * ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.h:
          (KSVG::SVGFilterPrimitiveStandardAttributesImpl::isFilterEffect):
          * ksvg2/svg/SVGFitToViewBoxImpl.cpp:
          (SVGFitToViewBoxImpl::SVGFitToViewBoxImpl):
          (SVGFitToViewBoxImpl::~SVGFitToViewBoxImpl):
          (SVGFitToViewBoxImpl::viewBox):
          (SVGFitToViewBoxImpl::preserveAspectRatio):
          (SVGFitToViewBoxImpl::parseViewBox):
          (SVGFitToViewBoxImpl::parseMappedAttribute):
          * ksvg2/svg/SVGFitToViewBoxImpl.h:
          * ksvg2/svg/SVGGElementImpl.cpp:
          (SVGGElementImpl::SVGGElementImpl):
          (SVGGElementImpl::parseMappedAttribute):
          (SVGGElementImpl::setChanged):
          (SVGGElementImpl::createRenderer):
          (SVGDummyElementImpl::SVGDummyElementImpl):
          (SVGDummyElementImpl::localName):
          * ksvg2/svg/SVGGElementImpl.h:
          (KSVG::SVGGElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGGradientElementImpl.cpp:
          (SVGGradientElementImpl::SVGGradientElementImpl):
          (SVGGradientElementImpl::parseMappedAttribute):
          (SVGGradientElementImpl::notifyAttributeChange):
          (SVGGradientElementImpl::canvasResource):
          (SVGGradientElementImpl::resourceNotification):
          (SVGGradientElementImpl::rebuildStops):
          * ksvg2/svg/SVGGradientElementImpl.h:
          * ksvg2/svg/SVGHelper.cpp:
          (SVGHelper::PercentageOfViewport):
          * ksvg2/svg/SVGImageElementImpl.cpp:
          (SVGImageElementImpl::SVGImageElementImpl):
          (SVGImageElementImpl::parseMappedAttribute):
          (SVGImageElementImpl::createRenderer):
          (SVGImageElementImpl::notifyFinished):
          (SVGImageElementImpl::finalizeStyle):
          * ksvg2/svg/SVGImageElementImpl.h:
          (KSVG::SVGImageElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGLangSpaceImpl.cpp:
          (SVGLangSpaceImpl::SVGLangSpaceImpl):
          (SVGLangSpaceImpl::~SVGLangSpaceImpl):
          (SVGLangSpaceImpl::xmllang):
          (SVGLangSpaceImpl::setXmllang):
          (SVGLangSpaceImpl::xmlspace):
          (SVGLangSpaceImpl::setXmlspace):
          (SVGLangSpaceImpl::parseMappedAttribute):
          * ksvg2/svg/SVGLangSpaceImpl.h:
          * ksvg2/svg/SVGLengthImpl.cpp:
          (SVGLengthImpl::value):
          (SVGLengthImpl::setValueAsString):
          (SVGLengthImpl::updateValue):
          * ksvg2/svg/SVGLengthImpl.h:
          * ksvg2/svg/SVGLengthListImpl.cpp:
          (SVGLengthListImpl::parse):
          * ksvg2/svg/SVGLineElementImpl.cpp:
          (SVGLineElementImpl::SVGLineElementImpl):
          (SVGLineElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGLineElementImpl.h:
          (KSVG::SVGLineElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGLinearGradientElementImpl.cpp:
          (SVGLinearGradientElementImpl::SVGLinearGradientElementImpl):
          (SVGLinearGradientElementImpl::parseMappedAttribute):
          (SVGLinearGradientElementImpl::buildGradient):
          * ksvg2/svg/SVGLinearGradientElementImpl.h:
          (KSVG::SVGLinearGradientElementImpl::gradientType):
          * ksvg2/svg/SVGLocatableImpl.cpp:
          (SVGLocatableImpl::nearestViewportElement):
          (SVGLocatableImpl::farthestViewportElement):
          (SVGLocatableImpl::getBBox):
          (SVGLocatableImpl::getCTM):
          (SVGLocatableImpl::getScreenCTM):
          * ksvg2/svg/SVGLocatableImpl.h:
          * ksvg2/svg/SVGMarkerElementImpl.cpp:
          (SVGMarkerElementImpl::SVGMarkerElementImpl):
          (SVGMarkerElementImpl::parseMappedAttribute):
          (SVGMarkerElementImpl::canvasResource):
          (SVGMarkerElementImpl::createRenderer):
          * ksvg2/svg/SVGMarkerElementImpl.h:
          (KSVG::SVGMarkerElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGNames.cpp: Removed.
          * ksvg2/svg/SVGNames.h: Removed.
          * ksvg2/svg/SVGPaintImpl.cpp:
          (SVGPaintImpl::setUri):
          (SVGPaintImpl::cssText):
          * ksvg2/svg/SVGPaintImpl.h:
          * ksvg2/svg/SVGPathElementImpl.cpp:
          (KSVG::SVGPathElementImpl::SVGPathElementImpl):
          (KSVG::SVGPathElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGPathElementImpl.h:
          (KSVG::SVGPathElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGPatternElementImpl.cpp:
          (SVGPatternElementImpl::SVGPatternElementImpl):
          (SVGPatternElementImpl::~SVGPatternElementImpl):
          (SVGPatternElementImpl::parseMappedAttribute):
          (SVGPatternElementImpl::notifyAttributeChange):
          (SVGPatternElementImpl::createRenderer):
          (SVGPatternElementImpl::canvasResource):
          * ksvg2/svg/SVGPatternElementImpl.h:
          (KSVG::SVGPatternElementImpl::allowAttachChildren):
          (KSVG::SVGPatternElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGPolyElementImpl.cpp:
          (SVGPolyElementImpl::SVGPolyElementImpl):
          (SVGPolyElementImpl::parseMappedAttribute):
          (SVGPolyElementImpl::notifyAttributeChange):
          * ksvg2/svg/SVGPolyElementImpl.h:
          (KSVG::SVGPolyElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGPolygonElementImpl.cpp:
          (SVGPolygonElementImpl::SVGPolygonElementImpl):
          * ksvg2/svg/SVGPolygonElementImpl.h:
          * ksvg2/svg/SVGPolylineElementImpl.cpp:
          (SVGPolylineElementImpl::SVGPolylineElementImpl):
          * ksvg2/svg/SVGPolylineElementImpl.h:
          * ksvg2/svg/SVGPreserveAspectRatioImpl.cpp:
          (SVGPreserveAspectRatioImpl::parsePreserveAspectRatio):
          * ksvg2/svg/SVGRadialGradientElementImpl.cpp:
          (SVGRadialGradientElementImpl::SVGRadialGradientElementImpl):
          (SVGRadialGradientElementImpl::parseMappedAttribute):
          (SVGRadialGradientElementImpl::buildGradient):
          * ksvg2/svg/SVGRadialGradientElementImpl.h:
          (KSVG::SVGRadialGradientElementImpl::gradientType):
          * ksvg2/svg/SVGRectElementImpl.cpp:
          (SVGRectElementImpl::SVGRectElementImpl):
          (SVGRectElementImpl::parseMappedAttribute):
          (SVGRectElementImpl::toPathData):
          * ksvg2/svg/SVGRectElementImpl.h:
          (KSVG::SVGRectElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGSVGElementImpl.cpp:
          (SVGSVGElementImpl::SVGSVGElementImpl):
          (SVGSVGElementImpl::~SVGSVGElementImpl):
          (SVGSVGElementImpl::width):
          (SVGSVGElementImpl::height):
          (SVGSVGElementImpl::contentScriptType):
          (SVGSVGElementImpl::setContentScriptType):
          (SVGSVGElementImpl::contentStyleType):
          (SVGSVGElementImpl::setContentStyleType):
          (SVGSVGElementImpl::currentScale):
          (SVGSVGElementImpl::setCurrentScale):
          (SVGSVGElementImpl::currentTranslate):
          (SVGSVGElementImpl::parseMappedAttribute):
          (SVGSVGElementImpl::pauseAnimations):
          (SVGSVGElementImpl::unpauseAnimations):
          (SVGSVGElementImpl::animationsPaused):
          (SVGSVGElementImpl::getCurrentTime):
          (SVGSVGElementImpl::checkIntersection):
          (SVGSVGElementImpl::checkEnclosure):
          (SVGSVGElementImpl::getCTM):
          (SVGSVGElementImpl::getScreenCTM):
          (SVGSVGElementImpl::createRenderer):
          (SVGSVGElementImpl::setZoomAndPan):
          * ksvg2/svg/SVGSVGElementImpl.h:
          (KSVG::SVGSVGElementImpl::rendererIsNeeded):
          (KSVG::SVGSVGElementImpl::timeScheduler):
          * ksvg2/svg/SVGScriptElementImpl.cpp:
          (SVGScriptElementImpl::SVGScriptElementImpl):
          (SVGScriptElementImpl::parseMappedAttribute):
          (SVGScriptElementImpl::executeScript):
          * ksvg2/svg/SVGScriptElementImpl.h:
          * ksvg2/svg/SVGSetElementImpl.cpp:
          (SVGSetElementImpl::SVGSetElementImpl):
          (SVGSetElementImpl::handleTimerEvent):
          * ksvg2/svg/SVGSetElementImpl.h:
          * ksvg2/svg/SVGStopElementImpl.cpp:
          (SVGStopElementImpl::SVGStopElementImpl):
          (SVGStopElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGStopElementImpl.h:
          (KSVG::SVGStopElementImpl::isGradientStop):
          * ksvg2/svg/SVGStylableImpl.h:
          * ksvg2/svg/SVGStyleElementImpl.cpp:
          (SVGStyleElementImpl::SVGStyleElementImpl):
          (SVGStyleElementImpl::~SVGStyleElementImpl):
          (SVGStyleElementImpl::xmlspace):
          (SVGStyleElementImpl::setXmlspace):
          (SVGStyleElementImpl::type):
          (SVGStyleElementImpl::setType):
          (SVGStyleElementImpl::media):
          (SVGStyleElementImpl::setMedia):
          (SVGStyleElementImpl::title):
          (SVGStyleElementImpl::setTitle):
          (SVGStyleElementImpl::sheet):
          (SVGStyleElementImpl::childrenChanged):
          * ksvg2/svg/SVGStyleElementImpl.h:
          * ksvg2/svg/SVGStyledElementImpl.cpp:
          (SVGStyledElementImpl::SVGStyledElementImpl):
          (SVGStyledElementImpl::~SVGStyledElementImpl):
          (SVGStyledElementImpl::createRenderer):
          (SVGStyledElementImpl::parseMappedAttribute):
          (SVGStyledElementImpl::finalizeStyle):
          (SVGStyledElementImpl::attach):
          (SVGStyledElementImpl::canvas):
          (SVGStyledElementImpl::updateCanvasItem):
          (SVGStyledElementImpl::pushAttributeContext):
          * ksvg2/svg/SVGStyledElementImpl.h:
          (KSVG::SVGStyledElementImpl::rendererIsNeeded):
          (KSVG::SVGStyledElementImpl::canvasResource):
          * ksvg2/svg/SVGStyledLocatableElementImpl.cpp: Added.
          (SVGStyledLocatableElementImpl::SVGStyledLocatableElementImpl):
          (SVGStyledLocatableElementImpl::~SVGStyledLocatableElementImpl):
          (SVGStyledLocatableElementImpl::nearestViewportElement):
          (SVGStyledLocatableElementImpl::farthestViewportElement):
          (SVGStyledLocatableElementImpl::getBBox):
          (SVGStyledLocatableElementImpl::getCTM):
          (SVGStyledLocatableElementImpl::getScreenCTM):
          (SVGStyledLocatableElementImpl::getTransformToElement):
          * ksvg2/svg/SVGStyledLocatableElementImpl.h: Added.
          (KSVG::SVGStyledLocatableElementImpl::isStyledLocatable):
          * ksvg2/svg/SVGStyledTransformableElementImpl.cpp: Added.
          (SVGStyledTransformableElementImpl::SVGStyledTransformableElementImpl):
          (SVGStyledTransformableElementImpl::~SVGStyledTransformableElementImpl):
          (SVGStyledTransformableElementImpl::transform):
          (SVGStyledTransformableElementImpl::localMatrix):
          (SVGStyledTransformableElementImpl::getCTM):
          (SVGStyledTransformableElementImpl::getScreenCTM):
          (SVGStyledTransformableElementImpl::updateLocalTransform):
          (SVGStyledTransformableElementImpl::parseMappedAttribute):
          (SVGStyledTransformableElementImpl::nearestViewportElement):
          (SVGStyledTransformableElementImpl::farthestViewportElement):
          (SVGStyledTransformableElementImpl::getBBox):
          (SVGStyledTransformableElementImpl::getTransformToElement):
          (SVGStyledTransformableElementImpl::attach):
          * ksvg2/svg/SVGStyledTransformableElementImpl.h: Added.
          (KSVG::SVGStyledTransformableElementImpl::isStyledTransformable):
          * ksvg2/svg/SVGSwitchElementImpl.cpp:
          (SVGSwitchElementImpl::SVGSwitchElementImpl):
          (SVGSwitchElementImpl::allowAttachChildren):
          (SVGSwitchElementImpl::createRenderer):
          * ksvg2/svg/SVGSwitchElementImpl.h:
          (KSVG::SVGSwitchElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGSymbolElementImpl.cpp:
          (SVGSymbolElementImpl::SVGSymbolElementImpl):
          (SVGSymbolElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGSymbolElementImpl.h:
          * ksvg2/svg/SVGTSpanElementImpl.cpp:
          (SVGTSpanElementImpl::SVGTSpanElementImpl):
          * ksvg2/svg/SVGTSpanElementImpl.h:
          * ksvg2/svg/SVGTestsImpl.cpp:
          (SVGTestsImpl::isValid):
          (SVGTestsImpl::parseMappedAttribute):
          * ksvg2/svg/SVGTestsImpl.h:
          * ksvg2/svg/SVGTextContentElementImpl.cpp:
          (SVGTextContentElementImpl::SVGTextContentElementImpl):
          (SVGTextContentElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGTextContentElementImpl.h:
          * ksvg2/svg/SVGTextElementImpl.cpp:
          (SVGTextElementImpl::SVGTextElementImpl):
          (SVGTextElementImpl::parseMappedAttribute):
          (SVGTextElementImpl::nearestViewportElement):
          (SVGTextElementImpl::farthestViewportElement):
          (SVGTextElementImpl::getBBox):
          (SVGTextElementImpl::getScreenCTM):
          (SVGTextElementImpl::getCTM):
          * ksvg2/svg/SVGTextElementImpl.h:
          (KSVG::SVGTextElementImpl::getTransformToElement):
          (KSVG::SVGTextElementImpl::transform):
          (KSVG::SVGTextElementImpl::localMatrix):
          (KSVG::SVGTextElementImpl::updateLocalTransform):
          * ksvg2/svg/SVGTextPositioningElementImpl.cpp:
          (SVGTextPositioningElementImpl::SVGTextPositioningElementImpl):
          (SVGTextPositioningElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGTextPositioningElementImpl.h:
          * ksvg2/svg/SVGTitleElementImpl.cpp:
          (SVGTitleElementImpl::SVGTitleElementImpl):
          (SVGTitleElementImpl::title):
          * ksvg2/svg/SVGTitleElementImpl.h:
          * ksvg2/svg/SVGTransformImpl.cpp:
          (SVGTransformImpl::setMatrix):
          * ksvg2/svg/SVGTransformableImpl.cpp:
          (SVGTransformableImpl::SVGTransformableImpl):
          (SVGTransformableImpl::~SVGTransformableImpl):
          (SVGTransformableImpl::parseTransformAttribute):
          * ksvg2/svg/SVGTransformableImpl.h:
          * ksvg2/svg/SVGURIReferenceImpl.cpp:
          (SVGURIReferenceImpl::href):
          (SVGURIReferenceImpl::parseMappedAttribute):
          * ksvg2/svg/SVGURIReferenceImpl.h:
          * ksvg2/svg/SVGUseElementImpl.cpp:
          (SVGUseElementImpl::SVGUseElementImpl):
          (SVGUseElementImpl::parseMappedAttribute):
          (SVGUseElementImpl::closeRenderer):
          (SVGUseElementImpl::createRenderer):
          * ksvg2/svg/SVGUseElementImpl.h:
          (KSVG::SVGUseElementImpl::rendererIsNeeded):
          * ksvg2/svg/SVGViewElementImpl.cpp:
          (SVGViewElementImpl::SVGViewElementImpl):
          (SVGViewElementImpl::parseMappedAttribute):
          * ksvg2/svg/SVGViewElementImpl.h:
          * ksvg2/svg/SVGZoomAndPanImpl.cpp:
          (SVGZoomAndPanImpl::parseMappedAttribute):
          * ksvg2/svg/SVGZoomAndPanImpl.h:
  
  Revision  Changes    Path
  1.388     +934 -0    WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.387
  retrieving revision 1.388
  diff -u -r1.387 -r1.388
  --- ChangeLog	21 Nov 2005 04:01:47 -0000	1.387
  +++ ChangeLog	21 Nov 2005 08:29:03 -0000	1.388
  @@ -1,5 +1,939 @@
   2005-11-20  Eric Seidel  <eseidel at apple.com>
   
  +        Only affects SVG; no review required (or possible due to size).
  +
  +        The KSVG/KCanvas section of the big DOM merger.
  +        http://bugzilla.opendarwin.org/show_bug.cgi?id=3249
  +        At least the following were addressed in this patch:
  +        
  +        - Namespace mapping (KDOM -> DOM, khtml)
  +        - Forwarding Headers (temp. all kdom .h map to all webcore .h)
  +        - Various KDOM stub classes added to WebCore+SVG folder
  +        - Various DOMStringImpl -> DOMString changes
  +        - DOMString::string() -> DOMString::qstring() in ksvg2
  +        - DOMString::handle() -> DOMString::impl() in ksvg2
  +        - DocumentImpl, DocumentType  ::impl() -> ::implentation() in khtml
  +        - Moved NodeImpl::Id to QualifiedString/AtomicString in ksvg2
  +        - SVGNames.*, SVGElementFactory.* (and generating perl script)
  +        - EventImpl::id() -> type() with AtomicString
  +        - Removal of SVGEventImpl
  +        - Adding svg document and event creation in xml_docimpl.h
  +        - All in SVGDocumentImpl, also now using SharedPtr
  +        - Mapped KSVGPart, KDOMPart, KSVGView, KDOMView to KHTML*
  +        - Removed all throw calls, replacing with exceptioncode parameters
  +        - SVGElement now derives from StyledElementImpl
  +        - Corrected SVGNames cases (viewBoxAttr vs. viewboxAttr)
  +        - Moved TimeScheduler from Doc -> SVGSVGElement (temp. & wrong)
  +        - Moved off of DocPtr onto DocumentImpl * directly in ksvg2
  +        - Made SVGRenderStyle a member of khtml::RenderStyle
  +        - Worked KSVGCSSParser into CSSParser
  +        - Worked SVGCSSStyleSelector into CSSStyleSelector
  +        - Changed parseAttribute -> parseMappedAttribute
  +        - Moved KCanvasContainer onto RenderContainer
  +        - Renamed KCanvasItem, RenderPath, now subclass of RenderObject
  +        - Added RenderObject: bbox(), isRenderPath(), isKCanvasContainer()
  +        - Moved KCanvasContainer and RenderPath from draw() -> paint()
  +        - Removed RenderSVGBox && render_kcanvaswrapper hacks
  +        - Gutted KCanvasItem (now RenderPath) and KCanvasContainer
  +        - Merged KCanvasTreeDebug into KWQRenderTreeDebug
  +        - Made SVGNames.* SVGElementFactory.* generation a build phase
  +        - Removed KRenderingStyle
  +        - Gutted KCanvasRenderingStyle
  +        - Moved objectTransform onto RenderObject as "localTransform"
  +        - Removed KCanvasRegistry
  +        - Changed the way Graidents build their stop lists
  +        - Removed all dynamic_cast, turned off RTTI and Exceptions
  +        - Picked up recent marker fix & relative transform fixes from KDE
  +
  +        * ForwardingHeaders/kcanvas/KCanvas.h: Added.
  +        * ForwardingHeaders/kcanvas/RenderPath.h: Added.
  +        * ForwardingHeaders/kdom/core/AttrImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/CDFInterface.h: Added.
  +        * ForwardingHeaders/kdom/core/DOMConfigurationImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/DOMExceptionImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/DOMImplementationImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/DOMList.h: Added.
  +        * ForwardingHeaders/kdom/core/DOMStringImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/DocumentImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/DocumentTypeImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/ElementImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/NamedAttrMapImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/NodeImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/NodeListImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/ProcessingInstructionImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/XMLElementImpl.h: Added.
  +        * ForwardingHeaders/kdom/core/domattrs.h: Added.
  +        * WebCore+SVG/DrawCanvasItem.mm:
  +        (-[DrawCanvasItem dragAnchorPointForControlPointIndex:]):
  +        (-[DrawCanvasItem controlPoints]):
  +        (-[DrawCanvasItem fitToNewBBox:]):
  +        (-[DrawCanvasItem valueForKey:]):
  +        (-[DrawCanvasItem attributedXMLString]):
  +        * WebCore+SVG/DrawDocument.mm:
  +        (-[DrawView initWithSVGData:]):
  +        (-[DrawView svgText]):
  +        (-[DrawDocument documentListensForMouseMovedEvents]):
  +        (-[DrawDocument documentListensForMouseDownEvents]):
  +        (-[DrawDocument documentListensForMouseUpEvents]):
  +        (-[DrawDocument KDOM::newMouseEventWithEventId:KDOM::qMouseEvent:]):
  +        (cursorForStyle):
  +        (-[DrawDocument cursorAfterPropagatingMouseMovedEvent:fromView:]):
  +        (-[DrawDocument removeItemFromDOM:]):
  +        (-[DrawDocument createItemForTool:atPoint:]):
  +        * WebCore+SVG/KDOMHeaders.h:
  +        * WebCore+SVG/KDOMSettings.cpp:
  +        * WebCore+SVG/SVGElementFactoryWrapper.cpp: Added.
  +        * WebCore+SVG/SVGNames.cpp: Removed.
  +        * WebCore+SVG/SVGNames.h: Removed.
  +        * WebCore+SVG/SVGNamesWrapper.cpp: Added.
  +        * WebCore+SVG/dom_kdomdocumentwrapper.cpp: Removed.
  +        * WebCore+SVG/dom_kdomdocumentwrapper.h: Removed.
  +        * WebCore+SVG/dom_kdomnodetreewrapper.cpp: Removed.
  +        * WebCore+SVG/dom_kdomnodetreewrapper.h: Removed.
  +        * WebCore+SVG/render_kcanvaswrapper.cpp: Removed.
  +        * WebCore+SVG/render_kcanvaswrapper.h: Removed.
  +        * WebCore+SVG/xml_kdomtokenizer.cpp: Removed.
  +        * WebCore.xcodeproj/project.pbxproj:
  +        * kcanvas/KCanvas.cpp: Removed.
  +        * kcanvas/KCanvas.h: Removed.
  +        * kcanvas/KCanvasContainer.cpp:
  +        (KCanvasContainer::Private::Private):
  +        (KCanvasContainer::KCanvasContainer):
  +        (KCanvasContainer::~KCanvasContainer):
  +        (KCanvasContainer::localTransform):
  +        (KCanvasContainer::setLocalTransform):
  +        (KCanvasContainer::fillContains):
  +        (KCanvasContainer::strokeContains):
  +        (KCanvasContainer::bbox):
  +        (KCanvasContainer::setSlice):
  +        (KCanvasContainer::slice):
  +        (KCanvasContainer::getAspectRatio):
  +        * kcanvas/KCanvasContainer.h:
  +        (KCanvasContainer::isKCanvasContainer):
  +        (KCanvasContainer::renderName):
  +        * kcanvas/KCanvasCreator.cpp:
  +        (KCanvasCreator::createCanvasPathData):
  +        * kcanvas/KCanvasCreator.h:
  +        * kcanvas/KCanvasFilters.cpp:
  +        (getFilterById):
  +        * kcanvas/KCanvasFilters.h:
  +        (KCanvasFEImage::image):
  +        (KCanvasFEImage::setImage):
  +        * kcanvas/KCanvasItem.cpp:
  +        (RenderPath::Private::Private):
  +        (RenderPath::Private::~Private):
  +        (RenderPath::RenderPath):
  +        (RenderPath::~RenderPath):
  +        (RenderPath::setStyle):
  +        (RenderPath::localTransform):
  +        (RenderPath::setLocalTransform):
  +        (RenderPath::fillContains):
  +        (RenderPath::strokeContains):
  +        (RenderPath::bbox):
  +        (RenderPath::hitsPath):
  +        (RenderPath::bboxPath):
  +        (RenderPath::setupForDraw):
  +        (RenderPath::changePath):
  +        (RenderPath::path):
  +        (RenderPath::canvasStyle):
  +        (RenderPath::commonArgs):
  +        * kcanvas/KCanvasItem.h:
  +        (RenderPath::isRenderPath):
  +        (RenderPath::renderName):
  +        * kcanvas/KCanvasResources.cpp:
  +        (KCanvasResource::addClient):
  +        (KCanvasResource::invalidate):
  +        (KCanvasMarker::KCanvasMarker):
  +        (KCanvasMarker::setMarker):
  +        (KCanvasMarker::setUseStrokeWidth):
  +        (KCanvasMarker::useStrokeWidth):
  +        (KCanvasMarker::setScaleX):
  +        (KCanvasMarker::scaleX):
  +        (KCanvasMarker::setScaleY):
  +        (KCanvasMarker::scaleY):
  +        (KCanvasMarker::draw):
  +        (getResourceById):
  +        (getMarkerById):
  +        (getClipperById):
  +        (getPaintServerById):
  +        * kcanvas/KCanvasResources.h:
  +        (KCanvasResource::isPaintServer):
  +        (KCanvasResource::isFilter):
  +        (KCanvasResource::isClipper):
  +        (KCanvasResource::isMarker):
  +        * kcanvas/KCanvasTreeDebug.cpp:
  +        (operator<<):
  +        (writeStyle):
  +        (getTagName):
  +        (write):
  +        * kcanvas/KCanvasTreeDebug.h:
  +        * kcanvas/KCanvasTypes.h:
  +        * kcanvas/KCanvasView.cpp: Removed.
  +        * kcanvas/KCanvasView.h: Removed.
  +        * kcanvas/KCanvasView.moc: Removed.
  +        * kcanvas/device/KRenderingDevice.cpp:
  +        (KCanvasCommonArgs::KCanvasCommonArgs):
  +        (KCanvasCommonArgs::canvasStyle):
  +        (KCanvasCommonArgs::setStyle):
  +        * kcanvas/device/KRenderingDevice.h:
  +        * kcanvas/device/KRenderingDeviceFactory.cpp: Removed.
  +        * kcanvas/device/KRenderingDeviceFactory.h: Removed.
  +        * kcanvas/device/KRenderingPaintServer.h:
  +        (KRenderingPaintServer::activeClient):
  +        (KRenderingPaintServer::setActiveClient):
  +        * kcanvas/device/KRenderingPaintServerGradient.cpp:
  +        (KRenderingPaintServerGradient::externalRepresentation):
  +        * kcanvas/device/KRenderingPaintServerPattern.cpp:
  +        (KRenderingPaintServerPattern::externalRepresentation):
  +        * kcanvas/device/KRenderingStrokePainter.h:
  +        * kcanvas/device/KRenderingStyle.cpp: Removed.
  +        * kcanvas/device/KRenderingStyle.h: Removed.
  +        * kcanvas/device/quartz/KCanvasFilterQuartz.h:
  +        * kcanvas/device/quartz/KCanvasFilterQuartz.mm:
  +        (KCanvasFilterQuartz::applyFilter):
  +        * kcanvas/device/quartz/KCanvasItemQuartz.h:
  +        (KCanvasItemQuartz::requiresLayer):
  +        (KCanvasItemQuartz::layout):
  +        * kcanvas/device/quartz/KCanvasItemQuartz.mm:
  +        (KCanvasItemQuartz::KCanvasItemQuartz):
  +        (KCanvasItemQuartz::drawMarkersIfNeeded):
  +        (KCanvasItemQuartz::paint):
  +        (KCanvasItemQuartz::nodeAtPoint):
  +        (KCanvasItemQuartz::bboxPath):
  +        (KCanvasItemQuartz::hitsPath):
  +        * kcanvas/device/quartz/KCanvasResourcesQuartz.h:
  +        (KCanvasContainerQuartz::KCanvasContainerQuartz):
  +        (KCanvasContainerQuartz::canHaveChildren):
  +        (KCanvasContainerQuartz::requiresLayer):
  +        * kcanvas/device/quartz/KCanvasResourcesQuartz.mm:
  +        (KCanvasContainerQuartz::calcMinMaxWidth):
  +        (KCanvasContainerQuartz::layout):
  +        (KCanvasContainerQuartz::paint):
  +        (KCanvasContainerQuartz::setViewport):
  +        (KCanvasContainerQuartz::viewport):
  +        (KCanvasContainerQuartz::setViewBox):
  +        (KCanvasContainerQuartz::viewBox):
  +        (KCanvasContainerQuartz::setAlign):
  +        (KCanvasContainerQuartz::align):
  +        (KCanvasClipperQuartz::applyClip):
  +        * kcanvas/device/quartz/KCanvasViewQuartz.h: Removed.
  +        * kcanvas/device/quartz/KCanvasViewQuartz.mm: Removed.
  +        * kcanvas/device/quartz/KRenderingDeviceQuartz.h:
  +        * kcanvas/device/quartz/KRenderingDeviceQuartz.mm:
  +        (KRenderingDeviceContextQuartz::concatCTM):
  +        (KRenderingDeviceContextQuartz::ctm):
  +        (KRenderingDeviceQuartz::stringForPath):
  +        (KRenderingDeviceQuartz::createContainer):
  +        (KRenderingDeviceQuartz::createItem):
  +        * kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm:
  +        (drawShadingWithStyle):
  +        (KRenderingPaintServerLinearGradientQuartz::draw):
  +        (KRenderingPaintServerRadialGradientQuartz::draw):
  +        * kcanvas/device/quartz/KRenderingPaintServerQuartz.mm:
  +        (KRenderingPaintServerSolidQuartz::draw):
  +        (KRenderingPaintServerPatternQuartz::draw):
  +        * kcanvas/device/quartz/QuartzSupport.h:
  +        * kcanvas/device/quartz/QuartzSupport.mm:
  +        (CFStringFromCGAffineTransform):
  +        (CGAffineTransformMakeMapBetweenRects):
  +        (CGPathTransformCallback):
  +        (CGPathApplyTransform):
  +        (applyStrokeStyleToContext):
  +        (CGPathToCFStringApplierFunction):
  +        (CFStringFromCGPath):
  +        * kdom/bindings/DocParser.pm: Removed.
  +        * kdom/bindings/IDLCodeGenerator.pm: Removed.
  +        * kdom/bindings/IDLCodeGeneratorCpp.pm: Removed.
  +        * kdom/bindings/IDLCodeGeneratorEcmaInterface.pm: Removed.
  +        * kdom/bindings/IDLCodeGeneratorJs.pm: Removed.
  +        * kdom/bindings/IDLParser.pm: Removed.
  +        * kdom/bindings/IDLStructure.pm: Removed.
  +        * kdom/bindings/idl/core/Attr.idl: Removed.
  +        * kdom/bindings/idl/core/CDATASection.idl: Removed.
  +        * kdom/bindings/idl/core/CharacterData.idl: Removed.
  +        * kdom/bindings/idl/core/Comment.idl: Removed.
  +        * kdom/bindings/idl/core/DOMConfiguration.idl: Removed.
  +        * kdom/bindings/idl/core/DOMError.idl: Removed.
  +        * kdom/bindings/idl/core/DOMErrorHandler.idl: Removed.
  +        * kdom/bindings/idl/core/DOMException.idl: Removed.
  +        * kdom/bindings/idl/core/DOMImplementation.idl: Removed.
  +        * kdom/bindings/idl/core/DOMLocator.idl: Removed.
  +        * kdom/bindings/idl/core/DOMObject.idl: Removed.
  +        * kdom/bindings/idl/core/DOMStringList.idl: Removed.
  +        * kdom/bindings/idl/core/DOMUserData.idl: Removed.
  +        * kdom/bindings/idl/core/Document.idl: Removed.
  +        * kdom/bindings/idl/core/DocumentFragment.idl: Removed.
  +        * kdom/bindings/idl/core/DocumentType.idl: Removed.
  +        * kdom/bindings/idl/core/Element.idl: Removed.
  +        * kdom/bindings/idl/core/Entity.idl: Removed.
  +        * kdom/bindings/idl/core/EntityReference.idl: Removed.
  +        * kdom/bindings/idl/core/NamedNodeMap.idl: Removed.
  +        * kdom/bindings/idl/core/Node.idl: Removed.
  +        * kdom/bindings/idl/core/NodeList.idl: Removed.
  +        * kdom/bindings/idl/core/Notation.idl: Removed.
  +        * kdom/bindings/idl/core/ProcessingInstruction.idl: Removed.
  +        * kdom/bindings/idl/core/Text.idl: Removed.
  +        * kdom/bindings/idl/core/TypeInfo.idl: Removed.
  +        * kdom/bindings/idl/core/kdomdefs.idl: Removed.
  +        * kdom/bindings/idl/css/CSS2Properties.idl: Removed.
  +        * kdom/bindings/idl/css/CSSCharsetRule.idl: Removed.
  +        * kdom/bindings/idl/css/CSSFontFaceRule.idl: Removed.
  +        * kdom/bindings/idl/css/CSSImportRule.idl: Removed.
  +        * kdom/bindings/idl/css/CSSMediaRule.idl: Removed.
  +        * kdom/bindings/idl/css/CSSPageRule.idl: Removed.
  +        * kdom/bindings/idl/css/CSSPrimitiveValue.idl: Removed.
  +        * kdom/bindings/idl/css/CSSRule.idl: Removed.
  +        * kdom/bindings/idl/css/CSSRuleList.idl: Removed.
  +        * kdom/bindings/idl/css/CSSStyleDeclaration.idl: Removed.
  +        * kdom/bindings/idl/css/CSSStyleRule.idl: Removed.
  +        * kdom/bindings/idl/css/CSSStyleSheet.idl: Removed.
  +        * kdom/bindings/idl/css/CSSUnknownRule.idl: Removed.
  +        * kdom/bindings/idl/css/CSSValue.idl: Removed.
  +        * kdom/bindings/idl/css/CSSValueList.idl: Removed.
  +        * kdom/bindings/idl/css/Counter.idl: Removed.
  +        * kdom/bindings/idl/css/DocumentCSS.idl: Removed.
  +        * kdom/bindings/idl/css/ElementCSSInlineStyle.idl: Removed.
  +        * kdom/bindings/idl/css/RGBColor.idl: Removed.
  +        * kdom/bindings/idl/css/Rect.idl: Removed.
  +        * kdom/bindings/idl/css/kdomdefs.idl: Removed.
  +        * kdom/bindings/idl/events/DocumentEvent.idl: Removed.
  +        * kdom/bindings/idl/events/Event.idl: Removed.
  +        * kdom/bindings/idl/events/EventException.idl: Removed.
  +        * kdom/bindings/idl/events/EventListener.idl: Removed.
  +        * kdom/bindings/idl/events/EventTarget.idl: Removed.
  +        * kdom/bindings/idl/events/MouseEvent.idl: Removed.
  +        * kdom/bindings/idl/events/MutationEvent.idl: Removed.
  +        * kdom/bindings/idl/events/UIEvent.idl: Removed.
  +        * kdom/bindings/idl/events/kdomdefs.idl: Removed.
  +        * kdom/bindings/idl/ls/DOMImplementationLS.idl: Removed.
  +        * kdom/bindings/idl/ls/LSException.idl: Removed.
  +        * kdom/bindings/idl/ls/LSInput.idl: Removed.
  +        * kdom/bindings/idl/ls/LSOutput.idl: Removed.
  +        * kdom/bindings/idl/ls/LSParser.idl: Removed.
  +        * kdom/bindings/idl/ls/LSParserFilter.idl: Removed.
  +        * kdom/bindings/idl/ls/LSResourceResolver.idl: Removed.
  +        * kdom/bindings/idl/ls/LSSerializer.idl: Removed.
  +        * kdom/bindings/idl/ls/LSSerializerFilter.idl: Removed.
  +        * kdom/bindings/idl/ls/kdomdefs.idl: Removed.
  +        * kdom/bindings/idl/range/DocumentRange.idl: Removed.
  +        * kdom/bindings/idl/range/Range.idl: Removed.
  +        * kdom/bindings/idl/range/RangeException.idl: Removed.
  +        * kdom/bindings/idl/range/kdomdefs.idl: Removed.
  +        * kdom/bindings/idl/stylesheets/DocumentStyle.idl: Removed.
  +        * kdom/bindings/idl/stylesheets/LinkStyle.idl: Removed.
  +        * kdom/bindings/idl/stylesheets/MediaList.idl: Removed.
  +        * kdom/bindings/idl/stylesheets/StyleSheet.idl: Removed.
  +        * kdom/bindings/idl/stylesheets/StyleSheetList.idl: Removed.
  +        * kdom/bindings/idl/stylesheets/kdomdefs.idl: Removed.
  +        * kdom/bindings/idl/traversal/DocumentTraversal.idl: Removed.
  +        * kdom/bindings/idl/traversal/NodeFilter.idl: Removed.
  +        * kdom/bindings/idl/traversal/NodeIterator.idl: Removed.
  +        * kdom/bindings/idl/traversal/TreeWalker.idl: Removed.
  +        * kdom/bindings/idl/traversal/kdomdefs.idl: Removed.
  +        * kdom/bindings/idl/views/AbstractView.idl: Removed.
  +        * kdom/bindings/idl/views/DocumentView.idl: Removed.
  +        * kdom/bindings/idl/views/kdomdefs.idl: Removed.
  +        * kdom/bindings/idl/xpath/XPathEvaluator.idl: Removed.
  +        * kdom/bindings/idl/xpath/XPathException.idl: Removed.
  +        * kdom/bindings/idl/xpath/XPathExpression.idl: Removed.
  +        * kdom/bindings/idl/xpath/XPathNSResolver.idl: Removed.
  +        * kdom/bindings/idl/xpath/XPathNamespace.idl: Removed.
  +        * kdom/bindings/idl/xpath/XPathResult.idl: Removed.
  +        * kdom/bindings/idl/xpath/kdomdefs.idl: Removed.
  +        * kdom/bindings/idl/xpointer/XPointerEvaluator.idl: Removed.
  +        * kdom/bindings/idl/xpointer/XPointerException.idl: Removed.
  +        * kdom/bindings/idl/xpointer/XPointerExpression.idl: Removed.
  +        * kdom/bindings/idl/xpointer/XPointerResult.idl: Removed.
  +        * kdom/bindings/idl/xpointer/kdomdefs.idl: Removed.
  +        * kdom/bindings/kdombinder.sh: Removed.
  +        * kdom/bindings/kdomidl.pl: Removed.
  +        * kdom/ls/DOMImplementationLSImpl.cpp: Removed.
  +        * kdom/ls/DOMImplementationLSImpl.h: Removed.
  +        * kdom/ls/LSExceptionImpl.cpp: Removed.
  +        * kdom/ls/LSExceptionImpl.h: Removed.
  +        * kdom/ls/LSInputImpl.cpp: Removed.
  +        * kdom/ls/LSInputImpl.h: Removed.
  +        * kdom/ls/LSOutputImpl.cpp: Removed.
  +        * kdom/ls/LSOutputImpl.h: Removed.
  +        * kdom/ls/LSParserFilterImpl.cpp: Removed.
  +        * kdom/ls/LSParserFilterImpl.h: Removed.
  +        * kdom/ls/LSParserImpl.cpp: Removed.
  +        * kdom/ls/LSParserImpl.h: Removed.
  +        * kdom/ls/LSResourceResolverImpl.cpp: Removed.
  +        * kdom/ls/LSResourceResolverImpl.h: Removed.
  +        * kdom/ls/LSSerializerFilterImpl.cpp: Removed.
  +        * kdom/ls/LSSerializerFilterImpl.h: Removed.
  +        * kdom/ls/LSSerializerImpl.cpp: Removed.
  +        * kdom/ls/LSSerializerImpl.h: Removed.
  +        * kdom/ls/kdomls.h: Removed.
  +        * kdom/scripts/cssmakeprops: Removed.
  +        * kdom/scripts/cssmakevalues: Removed.
  +        * ksvg2/KSVGFactory.cpp: Removed.
  +        * ksvg2/KSVGFactory.h: Removed.
  +        * ksvg2/css/KSVGCSSParser.cpp:
  +        (DOM::CSSParser::parseSVGValue):
  +        (DOM::CSSParser::parseSVGStrokeDasharray):
  +        (DOM::CSSParser::parseSVGPaint):
  +        (DOM::CSSParser::parseSVGColor):
  +        * ksvg2/css/SVGCSSStyleDeclarationImpl.cpp: Removed.
  +        * ksvg2/css/SVGCSSStyleDeclarationImpl.h: Removed.
  +        * ksvg2/css/SVGCSSStyleSelector.cpp:
  +        (KDOM::CSSStyleSelector::applySVGProperty):
  +        * ksvg2/css/SVGCSSStyleSheetImpl.cpp: Removed.
  +        * ksvg2/css/SVGCSSStyleSheetImpl.h: Removed.
  +        * ksvg2/css/SVGRenderStyle.cpp:
  +        (SVGRenderStyle::SVGRenderStyle):
  +        (SVGRenderStyle::equals):
  +        (SVGRenderStyle::inheritFrom):
  +        * ksvg2/css/SVGRenderStyle.h:
  +        (KSVG::SVGRenderStyle::SVGRenderStyle):
  +        * ksvg2/css/SVGRenderStyleDefs.cpp:
  +        (StyleMiscData::StyleMiscData):
  +        (StyleMiscData::operator==):
  +        * ksvg2/css/SVGRenderStyleDefs.h:
  +        * ksvg2/ecma/Ecma.cpp:
  +        (Ecma::inheritedGetDOMNode):
  +        * ksvg2/ecma/GlobalObject.cpp:
  +        * ksvg2/events/SVGZoomEventImpl.cpp:
  +        (SVGZoomEventImpl::SVGZoomEventImpl):
  +        * ksvg2/events/SVGZoomEventImpl.h:
  +        * ksvg2/misc/KCanvasRenderingStyle.cpp:
  +        (KCanvasRenderingStyle::KCanvasRenderingStyle):
  +        (KCanvasRenderingStyle::updateFill):
  +        (KCanvasRenderingStyle::updateStroke):
  +        (KCanvasRenderingStyle::updateStyle):
  +        (KCanvasRenderingStyle::cssPrimitiveToLength):
  +        * ksvg2/misc/KCanvasRenderingStyle.h:
  +        (KSVG::KCanvasRenderingStyle::renderStyle):
  +        * ksvg2/misc/KSVGTimeScheduler.cpp:
  +        (KSVG::SVGTimer::notifyAll):
  +        (KSVG::TimeScheduler::TimeScheduler):
  +        * ksvg2/misc/KSVGTimeScheduler.h:
  +        (KSVG::TimeScheduler::document):
  +        * ksvg2/scripts/cssmakeprops: Added.
  +        * ksvg2/scripts/cssmakevalues: Added.
  +        * ksvg2/scripts/make_names.pl: Added.
  +        * ksvg2/svg/CDFInterface.cpp: Removed.
  +        * ksvg2/svg/CDFInterface.h: Removed.
  +        * ksvg2/svg/SVGAElementImpl.cpp:
  +        (SVGAElementImpl::SVGAElementImpl):
  +        (SVGAElementImpl::parseMappedAttribute):
  +        (SVGAElementImpl::createRenderer):
  +        (SVGAElementImpl::defaultEventHandler):
  +        * ksvg2/svg/SVGAElementImpl.h:
  +        (KSVG::SVGAElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGAngleImpl.cpp:
  +        (SVGAngleImpl::setValueAsString):
  +        (SVGAngleImpl::valueAsString):
  +        * ksvg2/svg/SVGAnimateColorElementImpl.cpp:
  +        (SVGAnimateColorElementImpl::SVGAnimateColorElementImpl):
  +        (SVGAnimateColorElementImpl::handleTimerEvent):
  +        * ksvg2/svg/SVGAnimateColorElementImpl.h:
  +        * ksvg2/svg/SVGAnimateElementImpl.cpp:
  +        (SVGAnimateElementImpl::SVGAnimateElementImpl):
  +        (SVGAnimateElementImpl::handleTimerEvent):
  +        * ksvg2/svg/SVGAnimateElementImpl.h:
  +        * ksvg2/svg/SVGAnimateTransformElementImpl.cpp:
  +        (SVGAnimateTransformElementImpl::SVGAnimateTransformElementImpl):
  +        (SVGAnimateTransformElementImpl::~SVGAnimateTransformElementImpl):
  +        (SVGAnimateTransformElementImpl::parseMappedAttribute):
  +        (SVGAnimateTransformElementImpl::handleTimerEvent):
  +        (SVGAnimateTransformElementImpl::initialMatrix):
  +        (SVGAnimateTransformElementImpl::transformMatrix):
  +        * ksvg2/svg/SVGAnimateTransformElementImpl.h:
  +        * ksvg2/svg/SVGAnimatedLengthListImpl.cpp:
  +        * ksvg2/svg/SVGAnimatedLengthListImpl.h:
  +        * ksvg2/svg/SVGAnimatedNumberListImpl.cpp:
  +        * ksvg2/svg/SVGAnimatedNumberListImpl.h:
  +        * ksvg2/svg/SVGAnimatedStringImpl.cpp:
  +        (SVGAnimatedStringImpl::create):
  +        * ksvg2/svg/SVGAnimatedStringImpl.h:
  +        * ksvg2/svg/SVGAnimatedTemplate.h:
  +        (KSVG::SVGAnimatedTemplate::setBaseVal):
  +        (KSVG::SVGAnimatedTemplate::setAnimVal):
  +        * ksvg2/svg/SVGAnimatedTransformListImpl.cpp:
  +        * ksvg2/svg/SVGAnimatedTransformListImpl.h:
  +        * ksvg2/svg/SVGAnimationElementImpl.cpp:
  +        (SVGAnimationElementImpl::SVGAnimationElementImpl):
  +        (SVGAnimationElementImpl::targetElement):
  +        (SVGAnimationElementImpl::parseMappedAttribute):
  +        (SVGAnimationElementImpl::closeRenderer):
  +        (SVGAnimationElementImpl::targetAttribute):
  +        (SVGAnimationElementImpl::setTargetAttribute):
  +        * ksvg2/svg/SVGAnimationElementImpl.h:
  +        (KSVG::SVGAnimationElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGCircleElementImpl.cpp:
  +        (SVGCircleElementImpl::SVGCircleElementImpl):
  +        (SVGCircleElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGCircleElementImpl.h:
  +        (KSVG::SVGCircleElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGClipPathElementImpl.cpp:
  +        (SVGClipPathElementImpl::SVGClipPathElementImpl):
  +        (SVGClipPathElementImpl::parseMappedAttribute):
  +        (SVGClipPathElementImpl::canvasResource):
  +        * ksvg2/svg/SVGClipPathElementImpl.h:
  +        * ksvg2/svg/SVGColorImpl.cpp:
  +        (SVGColorImpl::rgbColor):
  +        (SVGColorImpl::setRGBColor):
  +        (SVGColorImpl::cssText):
  +        * ksvg2/svg/SVGColorImpl.h:
  +        * ksvg2/svg/SVGComponentTransferFunctionElementImpl.cpp:
  +        (SVGComponentTransferFunctionElementImpl::SVGComponentTransferFunctionElementImpl):
  +        (SVGComponentTransferFunctionElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGComponentTransferFunctionElementImpl.h:
  +        * ksvg2/svg/SVGCursorElementImpl.cpp:
  +        (SVGCursorElementImpl::SVGCursorElementImpl):
  +        (SVGCursorElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGCursorElementImpl.h:
  +        * ksvg2/svg/SVGDOMImplementationImpl.cpp:
  +        (SVGDOMImplementationImpl::~SVGDOMImplementationImpl):
  +        (SVGDOMImplementationImpl::hasFeature):
  +        (SVGDOMImplementationImpl::createDocumentType):
  +        (SVGDOMImplementationImpl::createDocument):
  +        (SVGDOMImplementationImpl::createCSSStyleSheet):
  +        * ksvg2/svg/SVGDOMImplementationImpl.h:
  +        * ksvg2/svg/SVGDefsElementImpl.cpp:
  +        (SVGDefsElementImpl::SVGDefsElementImpl):
  +        * ksvg2/svg/SVGDefsElementImpl.h:
  +        * ksvg2/svg/SVGDescElementImpl.cpp:
  +        (SVGDescElementImpl::SVGDescElementImpl):
  +        (SVGDescElementImpl::description):
  +        * ksvg2/svg/SVGDescElementImpl.h:
  +        * ksvg2/svg/SVGDocumentImpl.cpp:
  +        (SVGDocumentImpl::SVGDocumentImpl):
  +        (SVGDocumentImpl::~SVGDocumentImpl):
  +        (SVGDocumentImpl::title):
  +        (SVGDocumentImpl::createElement):
  +        (SVGDocumentImpl::rootElement):
  +        (SVGDocumentImpl::notifyFinished):
  +        (SVGDocumentImpl::dispatchRecursiveEvent):
  +        (SVGDocumentImpl::dispatchZoomEvent):
  +        (SVGDocumentImpl::dispatchScrollEvent):
  +        (SVGDocumentImpl::dispatchKeyEvent):
  +        (SVGDocumentImpl::createStyleSelector):
  +        (SVGDocumentImpl::addScripts):
  +        (SVGDocumentImpl::executeScripts):
  +        (SVGDocumentImpl::dispatchUIEvent):
  +        (SVGDocumentImpl::dispatchMouseEvent):
  +        * ksvg2/svg/SVGDocumentImpl.h:
  +        * ksvg2/svg/SVGElementFactory.cpp: Removed.
  +        * ksvg2/svg/SVGElementFactory.h: Removed.
  +        * ksvg2/svg/SVGElementImpl.cpp:
  +        (SVGElementImpl::SVGElementImpl):
  +        (SVGElementImpl::isSupported):
  +        (SVGElementImpl::ownerSVGElement):
  +        (SVGElementImpl::viewportElement):
  +        (SVGElementImpl::tryGetAttribute):
  +        (SVGElementImpl::tryGetAttributeNS):
  +        (SVGElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGElementImpl.h:
  +        (KSVG::SVGElementImpl::isSVGElement):
  +        (KSVG::SVGElementImpl::adjustViewportClipping):
  +        (KSVG::SVGElementImpl::isStyledTransformable):
  +        (KSVG::SVGElementImpl::isStyledLocatable):
  +        (KSVG::SVGElementImpl::isFilterEffect):
  +        (KSVG::SVGElementImpl::isGradientStop):
  +        (KSVG::SVGElementImpl::isValid):
  +        (KSVG::SVGElementImpl::closeRenderer):
  +        (KSVG::SVGElementImpl::rendererIsNeeded):
  +        (KSVG::SVGElementImpl::isClosed):
  +        * ksvg2/svg/SVGEllipseElementImpl.cpp:
  +        (KSVG::SVGEllipseElementImpl::SVGEllipseElementImpl):
  +        (KSVG::SVGEllipseElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGEllipseElementImpl.h:
  +        (KSVG::SVGEllipseElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGExternalResourcesRequiredImpl.cpp:
  +        (SVGExternalResourcesRequiredImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGExternalResourcesRequiredImpl.h:
  +        * ksvg2/svg/SVGFEBlendElementImpl.cpp:
  +        (SVGFEBlendElementImpl::SVGFEBlendElementImpl):
  +        (SVGFEBlendElementImpl::parseMappedAttribute):
  +        (SVGFEBlendElementImpl::createRenderer):
  +        * ksvg2/svg/SVGFEBlendElementImpl.h:
  +        (KSVG::SVGFEBlendElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFEColorMatrixElementImpl.cpp:
  +        (SVGFEColorMatrixElementImpl::SVGFEColorMatrixElementImpl):
  +        (SVGFEColorMatrixElementImpl::parseMappedAttribute):
  +        (SVGFEColorMatrixElementImpl::createRenderer):
  +        * ksvg2/svg/SVGFEColorMatrixElementImpl.h:
  +        (KSVG::SVGFEColorMatrixElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFEComponentTransferElementImpl.cpp:
  +        (SVGFEComponentTransferElementImpl::SVGFEComponentTransferElementImpl):
  +        (SVGFEComponentTransferElementImpl::parseMappedAttribute):
  +        (SVGFEComponentTransferElementImpl::createRenderer):
  +        (SVGFEComponentTransferElementImpl::closeRenderer):
  +        * ksvg2/svg/SVGFEComponentTransferElementImpl.h:
  +        (KSVG::SVGFEComponentTransferElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFECompositeElementImpl.cpp:
  +        (SVGFECompositeElementImpl::SVGFECompositeElementImpl):
  +        (SVGFECompositeElementImpl::parseMappedAttribute):
  +        (SVGFECompositeElementImpl::createRenderer):
  +        * ksvg2/svg/SVGFECompositeElementImpl.h:
  +        (KSVG::SVGFECompositeElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFEFloodElementImpl.cpp:
  +        (SVGFEFloodElementImpl::SVGFEFloodElementImpl):
  +        (SVGFEFloodElementImpl::parseMappedAttribute):
  +        (SVGFEFloodElementImpl::createRenderer):
  +        * ksvg2/svg/SVGFEFloodElementImpl.h:
  +        (KSVG::SVGFEFloodElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFEFuncAElementImpl.cpp:
  +        (SVGFEFuncAElementImpl::SVGFEFuncAElementImpl):
  +        * ksvg2/svg/SVGFEFuncAElementImpl.h:
  +        * ksvg2/svg/SVGFEFuncBElementImpl.cpp:
  +        (SVGFEFuncBElementImpl::SVGFEFuncBElementImpl):
  +        * ksvg2/svg/SVGFEFuncBElementImpl.h:
  +        * ksvg2/svg/SVGFEFuncGElementImpl.cpp:
  +        (SVGFEFuncGElementImpl::SVGFEFuncGElementImpl):
  +        * ksvg2/svg/SVGFEFuncGElementImpl.h:
  +        * ksvg2/svg/SVGFEFuncRElementImpl.cpp:
  +        (SVGFEFuncRElementImpl::SVGFEFuncRElementImpl):
  +        * ksvg2/svg/SVGFEFuncRElementImpl.h:
  +        * ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp:
  +        (SVGFEGaussianBlurElementImpl::SVGFEGaussianBlurElementImpl):
  +        (SVGFEGaussianBlurElementImpl::parseMappedAttribute):
  +        (SVGFEGaussianBlurElementImpl::createRenderer):
  +        * ksvg2/svg/SVGFEGaussianBlurElementImpl.h:
  +        (KSVG::SVGFEGaussianBlurElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFEImageElementImpl.cpp:
  +        (SVGFEImageElementImpl::SVGFEImageElementImpl):
  +        (SVGFEImageElementImpl::parseMappedAttribute):
  +        (SVGFEImageElementImpl::finalizeStyle):
  +        (SVGFEImageElementImpl::createRenderer):
  +        * ksvg2/svg/SVGFEImageElementImpl.h:
  +        (KSVG::SVGFEImageElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFEMergeElementImpl.cpp:
  +        (SVGFEMergeElementImpl::SVGFEMergeElementImpl):
  +        (SVGFEMergeElementImpl::createRenderer):
  +        (SVGFEMergeElementImpl::closeRenderer):
  +        * ksvg2/svg/SVGFEMergeElementImpl.h:
  +        (KSVG::SVGFEMergeElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFEMergeNodeElementImpl.cpp:
  +        (SVGFEMergeNodeElementImpl::SVGFEMergeNodeElementImpl):
  +        (SVGFEMergeNodeElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGFEMergeNodeElementImpl.h:
  +        * ksvg2/svg/SVGFEOffsetElementImpl.cpp:
  +        (SVGFEOffsetElementImpl::SVGFEOffsetElementImpl):
  +        (SVGFEOffsetElementImpl::parseMappedAttribute):
  +        (SVGFEOffsetElementImpl::createRenderer):
  +        * ksvg2/svg/SVGFEOffsetElementImpl.h:
  +        (KSVG::SVGFEOffsetElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFETileElementImpl.cpp:
  +        (SVGFETileElementImpl::SVGFETileElementImpl):
  +        (SVGFETileElementImpl::parseMappedAttribute):
  +        (SVGFETileElementImpl::createRenderer):
  +        * ksvg2/svg/SVGFETileElementImpl.h:
  +        (KSVG::SVGFETileElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFETurbulenceElementImpl.cpp:
  +        (SVGFETurbulenceElementImpl::SVGFETurbulenceElementImpl):
  +        (SVGFETurbulenceElementImpl::parseMappedAttribute):
  +        (SVGFETurbulenceElementImpl::createRenderer):
  +        * ksvg2/svg/SVGFETurbulenceElementImpl.h:
  +        (KSVG::SVGFETurbulenceElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGFilterElementImpl.cpp:
  +        (SVGFilterElementImpl::SVGFilterElementImpl):
  +        (SVGFilterElementImpl::x):
  +        (SVGFilterElementImpl::y):
  +        (SVGFilterElementImpl::width):
  +        (SVGFilterElementImpl::height):
  +        (SVGFilterElementImpl::parseMappedAttribute):
  +        (SVGFilterElementImpl::canvasResource):
  +        * ksvg2/svg/SVGFilterElementImpl.h:
  +        * ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.cpp:
  +        (SVGFilterPrimitiveStandardAttributesImpl::SVGFilterPrimitiveStandardAttributesImpl):
  +        (SVGFilterPrimitiveStandardAttributesImpl::width):
  +        (SVGFilterPrimitiveStandardAttributesImpl::height):
  +        (SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute):
  +        (SVGFilterPrimitiveStandardAttributesImpl::setStandardAttributes):
  +        * ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.h:
  +        (KSVG::SVGFilterPrimitiveStandardAttributesImpl::isFilterEffect):
  +        * ksvg2/svg/SVGFitToViewBoxImpl.cpp:
  +        (SVGFitToViewBoxImpl::SVGFitToViewBoxImpl):
  +        (SVGFitToViewBoxImpl::~SVGFitToViewBoxImpl):
  +        (SVGFitToViewBoxImpl::viewBox):
  +        (SVGFitToViewBoxImpl::preserveAspectRatio):
  +        (SVGFitToViewBoxImpl::parseViewBox):
  +        (SVGFitToViewBoxImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGFitToViewBoxImpl.h:
  +        * ksvg2/svg/SVGGElementImpl.cpp:
  +        (SVGGElementImpl::SVGGElementImpl):
  +        (SVGGElementImpl::parseMappedAttribute):
  +        (SVGGElementImpl::setChanged):
  +        (SVGGElementImpl::createRenderer):
  +        (SVGDummyElementImpl::SVGDummyElementImpl):
  +        (SVGDummyElementImpl::localName):
  +        * ksvg2/svg/SVGGElementImpl.h:
  +        (KSVG::SVGGElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGGradientElementImpl.cpp:
  +        (SVGGradientElementImpl::SVGGradientElementImpl):
  +        (SVGGradientElementImpl::parseMappedAttribute):
  +        (SVGGradientElementImpl::notifyAttributeChange):
  +        (SVGGradientElementImpl::canvasResource):
  +        (SVGGradientElementImpl::resourceNotification):
  +        (SVGGradientElementImpl::rebuildStops):
  +        * ksvg2/svg/SVGGradientElementImpl.h:
  +        * ksvg2/svg/SVGHelper.cpp:
  +        (SVGHelper::PercentageOfViewport):
  +        * ksvg2/svg/SVGImageElementImpl.cpp:
  +        (SVGImageElementImpl::SVGImageElementImpl):
  +        (SVGImageElementImpl::parseMappedAttribute):
  +        (SVGImageElementImpl::createRenderer):
  +        (SVGImageElementImpl::notifyFinished):
  +        (SVGImageElementImpl::finalizeStyle):
  +        * ksvg2/svg/SVGImageElementImpl.h:
  +        (KSVG::SVGImageElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGLangSpaceImpl.cpp:
  +        (SVGLangSpaceImpl::SVGLangSpaceImpl):
  +        (SVGLangSpaceImpl::~SVGLangSpaceImpl):
  +        (SVGLangSpaceImpl::xmllang):
  +        (SVGLangSpaceImpl::setXmllang):
  +        (SVGLangSpaceImpl::xmlspace):
  +        (SVGLangSpaceImpl::setXmlspace):
  +        (SVGLangSpaceImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGLangSpaceImpl.h:
  +        * ksvg2/svg/SVGLengthImpl.cpp:
  +        (SVGLengthImpl::value):
  +        (SVGLengthImpl::setValueAsString):
  +        (SVGLengthImpl::updateValue):
  +        * ksvg2/svg/SVGLengthImpl.h:
  +        * ksvg2/svg/SVGLengthListImpl.cpp:
  +        (SVGLengthListImpl::parse):
  +        * ksvg2/svg/SVGLineElementImpl.cpp:
  +        (SVGLineElementImpl::SVGLineElementImpl):
  +        (SVGLineElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGLineElementImpl.h:
  +        (KSVG::SVGLineElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGLinearGradientElementImpl.cpp:
  +        (SVGLinearGradientElementImpl::SVGLinearGradientElementImpl):
  +        (SVGLinearGradientElementImpl::parseMappedAttribute):
  +        (SVGLinearGradientElementImpl::buildGradient):
  +        * ksvg2/svg/SVGLinearGradientElementImpl.h:
  +        (KSVG::SVGLinearGradientElementImpl::gradientType):
  +        * ksvg2/svg/SVGLocatableImpl.cpp:
  +        (SVGLocatableImpl::nearestViewportElement):
  +        (SVGLocatableImpl::farthestViewportElement):
  +        (SVGLocatableImpl::getBBox):
  +        (SVGLocatableImpl::getCTM):
  +        (SVGLocatableImpl::getScreenCTM):
  +        * ksvg2/svg/SVGLocatableImpl.h:
  +        * ksvg2/svg/SVGMarkerElementImpl.cpp:
  +        (SVGMarkerElementImpl::SVGMarkerElementImpl):
  +        (SVGMarkerElementImpl::parseMappedAttribute):
  +        (SVGMarkerElementImpl::canvasResource):
  +        (SVGMarkerElementImpl::createRenderer):
  +        * ksvg2/svg/SVGMarkerElementImpl.h:
  +        (KSVG::SVGMarkerElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGNames.cpp: Removed.
  +        * ksvg2/svg/SVGNames.h: Removed.
  +        * ksvg2/svg/SVGPaintImpl.cpp:
  +        (SVGPaintImpl::setUri):
  +        (SVGPaintImpl::cssText):
  +        * ksvg2/svg/SVGPaintImpl.h:
  +        * ksvg2/svg/SVGPathElementImpl.cpp:
  +        (KSVG::SVGPathElementImpl::SVGPathElementImpl):
  +        (KSVG::SVGPathElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGPathElementImpl.h:
  +        (KSVG::SVGPathElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGPatternElementImpl.cpp:
  +        (SVGPatternElementImpl::SVGPatternElementImpl):
  +        (SVGPatternElementImpl::~SVGPatternElementImpl):
  +        (SVGPatternElementImpl::parseMappedAttribute):
  +        (SVGPatternElementImpl::notifyAttributeChange):
  +        (SVGPatternElementImpl::createRenderer):
  +        (SVGPatternElementImpl::canvasResource):
  +        * ksvg2/svg/SVGPatternElementImpl.h:
  +        (KSVG::SVGPatternElementImpl::allowAttachChildren):
  +        (KSVG::SVGPatternElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGPolyElementImpl.cpp:
  +        (SVGPolyElementImpl::SVGPolyElementImpl):
  +        (SVGPolyElementImpl::parseMappedAttribute):
  +        (SVGPolyElementImpl::notifyAttributeChange):
  +        * ksvg2/svg/SVGPolyElementImpl.h:
  +        (KSVG::SVGPolyElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGPolygonElementImpl.cpp:
  +        (SVGPolygonElementImpl::SVGPolygonElementImpl):
  +        * ksvg2/svg/SVGPolygonElementImpl.h:
  +        * ksvg2/svg/SVGPolylineElementImpl.cpp:
  +        (SVGPolylineElementImpl::SVGPolylineElementImpl):
  +        * ksvg2/svg/SVGPolylineElementImpl.h:
  +        * ksvg2/svg/SVGPreserveAspectRatioImpl.cpp:
  +        (SVGPreserveAspectRatioImpl::parsePreserveAspectRatio):
  +        * ksvg2/svg/SVGRadialGradientElementImpl.cpp:
  +        (SVGRadialGradientElementImpl::SVGRadialGradientElementImpl):
  +        (SVGRadialGradientElementImpl::parseMappedAttribute):
  +        (SVGRadialGradientElementImpl::buildGradient):
  +        * ksvg2/svg/SVGRadialGradientElementImpl.h:
  +        (KSVG::SVGRadialGradientElementImpl::gradientType):
  +        * ksvg2/svg/SVGRectElementImpl.cpp:
  +        (SVGRectElementImpl::SVGRectElementImpl):
  +        (SVGRectElementImpl::parseMappedAttribute):
  +        (SVGRectElementImpl::toPathData):
  +        * ksvg2/svg/SVGRectElementImpl.h:
  +        (KSVG::SVGRectElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGSVGElementImpl.cpp:
  +        (SVGSVGElementImpl::SVGSVGElementImpl):
  +        (SVGSVGElementImpl::~SVGSVGElementImpl):
  +        (SVGSVGElementImpl::width):
  +        (SVGSVGElementImpl::height):
  +        (SVGSVGElementImpl::contentScriptType):
  +        (SVGSVGElementImpl::setContentScriptType):
  +        (SVGSVGElementImpl::contentStyleType):
  +        (SVGSVGElementImpl::setContentStyleType):
  +        (SVGSVGElementImpl::currentScale):
  +        (SVGSVGElementImpl::setCurrentScale):
  +        (SVGSVGElementImpl::currentTranslate):
  +        (SVGSVGElementImpl::parseMappedAttribute):
  +        (SVGSVGElementImpl::pauseAnimations):
  +        (SVGSVGElementImpl::unpauseAnimations):
  +        (SVGSVGElementImpl::animationsPaused):
  +        (SVGSVGElementImpl::getCurrentTime):
  +        (SVGSVGElementImpl::checkIntersection):
  +        (SVGSVGElementImpl::checkEnclosure):
  +        (SVGSVGElementImpl::getCTM):
  +        (SVGSVGElementImpl::getScreenCTM):
  +        (SVGSVGElementImpl::createRenderer):
  +        (SVGSVGElementImpl::setZoomAndPan):
  +        * ksvg2/svg/SVGSVGElementImpl.h:
  +        (KSVG::SVGSVGElementImpl::rendererIsNeeded):
  +        (KSVG::SVGSVGElementImpl::timeScheduler):
  +        * ksvg2/svg/SVGScriptElementImpl.cpp:
  +        (SVGScriptElementImpl::SVGScriptElementImpl):
  +        (SVGScriptElementImpl::parseMappedAttribute):
  +        (SVGScriptElementImpl::executeScript):
  +        * ksvg2/svg/SVGScriptElementImpl.h:
  +        * ksvg2/svg/SVGSetElementImpl.cpp:
  +        (SVGSetElementImpl::SVGSetElementImpl):
  +        (SVGSetElementImpl::handleTimerEvent):
  +        * ksvg2/svg/SVGSetElementImpl.h:
  +        * ksvg2/svg/SVGStopElementImpl.cpp:
  +        (SVGStopElementImpl::SVGStopElementImpl):
  +        (SVGStopElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGStopElementImpl.h:
  +        (KSVG::SVGStopElementImpl::isGradientStop):
  +        * ksvg2/svg/SVGStylableImpl.h:
  +        * ksvg2/svg/SVGStyleElementImpl.cpp:
  +        (SVGStyleElementImpl::SVGStyleElementImpl):
  +        (SVGStyleElementImpl::~SVGStyleElementImpl):
  +        (SVGStyleElementImpl::xmlspace):
  +        (SVGStyleElementImpl::setXmlspace):
  +        (SVGStyleElementImpl::type):
  +        (SVGStyleElementImpl::setType):
  +        (SVGStyleElementImpl::media):
  +        (SVGStyleElementImpl::setMedia):
  +        (SVGStyleElementImpl::title):
  +        (SVGStyleElementImpl::setTitle):
  +        (SVGStyleElementImpl::sheet):
  +        (SVGStyleElementImpl::childrenChanged):
  +        * ksvg2/svg/SVGStyleElementImpl.h:
  +        * ksvg2/svg/SVGStyledElementImpl.cpp:
  +        (SVGStyledElementImpl::SVGStyledElementImpl):
  +        (SVGStyledElementImpl::~SVGStyledElementImpl):
  +        (SVGStyledElementImpl::createRenderer):
  +        (SVGStyledElementImpl::parseMappedAttribute):
  +        (SVGStyledElementImpl::finalizeStyle):
  +        (SVGStyledElementImpl::attach):
  +        (SVGStyledElementImpl::canvas):
  +        (SVGStyledElementImpl::updateCanvasItem):
  +        (SVGStyledElementImpl::pushAttributeContext):
  +        * ksvg2/svg/SVGStyledElementImpl.h:
  +        (KSVG::SVGStyledElementImpl::rendererIsNeeded):
  +        (KSVG::SVGStyledElementImpl::canvasResource):
  +        * ksvg2/svg/SVGStyledLocatableElementImpl.cpp: Added.
  +        (SVGStyledLocatableElementImpl::SVGStyledLocatableElementImpl):
  +        (SVGStyledLocatableElementImpl::~SVGStyledLocatableElementImpl):
  +        (SVGStyledLocatableElementImpl::nearestViewportElement):
  +        (SVGStyledLocatableElementImpl::farthestViewportElement):
  +        (SVGStyledLocatableElementImpl::getBBox):
  +        (SVGStyledLocatableElementImpl::getCTM):
  +        (SVGStyledLocatableElementImpl::getScreenCTM):
  +        (SVGStyledLocatableElementImpl::getTransformToElement):
  +        * ksvg2/svg/SVGStyledLocatableElementImpl.h: Added.
  +        (KSVG::SVGStyledLocatableElementImpl::isStyledLocatable):
  +        * ksvg2/svg/SVGStyledTransformableElementImpl.cpp: Added.
  +        (SVGStyledTransformableElementImpl::SVGStyledTransformableElementImpl):
  +        (SVGStyledTransformableElementImpl::~SVGStyledTransformableElementImpl):
  +        (SVGStyledTransformableElementImpl::transform):
  +        (SVGStyledTransformableElementImpl::localMatrix):
  +        (SVGStyledTransformableElementImpl::getCTM):
  +        (SVGStyledTransformableElementImpl::getScreenCTM):
  +        (SVGStyledTransformableElementImpl::updateLocalTransform):
  +        (SVGStyledTransformableElementImpl::parseMappedAttribute):
  +        (SVGStyledTransformableElementImpl::nearestViewportElement):
  +        (SVGStyledTransformableElementImpl::farthestViewportElement):
  +        (SVGStyledTransformableElementImpl::getBBox):
  +        (SVGStyledTransformableElementImpl::getTransformToElement):
  +        (SVGStyledTransformableElementImpl::attach):
  +        * ksvg2/svg/SVGStyledTransformableElementImpl.h: Added.
  +        (KSVG::SVGStyledTransformableElementImpl::isStyledTransformable):
  +        * ksvg2/svg/SVGSwitchElementImpl.cpp:
  +        (SVGSwitchElementImpl::SVGSwitchElementImpl):
  +        (SVGSwitchElementImpl::allowAttachChildren):
  +        (SVGSwitchElementImpl::createRenderer):
  +        * ksvg2/svg/SVGSwitchElementImpl.h:
  +        (KSVG::SVGSwitchElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGSymbolElementImpl.cpp:
  +        (SVGSymbolElementImpl::SVGSymbolElementImpl):
  +        (SVGSymbolElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGSymbolElementImpl.h:
  +        * ksvg2/svg/SVGTSpanElementImpl.cpp:
  +        (SVGTSpanElementImpl::SVGTSpanElementImpl):
  +        * ksvg2/svg/SVGTSpanElementImpl.h:
  +        * ksvg2/svg/SVGTestsImpl.cpp:
  +        (SVGTestsImpl::isValid):
  +        (SVGTestsImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGTestsImpl.h:
  +        * ksvg2/svg/SVGTextContentElementImpl.cpp:
  +        (SVGTextContentElementImpl::SVGTextContentElementImpl):
  +        (SVGTextContentElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGTextContentElementImpl.h:
  +        * ksvg2/svg/SVGTextElementImpl.cpp:
  +        (SVGTextElementImpl::SVGTextElementImpl):
  +        (SVGTextElementImpl::parseMappedAttribute):
  +        (SVGTextElementImpl::nearestViewportElement):
  +        (SVGTextElementImpl::farthestViewportElement):
  +        (SVGTextElementImpl::getBBox):
  +        (SVGTextElementImpl::getScreenCTM):
  +        (SVGTextElementImpl::getCTM):
  +        * ksvg2/svg/SVGTextElementImpl.h:
  +        (KSVG::SVGTextElementImpl::getTransformToElement):
  +        (KSVG::SVGTextElementImpl::transform):
  +        (KSVG::SVGTextElementImpl::localMatrix):
  +        (KSVG::SVGTextElementImpl::updateLocalTransform):
  +        * ksvg2/svg/SVGTextPositioningElementImpl.cpp:
  +        (SVGTextPositioningElementImpl::SVGTextPositioningElementImpl):
  +        (SVGTextPositioningElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGTextPositioningElementImpl.h:
  +        * ksvg2/svg/SVGTitleElementImpl.cpp:
  +        (SVGTitleElementImpl::SVGTitleElementImpl):
  +        (SVGTitleElementImpl::title):
  +        * ksvg2/svg/SVGTitleElementImpl.h:
  +        * ksvg2/svg/SVGTransformImpl.cpp:
  +        (SVGTransformImpl::setMatrix):
  +        * ksvg2/svg/SVGTransformableImpl.cpp:
  +        (SVGTransformableImpl::SVGTransformableImpl):
  +        (SVGTransformableImpl::~SVGTransformableImpl):
  +        (SVGTransformableImpl::parseTransformAttribute):
  +        * ksvg2/svg/SVGTransformableImpl.h:
  +        * ksvg2/svg/SVGURIReferenceImpl.cpp:
  +        (SVGURIReferenceImpl::href):
  +        (SVGURIReferenceImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGURIReferenceImpl.h:
  +        * ksvg2/svg/SVGUseElementImpl.cpp:
  +        (SVGUseElementImpl::SVGUseElementImpl):
  +        (SVGUseElementImpl::parseMappedAttribute):
  +        (SVGUseElementImpl::closeRenderer):
  +        (SVGUseElementImpl::createRenderer):
  +        * ksvg2/svg/SVGUseElementImpl.h:
  +        (KSVG::SVGUseElementImpl::rendererIsNeeded):
  +        * ksvg2/svg/SVGViewElementImpl.cpp:
  +        (SVGViewElementImpl::SVGViewElementImpl):
  +        (SVGViewElementImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGViewElementImpl.h:
  +        * ksvg2/svg/SVGZoomAndPanImpl.cpp:
  +        (SVGZoomAndPanImpl::parseMappedAttribute):
  +        * ksvg2/svg/SVGZoomAndPanImpl.h:
  +
  +2005-11-20  Eric Seidel  <eseidel at apple.com>
  +
           Reviewed by hyatt.
   
           The first part of the big KDOM-DOM merger.
  
  
  
  1.1                  WebCore/ForwardingHeaders/kcanvas/KCanvas.h
  
  Index: KCanvas.h
  ===================================================================
  #include "render_canvas.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kcanvas/RenderPath.h
  
  Index: RenderPath.h
  ===================================================================
  #include "KCanvasItem.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/AttrImpl.h
  
  Index: AttrImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/CDFInterface.h
  
  Index: CDFInterface.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/DOMConfigurationImpl.h
  
  Index: DOMConfigurationImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/DOMExceptionImpl.h
  
  Index: DOMExceptionImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/DOMImplementationImpl.h
  
  Index: DOMImplementationImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/DOMList.h
  
  Index: DOMList.h
  ===================================================================
  #include "WebCore+SVG/DOMList.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/DOMStringImpl.h
  
  Index: DOMStringImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/DocumentImpl.h
  
  Index: DocumentImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/DocumentTypeImpl.h
  
  Index: DocumentTypeImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/ElementImpl.h
  
  Index: ElementImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/NamedAttrMapImpl.h
  
  Index: NamedAttrMapImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/NodeImpl.h
  
  Index: NodeImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/NodeListImpl.h
  
  Index: NodeListImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/ProcessingInstructionImpl.h
  
  Index: ProcessingInstructionImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/XMLElementImpl.h
  
  Index: XMLElementImpl.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.1                  WebCore/ForwardingHeaders/kdom/core/domattrs.h
  
  Index: domattrs.h
  ===================================================================
  #include "KDOMHeaders.h"
  
  
  
  1.7       +39 -56    SVGSupport/WebCore+SVG/DrawCanvasItem.mm
  
  Index: DrawCanvasItem.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/WebCore+SVG/DrawCanvasItem.mm,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DrawCanvasItem.mm	11 Oct 2005 09:11:48 -0000	1.6
  +++ DrawCanvasItem.mm	21 Nov 2005 08:29:08 -0000	1.7
  @@ -31,8 +31,6 @@
   
   #import <qapplication.h>
   
  -#define id ID_HACK
  -
   #import <kdom/Namespace.h>
   #import <kdom/Helper.h>
   #import <kdom/DOMString.h>
  @@ -42,11 +40,10 @@
   #import <ksvg2/svg/SVGRectElementImpl.h>
   #import <ksvg2/svg/SVGPathElementImpl.h>
   
  -#undef id
  -
   #import "KWQTextStream.h"
   
  -using namespace KDOM;
  +using namespace DOM;
  +using namespace KSVG;
   
   @interface DrawCanvasItemPrivate : NSObject {
       @public
  @@ -108,19 +105,18 @@
   // see note in header.
   - (NSPoint)dragAnchorPointForControlPointIndex:(int)controlPointIndex
   {
  -    KDOM::NodeImpl *node = (KDOM::NodeImpl *)_private->item->userData();
  -    int localId = node->localId();
  +    //KDOM::NodeImpl *node = (KDOM::NodeImpl *)_private->item->userData();
       NSPoint dragAnchorPoint;
       
  -    switch (localId) {
  -	case ID_PATH:
  -            //KSVG::SVGPathElementImpl *path = (KSVG::SVGPathElementImpl *)node;
  -	default:
  +//    switch (localId) {
  +//	case ID_PATH:
  +//            //KSVG::SVGPathElementImpl *path = (KSVG::SVGPathElementImpl *)node;
  +//	default:
               // if we have no special knob list, grab the default
               dragAnchorPoint = [DrawCanvasItem dragAnchorPointForControlPointIndex:controlPointIndex
                                                               fromRectControlPoints:[self controlPoints]];
               
  -    }
  +    //}
       return dragAnchorPoint;
   }
   
  @@ -138,17 +134,16 @@
   // see note in header.
   - (NSArray *)controlPoints
   {	
  -    KDOM::NodeImpl *node = (KDOM::NodeImpl *)_private->item->userData();
  -    int localId = node->localId();
  +    //KDOM::NodeImpl *node = (KDOM::NodeImpl *)_private->item->userData();
       NSArray *controlPoints = nil;
       
  -    switch (localId) {
  -        case ID_PATH:
  -            //KSVG::SVGPathElementImpl *path = (KSVG::SVGPathElementImpl *)node;
  -        default:
  +//    switch (localId) {
  +//        case ID_PATH:
  +//            //KSVG::SVGPathElementImpl *path = (KSVG::SVGPathElementImpl *)node;
  +//        default:
               // if we have no special knob list, grab the default
               controlPoints = [DrawCanvasItem controlPointsForRect:[self boundingBox]];
  -    }
  +    //}
       return controlPoints;
   }
   
  @@ -159,30 +154,22 @@
       //NSLog(@"Fitting canvasItem: %p from: %@ into new bbox: %@",
       //	self, NSStringFromRect([self boundingBox]), NSStringFromRect(newRect));
       KDOM::NodeImpl *node = (KDOM::NodeImpl *)_private->item->userData();
  -    int localId = node->localId();
  -    KDOM::DOMStringImpl *svgNamespace = KDOM::NS_SVG.handle();
  -    switch (localId) {
  -	case ID_ELLIPSE:
  -	{
  -            KSVG::SVGEllipseElementImpl *ellipse = (KSVG::SVGEllipseElementImpl *)node;
  -            ellipse->setAttributeNS(svgNamespace, DOMString("cx").handle(), DOMString(QString::number(newRect.origin.x + newRect.size.width/2.f)).handle());
  -            ellipse->setAttributeNS(svgNamespace, DOMString("cy").handle(), DOMString(QString::number(newRect.origin.y + newRect.size.height/2.f)).handle());
  -            ellipse->setAttributeNS(svgNamespace, DOMString("rx").handle(), DOMString(QString::number(newRect.size.width/2.f)).handle());
  -            ellipse->setAttributeNS(svgNamespace, DOMString("ry").handle(), DOMString(QString::number(newRect.size.height/2.f)).handle());
  -            break;
  -	}
  -	case ID_RECT:
  -	{
  -            KSVG::SVGRectElementImpl *rect = (KSVG::SVGRectElementImpl *)node;
  -            rect->setAttributeNS(svgNamespace, DOMString("x").handle(), DOMString(QString::number(newRect.origin.x)).handle());
  -            rect->setAttributeNS(svgNamespace, DOMString("y").handle(), DOMString(QString::number(newRect.origin.y)).handle());
  -            rect->setAttributeNS(svgNamespace, DOMString("width").handle(), DOMString(QString::number(newRect.size.width - 1)).handle());
  -            rect->setAttributeNS(svgNamespace, DOMString("height").handle(), DOMString(QString::number(newRect.size.height - 1)).handle());
  -            break;
  -	}
  -	default:
  -            NSLog(@"Id not handled: %i", localId);
  +    
  +    int exceptionCode;
  +    if (node->hasTagName(SVGNames::ellipseTag)) {
  +        KSVG::SVGEllipseElementImpl *ellipse = (KSVG::SVGEllipseElementImpl *)node;
  +        ellipse->setAttributeNS(KDOM::NS_SVG, DOMString("cx"), DOMString(QString::number(newRect.origin.x + newRect.size.width/2.f)), exceptionCode);
  +        ellipse->setAttributeNS(KDOM::NS_SVG, DOMString("cy"), DOMString(QString::number(newRect.origin.y + newRect.size.height/2.f)), exceptionCode);
  +        ellipse->setAttributeNS(KDOM::NS_SVG, DOMString("rx"), DOMString(QString::number(newRect.size.width/2.f)), exceptionCode);
  +        ellipse->setAttributeNS(KDOM::NS_SVG, DOMString("ry"), DOMString(QString::number(newRect.size.height/2.f)), exceptionCode);
  +   } else if (node->hasTagName(SVGNames::rectTag)) {
  +        KSVG::SVGRectElementImpl *rect = (KSVG::SVGRectElementImpl *)node;
  +        rect->setAttributeNS(KDOM::NS_SVG, DOMString("x"), DOMString(QString::number(newRect.origin.x)), exceptionCode);
  +        rect->setAttributeNS(KDOM::NS_SVG, DOMString("y"), DOMString(QString::number(newRect.origin.y)), exceptionCode);
  +        rect->setAttributeNS(KDOM::NS_SVG, DOMString("width"), DOMString(QString::number(newRect.size.width - 1)), exceptionCode);
  +        rect->setAttributeNS(KDOM::NS_SVG, DOMString("height"), DOMString(QString::number(newRect.size.height - 1)), exceptionCode);
       }
  +    
       [self didChangeValueForKey:@"boundingBox"];
       [self didChangeValueForKey:@"attributedXMLString"];
   }
  @@ -211,19 +198,18 @@
       KSVG::SVGStyledElementImpl *element = (KSVG::SVGStyledElementImpl *)_private->item->userData();
       id theValue = nil;
       
  -    KDOM::DOMStringImpl *svgNamespace = KDOM::NS_SVG.handle();
       if ([key isEqualToString:@"isFilled"]) {
  -        KDOM::DOMStringImpl *value = element->getAttributeNS(svgNamespace, DOMString("fill").handle());
  -        theValue = [NSNumber numberWithBool:(value->string().ascii() != "none")];
  +        const AtomicString& value = element->getAttributeNS(KDOM::NS_SVG, DOMString("fill"));
  +        theValue = [NSNumber numberWithBool:(value != "none")];
       } else if ([key isEqualToString:@"isStroked"]) {
  -        KDOM::DOMStringImpl *value = element->getAttributeNS(svgNamespace, DOMString("stroke").handle());
  -        theValue = [NSNumber numberWithBool:(value->string().ascii() != "none")];
  +        const AtomicString& value = element->getAttributeNS(KDOM::NS_SVG, DOMString("stroke"));
  +        theValue = [NSNumber numberWithBool:(value != "none")];
       } else if ([key isEqualToString:@"fillColor"]) {
  -        KDOM::DOMStringImpl *value = element->getAttributeNS(svgNamespace, DOMString("fill").handle());
  -        theValue = nsColor(QColor(value->string()));
  +        const AtomicString& value = element->getAttributeNS(KDOM::NS_SVG, DOMString("fill"));
  +        theValue = nsColor(QColor(value.qstring()));
       } else if ([key isEqualToString:@"strokeColor"]) {
  -        KDOM::DOMStringImpl *value = element->getAttributeNS(svgNamespace, DOMString("stroke").handle());
  -        theValue = nsColor(QColor(value->string()));
  +        const AtomicString& value = element->getAttributeNS(KDOM::NS_SVG, DOMString("stroke"));
  +        theValue = nsColor(QColor(value.qstring()));
       }
       
       if (theValue)
  @@ -234,11 +220,8 @@
   
   - (NSAttributedString *)attributedXMLString
   {
  -    QString *nodeText = new QString();
  -    QTextStream nodeTextStream(nodeText, IO_WriteOnly);
  -    KDOM::Helper::PrintNode(nodeTextStream, (KDOM::NodeImpl *)_private->item->userData());
  -    NSString *nodeString = nodeText->getNSString();
  -    delete nodeText;
  +    QString nodeText = createMarkup((KDOM::NodeImpl *)_private->item->userData());
  +    NSString *nodeString = nodeText.getNSString();
       
       if (nodeString)
           return [[NSAttributedString alloc] initWithString:nodeString];
  
  
  
  1.8       +50 -55    SVGSupport/WebCore+SVG/DrawDocument.mm
  
  Index: DrawDocument.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/WebCore+SVG/DrawDocument.mm,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- DrawDocument.mm	5 Oct 2005 05:36:54 -0000	1.7
  +++ DrawDocument.mm	21 Nov 2005 08:29:08 -0000	1.8
  @@ -40,12 +40,8 @@
   #import <kcanvas/device/quartz/KCanvasViewQuartz.h>
   #import <kcanvas/device/quartz/KRenderingDeviceQuartz.h>
   
  -#define id ID_HACK
  -
   #import <kdom/Namespace.h>
   #import <kdom/Helper.h>
  -#import <kdom/parser/KDOMParser.h>
  -#import <kdom/backends/libxml/LibXMLParser.h>
   #import <kdom/core/NodeImpl.h>
   #import <kdom/core/NodeListImpl.h>
   #import <kdom/core/DOMConfigurationImpl.h>
  @@ -57,7 +53,6 @@
   
   #import <ksvg2/KSVGPart.h>
   #import <ksvg2/KSVGView.h>
  -#import <ksvg2/misc/KSVGDocumentBuilder.h>
   #import <ksvg2/svg/SVGDocumentImpl.h>
   #import <ksvg2/svg/SVGSVGElementImpl.h>
   #import <ksvg2/svg/SVGDescElementImpl.h>
  @@ -65,8 +60,6 @@
   #import <ksvg2/svg/SVGEllipseElementImpl.h>
   #import <ksvg2/svg/SVGRectElementImpl.h>
   
  -#undef id
  -
   using namespace KDOM;
   using namespace KSVG;
   
  @@ -189,8 +182,8 @@
       parser->setDocumentBuilder(builder);
       
       // no entity refs
  -    parser->domConfig()->setParameter(KDOM::ENTITIES.handle(), false);
  -    parser->domConfig()->setParameter(KDOM::ELEMENT_CONTENT_WHITESPACE.handle(), false);
  +    parser->domConfig()->setParameter(KDOM::ENTITIES, false);
  +    parser->domConfig()->setParameter(KDOM::ELEMENT_CONTENT_WHITESPACE, false);
       
       // Feed the parser the whole document (a total hack)
       parser->doOneShotParse((const char *)[data bytes], [data length]);
  @@ -282,13 +275,7 @@
   
   - (NSString *)svgText
   {
  -    QString *dumpText = new QString();
  -    QTextStream dumpStream(dumpText, IO_WriteOnly);
  -    KDOM::Helper::PrintNode(dumpStream, _private->svgDocument);
  -    NSString *svgText = dumpText->getNSString();
  -    delete dumpText;
  -    
  -    return svgText;
  +    return createMarkup(_private->svgDocument).getNSString();;
   }
   
   @end
  @@ -297,29 +284,32 @@
   
   - (BOOL)documentListensForMouseMovedEvents
   {
  -    SVGDocumentImpl *document = _private->svgDocument;
  -    
  -    return (document &&	
  -            (document->hasListenerType(KDOM::DOMFOCUSOUT_EVENT) ||
  -             document->hasListenerType(KDOM::MOUSEOVER_EVENT) ||
  -             document->hasListenerType(KDOM::MOUSEMOVE_EVENT) ||
  -             document->hasListenerType(KDOM::MOUSEOUT_EVENT)));
  +//    SVGDocumentImpl *document = _private->svgDocument;
  +//    
  +//    return (document &&	
  +//            (document->hasListenerType(KDOM::DOMFOCUSOUT_EVENT) ||
  +//             document->hasListenerType(KDOM::MOUSEOVER_EVENT) ||
  +//             document->hasListenerType(KDOM::MOUSEMOVE_EVENT) ||
  +//             document->hasListenerType(KDOM::MOUSEOUT_EVENT)));
  +    return YES;
   }
   
   - (BOOL)documentListensForMouseDownEvents
   {
  -    return (_private->svgDocument && _private->svgDocument->hasListenerType(KDOM::MOUSEDOWN_EVENT));
  +    //return (_private->svgDocument && _private->svgDocument->hasListenerType(KDOM::MOUSEDOWN_EVENT));
  +    return YES;
   }
   
   - (BOOL)documentListensForMouseUpEvents
   {
  -    SVGDocumentImpl *document = _private->svgDocument;
  -    
  -    return (document &&
  -            (document->hasListenerType(KDOM::DOMFOCUSIN_EVENT) ||
  -             document->hasListenerType(KDOM::DOMACTIVATE_EVENT) ||
  -             document->hasListenerType(KDOM::CLICK_EVENT) ||
  -             document->hasListenerType(KDOM::MOUSEUP_EVENT)));
  +//    SVGDocumentImpl *document = _private->svgDocument;
  +//    
  +//    return (document &&
  +//            (document->hasListenerType(KDOM::DOMFOCUSIN_EVENT) ||
  +//             document->hasListenerType(KDOM::DOMACTIVATE_EVENT) ||
  +//             document->hasListenerType(KDOM::CLICK_EVENT) ||
  +//             document->hasListenerType(KDOM::MOUSEUP_EVENT)));
  +    return YES;
   }
   
   - (KDOM::MouseEventImpl *)newMouseEventWithEventId:(KDOM::EventId)eventId qMouseEvent:(QMouseEvent *)qevent
  @@ -333,61 +323,64 @@
       float scale = (root ? root->currentScale() : 1.0);
       
       // Setup kdom 'MouseEvent'...
  -    KDOM::MouseEventImpl *event = static_cast<KDOM::MouseEventImpl *>(_private->svgDocument->createEvent(DOMString("MouseEvents").handle()));
  +    int exceptionCode;
  +    KDOM::MouseEventImpl *event = static_cast<KDOM::MouseEventImpl *>(_private->svgDocument->createEvent(DOMString("MouseEvents"), exceptionCode));
       event->ref();
       
       event->initMouseEvent(eventString, qevent, scale);
       return event;
   }
   
  -NSCursor *cursorForStyle(KDOM::RenderStyle *style)
  +NSCursor *cursorForStyle(khtml::RenderStyle *style)
   {
       if(!style) return nil;
       NSCursor *newCursor = nil;
       switch(style->cursor())
       {
  +#if 0
           case KDOM::CS_AUTO:
           case KDOM::CS_DEFAULT:
  -            newCursor = KCursor::arrowCursor().handle();
  +            newCursor = KCursor::arrowCursor();
               break;
           case KDOM::CS_CROSS:
           case KDOM::CS_PROGRESS:
  -            newCursor = KCursor::crossCursor().handle();
  +            newCursor = KCursor::crossCursor();
               break;
           case KDOM::CS_POINTER:
  -            newCursor = KCursor::handCursor().handle();
  +            newCursor = KCursor::handCursor();
               break;
           case KDOM::CS_MOVE:
  -            newCursor = KCursor::sizeAllCursor().handle();
  +            newCursor = KCursor::sizeAllCursor();
               break;
           case KDOM::CS_E_RESIZE:
           case KDOM::CS_W_RESIZE:
  -            newCursor = KCursor::sizeHorCursor().handle();
  +            newCursor = KCursor::sizeHorCursor();
               break;
           case KDOM::CS_NE_RESIZE:
           case KDOM::CS_SW_RESIZE:
  -            newCursor = KCursor::sizeBDiagCursor().handle();
  +            newCursor = KCursor::sizeBDiagCursor();
               break;
           case KDOM::CS_NW_RESIZE:
           case KDOM::CS_SE_RESIZE:
  -            newCursor = KCursor::sizeFDiagCursor().handle();
  +            newCursor = KCursor::sizeFDiagCursor();
               break;
           case KDOM::CS_N_RESIZE:
           case KDOM::CS_S_RESIZE:
  -            newCursor = KCursor::sizeVerCursor().handle();
  +            newCursor = KCursor::sizeVerCursor();
               break;
           case KDOM::CS_TEXT:
  -            newCursor = KCursor::ibeamCursor().handle();
  +            newCursor = KCursor::ibeamCursor();
               break;
           case KDOM::CS_WAIT:
  -            newCursor = KCursor::waitCursor().handle();
  +            newCursor = KCursor::waitCursor();
               break;
           case KDOM::CS_HELP:
  -            newCursor = KCursor::whatsThisCursor().handle();
  +            newCursor = KCursor::whatsThisCursor();
               break;
  +#endif
           default:
           NSLog(@"setting default mouse cursor");
  -            newCursor = KCursor::arrowCursor().handle();
  +            newCursor = KCursor::arrowCursor();
       }
       return newCursor;
   }
  @@ -408,7 +401,7 @@
           KDOM::ElementImpl *target = static_cast<KDOM::ElementImpl *>(mev->relatedTarget());
           if(target)
           {
  -            KDOM::RenderStyle *style = target->renderStyle();
  +            khtml::RenderStyle *style = target->renderStyle();
               newCursor = cursorForStyle(style);
           }
           mev->deref();
  @@ -509,7 +502,8 @@
           KCanvasItem *cItem = [canvasItem item];
           KDOM::NodeImpl *node = (KDOM::NodeImpl *)cItem->userData();
           KDOM::NodeImpl *parent = node->parentNode();
  -        parent->removeChild(node);
  +        int exceptioncode;
  +        parent->removeChild(node, exceptioncode);
       }
   }
   
  @@ -520,21 +514,22 @@
       DOMString mouseX(QString::number(mousePoint.x));
       DOMString mouseY(QString::number(mousePoint.x));
       
  +    int exceptionCode;
       switch (tool) {
   	case DrawViewToolElipse:
   	{
  -            newElement = _private->svgDocument->createElement(DOMString("ellipse").handle());
  -            newElement->setAttributeNS(KDOM::NS_SVG.handle(), DOMString("cx").handle(), mouseX.handle());
  -            newElement->setAttributeNS(KDOM::NS_SVG.handle(), DOMString("cy").handle(), mouseY.handle());
  +            newElement = _private->svgDocument->createElementNS(KDOM::NS_SVG, DOMString("ellipse"), exceptionCode);
  +            newElement->setAttributeNS(KDOM::NS_SVG, DOMString("cx"), mouseX, exceptionCode);
  +            newElement->setAttributeNS(KDOM::NS_SVG, DOMString("cy"), mouseY, exceptionCode);
               break;
   	}
   	case DrawViewToolTriangle:
               break;
   	case DrawViewToolRectangle:
   	{
  -            newElement = _private->svgDocument->createElement(DOMString("rect").handle());
  -            newElement->setAttributeNS(KDOM::NS_SVG.handle(), DOMString("x").handle(), mouseX.handle());
  -            newElement->setAttributeNS(KDOM::NS_SVG.handle(), DOMString("y").handle(), mouseY.handle());
  +            newElement = _private->svgDocument->createElementNS(KDOM::NS_SVG, DOMString("rect"), exceptionCode);
  +            newElement->setAttributeNS(KDOM::NS_SVG, DOMString("x"), mouseX, exceptionCode);
  +            newElement->setAttributeNS(KDOM::NS_SVG, DOMString("y"), mouseY, exceptionCode);
               break;
   	}
   	case DrawViewToolLine:
  @@ -545,9 +540,9 @@
               NSLog(@"Can't create item for unsupported tool.");
       }
       if (newElement) {
  -        newElement->setAttributeNS(KDOM::NS_SVG.handle(), DOMString("fill").handle(), DOMString("navy").handle());
  +        newElement->setAttributeNS(KDOM::NS_SVG, DOMString("fill"), DOMString("navy"), exceptionCode);
           SVGSVGElementImpl *rootNode = _private->svgDocument->rootElement();
  -        rootNode->appendChild(newElement);
  +        rootNode->appendChild(newElement, exceptionCode);
           newElement->ref(); // don't know why this is necessary...
           newElement->attach(); // attach it to the canvas.
           newCanvasItem = static_cast<SVGStyledElementImpl *>(newElement)->canvasItem();
  
  
  
  1.3       +5 -54     SVGSupport/WebCore+SVG/KDOMHeaders.h
  
  Index: KDOMHeaders.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/WebCore+SVG/KDOMHeaders.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- KDOMHeaders.h	4 Nov 2005 00:28:04 -0000	1.2
  +++ KDOMHeaders.h	21 Nov 2005 08:29:08 -0000	1.3
  @@ -7,6 +7,7 @@
   
   namespace khtml {
       class StyleListImpl;
  +    class RenderCanvas;
   }
   
   namespace KDOM {
  @@ -21,14 +22,11 @@
       using ::KHTMLPart;
   }
   
  -//
  -//namespace KDOM = DOM;
  +typedef khtml::RenderCanvas KCanvas;
   
   #include "KDOMStubClasses.h"
   
   #include "khtml/khtml_part.h"
  -
  -#include "khtml/config.h"
   #include "khtml/css/css_base.h"
   #include "khtml/css/css_computedstyle.h"
   #include "khtml/css/css_ruleimpl.h"
  @@ -45,65 +43,20 @@
   #include "khtml/dom/dom2_traversal.h"
   #include "khtml/dom/dom_exception.h"
   #include "khtml/dom/dom_misc.h"
  -#include "khtml/editing/append_node_command.h"
  -#include "khtml/editing/apply_style_command.h"
  -#include "khtml/editing/break_blockquote_command.h"
  -#include "khtml/editing/composite_edit_command.h"
  -#include "khtml/editing/delete_from_text_node_command.h"
  -#include "khtml/editing/delete_selection_command.h"
  -#include "khtml/editing/edit_actions.h"
  -#include "khtml/editing/edit_command.h"
  -#include "khtml/editing/html_interchange.h"
  -#include "khtml/editing/htmlediting.h"
  -#include "khtml/editing/insert_into_text_node_command.h"
  -#include "khtml/editing/insert_line_break_command.h"
  -#include "khtml/editing/insert_node_before_command.h"
  -#include "khtml/editing/insert_paragraph_separator_command.h"
  -#include "khtml/editing/insert_text_command.h"
  -#include "khtml/editing/join_text_nodes_command.h"
  -#include "khtml/editing/jsediting.h"
  -#include "khtml/editing/markup.h"
  -#include "khtml/editing/merge_identical_elements_command.h"
  -#include "khtml/editing/move_selection_command.h"
  -#include "khtml/editing/rebalance_whitespace_command.h"
  -#include "khtml/editing/remove_css_property_command.h"
  -#include "khtml/editing/remove_node_attribute_command.h"
  -#include "khtml/editing/remove_node_command.h"
  -#include "khtml/editing/remove_node_preserving_children_command.h"
  -#include "khtml/editing/replace_selection_command.h"
  -#include "khtml/editing/SelectionController.h"
  -#include "khtml/editing/set_node_attribute_command.h"
  -#include "khtml/editing/split_element_command.h"
  -#include "khtml/editing/split_text_node_command.h"
  -#include "khtml/editing/split_text_node_containing_element_command.h"
  -#include "khtml/editing/text_affinity.h"
  -#include "khtml/editing/text_granularity.h"
  -#include "khtml/editing/typing_command.h"
  -#include "khtml/editing/visible_position.h"
  -#include "khtml/editing/visible_range.h"
  -#include "khtml/editing/visible_text.h"
  -#include "khtml/editing/visible_units.h"
  -#include "khtml/editing/wrap_contents_in_dummy_span_command.h"
  +#include "khtml/dom/dom_string.h"
   #include "khtml/khtml_events.h"
   #include "khtml/khtmlpart_p.h"
   #include "khtml/khtmlview.h"
   #include "khtml/misc/arena.h"
   #include "khtml/misc/decoder.h"
  -#include "khtml/misc/formdata.h"
  -#include "khtml/misc/hashfunctions.h"
   #include "khtml/misc/helper.h"
  -#include "khtml/misc/khtmldata.h"
  -#include "khtml/misc/khtmllayout.h"
   #include "khtml/misc/loader.h"
   #include "khtml/misc/loader_client.h"
   #include "khtml/misc/shared.h"
   #include "khtml/misc/stringit.h"
  -#include "khtml/rendering/bidi.h"
  -#include "khtml/rendering/font.h"
   #include "khtml/rendering/render_object.h"
  -#include "khtml/rendering/render_replaced.h"
   #include "khtml/rendering/render_style.h"
  -#include "khtml/rendering/table_layout.h"
  +#include "khtml/rendering/render_canvas.h"
   #include "khtml/xml/dom2_eventsimpl.h"
   #include "khtml/xml/dom2_rangeimpl.h"
   #include "khtml/xml/dom2_traversalimpl.h"
  @@ -121,7 +74,6 @@
   #include "khtml/xml/EventNames.h"
   #include "khtml/xml/xml_tokenizer.h"
   #include "khtml/xsl/xsl_stylesheetimpl.h"
  -#include "khtml/xsl/xslt_processorimpl.h"
   
   // All temporary:
   #include "WebCore+SVG/kdom.h"
  @@ -130,8 +82,7 @@
   #include "WebCore+SVG/kdomrange.h"
   #include "WebCore+SVG/kdomtraversal.h"
   #include "WebCore+SVG/kdomls.h"
  -#include "WebCore+SVG/Namespace.h"
  -#include "ksvg2/svg/SVGNames.h"
  +#include "SVGNames.h"
   #include "WebCore+SVG/RGBColorImpl.h"
   #include "WebCore+SVG/KDOMSettings.h"
   
  
  
  
  1.2       +0 -22     SVGSupport/WebCore+SVG/KDOMSettings.cpp
  
  Index: KDOMSettings.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/WebCore+SVG/KDOMSettings.cpp,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- KDOMSettings.cpp	3 Nov 2005 10:27:17 -0000	1.1
  +++ KDOMSettings.cpp	21 Nov 2005 08:29:08 -0000	1.2
  @@ -120,28 +120,6 @@
   };
   
   /**
  - * Returns a writeable per-domains settings instance for the given
  - * domain or a deep copy of the global settings if not existent.
  - */
  -static KPerDomainSettings &setup_per_domain_policy(PolicyMap &policies,
  -                                                   const KPerDomainSettings &global,
  -                                                   const QString &domain)
  -{
  -    if(domain.isEmpty())
  -        kdWarning() << "setup_per_domain_policy: domain is empty" << endl;
  -
  -    const QString ldomain = domain.lower();
  -    PolicyMap::iterator it = policies.find(ldomain);
  -    if(it == policies.end())
  -    {
  -        // simply copy global domain settings (they should have been initialized by this time)
  -        it = policies.insert(ldomain, global);
  -    }
  -
  -    return *it;
  -}
  -
  -/**
    * Local helper for retrieving per-domain settings.
    * In case of doubt, the global domain is returned.
    */
  
  
  
  1.1                  SVGSupport/WebCore+SVG/SVGElementFactoryWrapper.cpp
  
  Index: SVGElementFactoryWrapper.cpp
  ===================================================================
  #include "SVGElementFactory.cpp"
  
  
  
  1.1                  SVGSupport/WebCore+SVG/SVGNamesWrapper.cpp
  
  Index: SVGNamesWrapper.cpp
  ===================================================================
  #include "SVGNames.cpp"
  
  
  1.43      +22 -0     WebCore/WebCore.xcodeproj/project.pbxproj
  
  Index: project.pbxproj
  ===================================================================
  RCS file: /cvs/root/WebCore/WebCore.xcodeproj/project.pbxproj,v
  retrieving revision 1.42
  retrieving revision 1.43
  diff -u -r1.42 -r1.43
  --- project.pbxproj	21 Nov 2005 04:01:49 -0000	1.42
  +++ project.pbxproj	21 Nov 2005 08:29:09 -0000	1.43
  @@ -5689,6 +5689,7 @@
   				A8212A8408794A2300677359 /* xmlserializer.lut.h */,
   				A83C86850911AA9D009BF4A7 /* XSLTProcessor.lut.h */,
   				A8212A8508794A2300677359 /* domparser.lut.h */,
  +				A890EA0A0931A92D00513F88 /* SVG Names & ElementFactory */,
   				A837AEF108B6991100EBFFDC /* ksvgcssproperties.c/h */,
   				A837AEF308B6992C00EBFFDC /* ksvgcssvalues.c/h */,
   				A8212A8608794A2300677359 /* Headers */,
  @@ -6596,6 +6597,27 @@
   			shellPath = /bin/sh;
   			shellScript = "\"$CREATE_HASH_TABLE\" khtml/ecma/XSLTProcessor.cpp > \"$DERIVED_FILE_DIR/XSLTProcessor.lut.h\"";
   		};
  +		A890EA0A0931A92D00513F88 /* SVG Names & ElementFactory */ = {
  +			isa = PBXShellScriptBuildPhase;
  +			buildActionMask = 2147483647;
  +			files = (
  +			);
  +			inputPaths = (
  +				ksvg2/svg/svgtags.in,
  +				ksvg2/svg/svgattrs.in,
  +				ksvg2/scripts/make_names.pl,
  +			);
  +			name = "SVG Names & ElementFactory";
  +			outputPaths = (
  +				"$(DERIVED_FILE_DIR)/SVGElementFactory.cpp",
  +				"$(DERIVED_FILE_DIR)/SVGElementFactory.h",
  +				"$(DERIVED_FILE_DIR)/SVGNames.cpp",
  +				"$(DERIVED_FILE_DIR)/SVGNames.h",
  +			);
  +			runOnlyForDeploymentPostprocessing = 0;
  +			shellPath = /bin/sh;
  +			shellScript = "ksvg2/scripts/make_names.pl --tags ksvg2/svg/svgtags.in --attrs ksvg2/svg/svgattrs.in --output \"$DERIVED_FILE_DIR\"";
  +		};
   		A8AA619B089CDABF00666825 /* WebCore+SVG.exp */ = {
   			isa = PBXShellScriptBuildPhase;
   			buildActionMask = 2147483647;
  
  
  
  1.9       +62 -211   SVGSupport/kcanvas/KCanvasContainer.cpp
  
  Index: KCanvasContainer.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasContainer.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- KCanvasContainer.cpp	5 Oct 2005 05:36:44 -0000	1.8
  +++ KCanvasContainer.cpp	21 Nov 2005 08:29:11 -0000	1.9
  @@ -21,37 +21,29 @@
   */
   
   #include "config.h"
  -#include "KCanvas.h"
  -#include "KRenderingStyle.h"
  +#include "KCanvasRenderingStyle.h"
   #include "KRenderingDevice.h"
   #include "KCanvasContainer.h"
  +#include "SVGStyledElementImpl.h"
   
   class KCanvasContainer::Private
   {
   public:
  -    Private() : drawContents(true), first(0), last(0) { }    
  +    Private() : drawContents(true), slice(false) { }    
       ~Private() { }
   
       bool drawContents : 1;
  -
  -    KCanvasItem *first;
  -    KCanvasItem *last;
  +    bool slice : 1;
  +    QMatrix matrix;
   };
   
  -KCanvasContainer::KCanvasContainer(KCanvas *canvas, KRenderingStyle *style)
  -: KCanvasItem(canvas, style, 0), d(new Private())
  +KCanvasContainer::KCanvasContainer(KSVG::SVGStyledElementImpl *node)
  +: khtml::RenderContainer(node), d(new Private())
   {
   }
   
   KCanvasContainer::~KCanvasContainer()
   {
  -    KCanvasItem *next;
  -    for(KCanvasItem *n = d->first;n;n = next)
  -    {
  -        next = n->next();
  -        delete n;
  -    }
  -
       delete d;
   }
   
  @@ -60,116 +52,22 @@
       d->drawContents = drawContents;
   }
   
  -bool KCanvasContainer::needsTemporaryBuffer() const
  +QMatrix KCanvasContainer::localTransform() const
   {
  -    bool conditionOne = (style()->opacity() < 1.0f);
  -    bool conditionTwo = (style()->clipPaths().count() > 0);
  -
  -    return conditionOne || conditionTwo;
  +    return d->matrix;
   }
   
  -void KCanvasContainer::appendItem(KCanvasItem *item)
  +void KCanvasContainer::setLocalTransform(const QMatrix &matrix)
   {
  -    Q_ASSERT(item);
  -
  -    KCanvasItem *prev = item->prev();
  -    KCanvasItem *next = item->next();
  -
  -    if(prev)
  -        prev->setNext(next);
  -    
  -    if(next)
  -        next->setPrev(prev);
  -
  -    item->setPrev(d->last);
  -
  -    if(d->last)
  -        d->last->setNext(item);
  -
  -    d->last = item;
  -
  -    if(!d->first)
  -        d->first = item;
  -
  -    item->setParent(this);
  -}
  -
  -void KCanvasContainer::insertItemBefore(KCanvasItem *item, KCanvasItem *reference)
  -{
  -    Q_ASSERT(item);
  -
  -    if(!reference)
  -        appendItem(item);
  -    else // We need to correct the existing tree structure...
  -    {
  -        KCanvasItem *current = d->first;
  -        for(; current != 0; current = current->next())
  -        {
  -            if(current == reference)
  -            {
  -                KCanvasItem *itemPrev = item->prev();
  -                KCanvasItem *itemNext = item->next();
  -                KCanvasItem *currentPrev = current->prev();
  -
  -                if(itemPrev)
  -                    itemPrev->setNext(itemNext);
  -
  -                if(itemNext)
  -                    itemNext->setPrev(itemPrev);
  -
  -                if(currentPrev)
  -                    currentPrev->setNext(item);
  -
  -                item->setPrev(currentPrev);
  -                item->setNext(current);
  -
  -                current->setPrev(item);
  -
  -                if(current == d->first)
  -                    d->first = item;
  -
  -                return;
  -            }
  -        }
  -    }
  -}
  -
  -void KCanvasContainer::removeItem(const KCanvasItem *item)
  -{
  -    Q_ASSERT(item);
  -
  -    KCanvasItem *current = d->first;
  -    for(; current != 0; current = current->next())
  -    {
  -        if(current == item)
  -        {
  -            KCanvasItem *currentPrev = current->prev();
  -            KCanvasItem *currentNext = current->next();
  -
  -            if(currentPrev)
  -                currentPrev->setNext(currentNext);
  -
  -            if(currentNext)
  -                currentNext->setPrev(currentPrev);
  -
  -            if(current == d->first)
  -                d->first = currentNext;
  -
  -            if(current == d->last)
  -                d->last = currentPrev;
  -
  -            delete current;
  -            return;
  -        }
  -    }
  +    d->matrix = matrix;
   }
   
   bool KCanvasContainer::fillContains(const QPoint &p) const
   {
  -    KCanvasItem *current = d->first;
  -    for(; current != 0; current = current->next())
  +    khtml::RenderObject *current = firstChild();
  +    for(; current != 0; current = current->nextSibling())
       {
  -        if(current->fillContains(p))
  +        if(current->isRenderPath() && static_cast<RenderPath *>(current)->fillContains(p))
               return true;
       }
   
  @@ -178,127 +76,80 @@
   
   bool KCanvasContainer::strokeContains(const QPoint &p) const
   {
  -    KCanvasItem *current = d->first;
  -    for(; current != 0; current = current->next())
  +    khtml::RenderObject *current = firstChild();
  +    for(; current != 0; current = current->nextSibling())
       {
  -        if(current->strokeContains(p))
  +        if(current->isRenderPath() && static_cast<RenderPath *>(current)->strokeContains(p))
               return true;
       }
   
       return false;
   }
   
  -void KCanvasContainer::draw(const QRect &rect) const
  -{
  -    if(!d->drawContents)
  -        return;
  -
  -    KCanvasItem *current = d->first;
  -    for(; current != 0; current = current->next())
  -    {
  -        if(current->isVisible())
  -            current->draw(rect);
  -    }
  -}
  -
  -void KCanvasContainer::invalidate() const
  -{
  -    KCanvasItem *current = d->first;
  -    for(; current != 0; current = current->next())
  -        current->invalidate();
  -}
  -
   QRect KCanvasContainer::bbox(bool includeStroke) const
   {
  -    QRect rect;
  -
  -    KCanvasItem *current = d->first;
  -    if (current) {
  -        rect = current->bbox(includeStroke);
  -        current = current->next();
  -
  -        for(; current != 0; current = current->next())
  -            rect = rect.unite(current->bbox(includeStroke));
  -    }
  +    QRect rect(0,0,0,0);
  +    
  +    khtml::RenderObject *current = firstChild();
  +    for(; current != 0; current = current->nextSibling())
  +        rect = rect.unite(current->bbox(includeStroke));
   
       return rect;
   }
   
  -bool KCanvasContainer::raiseItem(KCanvasItem *item)
  +void KCanvasContainer::setSlice(bool slice)
   {
  -    KCanvasItem *itemPrev = item->prev();
  -    KCanvasItem *itemNext = item->next();
  -
  -    if(!itemNext)
  -        return false;
  -    
  -    itemNext->setPrev(itemPrev);
  -    if(itemPrev)
  -        itemPrev->setNext(itemNext);
  -    
  -    item->setNext(itemNext->next());
  -    itemNext->setNext(item);
  -
  -    return true;
  +    d->slice = slice;
   }
   
  -bool KCanvasContainer::lowerItem(KCanvasItem *item)
  +bool KCanvasContainer::slice() const
   {
  -    KCanvasItem *itemPrev = item->prev();
  -    KCanvasItem *itemNext = item->next();
  -
  -    if(!itemPrev)
  -        return false;
  -    
  -    itemPrev->setNext(itemNext);
  -    if(itemNext)
  -        itemNext->setPrev(itemPrev);
  -    
  -    item->setPrev(itemPrev);
  -    itemPrev->setPrev(item);
  -
  -    item->setNext(itemPrev);
  -
  -    if(d->last == item)
  -        d->last = itemPrev;
  -    
  -    if(d->first == itemPrev)
  -        d->first = item;
  -    
  -    return true;
  +    return d->slice;
   }
   
  -void KCanvasContainer::collisions(const QPoint &p, KCanvasItemList &hits) const
  +KCanvasMatrix KCanvasContainer::getAspectRatio(const QRect logical, const QRect physical) const
   {
  -    if(p.x() < 0 || p.y() < 0)
  -        return;
  +    KCanvasMatrix temp;
  +
  +    float logicX = logical.x();
  +    float logicY = logical.y();
  +    float logicWidth = logical.width();
  +    float logicHeight = logical.height();
  +    float physWidth = physical.width();
  +    float physHeight = physical.height();
   
  -    KCanvasItem *current = d->last;
  -    for(; current != 0; current = current->prev())
  +    float vpar = logicWidth / logicHeight;
  +    float svgar = physWidth / physHeight;
  +
  +    if(align() == ALIGN_NONE)
  +    {
  +        temp.scale(physWidth / logicWidth, physHeight / logicHeight);
  +        temp.translate(-logicX, -logicY);
  +    }
  +    else if((vpar < svgar && !slice()) || (vpar >= svgar && slice()))
       {
  -        if(current->isContainer())
  -            static_cast<const KCanvasContainer *>(current)->collisions(p, hits);
  +        temp.scale(physHeight / logicHeight, physHeight / logicHeight);
  +
  +        if(align() == ALIGN_XMINYMIN || align() == ALIGN_XMINYMID || align() == ALIGN_XMINYMAX)
  +            temp.translate(-logicX, -logicY);
  +        else if(align() == ALIGN_XMIDYMIN || align() == ALIGN_XMIDYMID || align() == ALIGN_XMIDYMAX)
  +            temp.translate(-logicX - (logicWidth - physWidth * logicHeight / physHeight) / 2, -logicY);
           else
  -        {
  -            QRect fillRect(current->bbox(false));
  -            QRect strokeRect(current->bbox(true));
  -
  -            // Test bounding boxes firsts for speed
  -            if((fillRect.contains(p) && current->fillContains(p)) ||
  -               (strokeRect.contains(p) && current->strokeContains(p)))
  -                hits.append(current);
  -        }
  +            temp.translate(-logicX - (logicWidth - physWidth * logicHeight / physHeight), -logicY);
       }
  -}
  +    else
  +    {
  +        temp.scale(physWidth / logicWidth, physWidth / logicWidth);
   
  -KCanvasItem *KCanvasContainer::first() const
  -{
  -    return d->first;
  -}
  +        if(align() == ALIGN_XMINYMIN || align() == ALIGN_XMIDYMIN || align() == ALIGN_XMAXYMIN)
  +            temp.translate(-logicX, -logicY);
  +        else if(align() == ALIGN_XMINYMID || align() == ALIGN_XMIDYMID || align() == ALIGN_XMAXYMID)
  +            temp.translate(-logicX, -logicY - (logicHeight - physHeight * logicWidth / physWidth) / 2);
  +        else
  +            temp.translate(-logicX, -logicY - (logicHeight - physHeight * logicWidth / physWidth));
  +    }
   
  -KCanvasItem *KCanvasContainer::last() const
  -{
  -    return d->last;
  +    return temp;
   }
   
   // vim:ts=4:noet
  
  
  
  1.6       +39 -28    SVGSupport/kcanvas/KCanvasContainer.h
  
  Index: KCanvasContainer.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasContainer.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- KCanvasContainer.h	8 Sep 2005 08:03:10 -0000	1.5
  +++ KCanvasContainer.h	21 Nov 2005 08:29:11 -0000	1.6
  @@ -23,14 +23,31 @@
   #ifndef KCanvasContainer_H
   #define KCanvasContainer_H
   
  -#include <kcanvas/KCanvasItem.h>
  +#include "kcanvas/RenderPath.h"
  +#include "khtml/rendering/render_container.h"
   
  -class KCanvas;
  -class KRenderingStyle;
  -class KCanvasContainer : public KCanvasItem
  +typedef enum
  +{
  +    ALIGN_NONE = 0,
  +    ALIGN_XMINYMIN = 1,
  +    ALIGN_XMIDYMIN = 2,
  +    ALIGN_XMAXYMIN = 3,
  +    ALIGN_XMINYMID = 4,
  +    ALIGN_XMIDYMID = 5,
  +    ALIGN_XMAXYMID = 6,
  +    ALIGN_XMINYMAX = 7,
  +    ALIGN_XMIDYMAX = 8,
  +    ALIGN_XMAXYMAX = 9
  +} KCAlign;
  +
  +namespace KSVG {
  +    class KCanvasRenderingStyle;
  +}
  +
  +class KCanvasContainer : public khtml::RenderContainer
   {
   public:
  -    KCanvasContainer(KCanvas *canvas, KRenderingStyle *style);
  +    KCanvasContainer(KSVG::SVGStyledElementImpl *node);
       virtual ~KCanvasContainer();
   
       // Some containers do not want it's children
  @@ -38,36 +55,30 @@
       // Example: <marker> children in SVG
       void setDrawContents(bool drawContents);
   
  -    virtual bool needsTemporaryBuffer() const;
  -    virtual bool isContainer() const { return true; }
  -
  -    // Container logic
  -    virtual void appendItem(KCanvasItem *item);
  -    virtual void insertItemBefore(KCanvasItem *item, KCanvasItem *reference);
  -    virtual void removeItem(const KCanvasItem *item);
  +    virtual bool isKCanvasContainer() const { return true; }
  +    virtual const char *renderName() const { return "KCanvasContainer"; }
   
  -    // 'KCanvasItem' functions
       virtual bool fillContains(const QPoint &p) const;
       virtual bool strokeContains(const QPoint &p) const;
  -
  -    virtual void draw(const QRect &rect) const;
  -    
  -    virtual void invalidate() const;
       virtual QRect bbox(bool includeStroke = true) const;
  +    
  +    virtual QMatrix localTransform() const;
  +    virtual void setLocalTransform(const QMatrix &matrix);
  +    
  +    virtual void setViewport(const QRect &viewport) = 0;
  +    virtual QRect viewport() const = 0;
   
  -    KCanvasItem *first() const;
  -    KCanvasItem *last() const;
  -
  -private:
  -    friend class KCanvasItem;
  -
  -    virtual bool raiseItem(KCanvasItem *item);
  -    virtual bool lowerItem(KCanvasItem *item);
  +    virtual void setViewBox(const QRect &viewBox) = 0;
  +    virtual QRect viewBox() const = 0;
   
  -private:
  -    friend class KCanvas;
  +    virtual void setAlign(KCAlign align) = 0;
  +    virtual KCAlign align() const = 0;
   
  -    void collisions(const QPoint &p, KCanvasItemList &hits) const;
  +    void setSlice(bool slice);
  +    bool slice() const;
  +    
  +protected:
  +    KCanvasMatrix getAspectRatio(const QRect logical, const QRect physical) const;
   
   private:
       class Private;
  
  
  
  1.7       +2 -20     SVGSupport/kcanvas/KCanvasCreator.cpp
  
  Index: KCanvasCreator.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasCreator.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- KCanvasCreator.cpp	5 Oct 2005 05:36:44 -0000	1.6
  +++ KCanvasCreator.cpp	21 Nov 2005 08:29:11 -0000	1.7
  @@ -26,7 +26,7 @@
   #include <kdebug.h>
   #include <kstaticdeleter.h>
   
  -#include "KCanvas.h"
  +#include "kcanvas/KCanvas.h"
   #include "KCanvasPath.h"
   #include "KCanvasCreator.h"
   #include "KRenderingDevice.h"
  @@ -161,16 +161,8 @@
       return list;
   }
   
  -KCanvasUserData KCanvasCreator::createCanvasPathData(KCanvas *canvas, const KCPathDataList &pathData) const
  +KCanvasUserData KCanvasCreator::createCanvasPathData(KRenderingDevice *device, const KCPathDataList &pathData) const
   {
  -    if(!canvas || !canvas->renderingDevice())
  -    {
  -        kdError() << k_funcinfo << " 'canvas' can't be null!" << endl;
  -        return 0;
  -    }
  -
  -    KRenderingDevice *device = canvas->renderingDevice();
  -
       device->startPath();
   
       int dataLength = pathData.count();
  @@ -217,14 +209,4 @@
       return device->currentPath();
   }
   
  -KCanvasItem *KCanvasCreator::createPathItem(KCanvas *canvas, KRenderingStyle *style, const KCPathDataList &pathData) const
  -{
  -    return static_cast<KCanvasItem *>(canvas->renderingDevice()->createItem(canvas, style, createCanvasPathData(canvas, pathData)));
  -}
  -
  -KCanvasContainer *KCanvasCreator::createContainer(KCanvas *canvas, KRenderingStyle *style) const
  -{
  -    return static_cast<KCanvasContainer *>(canvas->renderingDevice()->createContainer(canvas, style));
  -}
  -
   // vim:ts=4:noet
  
  
  
  1.4       +6 -8      SVGSupport/kcanvas/KCanvasCreator.h
  
  Index: KCanvasCreator.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasCreator.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- KCanvasCreator.h	1 Sep 2005 07:32:45 -0000	1.3
  +++ KCanvasCreator.h	21 Nov 2005 08:29:11 -0000	1.4
  @@ -26,10 +26,12 @@
   #include <kcanvas/KCanvasPath.h>
   #include <kcanvas/KCanvasTypes.h>
   
  -class KCanvas;
  -class KCanvasItem;
  -class KRenderingStyle;
  +class RenderPath;
  +namespace KSVG {
  +    class KCanvasRenderingStyle;
  +}
   class KCanvasContainer;
  +class KRenderingDevice;
   class KCanvasCreator
   {
   public:
  @@ -46,11 +48,7 @@
       KCPathDataList createLine(float x1, float y1, float x2, float y2) const;
   
       // Canvas item creation
  -    KCanvasUserData createCanvasPathData(KCanvas *canvas, const KCPathDataList &pathData) const;
  -
  -    KCanvasItem *createPathItem(KCanvas *canvas, KRenderingStyle *style, const KCPathDataList &pathData) const;
  -    KCanvasContainer *createContainer(KCanvas *canvas, KRenderingStyle *style) const;
  -
  +    KCanvasUserData createCanvasPathData(KRenderingDevice *device, const KCPathDataList &pathData) const;
   private:
       static KCanvasCreator *s_creator;
   };
  
  
  
  1.7       +8 -0      SVGSupport/kcanvas/KCanvasFilters.cpp
  
  Index: KCanvasFilters.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasFilters.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- KCanvasFilters.cpp	5 Oct 2005 05:36:44 -0000	1.6
  +++ KCanvasFilters.cpp	21 Nov 2005 08:29:11 -0000	1.7
  @@ -47,6 +47,14 @@
       return ts;
   }
   
  +KCanvasFilter *getFilterById(KDOM::DocumentImpl *document, const KDOM::DOMString &id)
  +{
  +    KCanvasResource *resource = getResourceById(document, id);
  +    if (resource && resource->isFilter())
  +        return static_cast<KCanvasFilter *>(resource);
  +    return 0;
  +}
  +
   QTextStream &operator<<(QTextStream &ts, const KCanvasFilterEffect &e)
   {
       return e.externalRepresentation(ts);
  
  
  
  1.7       +6 -4      SVGSupport/kcanvas/KCanvasFilters.h
  
  Index: KCanvasFilters.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasFilters.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- KCanvasFilters.h	8 Sep 2005 08:03:10 -0000	1.6
  +++ KCanvasFilters.h	21 Nov 2005 08:29:11 -0000	1.7
  @@ -74,7 +74,7 @@
       void addFilterEffect(KCanvasFilterEffect *effect);
   
       virtual void prepareFilter(KRenderingDeviceContext *context, const QRect &bbox) = 0;
  -    virtual void applyFilter(KRenderingDeviceContext *context, const KCanvasCommonArgs &args, const QRect &bbox) = 0;
  +    virtual void applyFilter(KRenderingDeviceContext *context, KCanvasMatrix objectMatrix, const QRect &bbox) = 0;
   
       QTextStream &externalRepresentation(QTextStream &) const;
   
  @@ -85,6 +85,8 @@
       bool m_effectBBoxMode;
   };
   
  +KCanvasFilter *getFilterById(KDOM::DocumentImpl *document, const KDOM::DOMString &id);
  +
   #ifdef APPLE_CHANGES
   // FIXME: this strikes me as a total hack...
   #ifdef __OBJC__
  @@ -422,13 +424,13 @@
       KCanvasFEImage() : m_image(0) {}
       virtual ~KCanvasFEImage();
   
  -    KCanvasItem *image() const { return m_image; }
  -    void setImage(KCanvasItem *image) { m_image = image; }
  +    RenderPath *image() const { return m_image; }
  +    void setImage(RenderPath *image) { m_image = image; }
   
       QTextStream &externalRepresentation(QTextStream &) const;
       
   private:
  -    KCanvasItem *m_image;
  +    RenderPath *m_image;
   };
   
   class KCanvasFEMerge : public KCanvasFilterEffect
  
  
  
  1.7       +38 -123   SVGSupport/kcanvas/KCanvasItem.cpp
  
  Index: KCanvasItem.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasItem.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- KCanvasItem.cpp	5 Oct 2005 05:36:45 -0000	1.6
  +++ KCanvasItem.cpp	21 Nov 2005 08:29:11 -0000	1.7
  @@ -25,84 +25,69 @@
   #include <qrect.h>
   #include <kdebug.h>
   
  -#include "KCanvas.h"
  -#include "KCanvasItem.h"
  +#include "kcanvas/KCanvas.h"
  +#include "kcanvas/RenderPath.h"
   #include "KCanvasMatrix.h"
  -#include "KCanvasRegistry.h"
   #include "KRenderingDevice.h"
   #include "KCanvasContainer.h"
   #include "KRenderingFillPainter.h"
   #include "KRenderingStrokePainter.h"
   
  -class KCanvasItem::Private
  +#include "KCanvasRenderingStyle.h"
  +#include "SVGRenderStyle.h"
  +
  +class RenderPath::Private
   {
   public:
       Private()
       {
           path = 0;
           style = 0;
  -        canvas = 0;
  -        parent = 0;
  -        prev = 0;
  -        next = 0;
  -        userData = 0;
  -
  -        // Set to invalid. '0' is reserved
  -        // for the root container.
  -        zIndex = -1;
       }
   
       ~Private()
       {
  -        if(path && canvas && canvas->renderingDevice())
  -            canvas->renderingDevice()->deletePath(path);
  -
           delete style;
       }
   
  -    KCanvas *canvas;    
  -    KRenderingStyle *style;
  -
  -    int zIndex;
  -    KCanvasUserData path, userData;
  +    KSVG::KCanvasRenderingStyle *style;
  +    KCanvasUserData path;
   
       QRect fillBBox, strokeBbox;
  -
  -    KCanvasContainer *parent;
  -    KCanvasItem *prev;
  -    KCanvasItem *next;
  +    QMatrix matrix;
   };        
   
  -// KCanvasItem
  -KCanvasItem::KCanvasItem(KCanvas *canvas, KRenderingStyle *style, KCanvasUserData path) : d(new Private())
  +// RenderPath
  +RenderPath::RenderPath(khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node) : RenderObject((DOM::NodeImpl *)node), d(new Private())
   {
       Q_ASSERT(style != 0);
  -    Q_ASSERT(canvas != 0);
  -    
  -    d->path = path;
  -    d->style = style;
  -    d->canvas = canvas;
  +    d->style = new KSVG::KCanvasRenderingStyle(canvas(), style);
   }
   
  -KCanvasItem::~KCanvasItem()
  +RenderPath::~RenderPath()
   {
  +    if(d->path && canvas() && canvas()->renderingDevice())
  +        canvas()->renderingDevice()->deletePath(d->path);
       delete d;
   }
   
  -int KCanvasItem::zIndex() const
  +void RenderPath::setStyle(khtml::RenderStyle *style)
   {
  -    return d->zIndex;
  +    d->style->updateStyle(style, this);
  +    khtml::RenderObject::setStyle(style);
   }
   
  -bool KCanvasItem::isVisible() const
  +QMatrix RenderPath::localTransform() const
   {
  -    if(!d->style || !d->style->visible())
  -        return false;
  +    return d->matrix;
  +}
   
  -    return true;
  +void RenderPath::setLocalTransform(const QMatrix &matrix)
  +{
  +    d->matrix = matrix;
   }
   
  -bool KCanvasItem::fillContains(const QPoint &p) const
  +bool RenderPath::fillContains(const QPoint &p) const
   {
       if(d->path && d->style && canvas() && canvas()->renderingDevice())
           return hitsPath(p, true);
  @@ -110,7 +95,7 @@
       return false;
   }
   
  -bool KCanvasItem::strokeContains(const QPoint &p) const
  +bool RenderPath::strokeContains(const QPoint &p) const
   {
       if(d->path && d->style && canvas() && canvas()->renderingDevice())
           return hitsPath(p, false);
  @@ -118,7 +103,7 @@
       return false;
   }
   
  -QRect KCanvasItem::bbox(bool includeStroke) const
  +QRect RenderPath::bbox(bool includeStroke) const
   {
       QRect result;
       
  @@ -138,23 +123,20 @@
       return result;
   }
   
  -bool KCanvasItem::hitsPath(const QPoint &hitPoint, bool fill) const
  +bool RenderPath::hitsPath(const QPoint &hitPoint, bool fill) const
   {
       return false;
   }
   
  -QRect KCanvasItem::bboxPath(bool includeStroke, bool includeTransforms) const
  +QRect RenderPath::bboxPath(bool includeStroke, bool includeTransforms) const
   {
       return QRect();
   }
   
  -void KCanvasItem::draw(const QRect &rect) const
  +void RenderPath::setupForDraw() const
   {
       if(d->path && d->style && canvas() && canvas()->renderingDevice())
       {
  -        if(!d->style->visible())
  -            return;
  -
           if(d->style->fillPainter() && d->style->fillPainter()->paintServer())
               d->style->fillPainter()->paintServer()->setActiveClient(this);
   
  @@ -163,100 +145,33 @@
       }
   }
   
  -void KCanvasItem::changePath(KCanvasUserData newPath)
  +void RenderPath::changePath(KCanvasUserData newPath)
   {
  -    if(d->path && canvas() && canvas()->renderingDevice())
  +    if(canvas() && canvas()->renderingDevice())
       {
           canvas()->renderingDevice()->setCurrentPath(newPath);
  -        canvas()->renderingDevice()->deletePath(d->path);
  +        if (d->path)
  +            canvas()->renderingDevice()->deletePath(d->path);
   
           d->path = newPath;
       }
   }
   
  -KCanvas *KCanvasItem::canvas() const
  -{
  -    return d->canvas;
  -}
  -
  -KCanvasUserData KCanvasItem::path() const
  +KCanvasUserData RenderPath::path() const
   {
       return d->path;
   }
   
  -KRenderingStyle *KCanvasItem::style() const
  +KSVG::KCanvasRenderingStyle *RenderPath::canvasStyle() const
   {
       return d->style;
   }
   
  -void KCanvasItem::invalidate() const
  -{
  -    if(d->canvas)
  -    {
  -        d->canvas->invalidate(this);
  -        d->fillBBox = QRect();
  -                d->strokeBbox = QRect();
  -    }
  -}
  -
  -KCanvasUserData KCanvasItem::userData() const
  -{
  -    return d->userData;
  -}
  -
  -void KCanvasItem::setUserData(KCanvasUserData userData)
  -{
  -    d->userData = userData;
  -}
  -
  -bool KCanvasItem::raise()
  -{
  -    Q_ASSERT(d->parent);
  -    return d->parent->raiseItem(this);
  -}
  -
  -bool KCanvasItem::lower()
  -{
  -    Q_ASSERT(d->parent);
  -    return d->parent->lowerItem(this);
  -}
  -
  -KCanvasContainer *KCanvasItem::parent() const
  -{
  -    return d->parent;
  -}
  -
  -void KCanvasItem::setParent(KCanvasContainer *parent)
  -{
  -    d->parent = parent;
  -}
  -
  -KCanvasItem *KCanvasItem::prev() const
  -{
  -    return d->prev;
  -}
  -
  -void KCanvasItem::setPrev(KCanvasItem *prev)
  -{
  -    d->prev = prev;
  -}
  -
  -KCanvasItem *KCanvasItem::next() const
  -{
  -    return d->next;
  -}
  -
  -void KCanvasItem::setNext(KCanvasItem *next)
  -{
  -    d->next = next;
  -}
  -
  -const KCanvasCommonArgs KCanvasItem::commonArgs() const
  +const KCanvasCommonArgs RenderPath::commonArgs() const
   {
       KCanvasCommonArgs args;
       args.setPath(path());
  -    args.setStyle(style());
  -    args.setCanvas(canvas());
  +    args.setStyle(canvasStyle());
       return args;
   }
   
  
  
  
  1.5       +20 -37    SVGSupport/kcanvas/KCanvasItem.h
  
  Index: KCanvasItem.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasItem.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- KCanvasItem.h	2 Sep 2005 10:02:56 -0000	1.4
  +++ KCanvasItem.h	21 Nov 2005 08:29:11 -0000	1.5
  @@ -30,18 +30,22 @@
   #include <q3valuelist.h>
   
   #include <kcanvas/KCanvasTypes.h>
  +#include "khtml/rendering/render_object.h"
   
  -class KCanvas;
  -class KRenderingStyle;
  +namespace KSVG {
  +    class SVGStyledElementImpl;
  +};
  +
  +namespace KSVG {
  +    class KCanvasRenderingStyle;
  +}
   class KCanvasContainer;
  -class KCanvasItem
  +class KCanvasMatrix;
  +class RenderPath : public khtml::RenderObject
   {
   public:
  -    KCanvasItem(KCanvas *canvas, KRenderingStyle *style, KCanvasUserData path);
  -    virtual ~KCanvasItem();
  -
  -    int zIndex() const;
  -    bool isVisible() const;
  +    RenderPath(khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node);
  +    virtual ~RenderPath();
   
       // Hit-detection seperated for the fill and the stroke
       virtual bool fillContains(const QPoint &p) const;
  @@ -51,41 +55,20 @@
       virtual QRect bbox(bool includeStroke = true) const;
   
       // Drawing
  -    virtual void draw(const QRect &rect) const;
  +    void setupForDraw() const;
   
       // Update
       void changePath(KCanvasUserData newPath);
   
  -    KCanvas *canvas() const;
       KCanvasUserData path() const;
  -    KRenderingStyle *style() const;
  -
  -    // Convenience function
  -    virtual void invalidate() const;
  -
  -    // Returns pointer to a self-specified data structure
  -    // ie. to "link" a KCanvasItem to a KDOM::NodeImpl *
  -    KCanvasUserData userData() const;
  -    void setUserData(KCanvasUserData userData);
  +    virtual void setStyle(khtml::RenderStyle *style);
  +    KSVG::KCanvasRenderingStyle *canvasStyle() const;
   
  -    // Container handling...
  -    virtual bool isContainer() const { return false; }
  +    virtual bool isRenderPath() const { return true; }
  +    virtual const char *renderName() const { return "KCanvasItem"; }
       
  -    virtual void appendItem(KCanvasItem *) { }
  -    virtual void insertItemBefore(KCanvasItem *, KCanvasItem *) { }
  -    virtual void removeItem(const KCanvasItem *) { }
  -
  -    virtual bool raise();
  -    virtual bool lower();
  -    
  -    KCanvasContainer *parent() const;
  -    void setParent(KCanvasContainer *parent);
  -
  -    KCanvasItem *prev() const;
  -    void setPrev(KCanvasItem *prev);
  -
  -    KCanvasItem *next() const;
  -    void setNext(KCanvasItem *next);
  +    virtual QMatrix localTransform() const;
  +    virtual void setLocalTransform(const QMatrix &matrix);
       
   protected:
       // restricted set of args for passing to paint servers, etc.
  @@ -99,7 +82,7 @@
   };
   
   // Helper data structure
  -typedef Q3ValueList<const KCanvasItem *> KCanvasItemList;
  +typedef Q3ValueList<const RenderPath *> KCanvasItemList;
   
   #endif
   
  
  
  
  1.7       +82 -15    SVGSupport/kcanvas/KCanvasResources.cpp
  
  Index: KCanvasResources.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasResources.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- KCanvasResources.cpp	5 Oct 2005 05:36:45 -0000	1.6
  +++ KCanvasResources.cpp	21 Nov 2005 08:29:11 -0000	1.7
  @@ -24,14 +24,16 @@
   #include <qrect.h>
   #include <kdebug.h>
   
  -#include "KCanvas.h"
  -#include "KCanvasItem.h"
  +#include "kcanvas/KCanvas.h"
  +#include "kcanvas/RenderPath.h"
   #include "KCanvasMatrix.h"
   #include "KCanvasContainer.h"
   #include "KCanvasResources.h"
   #include "KRenderingDevice.h"
   #include "KCanvasResourceListener.h"
   
  +#include "SVGStyledElementImpl.h"
  +
   #include <qtextstream.h>
   #include "KCanvasTreeDebug.h"
   
  @@ -49,7 +51,7 @@
   {
   }
   
  -void KCanvasResource::addClient(KCanvasItem *item)
  +void KCanvasResource::addClient(RenderPath *item)
   {
       if(m_clients.find(item) != m_clients.end())
           return;
  @@ -68,12 +70,7 @@
       KCanvasItemList::ConstIterator end = m_clients.end();
   
       for(; it != end; ++it)
  -    {
  -        const KCanvasItem *current = (*it);
  -
  -        Q_ASSERT(current->canvas());
  -        current->canvas()->invalidate(current);
  -    }
  +        const_cast<RenderPath *>(*it)->repaint();
   }
   
   QString KCanvasResource::idInRegistry() const
  @@ -136,19 +133,20 @@
   }
   
   // KCanvasMarker
  -KCanvasMarker::KCanvasMarker(KCanvasItem *marker) : KCanvasResource()
  +KCanvasMarker::KCanvasMarker(khtml::RenderObject *marker) : KCanvasResource()
   {
       m_refX = 0;
       m_refY = 0;
       m_marker = marker;
       setAutoAngle();
  +    m_useStrokeWidth = true;
   }
   
   KCanvasMarker::~KCanvasMarker()
   {
   }
   
  -void KCanvasMarker::setMarker(KCanvasItem *marker)
  +void KCanvasMarker::setMarker(khtml::RenderObject *marker)
   {
       m_marker = marker;
   }
  @@ -188,19 +186,55 @@
       m_angle = -1;
   }
   
  -void KCanvasMarker::draw(double x, double y, double angle)
  +void KCanvasMarker::setUseStrokeWidth(bool useStrokeWidth)
  +{
  +    m_useStrokeWidth = useStrokeWidth;
  +}
  +
  +bool KCanvasMarker::useStrokeWidth() const
  +{
  +    return m_useStrokeWidth;
  +}
  +
  +void KCanvasMarker::setScaleX(float scaleX)
  +{
  +    m_scaleX = scaleX;
  +}
  +
  +float KCanvasMarker::scaleX() const
  +{
  +    return m_scaleX;
  +}
  +
  +void KCanvasMarker::setScaleY(float scaleY)
  +{
  +    m_scaleY = scaleY;
  +}
  +
  +float KCanvasMarker::scaleY() const
  +{
  +    return m_scaleY;
  +}
  +
  +void KCanvasMarker::draw(const QRect &rect, const KCanvasMatrix &objectMatrix, double x, double y, double strokeWidth, double angle)
   {
  -    if(m_marker && m_marker->style())
  +    if(m_marker)
       {
  -        KCanvasMatrix translation;
  +        KCanvasMatrix translation = objectMatrix;
           translation.translate(x, y);
   
           KCanvasMatrix rotation;
           rotation.setOperationMode(OPS_POSTMUL);
           rotation.translate(-m_refX, -m_refY);
  +        rotation.scale(m_scaleX, m_scaleY);
           rotation.rotate(m_angle > -1 ? m_angle : angle);
  +        
  +        // stroke width
  +        if(m_useStrokeWidth)
  +            rotation.scale(strokeWidth, strokeWidth);
   
  -        m_marker->draw(QRect());
  +        // FIXME: Need to figure out how this should be called... paint(...)
  +        //m_marker->draw(QRect());
       }
   }
   
  @@ -216,4 +250,37 @@
       return ts;
   }
   
  +KCanvasResource *getResourceById(KDOM::DocumentImpl *document, const KDOM::DOMString &id)
  +{
  +    KDOM::ElementImpl *element = document->getElementById(id);
  +    KSVG::SVGElementImpl *svgElement = KSVG::svg_dynamic_cast(element);
  +    if (svgElement && svgElement->isStyled())
  +        return static_cast<KSVG::SVGStyledElementImpl *>(svgElement)->canvasResource();
  +    return 0;
  +}
  +
  +KCanvasMarker *getMarkerById(KDOM::DocumentImpl *document, const KDOM::DOMString &id)
  +{
  +    KCanvasResource *resource = getResourceById(document, id);
  +    if (resource && resource->isMarker())
  +        return static_cast<KCanvasMarker *>(resource);
  +    return 0;
  +}
  +
  +KCanvasClipper *getClipperById(KDOM::DocumentImpl *document, const KDOM::DOMString &id)
  +{
  +    KCanvasResource *resource = getResourceById(document, id);
  +    if (resource && resource->isClipper())
  +        return static_cast<KCanvasClipper *>(resource);
  +    return 0;
  +}
  +
  +KRenderingPaintServer *getPaintServerById(KDOM::DocumentImpl *document, const KDOM::DOMString &id)
  +{
  +    KCanvasResource *resource = getResourceById(document, id);
  +    if (resource && resource->isPaintServer())
  +        return static_cast<KRenderingPaintServer *>(resource);
  +    return 0;
  +}
  +
   // vim:ts=4:noet
  
  
  
  1.7       +33 -12    SVGSupport/kcanvas/KCanvasResources.h
  
  Index: KCanvasResources.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasResources.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- KCanvasResources.h	8 Sep 2005 08:03:11 -0000	1.6
  +++ KCanvasResources.h	21 Nov 2005 08:29:11 -0000	1.7
  @@ -26,7 +26,7 @@
   #include <qstring.h>
   #include <q3valuelist.h>
   
  -#include <kcanvas/KCanvasItem.h>
  +#include <kcanvas/RenderPath.h>
   #include <kcanvas/KCanvasPath.h>
   #include <kcanvas/KCanvasResourceListener.h>
   
  @@ -43,6 +43,7 @@
   } KCResourceType;
   
   class KCanvasMatrix;
  +class KRenderingPaintServer;
   
   class KCanvasResource
   {
  @@ -51,13 +52,18 @@
       virtual ~KCanvasResource();
   
       virtual void invalidate();
  -    void addClient(KCanvasItem *item);
  +    void addClient(RenderPath *item);
   
       const KCanvasItemList &clients() const;
       
       QString idInRegistry() const;
       void setIdInRegistry(const QString& newId);
       
  +    virtual bool isPaintServer() { return false; }
  +    virtual bool isFilter() { return false; }
  +    virtual bool isClipper() { return false; }
  +    virtual bool isMarker() { return false; }
  +    
       virtual QTextStream& externalRepresentation(QTextStream &) const; 
   private:
       KCanvasItemList m_clients;
  @@ -88,33 +94,48 @@
   class KCanvasMarker : public KCanvasResource
   {
   public:
  -    KCanvasMarker(KCanvasItem *marker = 0);
  +    KCanvasMarker(khtml::RenderObject *marker = 0);
       virtual ~KCanvasMarker();
   
  -    void setMarker(KCanvasItem *marker);
  -
  +    void setMarker(khtml::RenderObject *marker);
  +    
       void setRefX(double refX);
       double refX() const;
  -
  +    
       void setRefY(double refY);
       double refY() const;
  -
  -    void setAutoAngle();
  +    
       void setAngle(float angle);
  +    void setAutoAngle();
       float angle() const;
   
  -    // Draw onto the canvas
  -    void draw(double x, double y, double angle = 0.0);
  +    void setUseStrokeWidth(bool useStrokeWidth = true);
  +    bool useStrokeWidth() const;
  +
  +    void setScaleX(float scaleX);
  +    float scaleX() const;
  +
  +    void setScaleY(float scaleY);
  +    float scaleY() const;
  +
  +     // Draw onto the canvas
  +    void draw(const QRect &rect, const KCanvasMatrix &objectMatrix, double x, double y, double strokeWidth = 1., double angle = 0.0);
   
       QTextStream& externalRepresentation(QTextStream &) const; 
   private:
       double m_refX, m_refY;
  -    float m_angle;
  -    KCanvasItem *m_marker;
  +    float m_angle, m_scaleX, m_scaleY;
  +    khtml::RenderObject *m_marker;
  +    bool m_useStrokeWidth;
   };
   
   QTextStream &operator<<(QTextStream &ts, const KCanvasResource &r);
   
  +KCanvasResource *getResourceById(KDOM::DocumentImpl *document, const KDOM::DOMString &id);
  +KCanvasMarker *getMarkerById(KDOM::DocumentImpl *document, const KDOM::DOMString &id);
  +KCanvasClipper *getClipperById(KDOM::DocumentImpl *document, const KDOM::DOMString &id);
  +KRenderingPaintServer *getPaintServerById(KDOM::DocumentImpl *document, const KDOM::DOMString &id);
  +
   #endif
   
   // vim:ts=4:noet
  
  
  
  1.8       +82 -99    SVGSupport/kcanvas/KCanvasTreeDebug.cpp
  
  Index: KCanvasTreeDebug.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasTreeDebug.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- KCanvasTreeDebug.cpp	5 Oct 2005 05:36:45 -0000	1.7
  +++ KCanvasTreeDebug.cpp	21 Nov 2005 08:29:11 -0000	1.8
  @@ -29,10 +29,10 @@
   
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasMatrix.h>
  -#include <kcanvas/KCanvasItem.h>
  +#include <kcanvas/RenderPath.h>
   #include <kcanvas/KCanvasContainer.h>
  -#include <kcanvas/KCanvasRegistry.h>
  -#include <kcanvas/device/KRenderingStyle.h>
  +#include "KCanvasRenderingStyle.h"
  +#include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingStrokePainter.h>
   #include <kcanvas/device/KRenderingFillPainter.h>
   #include <kcanvas/device/KRenderingPaintServerSolid.h>
  @@ -41,16 +41,20 @@
   #include <kcanvas/device/KRenderingPaintServerImage.h>
   #include <kcanvas/KCanvasResources.h>
   #include <kcanvas/KCanvasFilters.h>
  +
   #ifdef APPLE_CHANGES
  -#include <kcanvas/device/quartz/KRenderingDeviceQuartz.h>
  -#include <kcanvas/device/quartz/QuartzSupport.h>
  +#include "KWQRenderTreeDebug.h"
   #endif
  +
  +#include "SVGRenderStyle.h"
   #include <ksvg2/svg/SVGStyledElementImpl.h>
   
   #include <kdom/DOMString.h>
   
   #include <qtextstream.h>
   
  +using namespace KSVG;
  +
   /** class + iomanip to help streaming list separators, i.e. ", " in string "a, b, c, d"
    * Can be used in cases where you don't know which item in the list is the first
    * one to be printed, but still want to avoid strings like ", b, c", works like 
  @@ -87,14 +91,14 @@
       return ts << "at (" << r.x() << "," << r.y() << ") size " << r.width() << "x" << r.height();
   }
   
  -QTextStream &operator<<(QTextStream &ts, const KCanvasMatrix &m)
  +QTextStream &operator<<(QTextStream &ts, const QMatrix &m)
   {
  -    if (m.qmatrix().isIdentity())
  +    if (m.isIdentity())
           ts << "identity";
       else 
       {
  -        ts << "{m=((" << m.a() << "," << m.b() << ")(" << m.c() << "," << m.d() << "))";
  -        ts << " t=(" << m.e() << "," << m.f() << ")}";
  +        ts << "{m=((" << m.m11() << "," << m.m12() << ")(" << m.m21() << "," << m.m22() << "))";
  +        ts << " t=(" << m.dx() << "," << m.dy() << ")}";
       }
       return ts;
   }
  @@ -203,124 +207,103 @@
       return ts;
   }
   
  -static QTextStream &operator<<(QTextStream &ts, const KCanvasFilter *f)
  +#define DIFFERS_FROM_PARENT(path) (!parentStyle || (parentStyle->path != childStyle->path))
  +// avoids testing path if pred is false. This is used with tests that have side-effects
  +// for the parent object
  +#define DIFFERS_FROM_PARENT_AVOID_TEST_IF_FALSE(pred, path) (!parentStyle || ((!parentStyle->pred) || (parentStyle->path != childStyle->path)))
  +
  +static void writeStyle(QTextStream &ts, const khtml::RenderObject &object)
   {
  -    if (!f->idInRegistry().isEmpty())
  -        ts << "\"" << f->idInRegistry() << "\"";
  -    else
  -        ts << "{" << *f << "}";
  -    return ts;
  +    khtml::RenderStyle *style = object.style();
  +    SVGRenderStyle *svgStyle = style->svgStyle();
  +    
  +    if (!object.localTransform().isIdentity())
  +        ts << " [transform=" << object.localTransform() << "]";
  +    if (svgStyle->imageRendering() != SVGRenderStyle::initialImageRendering())
  +        ts << " [image rendering=" << svgStyle->imageRendering() << "]";
  +    if (style->opacity() != khtml::RenderStyle::initialOpacity())
  +        ts << " [opacity=" << style->opacity() << "]";
  +    if (object.isRenderPath()) {
  +        const RenderPath &path = static_cast<const RenderPath &>(object);
  +        KCanvasRenderingStyle *canvasStyle = path.canvasStyle();
  +        if (canvasStyle->isStroked())
  +            ts << " [stroke=" << canvasStyle->strokePainter() << "]";
  +        if (canvasStyle->isFilled())
  +            ts << " [fill=" << canvasStyle->fillPainter() << "]";
  +    }
  +    if (!svgStyle->clipPath().isEmpty())
  +        ts << " [clip path=\"" << svgStyle->clipPath() << "\"]";
  +    if (!svgStyle->startMarker().isEmpty())
  +        ts << " [start marker=" << svgStyle->startMarker() << "]";
  +    if (!svgStyle->midMarker().isEmpty())
  +        ts << " [middle marker=" << svgStyle->midMarker() << "]";
  +    if (!svgStyle->endMarker().isEmpty())
  +        ts << " [end marker=" << svgStyle->endMarker() << "]";
  +    if (!svgStyle->filter().isEmpty())
  +        ts << " [filter=" << svgStyle->filter() << "]";
   }
  +#undef DIFFERS_FROM_PARENT
  +#undef DIFFERS_FROM_PARENT_AVOID_TEST_IF_FALSE
   
  -static QTextStream &operator<<(QTextStream &ts, const KCanvasMarker *f)
  +static QTextStream &operator<<(QTextStream &ts, const RenderPath &o)
   {
  -    if (!f->idInRegistry().isEmpty())
  -        ts << "\"" << f->idInRegistry() << "\"";
  -    else
  -        ts << "{" << *f << "}";
  +    ts << " " << o.bbox();
  +    
  +    writeStyle(ts, o);
  +    
  +    ts << " [data=\"" << o.canvas()->renderingDevice()->stringForPath(o.path()) << "\"]";
  +    
       return ts;
   }
   
  -#define DIFFERS_FROM_PARENT(path) (o.parent() && (o.parent()->path != o.path))
  -// avoids testing path if pred is false. This is used with tests that have side-effects
  -// for the parent object
  -#define DIFFERS_FROM_PARENT_AVOID_TEST_IF_FALSE(pred, path) (o.parent() && ((!o.parent()->pred) || (o.parent()->path != o.path)))
  -
  -static QTextStream &operator<<(QTextStream &ts, const KCanvasItem &o)
  +static QTextStream &operator<<(QTextStream &ts, const KCanvasContainer &o)
   {
       ts << " " << o.bbox();
       
  -    if (DIFFERS_FROM_PARENT(style()->visible()) && !o.style()->visible())
  -        ts << " [HIDDEN]";
  -    if (DIFFERS_FROM_PARENT(style()->objectMatrix()))
  -        ts << " [transform=" << o.style()->objectMatrix() << "]";
  -    if (DIFFERS_FROM_PARENT(style()->colorInterpolation()))
  -        ts << " [color interpolation=" << o.style()->colorInterpolation() << "]";
  -    if (DIFFERS_FROM_PARENT(style()->imageRendering()))
  -        ts << " [image rendering=" << o.style()->imageRendering() << "]";
  -    if (DIFFERS_FROM_PARENT(style()->opacity()))
  -        ts << " [opacity=" << o.style()->opacity() << "]";
  -    if (o.style()->isStroked() 
  -        && DIFFERS_FROM_PARENT_AVOID_TEST_IF_FALSE(style()->isStroked(), style()->strokePainter()))
  -        ts << " [stroke=" << o.style()->strokePainter() << "]";
  -    if (o.style()->isFilled() 
  -        && DIFFERS_FROM_PARENT_AVOID_TEST_IF_FALSE(style()->isFilled(), style()->fillPainter()))
  -        ts << " [fill=" << o.style()->fillPainter() << "]";
  -    if (!o.style()->clipPaths().isEmpty())
  -        ts << " [clip paths=\"" << o.style()->clipPaths().join(", ") << "\"]";
  -    if (o.style()->hasMarkers()) {
  -        if (o.style()->startMarker())
  -            ts << " [start marker=" << o.style()->startMarker() << "]";
  -        if (o.style()->midMarker())
  -            ts << " [middle marker=" << o.style()->midMarker() << "]";
  -        if (o.style()->endMarker())
  -            ts << " [end marker=" << o.style()->endMarker() << "]";
  -    }
  -    if (DIFFERS_FROM_PARENT(style()->filter()) && o.style()->filter())
  -        ts << " [filter=" << o.style()->filter() << "]";
  -
  -#ifdef APPLE_CHANGES
  -    // Print the actual path data
  -    if (o.path()) {
  -        CGMutablePathRef cgPath = static_cast<KCanvasQuartzPathData *>(o.path())->path;
  -        CFStringRef pathString = CFStringFromCGPath(cgPath);
  -        ts << " [data=\"" << QString::fromCFString(pathString) << "\"]";
  -        CFRelease(pathString);
  -    }
  -#endif    
  +    writeStyle(ts, o);
  +    
       return ts;
   }
  -#undef DIFFERS_FROM_PARENT
  -#undef DIFFERS_FROM_PARENT_AVOID_TEST_IF_FALSE
   
   static QString getTagName(void *node)
   {
       KSVG::SVGStyledElementImpl *elem = static_cast<KSVG::SVGStyledElementImpl *>(node);
       if (elem)
  -        return KDOM::DOMString(elem->nodeName()).string();
  +        return KDOM::DOMString(elem->nodeName()).qstring();
       return QString();
   }
   
  -void write(QTextStream &ts, KCanvasItem *item, int indent = 0)
  +void write(QTextStream &ts, const KCanvasContainer &container, int indent)
   {
  -    if (item)
  -    {
  -        writeIndent(ts, indent);
  -        if(item->isContainer())
  -            ts << "KCanvasContainer";
  -        else
  -            ts << "KCanvasItem";
  -        
  -        if (item->userData()) {
  -            QString tagName = getTagName(item->userData());
  -            if (!tagName.isEmpty()) {
  -                ts << " {" << tagName << "}";
  -            }
  -        }
  -        
  -        ts << *item << endl;
  -        
  -        if(item->isContainer()) {
  -            KCanvasContainer *parent = static_cast<KCanvasContainer *>(item);
  -            for (KCanvasItem *child = parent->first(); child != NULL; child = child->next())
  -                write(ts, child, indent + 1);
  -        }
  +    writeIndent(ts, indent);
  +    ts << container.renderName();
  +    
  +    if (container.element()) {
  +        QString tagName = getTagName(container.element());
  +        if (!tagName.isEmpty())
  +            ts << " {" << tagName << "}";
       }
  +    
  +    ts << container << endl;
  +    
  +    for (khtml::RenderObject *child = container.firstChild(); child != NULL; child = child->nextSibling())
  +        write(ts, *child, indent + 1);
   }
   
  -QString externalRepresentation(KCanvasItem *item)
  +void write(QTextStream &ts, const RenderPath &path, int indent)
   {
  -    QString s;
  -    {
  -        QTextStream ts(&s);
  -        ts.precision(2);
  -        ts << *(item->canvas()->registry());
  -        write(ts, item);
  +    writeIndent(ts, indent);
  +    ts << path.renderName();
  +    
  +    if (path.element()) {
  +        QString tagName = getTagName(path.element());
  +        if (!tagName.isEmpty())
  +            ts << " {" << tagName << "}";
       }
  -    return s;
  +    
  +    ts << path << endl;
   }
   
  -
   QTextStream &operator<<(QTextStream &ts, const QStringList &l)
   {
       ts << "[";
  
  
  
  1.4       +7 -4      SVGSupport/kcanvas/KCanvasTreeDebug.h
  
  Index: KCanvasTreeDebug.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasTreeDebug.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- KCanvasTreeDebug.h	2 Sep 2005 10:02:56 -0000	1.3
  +++ KCanvasTreeDebug.h	21 Nov 2005 08:29:11 -0000	1.4
  @@ -27,7 +27,7 @@
   #include <qtextstream.h>
   #include <q3valuelist.h>
   
  -class KCanvasMatrix;
  +class QMatrix;
   class QRect;
   class QPoint;
   class QColor;
  @@ -35,12 +35,15 @@
   class KCClipData;
   class KCPathData;
   
  -class KCanvasItem;
  +class RenderPath;
  +class KCanvasContainer;
   
  -QString externalRepresentation(KCanvasItem *);
  +// functions used by the main KWQRenderTreeDebug code
  +void write(QTextStream &ts, const KCanvasContainer &container, int indent = 0);
  +void write(QTextStream &ts, const RenderPath &path, int indent = 0);
   
   // helper operators defined used in various classes to dump the render tree. 
  -QTextStream &operator<<(QTextStream &ts, const KCanvasMatrix &);
  +QTextStream &operator<<(QTextStream &ts, const QMatrix &);
   QTextStream &operator<<(QTextStream &ts, const QRect &);
   QTextStream &operator<<(QTextStream &ts, const QColor &);
   QTextStream &operator<<(QTextStream &ts, const QPoint &);
  
  
  
  1.5       +6 -9      SVGSupport/kcanvas/KCanvasTypes.h
  
  Index: KCanvasTypes.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/KCanvasTypes.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- KCanvasTypes.h	2 Sep 2005 10:02:56 -0000	1.4
  +++ KCanvasTypes.h	21 Nov 2005 08:29:11 -0000	1.5
  @@ -41,27 +41,24 @@
   #endif
   
   // aka "what to draw"
  -class KCanvas;
  -class KRenderingStyle;
  +namespace KSVG {
  +    class KCanvasRenderingStyle;
  +}
   class KCanvasCommonArgs
   {
   public:
       KCanvasCommonArgs();
       ~KCanvasCommonArgs();
  -    
  -    KCanvas *canvas() const;
  -    void setCanvas(KCanvas *canvas);
   
       KCanvasUserData path() const;
       void setPath(KCanvasUserData path);
   
  -    KRenderingStyle *style() const;
  -    void setStyle(KRenderingStyle *style);
  +    KSVG::KCanvasRenderingStyle *canvasStyle() const;
  +    void setStyle(KSVG::KCanvasRenderingStyle *style);
       
   private:
  -    KCanvas *m_canvas;
       KCanvasUserData m_path;
  -    KRenderingStyle *m_style;
  +    KSVG::KCanvasRenderingStyle *m_style;
   };
   
   
  
  
  
  1.5       +2 -14     SVGSupport/kcanvas/device/KRenderingDevice.cpp
  
  Index: KRenderingDevice.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/KRenderingDevice.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- KRenderingDevice.cpp	5 Oct 2005 05:36:48 -0000	1.4
  +++ KRenderingDevice.cpp	21 Nov 2005 08:29:13 -0000	1.5
  @@ -22,29 +22,17 @@
   
   #include "config.h"
   #include "KRenderingDevice.h"
  -#include "KRenderingDevice.moc"
   
   KCanvasCommonArgs::KCanvasCommonArgs()
   {
       m_path = 0;
       m_style = 0;
  -    m_canvas = 0;
   }
   
   KCanvasCommonArgs::~KCanvasCommonArgs()
   {
   }
   
  -KCanvas *KCanvasCommonArgs::canvas() const
  -{
  -    return m_canvas;
  -}
  -
  -void KCanvasCommonArgs::setCanvas(KCanvas *canvas)
  -{
  -    m_canvas = canvas;
  -}
  -
   KCanvasUserData KCanvasCommonArgs::path() const
   {
       return m_path;
  @@ -55,12 +43,12 @@
       m_path = path;
   }
   
  -KRenderingStyle *KCanvasCommonArgs::style() const
  +KSVG::KCanvasRenderingStyle *KCanvasCommonArgs::canvasStyle() const
   {
       return m_style;
   }
   
  -void KCanvasCommonArgs::setStyle(KRenderingStyle *style)
  +void KCanvasCommonArgs::setStyle(KSVG::KCanvasRenderingStyle *style)
   {
       m_style = style;
   }
  
  
  
  1.5       +8 -5      SVGSupport/kcanvas/device/KRenderingDevice.h
  
  Index: KRenderingDevice.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/KRenderingDevice.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- KRenderingDevice.h	2 Sep 2005 10:02:58 -0000	1.4
  +++ KRenderingDevice.h	21 Nov 2005 08:29:13 -0000	1.5
  @@ -39,8 +39,8 @@
       KRenderingDeviceContext() { }
       virtual ~KRenderingDeviceContext() { }
   
  -    virtual void setWorldMatrix(const KCanvasMatrix &worldMatrix) = 0;
  -    virtual KCanvasMatrix worldMatrix() const = 0;
  +    virtual KCanvasMatrix concatCTM(const KCanvasMatrix &worldMatrix) = 0;
  +    virtual KCanvasMatrix ctm() const = 0;
       
       virtual QRect mapFromVisual(const QRect &rect) = 0;
       virtual QRect mapToVisual(const QRect &rect) = 0;
  @@ -81,17 +81,20 @@
       virtual void lineTo(double x, double y) = 0;
       virtual void curveTo(double x1, double y1, double x2, double y2, double x3, double y3) = 0;
       virtual void closeSubpath() = 0;
  +    
  +    virtual QString stringForPath(KCanvasUserData path) = 0;
   
       // Creation tools
       virtual KCanvasResource *createResource(const KCResourceType &type) const = 0;
       virtual KCanvasFilterEffect *createFilterEffect(const KCFilterEffectType &type) const = 0;
       virtual KRenderingPaintServer *createPaintServer(const KCPaintServerType &type) const = 0;
   
  -    virtual KCanvasItem *createItem(KCanvas *canvas, KRenderingStyle *style, KCanvasUserData path) const = 0;
  -    virtual KCanvasContainer *createContainer(KCanvas *canvas, KRenderingStyle *style) const = 0;
  +    virtual RenderPath *createItem(RenderArena *arena, khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node, KCanvasUserData path) const = 0;
  +    virtual KCanvasContainer *createContainer(RenderArena *arena, khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node) const = 0;
  +
   
   protected: // To be used by from inherited endPath()
  -    friend class KCanvasItem;
  +    friend class RenderPath;
   
       void setCurrentPath(KCanvasUserData path);
   
  
  
  
  1.6       +4 -4      SVGSupport/kcanvas/device/KRenderingPaintServer.h
  
  Index: KRenderingPaintServer.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/KRenderingPaintServer.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- KRenderingPaintServer.h	8 Sep 2005 08:03:13 -0000	1.5
  +++ KRenderingPaintServer.h	21 Nov 2005 08:29:14 -0000	1.6
  @@ -45,7 +45,7 @@
   } KCPaintTargetType;
   
   class QTextStream;
  -class KCanvasItem;
  +class RenderPath;
   class KRenderingDeviceContext;
   class KRenderingPaintServer : public KCanvasResource
   {
  @@ -53,8 +53,8 @@
       KRenderingPaintServer() : KCanvasResource() { m_activeClient = 0; }
       virtual ~KRenderingPaintServer() { }
   
  -    const KCanvasItem *activeClient() const { return m_activeClient;}
  -    void setActiveClient(const KCanvasItem *client) { m_activeClient = client; }
  +    const RenderPath *activeClient() const { return m_activeClient;}
  +    void setActiveClient(const RenderPath *client) { m_activeClient = client; }
   
       QString idInRegistry() const {  return m_registryId; }
       void setIdInRegistry(const QString& newId) { m_registryId = newId; } 
  @@ -66,7 +66,7 @@
   
       virtual QTextStream &externalRepresentation(QTextStream &) const = 0;
   private:
  -    const KCanvasItem *m_activeClient;
  +    const RenderPath *m_activeClient;
       QString m_registryId;
   };
   
  
  
  
  1.8       +1 -1      SVGSupport/kcanvas/device/KRenderingPaintServerGradient.cpp
  
  Index: KRenderingPaintServerGradient.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/KRenderingPaintServerGradient.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- KRenderingPaintServerGradient.cpp	5 Oct 2005 05:36:48 -0000	1.7
  +++ KRenderingPaintServerGradient.cpp	21 Nov 2005 08:29:14 -0000	1.8
  @@ -159,7 +159,7 @@
       if (!boundingBoxMode())
           ts << " [bounding box mode=" << boundingBoxMode() << "]";
       if (!gradientTransform().qmatrix().isIdentity())
  -        ts << " [transform=" << gradientTransform() << "]";
  +        ts << " [transform=" << gradientTransform().qmatrix() << "]";
       
       return ts;
   }
  
  
  
  1.7       +1 -1      SVGSupport/kcanvas/device/KRenderingPaintServerPattern.cpp
  
  Index: KRenderingPaintServerPattern.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/KRenderingPaintServerPattern.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- KRenderingPaintServerPattern.cpp	5 Oct 2005 05:36:49 -0000	1.6
  +++ KRenderingPaintServerPattern.cpp	21 Nov 2005 08:29:14 -0000	1.7
  @@ -148,7 +148,7 @@
       if (!boundingBoxMode())
           ts << " [bounding box mode=" << boundingBoxMode() << "]";        
       if (!patternTransform().qmatrix().isIdentity())
  -        ts << " [pattern transform=" << patternTransform() << "]";
  +        ts << " [pattern transform=" << patternTransform().qmatrix() << "]";
       return ts;
   }
   
  
  
  
  1.4       +4 -3      SVGSupport/kcanvas/device/KRenderingStrokePainter.h
  
  Index: KRenderingStrokePainter.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/KRenderingStrokePainter.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- KRenderingStrokePainter.h	1 Sep 2005 07:32:51 -0000	1.3
  +++ KRenderingStrokePainter.h	21 Nov 2005 08:29:14 -0000	1.4
  @@ -24,10 +24,11 @@
   #define KRenderingStrokePainter_H
   
   #include <kcanvas/KCanvasTypes.h>
  -#include <kcanvas/device/KRenderingStyle.h>
  +#include "KCanvasRenderingStyle.h"
   
  -class KCanvas;
  -class KRenderingStyle;
  +namespace KSVG {
  +    class KCanvasRenderingStyle;
  +}
   class KRenderingPaintServer;
   class KRenderingDeviceContext;
   class KRenderingStrokePainter
  
  
  
  1.4       +1 -1      SVGSupport/kcanvas/device/quartz/KCanvasFilterQuartz.h
  
  Index: KCanvasFilterQuartz.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasFilterQuartz.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- KCanvasFilterQuartz.h	1 Sep 2005 07:32:54 -0000	1.3
  +++ KCanvasFilterQuartz.h	21 Nov 2005 08:29:15 -0000	1.4
  @@ -35,7 +35,7 @@
       virtual ~KCanvasFilterQuartz();
       
       virtual void prepareFilter(KRenderingDeviceContext *context, const QRect &bbox);
  -    virtual void applyFilter(KRenderingDeviceContext *context, const KCanvasCommonArgs &args, const QRect &bbox);
  +    virtual void applyFilter(KRenderingDeviceContext *context, KCanvasMatrix objectMatrix, const QRect &bbox);
       
       // quartz only.
       void prepareFilter(CGContextRef *context, const QRect &bbox);
  
  
  
  1.11      +3 -3      SVGSupport/kcanvas/device/quartz/KCanvasFilterQuartz.mm
  
  Index: KCanvasFilterQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasFilterQuartz.mm,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- KCanvasFilterQuartz.mm	5 Oct 2005 05:36:51 -0000	1.10
  +++ KCanvasFilterQuartz.mm	21 Nov 2005 08:29:15 -0000	1.11
  @@ -26,7 +26,7 @@
   
   #include "config.h"
   #import "KCanvasFilterQuartz.h"
  -#import "KRenderingStyle.h"
  +#import "KCanvasRenderingStyle.h"
   #import "KCanvasMatrix.h"
   #import "KRenderingDeviceQuartz.h"
   #import "QuartzSupport.h"
  @@ -73,7 +73,7 @@
   	quartzContext->setCGContext(filterContext);
   }
   
  -void KCanvasFilterQuartz::applyFilter(KRenderingDeviceContext *renderingContext, const KCanvasCommonArgs &args, const QRect &bbox)
  +void KCanvasFilterQuartz::applyFilter(KRenderingDeviceContext *renderingContext, KCanvasMatrix objectMatrix, const QRect &bbox)
   {
       if (! bbox.isValid())
           return;
  @@ -84,7 +84,7 @@
   	
   	CGContextRef filterContext = quartzContext->cgContext();
   	//NSLog(@"2before: %p stored: %p", filterContext, m_storedCGContext);
  -	applyFilter(&filterContext, bbox, CGAffineTransform(args.style()->objectMatrix().qmatrix()));
  +	applyFilter(&filterContext, bbox, CGAffineTransform(objectMatrix.qmatrix()));
   	//NSLog(@"2after: %p stored: %p", filterContext, m_storedCGContext);
   	quartzContext->setCGContext(filterContext);
   }
  
  
  
  1.3       +9 -5      SVGSupport/kcanvas/device/quartz/KCanvasItemQuartz.h
  
  Index: KCanvasItemQuartz.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasItemQuartz.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- KCanvasItemQuartz.h	1 Sep 2005 07:32:54 -0000	1.2
  +++ KCanvasItemQuartz.h	21 Nov 2005 08:29:15 -0000	1.3
  @@ -24,17 +24,21 @@
    */
   
   
  -#import "KCanvasItem.h"
  +#import "kcanvas/RenderPath.h"
   
  -class KCanvasItemQuartz : public KCanvasItem {
  +class KCanvasItemQuartz : public RenderPath {
   public:
  -    KCanvasItemQuartz(KCanvas *, KRenderingStyle *, KCanvasUserData);
  +    KCanvasItemQuartz(khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node);
       virtual ~KCanvasItemQuartz() { }
       
  -    virtual void draw(const QRect &rect) const;
       virtual QRect bboxPath(bool includeStroke, bool applyTransforms = true) const;
       virtual bool hitsPath(const QPoint &p, bool fill /* false means stroke */) const;
       
  +    virtual bool requiresLayer() { return false; }
  +    virtual void layout() { setNeedsLayout(false); }
  +    virtual void paint(PaintInfo &paintInfo, int parentX, int parentY);
  +    virtual bool nodeAtPoint(NodeInfo& info, int _x, int _y, int _tx, int _ty,
  +                            HitTestAction hitTestAction);
   private:
  -    void drawMarkers() const;
  +    void drawMarkersIfNeeded(const QRect &rect) const;
   };
  
  
  
  1.7       +101 -93   SVGSupport/kcanvas/device/quartz/KCanvasItemQuartz.mm
  
  Index: KCanvasItemQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasItemQuartz.mm,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- KCanvasItemQuartz.mm	5 Oct 2005 05:36:51 -0000	1.6
  +++ KCanvasItemQuartz.mm	21 Nov 2005 08:29:15 -0000	1.7
  @@ -29,111 +29,123 @@
   
   #import <kxmlcore/Assertions.h>
   
  -#import "KRenderingStyle.h"
  -#import "KCanvas.h"
  +#import "kcanvas/KCanvas.h"
  +#import "KCanvasRenderingStyle.h"
   #import "KRenderingFillPainter.h"
   #import "KRenderingStrokePainter.h"
  -#import "KCanvasResources.h"
   #import "KCanvasMatrix.h"
   
   #import "KRenderingDeviceQuartz.h"
   #import "KCanvasFilterQuartz.h"
  +#import "KCanvasResourcesQuartz.h"
   #import "QuartzSupport.h"
   
  +#import "SVGRenderStyle.h"
   
  -KCanvasItemQuartz::KCanvasItemQuartz(KCanvas *canvas, KRenderingStyle *style, KCanvasUserData path) : KCanvasItem(canvas, style, path)
  +
  +KCanvasItemQuartz::KCanvasItemQuartz(khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node) : RenderPath(style, node)
   {
   	
   }
   
  -void KCanvasItemQuartz::drawMarkers() const
  +void KCanvasItemQuartz::drawMarkersIfNeeded(const QRect &rect) const
   {
  -	NSLog(@"*** Marker support not implemented.");
  -	
  -	// find the start verticies...
  -	if(style()->startMarker()) {
  -		style()->startMarker()->draw(0, 0, 0);
  -	}
  -
  -	// find the middle verticies... 
  -	if(style()->midMarker()) {
  -		style()->midMarker()->draw(0, 0, 0);
  -	}
  +    KDOM::DocumentImpl *doc = document();
  +    KSVG::SVGRenderStyle *svgStyle = style()->svgStyle();
   
  -	// find the end verticies...
  -	if(style()->endMarker()) {
  -		style()->endMarker()->draw(0, 0, 0);
  -	}
  +    // find the start verticies...
  +    if(KCanvasMarker *marker = getMarkerById(doc, svgStyle->startMarker().mid(1)))
  +        marker->draw(rect, localTransform(), 0, 0, 0);
  +
  +    // find the middle verticies... 
  +    if(KCanvasMarker *marker = getMarkerById(doc, svgStyle->midMarker().mid(1)))
  +        marker->draw(rect, localTransform(), 0, 0, 0);
  +    
  +    // find the end verticies...
  +    if(KCanvasMarker *marker = getMarkerById(doc, svgStyle->endMarker().mid(1)))
  +        marker->draw(rect, localTransform(), 0, 0, 0);
   }
   
  -
  -void KCanvasItemQuartz::draw(const QRect &rect) const
  +void KCanvasItemQuartz::paint(PaintInfo &paintInfo, int parentX, int parentY)
   {
  -	KCanvasItem::draw(rect); // setup state.
  -	
  -	KRenderingDeviceQuartz *quartzDevice = static_cast<KRenderingDeviceQuartz *>(canvas()->renderingDevice());
  -	KRenderingDeviceContextQuartz *quartzContext = quartzDevice->quartzContext();
  -	CGMutablePathRef cgPath = static_cast<KCanvasQuartzPathData *>(path())->path;
  -	ASSERT(cgPath != 0);
  -	
  -	CGContextRef context = quartzDevice->currentCGContext();
  -	
  -	ASSERT(context != NULL);
  -		
  -	CGContextSaveGState(context);
  -	
  -	applyTransformForStyle(context, style());
  -	
  -	// setup to apply filters
  -	KCanvasFilterQuartz *filter = static_cast<KCanvasFilterQuartz *>(style()->filter());
  -	QRect bboxForFilter;
  -	if (filter) {
  -		// FIXME:: This should be fixed now that it has moved into KCanvasItem::draw()
  -		bboxForFilter = bboxPath(true, false); // FIXME: HACK! 30% of my time spent here!
  -		filter->prepareFilter(quartzContext, bboxForFilter);
  -		context = quartzContext->cgContext();
  -	}
  -	
  -    if (!style()->clipPaths().isEmpty()) 
  -        applyClipPathsForStyle(context, canvas()->registry(), style(), bboxPath(true)); // FIXME: need bbox when clipping.
  -	
  -	CGContextBeginPath(context);
  -	
  -	//CFStringRef string = CFStringFromCGPath(cgPath);
  -	//NSLog(@"renderPath context: %p path: %p (%@) style: %p bbox: %@", context, cgPath, string, style, NSStringFromRect(*(NSRect *)&CGContextGetPathBoundingBox(context)));
  -	//CFRelease(string);
  -	
  -	KCanvasCommonArgs args = commonArgs();
  -	
  -	// Fill and stroke as needed.
  -	if(style()->isFilled()) {
  -		CGContextAddPath(context, cgPath);
  -		style()->fillPainter()->draw(quartzContext, args);
  -	}
  -	if(style()->isStroked()) {
  -		CGContextAddPath(context, cgPath); // path is cleared when filled.
  -		style()->strokePainter()->draw(quartzContext, args);
  -	}
  -
  -	// Draw markers, if needed
  -	if(style()->hasMarkers()) {
  -		drawMarkers();
  -	}
  -	
  -	// actually apply the filter
  -	if (filter) {
  -		filter->applyFilter(quartzContext, args, bboxForFilter);
  -		context = quartzContext->cgContext();
  -	}
  -	
  -	CGContextRestoreGState(context);
  +    if (paintInfo.p->paintingDisabled() || (paintInfo.phase != PaintActionForeground))
  +        return;
  +    
  +    KRenderingDevice *renderingDevice = canvas()->renderingDevice();
  +    KRenderingDeviceContextQuartz *quartzContext = static_cast<KRenderingDeviceContextQuartz *>(paintInfo.p->renderingDeviceContext());
  +    renderingDevice->pushContext(quartzContext);
  +    paintInfo.p->save();
  +    CGContextRef context = paintInfo.p->currentContext();
  +
  +    QRect dirtyRect = paintInfo.r;
  +    
  +    RenderPath::setupForDraw();
  +
  +    CGMutablePathRef cgPath = static_cast<KCanvasQuartzPathData *>(path())->path;
  +    ASSERT(cgPath != 0);
  +
  +    CGAffineTransform transform = CGAffineTransform(localTransform());
  +    CGContextConcatCTM(context, transform);
  +
  +    // setup to apply filters
  +    KCanvasFilter *filter = getFilterById(document(), style()->svgStyle()->filter().mid(1));
  +    QRect bboxForFilter;
  +    if (filter) {
  +        // FIXME:: This should be fixed now that it has moved into RenderPath::draw()
  +        bboxForFilter = bboxPath(true, false); // FIXME: HACK! 30% of my time spent here!
  +        filter->prepareFilter(quartzContext, bboxForFilter);
  +        context = quartzContext->cgContext();
  +    }
  +
  +    QString clipname = style()->svgStyle()->clipPath().mid(1);
  +    KCanvasClipperQuartz *clipper = static_cast<KCanvasClipperQuartz *>(getClipperById(document(), clipname));
  +    if (clipper)
  +        clipper->applyClip(context, bbox(true));
  +
  +    CGContextBeginPath(context);
  +
  +    KCanvasCommonArgs args = commonArgs();
  +
  +    // Fill and stroke as needed.
  +    if(canvasStyle()->isFilled()) {
  +        CGContextAddPath(context, cgPath);
  +        canvasStyle()->fillPainter()->draw(quartzContext, args);
  +    }
  +    if(canvasStyle()->isStroked()) {
  +        CGContextAddPath(context, cgPath); // path is cleared when filled.
  +        canvasStyle()->strokePainter()->draw(quartzContext, args);
  +    }
  +
  +    drawMarkersIfNeeded(dirtyRect);
  +
  +    // actually apply the filter
  +    if (filter) {
  +        filter->applyFilter(quartzContext, localTransform(), bboxForFilter);
  +        context = quartzContext->cgContext();
  +    }
  +    
  +    // restore drawing state
  +    paintInfo.p->restore();
  +    renderingDevice->popContext();
   }
   
  -
  -
   #pragma mark -
   #pragma mark Hit Testing, BBoxes
   
  +bool KCanvasItemQuartz::nodeAtPoint(NodeInfo& info, int _x, int _y, int _tx, int _ty,
  +                            HitTestAction hitTestAction)
  +{
  +    // We only draw in the forground phase, so we only hit-test then.
  +    if (hitTestAction != HitTestForeground)
  +        return false;
  +
  +    if (hitsPath(QPoint(_x, _y), true)) {
  +        setInnerNode(info);
  +        return true;
  +    }
  +    return false;
  +}
  +
   CGContextRef getSharedContext() {
   	static CGContextRef sharedContext = NULL;
   	if (!sharedContext) {
  @@ -164,13 +176,13 @@
   	// the bbox might grow if the path is stroked.
   	// and CGPathGetBoundingBox doesn't support that, so we'll have
   	// to make an alternative call...
  -	if(includeStroke && style()->isStroked()) {
  +	if(includeStroke && canvasStyle()->isStroked()) {
   		CGContextRef sharedContext = getSharedContext();
   		
   		CGContextSaveGState(sharedContext);
   		CGContextBeginPath(sharedContext);
   		CGContextAddPath(sharedContext, cgPath);
  -		applyStrokeStyleToContext(sharedContext, style());
  +		applyStrokeStyleToContext(sharedContext, canvasStyle());
   		CGContextReplacePathWithStrokedPath(sharedContext);
   		
   		bbox = CGContextGetPathBoundingBox(sharedContext);
  @@ -180,14 +192,10 @@
   		// the easy (and efficient) case:
   		bbox = CGPathGetBoundingBox(cgPath);
   	}
  -			
  -//	NSLog(@"Calculated bbox, rect: %@ for path: %@ CTM: %@",
  -//		NSStringFromRect(*(NSRect *)(&bbox)), CFStringFromCGPath(cgPath),
  -//		CFStringFromCGAffineTransform(CGContextGetCTM(context)));
   
   	// apply any local transforms
   	if (applyTransforms) {
  -		CGAffineTransform transform = CGAffineTransform(style()->objectMatrix().qmatrix());
  +		CGAffineTransform transform = CGAffineTransform(localTransform());
   		CGRect tranformedBBox = CGRectApplyAffineTransform(bbox, transform);
   		return QRect(tranformedBBox);
   	}
  @@ -206,18 +214,18 @@
   	CGContextBeginPath(sharedContext);
   	CGContextAddPath(sharedContext, cgPath);
   	
  -	CGAffineTransform transform = CGAffineTransform(style()->objectMatrix().qmatrix());
  +	CGAffineTransform transform = CGAffineTransform(localTransform());
   	/* we transform the hit point locally, instead of translating the shape to the hit point. */
   	CGPoint localHitPoint = CGPointApplyAffineTransform(CGPoint(hitPoint), CGAffineTransformInvert(transform));
   	
  -	if (fill && style()->fillPainter()->paintServer()) {
  -		CGPathDrawingMode drawMode = (style()->fillPainter()->fillRule() == RULE_EVENODD) ? kCGPathEOFill : kCGPathFill;
  +	if (fill && canvasStyle()->fillPainter()->paintServer()) {
  +		CGPathDrawingMode drawMode = (canvasStyle()->fillPainter()->fillRule() == RULE_EVENODD) ? kCGPathEOFill : kCGPathFill;
   		hitSuccess = CGContextPathContainsPoint(sharedContext, localHitPoint, drawMode);
   //		if (!hitSuccess)
   //			NSLog(@"Point: %@ fails to hit path: %@ with bbox: %@",
   //				NSStringFromPoint(NSPoint(hitPoint)), CFStringFromCGPath(cgPath),
   //				NSStringFromRect(*(NSRect *)&CGContextGetPathBoundingBox(sharedContext)));
  -	} else if (!fill && style()->strokePainter()->paintServer()) {
  +	} else if (!fill && canvasStyle()->strokePainter()->paintServer()) {
   		hitSuccess = CGContextPathContainsPoint(sharedContext, localHitPoint, kCGPathStroke);
   	}
   	
  
  
  
  1.4       +21 -3     SVGSupport/kcanvas/device/quartz/KCanvasResourcesQuartz.h
  
  Index: KCanvasResourcesQuartz.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasResourcesQuartz.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- KCanvasResourcesQuartz.h	1 Sep 2005 07:32:54 -0000	1.3
  +++ KCanvasResourcesQuartz.h	21 Nov 2005 08:29:15 -0000	1.4
  @@ -33,10 +33,28 @@
   
   class KCanvasContainerQuartz : public KCanvasContainer {
   public:
  -    KCanvasContainerQuartz(KCanvas *canvas, KRenderingStyle *style);
  +    KCanvasContainerQuartz(KSVG::SVGStyledElementImpl *node) : KCanvasContainer(node) { }
       
  -    // Draw onto the canvas
  -    virtual void draw(const QRect &dirtyRect) const;
  +    virtual bool canHaveChildren() const { return true; }
  +    
  +    virtual bool requiresLayer() { return false; }
  +    virtual void calcMinMaxWidth();
  +    virtual void layout();
  +    virtual void paint(PaintInfo &paintInfo, int parentX, int parentY);
  +    
  +    virtual void setViewport(const QRect &viewport);
  +    virtual QRect viewport() const;
  +
  +    virtual void setViewBox(const QRect &viewBox);
  +    virtual QRect viewBox() const;
  +
  +    virtual void setAlign(KCAlign align);
  +    virtual KCAlign align() const;
  +    
  +private:
  +    QRect m_viewport;
  +    QRect m_viewBox;
  +    KCAlign m_align;
   };
   
   class KCanvasClipperQuartz : public KCanvasClipper {
  
  
  
  1.6       +111 -47   SVGSupport/kcanvas/device/quartz/KCanvasResourcesQuartz.mm
  
  Index: KCanvasResourcesQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KCanvasResourcesQuartz.mm,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- KCanvasResourcesQuartz.mm	5 Oct 2005 05:36:51 -0000	1.5
  +++ KCanvasResourcesQuartz.mm	21 Nov 2005 08:29:15 -0000	1.6
  @@ -27,12 +27,12 @@
   #include "config.h"
   #import "KCanvasResourcesQuartz.h"
   
  +#import "kcanvas/KCanvas.h"
  +#import "SVGRenderStyle.h"
  +#import "KCanvasMatrix.h"
  +
   #import "KRenderingDeviceQuartz.h"
   #import "KCanvasFilterQuartz.h"
  -
  -#import "KRenderingStyle.h" // for style() call
  -#import "KCanvas.h" // for registry()
  -
   #import "QuartzSupport.h"
   
   #import <kxmlcore/Assertions.h>
  @@ -60,61 +60,125 @@
   	return path;
   }
   
  +void KCanvasContainerQuartz::calcMinMaxWidth()
  +{
  +    KHTMLAssert( !minMaxKnown());
  +    m_minWidth = m_maxWidth = 0;
  +    setMinMaxKnown();
  +}
   
  -KCanvasContainerQuartz::KCanvasContainerQuartz(KCanvas *canvas, KRenderingStyle *style) : KCanvasContainer(canvas, style)
  +void KCanvasContainerQuartz::layout()
   {
  -	//NSLog(@"KCanvasContainerQuartz::KCanvasContainerQuartz()");
  +    KHTMLAssert(needsLayout());
  +    KHTMLAssert(minMaxKnown());
  +
  +    QRect oldBounds;
  +    bool checkForRepaint = checkForRepaintDuringLayout();
  +    if (checkForRepaint)
  +        oldBounds = getAbsoluteRepaintRect();
  +
  +    calcWidth();
  +    calcHeight();
  +
  +    if (checkForRepaint)
  +        repaintAfterLayoutIfNeeded(oldBounds, oldBounds);
  +    
  +    setNeedsLayout(false);
   }
   
  -void KCanvasContainerQuartz::draw(const QRect &dirtyRect) const
  +void KCanvasContainerQuartz::paint(PaintInfo &paintInfo, int parentX, int parentY)
   {
  -    // don't draw if there are no children
  -    if (first() == 0)
  +    if (paintInfo.p->paintingDisabled())
           return;
       
  -	KRenderingDeviceQuartz *quartzDevice = static_cast<KRenderingDeviceQuartz *>(canvas()->renderingDevice());
  -	CGContextRef context = quartzDevice->currentCGContext();
  -	ASSERT(context != NULL);
  -	
  -	CGContextSaveGState(context);
  -	
  -	// clip
  -//	NSLog(@"clipping to viewport rect: %@", NSStringFromRect(NSRect(dirtyRect)));
  -//	CGContextAddRect(context,CGRect(dirtyRect));
  -//	CGContextClip(context);
  -	if (! style()->clipPaths().isEmpty())
  -        applyClipPathsForStyle(context, canvas()->registry(), style(), bbox()); // apply any explicit clips
  -	
  -	// handle opacity.
  -	float opacity = style()->opacity();
  -	if (opacity < 1.0f) {
  -		CGContextSetAlpha(context, opacity);
  -		CGContextBeginTransparencyLayer(context,NULL);
  -	}
  +    int absoluteX = parentX + m_x;
  +    int absoluteY = parentY + m_y;
  +        
  +    if (shouldPaintBackgroundOrBorder() && paintInfo.phase != PaintActionOutline) 
  +        paintBoxDecorations(paintInfo, absoluteX, absoluteY);
  +    
  +    if (paintInfo.phase == PaintActionOutline && style()->outlineWidth() && style()->visibility() == khtml::VISIBLE)
  +        paintOutline(paintInfo.p, absoluteX, absoluteY, width(), height(), style());
  +    
  +    if (paintInfo.phase != PaintActionForeground)
  +        return;
   
  -	// setup to apply filters
  -	KCanvasFilterQuartz *filter = static_cast<KCanvasFilterQuartz *>(style()->filter());
  -	if (filter) {
  -		filter->prepareFilter(quartzDevice->currentContext(), bbox());
  -	}
  -	
  -	// do the draw
  -	KCanvasContainer::draw(dirtyRect);
  -	
  -	// actually apply the filter
  -	if (filter) {
  -		filter->applyFilter(quartzDevice->currentContext(), commonArgs(), bbox());
  -	}
  -	
  -	if (opacity < 1.0f)
  -		CGContextEndTransparencyLayer(context);
  -	
  -	CGContextRestoreGState(context);
  +    if (!firstChild())
  +        return;
  +    
  +    KRenderingDevice *renderingDevice = canvas()->renderingDevice();
  +    KRenderingDeviceContextQuartz *quartzContext = static_cast<KRenderingDeviceContextQuartz *>(paintInfo.p->renderingDeviceContext());
  +    renderingDevice->pushContext(quartzContext);
  +    paintInfo.p->save();
  +    
  +    CGContextRef context = paintInfo.p->currentContext();
  +    
  +    if(!localTransform().isIdentity())
  +        CGContextConcatCTM(context, CGAffineTransform(localTransform()));
  +    
  +    if(!viewBox().isNull())
  +        CGContextConcatCTM(context, CGAffineTransform(getAspectRatio(viewBox(), viewport()).qmatrix()));
  +
  +    QRect dirtyRect = paintInfo.r;
  +    
  +    QString clipname = style()->svgStyle()->clipPath().mid(1);
  +    KCanvasClipperQuartz *clipper = static_cast<KCanvasClipperQuartz *>(getClipperById(document(), clipname));
  +    if (clipper)
  +        clipper->applyClip(context, bbox());
  +    
  +    float opacity = style()->opacity();
  +    if (opacity < 1.0f)
  +        paintInfo.p->beginTransparencyLayer(opacity);
  +
  +    KCanvasFilter *filter = getFilterById(document(), style()->svgStyle()->filter().mid(1));
  +    if (filter)
  +        filter->prepareFilter(renderingDevice->currentContext(), bbox());
  +    
  +    RenderContainer::paint(paintInfo, parentX, parentY);
  +    
  +    if (filter)
  +        filter->applyFilter(renderingDevice->currentContext(), localTransform(), bbox()); // FIXME, I'm not sure if this should be "localTransform"
  +    
  +    if (opacity < 1.0f)
  +        paintInfo.p->endTransparencyLayer();
  +    
  +    // restore drawing state
  +    paintInfo.p->restore();
  +    renderingDevice->popContext();
  +}
  +
  +void KCanvasContainerQuartz::setViewport(const QRect &viewport)
  +{
  +    m_viewport = viewport;
  +}
  +
  +QRect KCanvasContainerQuartz::viewport() const
  +{
  +   return m_viewport;
  +}
  +
  +void KCanvasContainerQuartz::setViewBox(const QRect &viewBox)
  +{
  +    m_viewBox = viewBox;
  +}
  +
  +QRect KCanvasContainerQuartz::viewBox() const
  +{
  +    return m_viewBox;
  +}
  +
  +void KCanvasContainerQuartz::setAlign(KCAlign align)
  +{
  +    m_align = align;
  +}
  +
  +KCAlign KCanvasContainerQuartz::align() const
  +{
  +    return m_align;
   }
   
   void KCanvasClipperQuartz::applyClip(CGContextRef context, const QRect &bbox) const
   {
  -	//NSLog(@"applyClip to context %p with data: %p this: %i", context, &m_clipData, this);
   	// FIXME: until the path representation is fixed in
   	// KCanvas, we have to convert a KCPathDataList to a CGPath
   	
  
  
  
  1.5       +8 -7      SVGSupport/kcanvas/device/quartz/KRenderingDeviceQuartz.h
  
  Index: KRenderingDeviceQuartz.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KRenderingDeviceQuartz.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- KRenderingDeviceQuartz.h	1 Sep 2005 07:32:55 -0000	1.4
  +++ KRenderingDeviceQuartz.h	21 Nov 2005 08:29:15 -0000	1.5
  @@ -37,8 +37,8 @@
   {
   public:
       KRenderingDeviceContextQuartz() : m_cgContext(0) { }
  -    virtual void setWorldMatrix(const KCanvasMatrix &worldMatrix);
  -    virtual KCanvasMatrix worldMatrix() const;
  +    virtual KCanvasMatrix concatCTM(const KCanvasMatrix &worldMatrix);
  +    virtual KCanvasMatrix ctm() const;
       
       virtual QRect mapFromVisual(const QRect &rect);
       virtual QRect mapToVisual(const QRect &rect);
  @@ -75,6 +75,8 @@
       virtual void closeSubpath();
       
       KCanvasUserData pathForRect(const QRect &) const;
  +    
  +    virtual QString stringForPath(KCanvasUserData path);
   
       // Resource creation
       virtual KCanvasResource *createResource(const KCResourceType &type) const;
  @@ -82,15 +84,14 @@
       virtual KCanvasFilterEffect *createFilterEffect(const KCFilterEffectType &type) const;
       
       // item creation
  -    virtual KCanvasItem *createItem(KCanvas *canvas, KRenderingStyle *style, KCanvasUserData path) const;
  -    virtual KCanvasContainer *createContainer(KCanvas *canvas, KRenderingStyle *style) const;
  +    virtual RenderPath *createItem(RenderArena *arena, khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node, KCanvasUserData path) const;
  +    virtual KCanvasContainer *createContainer(RenderArena *arena, khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node) const;
   
       // filters (mostly debugging)
       static bool filtersEnabled();
       static void setFiltersEnabled(bool enabled);
  -        static bool KRenderingDeviceQuartz::hardwareRenderingEnabled();
  -        static void KRenderingDeviceQuartz::setHardwareRenderingEnabled(bool enabled);
  -            
  +    static bool KRenderingDeviceQuartz::hardwareRenderingEnabled();
  +    static void KRenderingDeviceQuartz::setHardwareRenderingEnabled(bool enabled);
   };
   
   // Wraps NSBezierPaths for c++ consumption
  
  
  
  1.5       +29 -13    SVGSupport/kcanvas/device/quartz/KRenderingDeviceQuartz.mm
  
  Index: KRenderingDeviceQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KRenderingDeviceQuartz.mm,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- KRenderingDeviceQuartz.mm	5 Oct 2005 05:36:52 -0000	1.4
  +++ KRenderingDeviceQuartz.mm	21 Nov 2005 08:29:15 -0000	1.5
  @@ -31,8 +31,7 @@
   #import "KRenderingPaintServerQuartz.h"
   #import "QuartzSupport.h"
   
  -#import "KCanvas.h"
  -#import "KCanvasRegistry.h"
  +#import "kcanvas/KCanvas.h"
   #import "KCanvasMatrix.h"
   #import "KCanvasItemQuartz.h"
   #import "KRenderingFillPainter.h"
  @@ -52,18 +51,21 @@
   	CGPathRelease(path);
   }
   
  -
  -void KRenderingDeviceContextQuartz::setWorldMatrix(const KCanvasMatrix &worldMatrix)
  +KCanvasMatrix KRenderingDeviceContextQuartz::concatCTM(const KCanvasMatrix &worldMatrix)
   {
  -	NSLog(@"setWorldMatrix ignored for Quartz");
  +    KCanvasMatrix ret = ctm();
  +    CGAffineTransform wMatrix = CGAffineTransformMake(worldMatrix.a(), worldMatrix.b(), worldMatrix.c(),
  +                                                     worldMatrix.d(), worldMatrix.e(), worldMatrix.f());
  +    CGContextConcatCTM(m_cgContext, wMatrix);
  +    return ret;
   }
   
  -KCanvasMatrix KRenderingDeviceContextQuartz::worldMatrix() const
  +KCanvasMatrix KRenderingDeviceContextQuartz::ctm() const
   {
  -	NSLog(@"worldMatrix ignored for Quartz");
  -	return KCanvasMatrix();
  +    CGAffineTransform contextCTM = CGContextGetCTM(m_cgContext);
  +    return KCanvasMatrix(contextCTM.a, contextCTM.b, contextCTM.c, contextCTM.d, contextCTM.tx, contextCTM.ty);
   }
  -	
  +
   QRect KRenderingDeviceContextQuartz::mapFromVisual(const QRect &rect)
   {
   	NSLog(@"mapFromVisual not yet for Quartz");
  @@ -198,6 +200,18 @@
   	return data;
   }
   
  +QString KRenderingDeviceQuartz::stringForPath(KCanvasUserData path)
  +{
  +    QString result;
  +    if (path) {
  +        CGMutablePathRef cgPath = static_cast<KCanvasQuartzPathData *>(path)->path;
  +        CFStringRef pathString = CFStringFromCGPath(cgPath);
  +        result = QString::fromCFString(pathString);
  +        CFRelease(pathString);
  +    }
  +    return result;
  +}
  +
   #pragma mark -
   #pragma mark Resource Creation
   
  @@ -216,14 +230,16 @@
   	return newServer;
   }
    
  -KCanvasContainer *KRenderingDeviceQuartz::createContainer(KCanvas *canvas, KRenderingStyle *style) const
  +KCanvasContainer *KRenderingDeviceQuartz::createContainer(RenderArena *arena, khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node) const
   {
  -	return new KCanvasContainerQuartz(canvas, style);
  +    return new (arena) KCanvasContainerQuartz(node);
   }
   
  -KCanvasItem *KRenderingDeviceQuartz::createItem(KCanvas *canvas, KRenderingStyle *style, KCanvasUserData path) const
  +RenderPath *KRenderingDeviceQuartz::createItem(RenderArena *arena, khtml::RenderStyle *style, KSVG::SVGStyledElementImpl *node, KCanvasUserData path) const
   {
  -	return new KCanvasItemQuartz(canvas, style, path);
  +    RenderPath *item = new (arena) KCanvasItemQuartz(style, node);
  +    item->changePath(path);
  +    return item;
   }
   
   KCanvasResource *KRenderingDeviceQuartz::createResource(const KCResourceType &type) const
  
  
  
  1.8       +10 -10    SVGSupport/kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm
  
  Index: KRenderingPaintServerGradientQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KRenderingPaintServerGradientQuartz.mm,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- KRenderingPaintServerGradientQuartz.mm	5 Oct 2005 05:36:52 -0000	1.7
  +++ KRenderingPaintServerGradientQuartz.mm	21 Nov 2005 08:29:15 -0000	1.8
  @@ -28,11 +28,11 @@
   #import "KRenderingPaintServerQuartz.h"
   #import "QuartzSupport.h"
   
  -#import "KRenderingStyle.h"
  +#import "kcanvas/KCanvas.h"
  +#import "KCanvasRenderingStyle.h"
   #import "KRenderingPaintServer.h"
   #import "KRenderingFillPainter.h"
   #import "KRenderingStrokePainter.h"
  -#import "KCanvas.h"
   #import "KCanvasMatrix.h"
   #import "KRenderingDeviceQuartz.h"
   
  @@ -40,7 +40,7 @@
   
   
   // Maybe this should be in a base class instead...
  -static void drawShadingWithStyle(const KRenderingPaintServerGradient *server, CGShadingRef shading, KRenderingStyle *style, KCPaintTargetType type)
  +static void drawShadingWithStyle(const KRenderingPaintServerGradient *server, CGShadingRef shading, KSVG::KCanvasRenderingStyle *canvasStyle, KCPaintTargetType type)
   {
       KRenderingDeviceQuartz *quartzDevice = static_cast<KRenderingDeviceQuartz *>(server->activeClient()->canvas()->renderingDevice());
       CGContextRef context = quartzDevice->currentCGContext();
  @@ -65,11 +65,11 @@
       //NSLog(@"localTransform: %@\ncurrent: %@", CFStringFromCGAffineTransform(transform), CFStringFromCGAffineTransform(CGContextGetCTM(context)));
       CGContextConcatCTM(context, gradientTransform);
       
  -    applyStyleToContext(context,style); // applies opacity.
  +    CGContextSetAlpha(context, canvasStyle->renderStyle()->opacity());
       
  -    if ( (type & APPLY_TO_FILL) && style->isFilled() ) {
  +    if ( (type & APPLY_TO_FILL) && canvasStyle->isFilled() ) {
           CGContextSaveGState(context);
  -        if (style->fillPainter()->fillRule() == RULE_EVENODD) {
  +        if (canvasStyle->fillPainter()->fillRule() == RULE_EVENODD) {
               CGContextEOClip(context);
           } else {
               CGContextClip(context);
  @@ -78,9 +78,9 @@
           CGContextRestoreGState(context);
       }
       
  -    if ( (type & APPLY_TO_STROKE) && style->isStroked() ) {
  +    if ( (type & APPLY_TO_STROKE) && canvasStyle->isStroked() ) {
           CGContextSaveGState(context);
  -        applyStrokeStyleToContext(context, style); // FIXME: this seems like the wrong place for this.
  +        applyStrokeStyleToContext(context, canvasStyle); // FIXME: this seems like the wrong place for this.
           CGContextReplacePathWithStrokedPath(context);
           CGContextClip(context);
           CGContextDrawShading(context, shading);
  @@ -298,7 +298,7 @@
       if (!m_shadingCache)
           const_cast<KRenderingPaintServerLinearGradientQuartz *>(this)->updateQuartzGradientCache(this);
       
  -    drawShadingWithStyle(this, m_shadingCache, args.style(), type);
  +    drawShadingWithStyle(this, m_shadingCache, args.canvasStyle(), type);
   }
   
   void KRenderingPaintServerRadialGradientQuartz::draw(KRenderingDeviceContext *renderingContext, const KCanvasCommonArgs &args, KCPaintTargetType type) const
  @@ -311,5 +311,5 @@
       if (!m_shadingCache)
           const_cast<KRenderingPaintServerRadialGradientQuartz *>(this)->updateQuartzGradientCache(this);
       
  -    drawShadingWithStyle(this, m_shadingCache, args.style(), type);
  +    drawShadingWithStyle(this, m_shadingCache, args.canvasStyle(), type);
   }
  \ No newline at end of file
  
  
  
  1.8       +57 -59    SVGSupport/kcanvas/device/quartz/KRenderingPaintServerQuartz.mm
  
  Index: KRenderingPaintServerQuartz.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/KRenderingPaintServerQuartz.mm,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- KRenderingPaintServerQuartz.mm	24 Oct 2005 06:55:20 -0000	1.7
  +++ KRenderingPaintServerQuartz.mm	21 Nov 2005 08:29:15 -0000	1.8
  @@ -30,11 +30,10 @@
   #import "KCanvasResourcesQuartz.h"
   #import "KRenderingDeviceQuartz.h"
   
  -#import "KRenderingStyle.h"
  +#import "KCanvasRenderingStyle.h"
   #import "KRenderingPaintServer.h"
   #import "KRenderingFillPainter.h"
   #import "KRenderingStrokePainter.h"
  -#import "KCanvas.h"
   #import "KCanvasMatrix.h"
   #import "KRenderingDevice.h"
   
  @@ -44,31 +43,31 @@
   {
   	KRenderingDeviceContextQuartz *quartzContext = static_cast<KRenderingDeviceContextQuartz *>(renderingContext);
   	CGContextRef context = quartzContext->cgContext();
  -	KRenderingStyle *style = args.style();
  +	KSVG::KCanvasRenderingStyle *canvasStyle = args.canvasStyle();
   	
  -	applyStyleToContext(context, style);
  +        CGContextSetAlpha(context, canvasStyle->renderStyle()->opacity());
   		
  -	if ( (type & APPLY_TO_FILL) && style->isFilled() ) {
  +	if ( (type & APPLY_TO_FILL) && canvasStyle->isFilled() ) {
               CGColorRef colorCG = cgColor(color());
  -		CGColorRef withAlpha = CGColorCreateCopyWithAlpha(colorCG, style->fillPainter()->opacity());
  +		CGColorRef withAlpha = CGColorCreateCopyWithAlpha(colorCG, canvasStyle->fillPainter()->opacity());
   		CGContextSetFillColorWithColor(context, withAlpha);
   		CGColorRelease(colorCG);
   		CGColorRelease(withAlpha);
  -		if (style->fillPainter()->fillRule() == RULE_EVENODD) {
  +		if (canvasStyle->fillPainter()->fillRule() == RULE_EVENODD) {
   			CGContextEOFillPath(context);
   		} else {
   			CGContextFillPath(context);
   		}
   	}
   	
  -	if ( (type & APPLY_TO_STROKE) && style->isStroked() ) {
  +	if ( (type & APPLY_TO_STROKE) && canvasStyle->isStroked() ) {
   		CGColorRef colorCG = cgColor(color());
  -		CGColorRef withAlpha = CGColorCreateCopyWithAlpha(colorCG, style->strokePainter()->opacity());		
  +		CGColorRef withAlpha = CGColorCreateCopyWithAlpha(colorCG, canvasStyle->strokePainter()->opacity());		
   		CGContextSetStrokeColorWithColor(context, withAlpha);
   		CGColorRelease(colorCG);
   		CGColorRelease(withAlpha);
   		
  -		applyStrokeStyleToContext(context, style);
  +		applyStrokeStyleToContext(context, canvasStyle);
   		
   		CGContextStrokePath(context);
   	}
  @@ -87,9 +86,9 @@
       if(listener()) // this seems like bad design to me, should be in a common baseclass. -- ecs 8/6/05
           listener()->resourceNotification();
   
  -	KRenderingDeviceContextQuartz *quartzContext = static_cast<KRenderingDeviceContextQuartz *>(renderingContext);
  -	CGContextRef context = quartzContext->cgContext();
  -	KRenderingStyle *style = args.style();
  +    KRenderingDeviceContextQuartz *quartzContext = static_cast<KRenderingDeviceContextQuartz *>(renderingContext);
  +    CGContextRef context = quartzContext->cgContext();
  +    KSVG::KCanvasRenderingStyle *canvasStyle = args.canvasStyle();
   
       KCanvasImage *cell = tile();
       if (!cell) {
  @@ -97,56 +96,55 @@
           return;
       }
   	
  -	CGContextSaveGState(context);
  +    CGContextSaveGState(context);
  +
  +    CGSize cellSize = CGSize(cell->size());
  +
  +    float alpha = 1; // canvasStyle->opacity(); //which?
  +            
  +    // Patterns don't seem to resepect the CTM unless we make them...
  +    CGAffineTransform ctm = CGContextGetCTM(context);
  +    CGAffineTransform transform = CGAffineTransform(patternTransform().qmatrix());
  +    transform = CGAffineTransformConcat(transform, ctm);
   
  -	CGSize cellSize = CGSize(cell->size());
  -	
  -	float alpha = 1; // style->opacity(); //which?
  -		
  -	// Patterns don't seem to resepect the CTM unless we make them...
  -	CGAffineTransform ctm = CGContextGetCTM(context);
  -	CGAffineTransform transform = CGAffineTransform(patternTransform().qmatrix());
  -	transform = CGAffineTransformConcat(transform, ctm);
  -    
       CGSize phase = CGSizeMake(x(), y());
       CGContextSetPatternPhase(context, phase);
   		
  -	CGPatternCallbacks callbacks = {0, patternCallback, NULL};
  -	CGPatternRef pattern = CGPatternCreate (
  -	   tile(),
  -	   CGRectMake(0,0,cellSize.width,cellSize.height),
  -	   transform,
  -	   width(), //cellSize.width,
  -	   height(), //cellSize.height,
  -	   kCGPatternTilingConstantSpacing,  // FIXME: should ask CG guys.
  -	   true, // has color
  -	   &callbacks );
  -	   
  -	applyStyleToContext(context, style); // or do I set the alpha above?
  -	
  -	CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);
  -	
  -	if ( (type & APPLY_TO_FILL) && style->isFilled() ) {
  -		CGContextSetFillColorSpace(context, patternSpace);
  -		CGContextSetFillPattern(context, pattern, &alpha);
  -		if (style->fillPainter()->fillRule() == RULE_EVENODD) {
  -			CGContextEOFillPath(context);
  -		} else {
  -			CGContextFillPath(context);
  -		}
  -	}
  -	
  -	if ( (type & APPLY_TO_STROKE) && style->isStroked() ) {
  -		CGContextSetStrokeColorSpace(context, patternSpace);
  -		CGContextSetStrokePattern(context, pattern, &alpha);		
  -		applyStrokeStyleToContext(context, style);
  -		CGContextStrokePath(context);
  -	}
  -	
  -	CGPatternRelease(pattern);
  -	CGColorSpaceRelease (patternSpace);
  -	
  -	CGContextRestoreGState(context);
  +    CGPatternCallbacks callbacks = {0, patternCallback, NULL};
  +    CGPatternRef pattern = CGPatternCreate (
  +        tile(),
  +        CGRectMake(0,0,cellSize.width,cellSize.height),
  +        transform,
  +        width(), //cellSize.width,
  +        height(), //cellSize.height,
  +        kCGPatternTilingConstantSpacing,  // FIXME: should ask CG guys.
  +        true, // has color
  +        &callbacks );
  +
  +    CGContextSetAlpha(context, canvasStyle->renderStyle()->opacity()); // or do I set the alpha above?
  +
  +    CGColorSpaceRef patternSpace = CGColorSpaceCreatePattern(NULL);
  +
  +    if ( (type & APPLY_TO_FILL) && canvasStyle->isFilled() ) {
  +        CGContextSetFillColorSpace(context, patternSpace);
  +        CGContextSetFillPattern(context, pattern, &alpha);
  +        if (canvasStyle->fillPainter()->fillRule() == RULE_EVENODD)
  +            CGContextEOFillPath(context);
  +        else
  +            CGContextFillPath(context);
  +    }
  +
  +    if ( (type & APPLY_TO_STROKE) && canvasStyle->isStroked() ) {
  +        CGContextSetStrokeColorSpace(context, patternSpace);
  +        CGContextSetStrokePattern(context, pattern, &alpha);		
  +        applyStrokeStyleToContext(context, canvasStyle);
  +        CGContextStrokePath(context);
  +    }
  +
  +    CGPatternRelease(pattern);
  +    CGColorSpaceRelease (patternSpace);
  +
  +    CGContextRestoreGState(context);
   }
   
   void KRenderingPaintServerImageQuartz::draw(KRenderingDeviceContext *renderingContext, const KCanvasCommonArgs &args, KCPaintTargetType type) const
  
  
  
  1.3       +6 -6      SVGSupport/kcanvas/device/quartz/QuartzSupport.h
  
  Index: QuartzSupport.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/QuartzSupport.h,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- QuartzSupport.h	1 Sep 2005 07:32:55 -0000	1.2
  +++ QuartzSupport.h	21 Nov 2005 08:29:15 -0000	1.3
  @@ -24,19 +24,19 @@
    */
   
   
  -#import "KRenderingStyle.h" // for all the CAP_BUTT contstants, etc.
  -class KCanvasRegistry;
  +#import "KCanvasRenderingStyle.h" // for all the CAP_BUTT contstants, etc.
   class QRect;
   
  +namespace KSVG {
  +    class SVGRenderStyle;
  +}
  +
   CFStringRef CFStringFromCGPath(CGPathRef path);
   CFStringRef CFStringFromCGAffineTransform(CGAffineTransform t);
   CGAffineTransform CGAffineTransformMakeMapBetweenRects(CGRect source, CGRect dest);
   CGPathRef CGPathApplyTransform(CGPathRef path, CGAffineTransform transform);
   
  -void applyStyleToContext(CGContextRef context, KRenderingStyle *style);
  -void applyStrokeStyleToContext(CGContextRef context, KRenderingStyle *style);
  -void applyTransformForStyle(CGContextRef context,  KRenderingStyle *style);
  -void applyClipPathsForStyle(CGContextRef context, KCanvasRegistry *registry, KRenderingStyle *style, const QRect &bbox);
  +void applyStrokeStyleToContext(CGContextRef context, KSVG::KCanvasRenderingStyle *style);
   
   static inline CGLineCap CGLineCapFromKC( KCCapStyle cap) {
       if (cap == CAP_BUTT)
  
  
  
  1.5       +86 -118   SVGSupport/kcanvas/device/quartz/QuartzSupport.mm
  
  Index: QuartzSupport.mm
  ===================================================================
  RCS file: /cvs/root/SVGSupport/kcanvas/device/quartz/QuartzSupport.mm,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- QuartzSupport.mm	5 Oct 2005 05:36:52 -0000	1.4
  +++ QuartzSupport.mm	21 Nov 2005 08:29:16 -0000	1.5
  @@ -27,158 +27,126 @@
   #include "config.h"
   #import "QuartzSupport.h"
   
  -#import "KCanvas.h"
  -#import "KCanvasRegistry.h"
   #import "KCanvasMatrix.h"
   #import "KCanvasResourcesQuartz.h"
   #import "KRenderingFillPainter.h"
   #import "KRenderingStrokePainter.h"
  +#import "kxmlcore/Assertions.h"
   
  +#import "SVGRenderStyle.h"
   
   
   CFStringRef CFStringFromCGAffineTransform(CGAffineTransform t)
   {
  -	return CFStringCreateWithFormat(NULL,NULL,CFSTR("a: %f b: %f c: %f d: %f tx: %f ty: %f"), t.a, t.b, t.c, t.d, t.tx, t.ty);
  +    return CFStringCreateWithFormat(0, 0, CFSTR("a: %f b: %f c: %f d: %f tx: %f ty: %f"), t.a, t.b, t.c, t.d, t.tx, t.ty);
   }
   
   CGAffineTransform CGAffineTransformMakeMapBetweenRects(CGRect source, CGRect dest)
   {
  -	CGAffineTransform transform = CGAffineTransformMakeTranslation(dest.origin.x - source.origin.x, dest.origin.y - source.origin.y);
  -	transform = CGAffineTransformScale(transform,dest.size.width/source.size.width, dest.size.height/source.size.height);
  -	return transform;
  +    CGAffineTransform transform = CGAffineTransformMakeTranslation(dest.origin.x - source.origin.x, dest.origin.y - source.origin.y);
  +    transform = CGAffineTransformScale(transform, dest.size.width/source.size.width, dest.size.height/source.size.height);
  +    return transform;
   }
   
   typedef struct {
  -	CGAffineTransform transform;
  -	CGMutablePathRef resultPath;
  +    CGAffineTransform transform;
  +    CGMutablePathRef resultPath;
   } CGPathTransformCallbackData;
   
   void CGPathTransformCallback(void *info, const CGPathElement *element)
   {
  -	CGPathTransformCallbackData *data = (CGPathTransformCallbackData *)info;
  -	CGAffineTransform transform = data->transform;
  -	CGMutablePathRef resultPath = data->resultPath;
  -	
  -	CGPoint *points = element->points;
  -	
  -	switch (element->type) {
  -	case kCGPathElementMoveToPoint:
  -		CGPathMoveToPoint(resultPath, &transform, points[0].x, points[0].y);
  -		break;
  +    CGPathTransformCallbackData *data = (CGPathTransformCallbackData *)info;
  +    CGAffineTransform transform = data->transform;
  +    CGMutablePathRef resultPath = data->resultPath;
  +
  +    CGPoint *points = element->points;
  +
  +    switch (element->type) {
  +    case kCGPathElementMoveToPoint:
  +        CGPathMoveToPoint(resultPath, &transform, points[0].x, points[0].y);
  +        break;
       case kCGPathElementAddLineToPoint:
  -		CGPathAddLineToPoint(resultPath, &transform, points[0].x, points[0].y);
  -		break;
  +        CGPathAddLineToPoint(resultPath, &transform, points[0].x, points[0].y);
  +        break;
       case kCGPathElementAddQuadCurveToPoint:
  -		CGPathAddQuadCurveToPoint(resultPath, &transform, points[0].x, points[0].y, points[1].x, points[1].y);
  -		break;
  +        CGPathAddQuadCurveToPoint(resultPath, &transform, points[0].x, points[0].y, points[1].x, points[1].y);
  +        break;
       case kCGPathElementAddCurveToPoint:
  -		CGPathAddCurveToPoint(resultPath, &transform, points[0].x, points[0].y, points[1].x, points[1].y, points[2].x, points[2].y);
  +        CGPathAddCurveToPoint(resultPath, &transform, points[0].x, points[0].y, points[1].x, points[1].y, points[2].x, points[2].y);
       case kCGPathElementCloseSubpath:
  -		CGPathCloseSubpath(resultPath);
  -	}
  +        CGPathCloseSubpath(resultPath);
  +    }
   }
   
   // FIXME: HACK this should be replace by a call to
   // CGPathAddPath(<#CGMutablePathRef path1#>,<#const CGAffineTransform * m#>,<#CGPathRef path2#>)
   CGPathRef CGPathApplyTransform(CGPathRef path, CGAffineTransform transform)
   {
  -	CGPathTransformCallbackData data;
  -	data.transform = transform;
  -	data.resultPath = CGPathCreateMutable();
  -	CGPathApply(path, &data, CGPathTransformCallback);
  -	return data.resultPath;
  -}
  -
  -void applyTransformForStyle(CGContextRef context,  KRenderingStyle *style)
  -{
  -	// Update context for object's ctm
  -	CGAffineTransform transform = CGAffineTransform(style->objectMatrix().qmatrix());
  -	//NSLog(@"localTransform: %@\ncurrent: %@", CFStringFromCGAffineTransform(transform), CFStringFromCGAffineTransform(CGContextGetCTM(context)));
  -	CGContextConcatCTM(context, transform);
  -	//NSLog(@"totalTransform: %@", CFStringFromCGAffineTransform(CGContextGetCTM(context)));
  -}
  -
  -void applyClipPathsForStyle(CGContextRef context, KCanvasRegistry *registry, KRenderingStyle *style, const QRect &bbox)
  -{
  -	QStringList clips = style->clipPaths();
  -
  -	for (unsigned int x = 0; x < clips.count(); x++ ) {
  -		QString name = clips[x].mid(1);
  -		KCanvasClipperQuartz *clipper = static_cast<KCanvasClipperQuartz *>(registry->getResourceById(name));
  -		if (clipper) {
  -			clipper->applyClip(context, bbox);
  -		} else {
  -			NSLog(@"*** Can't find clipper: %@", clips[x].getNSString());
  -		}
  -	}
  -}
  -
  -
  -void applyStyleToContext(CGContextRef context, KRenderingStyle *style)
  -{	
  -	CGContextSetAlpha(context, style->opacity());
  +    CGPathTransformCallbackData data;
  +    data.transform = transform;
  +    data.resultPath = CGPathCreateMutable();
  +    CGPathApply(path, &data, CGPathTransformCallback);
  +    return data.resultPath;
  +}
  +
  +void applyStrokeStyleToContext(CGContextRef context, KSVG::KCanvasRenderingStyle *style)
  +{
  +    /* Shouldn't all these be in the stroke painter? */
  +    CGContextSetLineWidth(context, style->strokePainter()->strokeWidth());
  +
  +    KCCapStyle capStyle = style->strokePainter()->strokeCapStyle();
  +    CGContextSetLineCap(context, CGLineCapFromKC(capStyle));
  +
  +    KCJoinStyle joinStyle = style->strokePainter()->strokeJoinStyle();
  +    CGContextSetLineJoin(context, CGLineJoinFromKC(joinStyle));
  +
  +    CGContextSetMiterLimit(context, style->strokePainter()->strokeMiterLimit());
  +
  +    KCDashArray dashes = style->strokePainter()->dashArray();
  +    if (dashes.count()) {
  +        size_t dashCount = dashes.count();
  +        float *lengths = (float *)malloc(dashCount * sizeof(float));
  +        for (unsigned int x = 0; x < dashCount; x++)
  +            lengths[x] = dashes[x];
  +        CGContextSetLineDash(context, style->strokePainter()->dashOffset(), lengths, dashes.count());
  +        free(lengths);
  +    }
  +}
  +
  +void CGPathToCFStringApplierFunction(void *info, const CGPathElement *element)
  +{
  +    CFMutableStringRef string = (CFMutableStringRef)info;
  +    CFStringRef typeString = CFSTR("");
  +    CGPoint *points = element->points;
  +    switch(element->type) {
  +    case kCGPathElementMoveToPoint:
  +        CFStringAppendFormat(string, 0, CFSTR("M%.2f,%.2f"), points[0].x, points[0].y);
  +        break;
  +    case kCGPathElementAddLineToPoint:
  +        CFStringAppendFormat(string, 0, CFSTR("L%.2f,%.2f"), points[0].x, points[0].y);
  +        break;
  +    case kCGPathElementAddQuadCurveToPoint:
  +        CFStringAppendFormat(string, 0, CFSTR("Q%.2f,%.2f,%.2f,%.2f"),
  +                points[0].x, points[0].y, points[1].x, points[1].y);
  +        break;
  +    case kCGPathElementAddCurveToPoint:
  +        CFStringAppendFormat(string, 0, CFSTR("C%.2f,%.2f,%.2f,%.2f,%.2f,%.2f"),
  +                points[0].x, points[0].y, points[1].x, points[1].y,
  +                points[2].x, points[2].y);
  +        break;
  +    case kCGPathElementCloseSubpath:
  +        typeString = CFSTR("X"); break;
  +    }
   }
   
  -void applyStrokeStyleToContext(CGContextRef context, KRenderingStyle *style)
  +CFStringRef CFStringFromCGPath(CGPathRef path)
   {
  -	/* Shouldn't all these be in the stroke painter? */
  -	CGContextSetLineWidth(context,style->strokePainter()->strokeWidth());
  -
  -	KCCapStyle capStyle = style->strokePainter()->strokeCapStyle();
  -	CGContextSetLineCap(context, CGLineCapFromKC(capStyle));
  -
  -	KCJoinStyle joinStyle = style->strokePainter()->strokeJoinStyle();
  -	CGContextSetLineJoin(context, CGLineJoinFromKC(joinStyle));
  -
  -	CGContextSetMiterLimit(context, style->strokePainter()->strokeMiterLimit());
  -
  -	KCDashArray dashes = style->strokePainter()->dashArray();
  -	if (dashes.count()) {
  -		size_t dashCount = dashes.count();
  -		float *lengths = (float *)malloc(dashCount * sizeof(float));
  -		for (unsigned int x = 0; x < dashCount; x++) {
  -			lengths[x] = dashes[x];
  -		}
  -		CGContextSetLineDash(context, style->strokePainter()->dashOffset(), lengths, dashes.count());
  -		free(lengths);
  -	}
  -}
  -
  -
  +    if (!path)
  +        return 0;
   
  +    CFMutableStringRef string = CFStringCreateMutable(NULL, 0);
  +    CGPathApply(path, string, CGPathToCFStringApplierFunction);
   
  -void CGPathToCFStringApplierFunction(void *info, const CGPathElement *element) {
  -
  -	CFMutableStringRef string = (CFMutableStringRef)info;
  -	CFStringRef typeString = CFSTR("");
  -	CGPoint *points = element->points;
  -	switch(element->type) {
  -	case kCGPathElementMoveToPoint:
  -		CFStringAppendFormat(string,NULL,CFSTR("M%.2f,%.2f"), points[0].x, points[0].y);
  -		break;
  -	case kCGPathElementAddLineToPoint:
  -		CFStringAppendFormat(string,NULL,CFSTR("L%.2f,%.2f"), points[0].x, points[0].y);
  -		break;
  -	case kCGPathElementAddQuadCurveToPoint:
  -		CFStringAppendFormat(string,NULL,CFSTR("Q%.2f,%.2f,%.2f,%.2f"),
  -			points[0].x, points[0].y, points[1].x, points[1].y);
  -		break;
  -	case kCGPathElementAddCurveToPoint:
  -		CFStringAppendFormat(string,NULL,CFSTR("C%.2f,%.2f,%.2f,%.2f,%.2f,%.2f"),
  -			points[0].x, points[0].y, points[1].x, points[1].y,
  -			points[2].x, points[2].y);
  -		break;
  -	case kCGPathElementCloseSubpath:
  -		typeString = CFSTR("X"); break;
  -	}
  -}
  -
  -CFStringRef CFStringFromCGPath(CGPathRef path) {
  -	if (!path) return NULL;
  -	
  -	CFMutableStringRef string = CFStringCreateMutable(NULL, 0);
  -	CGPathApply(path, string, CGPathToCFStringApplierFunction);
  -	
  -	return string;
  +    return string;
   }
   
  
  
  
  1.8       +58 -106   SVGSupport/ksvg2/css/KSVGCSSParser.cpp
  
  Index: KSVGCSSParser.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/css/KSVGCSSParser.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- KSVGCSSParser.cpp	5 Oct 2005 05:35:09 -0000	1.7
  +++ KSVGCSSParser.cpp	21 Nov 2005 08:29:27 -0000	1.8
  @@ -20,48 +20,19 @@
       Boston, MA 02111-1307, USA.
   */
   
  -
  -#include "config.h"
  -#include <kdebug.h>
  -#include <kglobal.h>
  -
  -#include <stdlib.h>
  -#include <assert.h>
  -
  -#include <kdom/DOMString.h>
  -#include <kdom/core/DocumentImpl.h>
  -#include <kdom/css/cssvalues.h>
  -#include <kdom/css/CSSValueImpl.h>
  -#include <kdom/css/cssproperties.h>
  -#include <kdom/css/CSSValueListImpl.h>
  -#include <kdom/css/CSSStyleRuleImpl.h>
  -#include <kdom/core/DOMImplementationImpl.h>
  -#include <kdom/css/CSSPrimitiveValueImpl.h>
  -
   #include "ksvg.h"
  -#include "KSVGCSSParser.h"
  -#include <ksvg2/css/cssvalues.h>
  -#include "SVGPaintImpl.h"
  -#include <ksvg2/css/cssproperties.h>
  -#include "SVGCSSStyleDeclarationImpl.h"
  -
  -#include <kdom/core/DOMStringImpl.h>
  -
  -using namespace KDOM;
  -using namespace KSVG;
   
   #include "ksvgcssvalues.c"
   #include "ksvgcssproperties.c"
   
  -SVGCSSParser::SVGCSSParser(bool strictParsing) : CSSParser(strictParsing)
  -{
  -}
  +namespace DOM {
   
  -SVGCSSParser::~SVGCSSParser()
  -{
  -}
  +using namespace KSVG;
   
  -bool SVGCSSParser::parseValue(int propId, bool important, int expected)
  +typedef DOM::Value KDOMCSSValue;
  +typedef DOM::ValueList KDOMCSSValueList;
  +
  +bool CSSParser::parseSVGValue(int propId, bool important, int expected)
   {
       if(!valueList)
           return false;
  @@ -129,9 +100,9 @@
       case SVGCSS_PROP_MASK:
           if(id == CSS_VAL_NONE)
               valid_primitive = true;
  -        else if(value->unit == CSS_URI)
  +        else if(value->unit == CSSPrimitiveValue::CSS_URI)
           {
  -            parsedValue = new CSSPrimitiveValueImpl(m_cdfInterface, domString(value->string), CSS_URI);
  +            parsedValue = new CSSPrimitiveValueImpl(domString(value->string), CSSPrimitiveValue::CSS_URI);
               if(parsedValue)
                   valueList->next();
           }
  @@ -157,8 +128,7 @@
               valid_primitive = true;
           break;
   
  -    case SVGCSS_PROP_OPACITY:          // <opacity-value> | inherit
  -    case SVGCSS_PROP_STROKE_OPACITY:
  +    case SVGCSS_PROP_STROKE_OPACITY:   // <opacity-value> | inherit
       case SVGCSS_PROP_FILL_OPACITY:
       case SVGCSS_PROP_STOP_OPACITY:
       case SVGCSS_PROP_FLOOD_OPACITY:
  @@ -220,12 +190,12 @@
               break;
           }
       case SVGCSS_PROP_GLYPH_ORIENTATION_HORIZONTAL: // <angle> | inherit
  -        if(value->unit == CSS_DEG)
  -            parsedValue = new CSSPrimitiveValueImpl(m_cdfInterface, value->fValue, CSS_DEG);
  -        else if(value->unit == CSS_GRAD)
  -            parsedValue = new CSSPrimitiveValueImpl(m_cdfInterface, value->fValue, CSS_GRAD);
  -        else if(value->unit == CSS_RAD)
  -            parsedValue = new CSSPrimitiveValueImpl(m_cdfInterface, value->fValue, CSS_RAD);
  +        if(value->unit == CSSPrimitiveValue::CSS_DEG)
  +            parsedValue = new CSSPrimitiveValueImpl(value->fValue, CSSPrimitiveValue::CSS_DEG);
  +        else if(value->unit == CSSPrimitiveValue::CSS_GRAD)
  +            parsedValue = new CSSPrimitiveValueImpl(value->fValue, CSSPrimitiveValue::CSS_GRAD);
  +        else if(value->unit == CSSPrimitiveValue::CSS_RAD)
  +            parsedValue = new CSSPrimitiveValueImpl(value->fValue, CSSPrimitiveValue::CSS_RAD);
           break;
   
       case SVGCSS_PROP_FILL:                 // <paint> | inherit
  @@ -235,10 +205,10 @@
                   parsedValue = new SVGPaintImpl(SVG_PAINTTYPE_NONE);
               else if(id == SVGCSS_VAL_CURRENTCOLOR)
                   parsedValue = new SVGPaintImpl(SVG_PAINTTYPE_CURRENTCOLOR);
  -            else if(value->unit == CSS_URI)
  -                parsedValue = new SVGPaintImpl(SVG_PAINTTYPE_URI, domString(value->string));
  +            else if(value->unit == CSSPrimitiveValue::CSS_URI)
  +                parsedValue = new SVGPaintImpl(SVG_PAINTTYPE_URI, domString(value->string).impl());
               else
  -                parsedValue = parsePaint();
  +                parsedValue = parseSVGPaint();
   
               if(parsedValue)
                   valueList->next();
  @@ -248,9 +218,9 @@
       case CSS_PROP_COLOR:                // <color> | inherit
           if((id >= CSS_VAL_AQUA && id <= CSS_VAL_WINDOWTEXT) ||
              (id >= SVGCSS_VAL_ALICEBLUE && id <= SVGCSS_VAL_YELLOWGREEN))
  -            parsedValue = new SVGColorImpl(domString(value->string));
  +            parsedValue = new SVGColorImpl(domString(value->string).impl());
           else
  -            parsedValue = parseColor();
  +            parsedValue = parseSVGColor();
   
           if(parsedValue)
               valueList->next();
  @@ -261,11 +231,11 @@
       case SVGCSS_PROP_LIGHTING_COLOR:
           if((id >= CSS_VAL_AQUA && id <= CSS_VAL_WINDOWTEXT) ||
              (id >= SVGCSS_VAL_ALICEBLUE && id <= SVGCSS_VAL_YELLOWGREEN))
  -            parsedValue = new SVGColorImpl(domString(value->string));
  +            parsedValue = new SVGColorImpl(domString(value->string).impl());
           else if(id == SVGCSS_VAL_CURRENTCOLOR)
               parsedValue = new SVGColorImpl(SVG_COLORTYPE_CURRENTCOLOR);
           else // TODO : svgcolor (iccColor)
  -            parsedValue = parseColor();
  +            parsedValue = parseSVGColor();
   
           if(parsedValue)
               valueList->next();
  @@ -286,7 +256,7 @@
           if(id == CSS_VAL_NONE)
               valid_primitive = true;
           else
  -            parsedValue = parseStrokeDasharray();
  +            parsedValue = parseSVGStrokeDasharray();
   
           break;
   
  @@ -309,19 +279,16 @@
       case SVGCSS_PROP_FILTER:
           if(id == CSS_VAL_NONE)
               valid_primitive = true;
  -        else if(value->unit == CSS_URI)
  +        else if(value->unit == CSSPrimitiveValue::CSS_URI)
           {
  -            parsedValue = new CSSPrimitiveValueImpl(m_cdfInterface, domString(value->string), (UnitTypes) value->unit);
  +            parsedValue = new CSSPrimitiveValueImpl(domString(value->string), (CSSPrimitiveValue::UnitTypes) value->unit);
               if(parsedValue)
                   valueList->next();
           }
           break;
   
       default:
  -// #ifdef CSS_DEBUG
  -//         kdDebug(6080) << "illegal or CSS2 Aural property: " << val << endl;
  -// #endif
  -        return CSSParser::parseValue(propId, important, expected);
  +        return false;
       }
   
       if(valid_primitive)
  @@ -329,19 +296,19 @@
           if(id != 0)
           {
               // qDebug(" new value: id=%d", id);
  -            parsedValue = new CSSPrimitiveValueImpl(m_cdfInterface, id);
  +            parsedValue = new CSSPrimitiveValueImpl(id);
           }
  -        else if(value->unit == CSS_STRING)
  -            parsedValue = new CSSPrimitiveValueImpl(m_cdfInterface, domString(value->string), (UnitTypes) value->unit);
  -        else if(value->unit >= CSS_NUMBER && value->unit <= CSS_KHZ)
  +        else if(value->unit == CSSPrimitiveValue::CSS_STRING)
  +            parsedValue = new CSSPrimitiveValueImpl(domString(value->string), (CSSPrimitiveValue::UnitTypes) value->unit);
  +        else if(value->unit >= CSSPrimitiveValue::CSS_NUMBER && value->unit <= CSSPrimitiveValue::CSS_KHZ)
           {
               // qDebug(" new value: value=%.2f, unit=%d", value->fValue, value->unit);
  -            parsedValue = new CSSPrimitiveValueImpl(m_cdfInterface, value->fValue, (UnitTypes) value->unit);
  +            parsedValue = new CSSPrimitiveValueImpl(value->fValue, (CSSPrimitiveValue::UnitTypes) value->unit);
           }
           else if(value->unit >= KDOMCSSValue::Q_EMS)
           {
               // qDebug(" new quirks value: value=%.2f, unit=%d", value->fValue, value->unit);
  -            parsedValue = new CSSQuirkPrimitiveValueImpl(m_cdfInterface, value->fValue, CSS_EMS);
  +            parsedValue = new CSSQuirkPrimitiveValueImpl(value->fValue, CSSPrimitiveValue::CSS_EMS);
           }
           --expected;
           valueList->next();
  @@ -359,7 +326,7 @@
       return false;
   }
   
  -CSSValueImpl *SVGCSSParser::parseStrokeDasharray()
  +CSSValueImpl *CSSParser::parseSVGStrokeDasharray()
   {
       CSSValueListImpl *ret = new CSSValueListImpl;
       KDOMCSSValue *value = valueList->current();
  @@ -370,14 +337,14 @@
           if(value->id != 0)
           {
               // qDebug(" new value: id=%d", id);
  -            ret->append(new CSSPrimitiveValueImpl(m_cdfInterface, value->id));
  +            ret->append(new CSSPrimitiveValueImpl(value->id));
           }
  -        else if(value->unit == CSS_STRING)
  -            ret->append(new CSSPrimitiveValueImpl(m_cdfInterface, domString(value->string), (UnitTypes) value->unit));
  -        else if(value->unit >= CSS_NUMBER && value->unit <= CSS_KHZ)
  +        else if(value->unit == CSSPrimitiveValue::CSS_STRING)
  +            ret->append(new CSSPrimitiveValueImpl(domString(value->string), (CSSPrimitiveValue::UnitTypes) value->unit));
  +        else if(value->unit >= CSSPrimitiveValue::CSS_NUMBER && value->unit <= CSSPrimitiveValue::CSS_KHZ)
           {
               // qDebug(" new value: value=%.2f, unit=%d", value->fValue, value->unit);
  -            ret->append(new CSSPrimitiveValueImpl(m_cdfInterface, value->fValue, (UnitTypes) value->unit));
  +            ret->append(new CSSPrimitiveValueImpl(value->fValue, (CSSPrimitiveValue::UnitTypes) value->unit));
           }
           value = valueList->next();
           if(value && value->unit == KDOMCSSValue::Operator && value->iValue == ',')
  @@ -387,23 +354,23 @@
       return ret;
   }
   
  -CSSValueImpl *SVGCSSParser::parsePaint()
  +CSSValueImpl *CSSParser::parseSVGPaint()
   {
       KDOMCSSValue *value = valueList->current();
  -    if(!strict && value->unit == CSS_NUMBER &&
  +    if(!strict && value->unit == CSSPrimitiveValue::CSS_NUMBER &&
          value->fValue >= 0. && value->fValue < 1000000.)
       {
           QString str;
           str.sprintf("%06d", (int)(value->fValue+.5));
           return new SVGPaintImpl(SVG_PAINTTYPE_RGBCOLOR, 0, new DOMStringImpl(str));
       }
  -    else if(value->unit == CSS_RGBCOLOR)
  +    else if(value->unit == CSSPrimitiveValue::CSS_RGBCOLOR)
       {
           QString str = QString::fromLatin1("#") + qString(value->string);
           return new SVGPaintImpl(SVG_PAINTTYPE_RGBCOLOR, 0, new DOMStringImpl(str));
       }
  -    else if(value->unit == CSS_IDENT ||
  -           (!strict && value->unit == CSS_DIMENSION))
  +    else if(value->unit == CSSPrimitiveValue::CSS_IDENT ||
  +           (!strict && value->unit == CSSPrimitiveValue::CSS_DIMENSION))
       {
           QString str = qString(value->string);
           return new SVGPaintImpl(SVG_PAINTTYPE_RGBCOLOR, 0, new DOMStringImpl(str));
  @@ -416,21 +383,21 @@
           KDOMCSSValue *v = args->current();
           if(!validUnit(v, FInteger|FPercent, true))
               return 0;
  -        int r = (int) (v->fValue * (v->unit == CSS_PERCENTAGE ? 256./100. : 1.));
  +        int r = (int) (v->fValue * (v->unit == CSSPrimitiveValue::CSS_PERCENTAGE ? 256./100. : 1.));
           v = args->next();
           if(v->unit != KDOMCSSValue::Operator && v->iValue != ',')
               return 0;
           v = args->next();
           if(!validUnit(v, FInteger|FPercent, true))
               return 0;
  -        int g = (int) (v->fValue * (v->unit == CSS_PERCENTAGE ? 256./100. : 1.));
  +        int g = (int) (v->fValue * (v->unit == CSSPrimitiveValue::CSS_PERCENTAGE ? 256./100. : 1.));
           v = args->next();
           if(v->unit != KDOMCSSValue::Operator && v->iValue != ',')
               return 0;
           v = args->next();
           if(!validUnit(v, FInteger|FPercent, true))
               return 0;
  -        int b = (int) (v->fValue * (v->unit == CSS_PERCENTAGE ? 256./100. : 1.));
  +        int b = (int) (v->fValue * (v->unit == CSSPrimitiveValue::CSS_PERCENTAGE ? 256./100. : 1.));
           r = kMax(0, kMin(255, r));
           g = kMax(0, kMin(255, g));
           b = kMax(0, kMin(255, b));
  @@ -444,24 +411,24 @@
       return new SVGPaintImpl();
   }
   
  -CSSValueImpl *SVGCSSParser::parseColor()
  +CSSValueImpl *CSSParser::parseSVGColor()
   {
       KDOMCSSValue *value = valueList->current();
  -    if(!strict && value->unit == CSS_NUMBER &&
  +    if(!strict && value->unit == CSSPrimitiveValue::CSS_NUMBER &&
          value->fValue >= 0. && value->fValue < 1000000.)
       {
           QString str;
           str.sprintf("%06d", (int)(value->fValue+.5));
           return new SVGColorImpl(new DOMStringImpl(str));
       }
  -    else if(value->unit == CSS_RGBCOLOR)
  +    else if(value->unit == CSSPrimitiveValue::CSS_RGBCOLOR)
       {
           QString str = QString::fromLatin1("#") + qString(value->string);
           return new SVGColorImpl(new DOMStringImpl(str));
       }
  -    else if(value->unit == CSS_IDENT ||
  -           (!strict && value->unit == CSS_DIMENSION))
  -        return new SVGColorImpl(domString(value->string));
  +    else if(value->unit == CSSPrimitiveValue::CSS_IDENT ||
  +           (!strict && value->unit == CSSPrimitiveValue::CSS_DIMENSION))
  +        return new SVGColorImpl(domString(value->string).impl());
       else if(value->unit == KDOMCSSValue::Function && value->function->args != 0 &&
               value->function->args->numValues == 5 /* rgb + two commas */ &&
               qString(value->function->name).lower() == "rgb(")
  @@ -470,21 +437,21 @@
           KDOMCSSValue *v = args->current();
           if(!validUnit(v, FInteger|FPercent, true))
               return 0;
  -        int r = (int) (v->fValue * (v->unit == CSS_PERCENTAGE ? 256./100. : 1.));
  +        int r = (int) (v->fValue * (v->unit == CSSPrimitiveValue::CSS_PERCENTAGE ? 256./100. : 1.));
           v = args->next();
  -        if(v->unit != KDOMCSSValue::Operator && v->iValue != ',')
  +        if(v->unit != Value::Operator && v->iValue != ',')
               return 0;
           v = args->next();
           if(!validUnit(v, FInteger|FPercent, true))
               return 0;
  -        int g = (int) (v->fValue * (v->unit == CSS_PERCENTAGE ? 256./100. : 1.));
  +        int g = (int) (v->fValue * (v->unit == CSSPrimitiveValue::CSS_PERCENTAGE ? 256./100. : 1.));
           v = args->next();
  -        if(v->unit != KDOMCSSValue::Operator && v->iValue != ',')
  +        if(v->unit != Value::Operator && v->iValue != ',')
               return 0;
           v = args->next();
           if(!validUnit(v, FInteger|FPercent, true))
               return 0;
  -        int b = (int) (v->fValue * (v->unit == CSS_PERCENTAGE ? 256./100. : 1.));
  +        int b = (int) (v->fValue * (v->unit == CSSPrimitiveValue::CSS_PERCENTAGE ? 256./100. : 1.));
           r = kMax(0, kMin(255, r));
           g = kMax(0, kMin(255, g));
           b = kMax(0, kMin(255, b));
  @@ -498,21 +465,6 @@
       return new SVGPaintImpl();
   }
   
  -bool SVGCSSParser::parseShape(int propId, bool important)
  -{
  -    // Small hack, allows to run parseShape in non-strict mode.
  -    // Needed, because svg clip property allows unitless values
  -    // and css2 clip does not.
  -    bool temp = strict;
  -    strict = false;
  -    bool ret = KDOM::CSSParser::parseShape(propId, important);
  -    strict = temp;
  -    return ret;
  -}
  -
  -CSSStyleDeclarationImpl *SVGCSSParser::createCSSStyleDeclaration(CSSStyleRuleImpl *rule, Q3PtrList<CSSProperty> *propList)
  -{
  -    return new SVGCSSStyleDeclarationImpl(document()->implementation()->cdfInterface(), rule, propList);
  -}
  +} // end namespace DOM
   
   // vim:ts=4:noet
  
  
  
  1.9       +47 -191   SVGSupport/ksvg2/css/SVGCSSStyleSelector.cpp
  
  Index: SVGCSSStyleSelector.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/css/SVGCSSStyleSelector.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGCSSStyleSelector.cpp	5 Oct 2005 05:35:10 -0000	1.8
  +++ SVGCSSStyleSelector.cpp	21 Nov 2005 08:29:28 -0000	1.9
  @@ -27,41 +27,23 @@
   */
   
   #include "config.h"
  -#include <kurl.h>
  -#include <kstandarddirs.h>
   
  -#include <qfile.h>
   #include <q3cstring.h>
   #include <qpaintdevice.h>
   
  -#include <kdom/core/ElementImpl.h>
  -#include <kdom/core/CDFInterface.h>
  -#include <kdom/core/DocumentImpl.h>
  -#include <kdom/css/cssvalues.h>
  -#include <kdom/css/CSSRuleImpl.h>
  -#include <kdom/css/CSSValueImpl.h>
  -#include <kdom/css/cssproperties.h>
  -#include <kdom/css/MediaListImpl.h>
  -#include <kdom/css/CSSRuleListImpl.h>
   #include <kdom/css/CSSStyleRuleImpl.h>
  -#include <kdom/css/CSSMediaRuleImpl.h>
  -#include <kdom/css/CSSValueListImpl.h>
  -#include <kdom/css/CSSStyleSheetImpl.h>
  -#include <kdom/css/StyleSheetListImpl.h>
  -#include <kdom/css/CSSPrimitiveValueImpl.h>
  -#include <kdom/css/CSSStyleDeclarationImpl.h>
   
   #include "ksvg.h"
  -#include "svgtags.h"
  +#include "SVGNames.h"
  +#include "cssvalues.h"
   #include <ksvg2/css/cssvalues.h>
   #include "SVGColorImpl.h"
   #include "SVGPaintImpl.h"
   #include <ksvg2/css/cssproperties.h>
   #include "SVGRenderStyle.h"
   #include "SVGRenderStyleDefs.h"
  -#include "SVGCSSStyleSelector.h"
  -#include "SVGCSSStyleSheetImpl.h"
   #include "SVGStyledElementImpl.h"
  +#include "khtml/css/cssstyleselector.h"
   
   #include <stdlib.h>
   
  @@ -70,7 +52,7 @@
   #define HANDLE_INHERIT(prop, Prop) \
   if(isInherit) \
   {\
  -    svgstyle->set##Prop(static_cast<SVGRenderStyle *>(parentStyle)->prop());\
  +    svgstyle->set##Prop(parentStyle->svgStyle()->prop());\
       return;\
   }
   
  @@ -105,129 +87,19 @@
       return;\
   }
   
  -KDOM::CSSStyleSheetImpl *SVGCSSStyleSelector::s_defaultSheet = 0;
  -KDOM::CSSStyleSelectorList *SVGCSSStyleSelector::s_defaultStyle = 0;
  -KDOM::CSSStyleSelectorList *SVGCSSStyleSelector::s_defaultPrintStyle = 0;
  -
  -SVGCSSStyleSelector::SVGCSSStyleSelector(KDOM::DocumentImpl *doc, const QString &userStyleSheet, KDOM::StyleSheetListImpl *styleSheets, const KURL &url, bool strictParsing)
  -: KDOM::CSSStyleSelector(doc, userStyleSheet, styleSheets, url, strictParsing)
  -{
  -    if(!s_defaultStyle)
  -        loadDefaultStyle(doc);
  -        
  -    defaultStyle = s_defaultStyle;
  -    defaultPrintStyle = s_defaultPrintStyle;
  -    defaultQuirksStyle = 0;
  -    
  -    buildLists();
  -}
  -
  -SVGCSSStyleSelector::SVGCSSStyleSelector(KDOM::CSSStyleSheetImpl *sheet) : KDOM::CSSStyleSelector(sheet)
  -{
  -    if(!s_defaultStyle)
  -        loadDefaultStyle(0);
  -        
  -    defaultStyle = s_defaultStyle;
  -    defaultPrintStyle = s_defaultPrintStyle;
  -    defaultQuirksStyle = 0;
  -    
  -    buildLists();
  -}
  -
  -SVGCSSStyleSelector::~SVGCSSStyleSelector()
  -{
  -}
  -
  -void SVGCSSStyleSelector::loadDefaultStyle(KDOM::DocumentImpl *doc)
  +void KDOM::CSSStyleSelector::applySVGProperty(int id, KDOM::CSSValueImpl *value)
   {
  -    QFile f(locate("data", QString::fromLatin1("ksvg2/svg.css")));
  -    f.open(IO_ReadOnly);
  -
  -    Q3CString file(f.size() + 1);
  -    int readbytes = f.readBlock(file.data(), f.size());
  -    f.close();
  -    if(readbytes >= 0)
  -        file[readbytes] = '\0';
  -
  -    QString style = QString::fromLatin1(file.data());
  -    KDOM::DOMString str(style);
  -
  -    s_defaultSheet = new SVGCSSStyleSheetImpl(doc);
  -    s_defaultSheet->parseString(str.handle());
  -
  -    // Collect only strict-mode rules.
  -    s_defaultStyle = new KDOM::CSSStyleSelectorList();
  -    s_defaultStyle->append(s_defaultSheet, KDOM::DOMString("screen").handle());
  -
  -    s_defaultPrintStyle = new KDOM::CSSStyleSelectorList();
  -    s_defaultPrintStyle->append(s_defaultSheet, KDOM::DOMString("print").handle());
  -}
  -
  -unsigned int SVGCSSStyleSelector::addExtraDeclarations(KDOM::ElementImpl *e, unsigned int numProps)
  -{
  -    SVGStyledElementImpl *se = static_cast<SVGStyledElementImpl *>(e);
  -    if(!se)
  -        return numProps;
  -
  -    KDOM::CSSStyleDeclarationImpl *decl = se->pa();
  -    if(!decl)
  -        return numProps;
  -
  -    Q3PtrList<KDOM::CSSProperty>* values = decl ? decl->values() : 0;
  -    if(!values)
  -        return numProps;
  -
  -    int totalLen = values ? values->count() : 0;
  -
  -    if(presentationAttrs.size() <(uint)totalLen)
  -        presentationAttrs.resize(totalLen + 1);
  -
  -    if(numProps + totalLen >= propsToApplySize)
  -    {
  -        propsToApplySize += propsToApplySize;
  -        propsToApply = (KDOM::CSSOrderedProperty **) realloc(propsToApply, propsToApplySize * sizeof(KDOM::CSSOrderedProperty *));
  -    }
  -
  -    KDOM::CSSOrderedProperty *array = (KDOM::CSSOrderedProperty *) presentationAttrs.data();
  -    for(int i = 0; i < totalLen; i++)
  -    {
  -        KDOM::CSSProperty *prop = values->at(i);
  -        KDOM::Source source = KDOM::Author;
  -
  -        if(prop->m_nonCSSHint)
  -            source = KDOM::NonCSSHint;
  -
  -        bool first = (decl->interface() ? decl->interface()->cssPropertyApplyFirst(prop->m_id) : false);
  -        array->prop = prop;
  -        array->pseudoId = KDOM::RenderStyle::NOPSEUDO;
  -        array->selector = 0;
  -        array->position = i;
  -        array->priority =(!first << 30) |(source << 24);
  -        propsToApply[numProps++] = array++;
  -    }
  -
  -    return numProps;
  -}
  -
  -void SVGCSSStyleSelector::applyRule(int id, KDOM::CSSValueImpl *value)
  -{
  -    if(id < SVGCSS_PROP_MIN && id != CSS_PROP_COLOR)
  -    {
  -        KDOM::CSSStyleSelector::applyRule(id, value);
  -        return;
  -    }
  -
       KDOM::CSSPrimitiveValueImpl *primitiveValue = 0;
       if(value->isPrimitiveValue())
           primitiveValue = static_cast<KDOM::CSSPrimitiveValueImpl *>(value);
   
       KDOM::Length l;
  -
  -    bool isInherit = (parentNode && value->cssValueType() == KDOM::CSS_INHERIT);
  -    bool isInitial = (value->cssValueType() == KDOM::CSS_INITIAL) ||
  -                      (!parentNode && value->cssValueType() == KDOM::CSS_INHERIT);
  -
  -    SVGRenderStyle *svgstyle = static_cast<SVGRenderStyle *>(style);
  +    SVGRenderStyle *svgstyle = style->svgStyle();
  +    
  +    unsigned short valueType = value->cssValueType();
  +    
  +    bool isInherit = parentNode && valueType == KDOM::CSSPrimitiveValue::CSS_INHERIT;
  +    bool isInitial = valueType == KDOM::CSSPrimitiveValue::CSS_INITIAL || (!parentNode && valueType == KDOM::CSSPrimitiveValue::CSS_INHERIT);
   
       // What follows is a list that maps the CSS properties into their
       // corresponding front-end RenderStyle values. Shorthands(e.g. border,
  @@ -553,24 +425,6 @@
               svgstyle->setStrokeDashOffset(primitiveValue);
               break;
           }
  -        case SVGCSS_PROP_OPACITY:
  -        {
  -            HANDLE_INHERIT_AND_INITIAL(opacity, Opacity)
  -            if(!primitiveValue)
  -                return;
  -        
  -            float f = 0.0;    
  -            int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_PERCENTAGE)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_PERCENTAGE) / 100.;
  -            else if(type == KDOM::CSS_NUMBER)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_NUMBER);
  -            else
  -                return;
  -
  -            svgstyle->setOpacity(f);
  -            break;
  -        }
           case SVGCSS_PROP_FILL_OPACITY:
           {
               HANDLE_INHERIT_AND_INITIAL(fillOpacity, FillOpacity)
  @@ -579,10 +433,10 @@
           
               float f = 0.0;    
               int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_PERCENTAGE)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_PERCENTAGE) / 100.;
  -            else if(type == KDOM::CSS_NUMBER)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_NUMBER);
  +            if(type == KDOM::CSSPrimitiveValue::CSS_PERCENTAGE)
  +                f = primitiveValue->getFloatValue(KDOM::CSSPrimitiveValue::CSS_PERCENTAGE) / 100.;
  +            else if(type == KDOM::CSSPrimitiveValue::CSS_NUMBER)
  +                f = primitiveValue->getFloatValue(KDOM::CSSPrimitiveValue::CSS_NUMBER);
               else
                   return;
   
  @@ -597,10 +451,10 @@
           
               float f = 0.0;    
               int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_PERCENTAGE)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_PERCENTAGE) / 100.;
  -            else if(type == KDOM::CSS_NUMBER)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_NUMBER);
  +            if(type == KDOM::CSSPrimitiveValue::CSS_PERCENTAGE)
  +                f = primitiveValue->getFloatValue(KDOM::CSSPrimitiveValue::CSS_PERCENTAGE) / 100.;
  +            else if(type == KDOM::CSSPrimitiveValue::CSS_NUMBER)
  +                f = primitiveValue->getFloatValue(KDOM::CSSPrimitiveValue::CSS_NUMBER);
               else
                   return;
   
  @@ -615,10 +469,10 @@
           
               float f = 0.0;    
               int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_PERCENTAGE)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_PERCENTAGE) / 100.;
  -            else if(type == KDOM::CSS_NUMBER)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_NUMBER);
  +            if(type == KDOM::CSSPrimitiveValue::CSS_PERCENTAGE)
  +                f = primitiveValue->getFloatValue(KDOM::CSSPrimitiveValue::CSS_PERCENTAGE) / 100.;
  +            else if(type == KDOM::CSSPrimitiveValue::CSS_NUMBER)
  +                f = primitiveValue->getFloatValue(KDOM::CSSPrimitiveValue::CSS_NUMBER);
               else
                   return;
   
  @@ -633,8 +487,8 @@
   
               QString s;
               int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_URI)
  -                s = KDOM::DOMString(primitiveValue->getDOMStringValue()).string();
  +            if(type == KDOM::CSSPrimitiveValue::CSS_URI)
  +                s = primitiveValue->getStringValue().qstring();
               else
                   return;
   
  @@ -649,8 +503,8 @@
   
               QString s;
               int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_URI)
  -                s = KDOM::DOMString(primitiveValue->getDOMStringValue()).string();
  +            if(type == KDOM::CSSPrimitiveValue::CSS_URI)
  +                s = primitiveValue->getStringValue().qstring();
               else
                   return;
   
  @@ -665,8 +519,8 @@
   
               QString s;
               int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_URI)
  -                s = KDOM::DOMString(primitiveValue->getDOMStringValue()).string();
  +            if(type == KDOM::CSSPrimitiveValue::CSS_URI)
  +                s = primitiveValue->getStringValue().qstring();
               else
                   return;
   
  @@ -689,8 +543,8 @@
   
               float f = 0.0;
               int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_NUMBER)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_NUMBER);
  +            if(type == KDOM::CSSPrimitiveValue::CSS_NUMBER)
  +                f = primitiveValue->getFloatValue(KDOM::CSSPrimitiveValue::CSS_NUMBER);
               else
                   return;
   
  @@ -705,8 +559,8 @@
   
               QString s;
               int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_URI)
  -                s = KDOM::DOMString(primitiveValue->getDOMStringValue()).string();
  +            if(type == KDOM::CSSPrimitiveValue::CSS_URI)
  +                s = primitiveValue->getStringValue().qstring();
               else
                   return;
               svgstyle->setFilter(s);
  @@ -720,8 +574,8 @@
   
               QString s;
               int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_URI)
  -                s = KDOM::DOMString(primitiveValue->getDOMStringValue()).string();
  +            if(type == KDOM::CSSPrimitiveValue::CSS_URI)
  +                s = primitiveValue->getStringValue().qstring();
               else
                   return;
   
  @@ -736,6 +590,7 @@
                   
               break;
           }
  +#if 0
           case CSS_PROP_COLOR: // colors || inherit
           {
               QColor col;
  @@ -750,7 +605,7 @@
               {
                   SVGColorImpl *c = static_cast<SVGColorImpl *>(value);
                   if(!c)
  -                    return KDOM::CSSStyleSelector::applyRule(id, value);
  +                    return KDOM::CSSStyleSelector::applyProperty(id, value);
                   
                   col = c->color();
               }
  @@ -758,12 +613,13 @@
               svgstyle->setColor(col);
               break;
           }
  +#endif
           case SVGCSS_PROP_STOP_COLOR:
           {
               QColor col;
               if(isInherit)
               {
  -                HANDLE_INHERIT_COND(SVGCSS_PROP_STOP_COLOR, color, Color)
  +                style->setColor(parentStyle->color());
                   return;
               }
               else if(isInitial)
  @@ -772,10 +628,10 @@
               {
                   SVGColorImpl *c = static_cast<SVGColorImpl *>(value);
                   if(!c)
  -                    return KDOM::CSSStyleSelector::applyRule(id, value);
  +                    return KDOM::CSSStyleSelector::applyProperty(id, value);
   
                   if(c->colorType() == SVG_COLORTYPE_CURRENTCOLOR)
  -                    col = svgstyle->color();
  +                    col = style->color();
                   else
                       col = c->color();
               }
  @@ -791,10 +647,10 @@
   
               float f = 0.0;    
               int type = primitiveValue->primitiveType();
  -            if(type == KDOM::CSS_PERCENTAGE)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_PERCENTAGE) / 100.;
  -            else if(type == KDOM::CSS_NUMBER)
  -                f = primitiveValue->getFloatValue(KDOM::CSS_NUMBER);
  +            if(type == KDOM::CSSPrimitiveValue::CSS_PERCENTAGE)
  +                f = primitiveValue->getFloatValue(KDOM::CSSPrimitiveValue::CSS_PERCENTAGE) / 100.;
  +            else if(type == KDOM::CSSPrimitiveValue::CSS_NUMBER)
  +                f = primitiveValue->getFloatValue(KDOM::CSSPrimitiveValue::CSS_NUMBER);
               else
                   return;
   
  @@ -810,10 +666,10 @@
               {
                   SVGColorImpl *c = static_cast<SVGColorImpl *>(value);
                   if(!c)
  -                    return KDOM::CSSStyleSelector::applyRule(id, value);
  +                    return KDOM::CSSStyleSelector::applyProperty(id, value);
   
                   if(c->colorType() == SVG_COLORTYPE_CURRENTCOLOR)
  -                    col = svgstyle->color();
  +                    col = style->color();
                   else
                       col = c->color();
               }
  
  
  
  1.5       +6 -23     SVGSupport/ksvg2/css/SVGRenderStyle.cpp
  
  Index: SVGRenderStyle.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/css/SVGRenderStyle.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGRenderStyle.cpp	5 Oct 2005 05:35:10 -0000	1.4
  +++ SVGRenderStyle.cpp	21 Nov 2005 08:29:28 -0000	1.5
  @@ -33,7 +33,7 @@
   
   SVGRenderStyle *SVGRenderStyle::s_defaultStyle = 0;
   
  -SVGRenderStyle::SVGRenderStyle() : KDOM::RenderStyle()
  +SVGRenderStyle::SVGRenderStyle()
   {
       if(!s_defaultStyle)    
           s_defaultStyle = new SVGRenderStyle(true);
  @@ -48,7 +48,7 @@
       setBitDefaults();
   }
   
  -SVGRenderStyle::SVGRenderStyle(bool) : KDOM::RenderStyle(true)
  +SVGRenderStyle::SVGRenderStyle(bool)
   {
       setBitDefaults();
   
  @@ -60,7 +60,7 @@
       markers.init();
   }
   
  -SVGRenderStyle::SVGRenderStyle(const SVGRenderStyle &other) : KDOM::RenderStyle(other)
  +SVGRenderStyle::SVGRenderStyle(const SVGRenderStyle &other)
   {
       fill = other.fill;
       stroke = other.stroke;
  @@ -73,42 +73,25 @@
       svg_noninherited_flags = other.svg_noninherited_flags;
   }
   
  -SVGRenderStyle::~SVGRenderStyle()
  +bool SVGRenderStyle::equals(SVGRenderStyle *svgOther) const
   {
  -}
  -
  -void SVGRenderStyle::cleanup()
  -{
  -    delete s_defaultStyle;
  -    s_defaultStyle = 0;
  -}
  -
  -bool SVGRenderStyle::equals(KDOM::RenderStyle *other) const
  -{
  -    SVGRenderStyle *svgOther = dynamic_cast<SVGRenderStyle *>(other);
       if(!svgOther)
           return false;
   
       return (fill == svgOther->fill && stroke == svgOther->stroke &&
           stops == svgOther->stops && clip == svgOther->clip &&
  -        misc == svgOther->misc && markers == svgOther->markers &&
  -        KDOM::RenderStyle::equals(other));
  +        misc == svgOther->misc && markers == svgOther->markers);
   }
   
  -void SVGRenderStyle::inheritFrom(const RenderStyle *inheritParent)
  +void SVGRenderStyle::inheritFrom(const SVGRenderStyle *svgInheritParent)
   {
  -    const SVGRenderStyle *svgInheritParent = static_cast<const SVGRenderStyle *>(inheritParent);
       if(!svgInheritParent)
           return;
   
  -    KDOM::RenderStyle::inheritFrom(inheritParent);
  -
       fill = svgInheritParent->fill;
       stroke = svgInheritParent->stroke;
       stops = svgInheritParent->stops;
  -    //misc = svgInheritParent->misc;
       markers = svgInheritParent->markers;
  -    setOpacity(initialOpacity());
   
       svg_inherited_flags = svgInheritParent->svg_inherited_flags;
   }
  
  
  
  1.5       +5 -8      SVGSupport/ksvg2/css/SVGRenderStyle.h
  
  Index: SVGRenderStyle.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/css/SVGRenderStyle.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGRenderStyle.h	1 Sep 2005 09:39:12 -0000	1.4
  +++ SVGRenderStyle.h	21 Nov 2005 08:29:28 -0000	1.5
  @@ -31,19 +31,17 @@
   
   namespace KSVG
   {
  -    class SVGRenderStyle : public KDOM::RenderStyle
  +    class SVGRenderStyle
       {    
       public:
           SVGRenderStyle();
           SVGRenderStyle(bool); // Used to create the default style.
           SVGRenderStyle(const SVGRenderStyle &other);
  -        virtual ~SVGRenderStyle();
  +        ~SVGRenderStyle();
   
  -        virtual bool equals(KDOM::RenderStyle *other) const;
  +        bool equals(SVGRenderStyle *other) const;
   
  -        static void cleanup();
  -
  -        virtual void inheritFrom(const RenderStyle *inheritParent);
  +        void inheritFrom(const SVGRenderStyle *inheritParent);
   
           // SVG CSS Properties
           SVG_RS_DEFINE_ATTRIBUTE(EAlignmentBaseline, AlignmentBaseline, alignmentBaseline, AB_AUTO)
  @@ -82,7 +80,6 @@
           RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(QString, markers, midMarker, MidMarker, midMarker, QString())
           RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(QString, markers, endMarker, EndMarker, endMarker, QString())
   
  -        RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(float, misc, opacity, Opacity, opacity, 1.0)
           RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(QString, misc, filter, Filter, filter, QString())
           RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(float, misc, floodOpacity, FloodOpacity, floodOpacity, 1.0)
           RS_DEFINE_ATTRIBUTE_DATAREF_WITH_INITIAL(QColor, misc, floodColor, FloodColor, floodColor, QColor(Qt::black))    
  @@ -154,7 +151,7 @@
           static SVGRenderStyle *s_defaultStyle;
   
       private:
  -        SVGRenderStyle(const SVGRenderStyle *) : KDOM::RenderStyle() { }
  +        SVGRenderStyle(const SVGRenderStyle *) { }
   
           void setBitDefaults()
           {
  
  
  
  1.7       +3 -6      SVGSupport/ksvg2/css/SVGRenderStyleDefs.cpp
  
  Index: SVGRenderStyleDefs.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/css/SVGRenderStyleDefs.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGRenderStyleDefs.cpp	24 Oct 2005 06:31:50 -0000	1.6
  +++ SVGRenderStyleDefs.cpp	21 Nov 2005 08:29:28 -0000	1.7
  @@ -149,14 +149,12 @@
   
   StyleMiscData::StyleMiscData() : KDOM::Shared<StyleMiscData>()
   {
  -    opacity = SVGRenderStyle::initialOpacity();
  -    floodColor = SVGRenderStyle::initialColor();
  -    floodOpacity = SVGRenderStyle::initialOpacity();
  +    floodColor = khtml::RenderStyle::initialColor();
  +    floodOpacity = khtml::RenderStyle::initialOpacity();
   }
   
   StyleMiscData::StyleMiscData(const StyleMiscData &other) : KDOM::Shared<StyleMiscData>()
   {
  -    opacity = other.opacity;
       filter = other.filter;
       floodColor = other.floodColor;
       floodOpacity = other.floodOpacity;
  @@ -164,8 +162,7 @@
   
   bool StyleMiscData::operator==(const StyleMiscData &other) const
   {
  -    return (opacity == other.opacity && filter == other.filter &&
  -            floodOpacity == other.floodOpacity && floodColor == other.floodColor);
  +    return (filter == other.filter && floodOpacity == other.floodOpacity && floodColor == other.floodColor);
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +0 -1      SVGSupport/ksvg2/css/SVGRenderStyleDefs.h
  
  Index: SVGRenderStyleDefs.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/css/SVGRenderStyleDefs.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGRenderStyleDefs.h	24 Oct 2005 06:31:50 -0000	1.4
  +++ SVGRenderStyleDefs.h	21 Nov 2005 08:29:28 -0000	1.5
  @@ -222,7 +222,6 @@
               return !(*this == other);
           }
   
  -        float opacity;
           QString filter;
           QColor floodColor;
           float floodOpacity;
  
  
  
  1.8       +1 -3      SVGSupport/ksvg2/ecma/Ecma.cpp
  
  Index: Ecma.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/ecma/Ecma.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- Ecma.cpp	5 Oct 2005 05:35:11 -0000	1.7
  +++ Ecma.cpp	21 Nov 2005 08:29:30 -0000	1.8
  @@ -39,7 +39,6 @@
   #include "SVGPaintImpl.h"
   #include "GlobalObject.h"
   #include "SVGColorImpl.h"
  -#include "SVGEventImpl.h"
   #include "SVGZoomEvent.h"
   #include "SVGUseElement.h"
   #include "SVGSVGElement.h"
  @@ -66,7 +65,6 @@
   #include "SVGFEImageElement.h"
   #include "SVGFEMergeElement.h"
   #include "SVGFEMergeNodeElement.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGStyleElement.h"
   #include "SVGPathSegMoveto.h"
   #include "SVGPathSegLineto.h"
  @@ -141,7 +139,7 @@
       if(n.nodeType() == KDOM::DOCUMENT_NODE)
           return SVGDocument(n).bridge(exec);
   
  -    switch(nodeImpl->id())
  +    switch(nodeImpl->getIDAttribute())
       {
           // TODO: Add all remaining nodes here...
           case ID_SVG:
  
  
  
  1.7       +0 -1      SVGSupport/ksvg2/ecma/GlobalObject.cpp
  
  Index: GlobalObject.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/ecma/GlobalObject.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- GlobalObject.cpp	5 Oct 2005 05:35:11 -0000	1.6
  +++ GlobalObject.cpp	21 Nov 2005 08:29:30 -0000	1.7
  @@ -26,7 +26,6 @@
   
   #include "GlobalObject.h"
   #include "Constructors.h"
  -#include "SVGDocumentImpl.h"
   
   #include <ksvg2/data/EcmaConstants.h>
   #include <ksvg2/data/GlobalObject.lut.h>
  
  
  
  1.6       +1 -2      SVGSupport/ksvg2/events/SVGZoomEventImpl.cpp
  
  Index: SVGZoomEventImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/events/SVGZoomEventImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGZoomEventImpl.cpp	5 Oct 2005 05:35:12 -0000	1.5
  +++ SVGZoomEventImpl.cpp	21 Nov 2005 08:29:30 -0000	1.6
  @@ -23,12 +23,11 @@
   #include "config.h"
   #include "SVGRectImpl.h"
   #include "SVGPointImpl.h"
  -#include "SVGEventImpl.h"
   #include "SVGZoomEventImpl.h"
   
   using namespace KSVG;
   
  -SVGZoomEventImpl::SVGZoomEventImpl() : KDOM::UIEventImpl((KDOM::EventImplType) TypeSVGZoomEvent)
  +SVGZoomEventImpl::SVGZoomEventImpl()
   {
       m_newScale = 0.0;
       m_previousScale = 0.0;
  
  
  
  1.5       +0 -2      SVGSupport/ksvg2/events/SVGZoomEventImpl.h
  
  Index: SVGZoomEventImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/events/SVGZoomEventImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGZoomEventImpl.h	1 Sep 2005 09:39:13 -0000	1.4
  +++ SVGZoomEventImpl.h	21 Nov 2005 08:29:30 -0000	1.5
  @@ -25,8 +25,6 @@
   
   #include <kdom/events/UIEventImpl.h>
   
  -#include <ksvg2/events/ksvgevents.h>
  -
   namespace KSVG
   {
       class SVGRectImpl;
  
  
  
  1.10      +30 -155   SVGSupport/ksvg2/misc/KCanvasRenderingStyle.cpp
  
  Index: KCanvasRenderingStyle.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/misc/KCanvasRenderingStyle.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- KCanvasRenderingStyle.cpp	5 Oct 2005 05:35:12 -0000	1.9
  +++ KCanvasRenderingStyle.cpp	21 Nov 2005 08:29:31 -0000	1.10
  @@ -27,7 +27,6 @@
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasPath.h>
   #include <kcanvas/KCanvasTypes.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingFillPainter.h>
   #include <kcanvas/device/KRenderingStrokePainter.h>
  @@ -35,20 +34,21 @@
   #include <kcanvas/device/KRenderingPaintServerGradient.h>
   
   #include <kdom/core/DocumentImpl.h>
  +#include <kdom/DOMString.h>
   #include <kdom/css/RenderStyle.h>
   #include <kdom/css/CSSValueListImpl.h>
   #include <kdom/css/CSSPrimitiveValueImpl.h>
   
   #include "ksvg.h"
   #include "SVGLengthImpl.h"
  -#include "SVGRenderStyle.h"
   #include "SVGStyledElementImpl.h"
   #include "KCanvasRenderingStyle.h"
  +#include "SVGRenderStyle.h"
   
   using namespace KSVG;
   
  -KCanvasRenderingStyle::KCanvasRenderingStyle(KCanvas *canvas, const SVGRenderStyle *style) : KRenderingStyle()
  -{    
  +KCanvasRenderingStyle::KCanvasRenderingStyle(khtml::RenderCanvas *canvas, const khtml::RenderStyle *style)
  +{
       m_style = style;
       m_canvas = canvas;
       m_fillPainter = 0;
  @@ -61,12 +61,12 @@
       disableStrokePainter();
   }
   
  -void KCanvasRenderingStyle::updateFill(KCanvasItem *item)
  +void KCanvasRenderingStyle::updateFill(RenderPath *item)
   {
       if(!m_canvas || !m_canvas->renderingDevice())
           return;
   
  -    SVGPaintImpl *fill = m_style->fillPaint();
  +    SVGPaintImpl *fill = m_style->svgStyle()->fillPaint();
   
       if (fill && fill->paintType() == SVG_PAINTTYPE_NONE)
           return;
  @@ -82,8 +82,8 @@
       else if(fill->paintType() == SVG_PAINTTYPE_URI)
       {
           KDOM::DOMString id(fill->uri());
  -
  -        KRenderingPaintServer *fillPaintServer = m_canvas->registry()->getPaintServerById(id.string().mid(1));
  +        
  +        KRenderingPaintServer *fillPaintServer = getPaintServerById(item->document(), id.qstring().mid(1));
           if(item && fillPaintServer)
               fillPaintServer->addClient(item);
   
  @@ -102,16 +102,16 @@
           fillPainter()->setPaintServer(fillPaintServer);
       }
   
  -    fillPainter()->setFillRule(m_style->fillRule() == WR_NONZERO ? RULE_NONZERO : RULE_EVENODD);
  -    fillPainter()->setOpacity(m_style->fillOpacity());
  +    fillPainter()->setFillRule(m_style->svgStyle()->fillRule() == WR_NONZERO ? RULE_NONZERO : RULE_EVENODD);
  +    fillPainter()->setOpacity(m_style->svgStyle()->fillOpacity());
   }
   
  -void KCanvasRenderingStyle::updateStroke(KCanvasItem *item)
  +void KCanvasRenderingStyle::updateStroke(RenderPath *item)
   {
       if(!m_canvas || !m_canvas->renderingDevice())
           return;
   
  -    SVGPaintImpl *stroke = m_style->strokePaint();
  +    SVGPaintImpl *stroke = m_style->svgStyle()->strokePaint();
   
       if (!stroke || stroke->paintType() == SVG_PAINTTYPE_NONE)
           return;
  @@ -120,7 +120,7 @@
       {
           KDOM::DOMString id(stroke->uri());
   
  -        KRenderingPaintServer *strokePaintServer = m_canvas->registry()->getPaintServerById(id.string().mid(1));
  +        KRenderingPaintServer *strokePaintServer = getPaintServerById(item->document(), id.qstring().mid(1));
           if(item && strokePaintServer)
               strokePaintServer->addClient(item);
   
  @@ -139,16 +139,16 @@
           strokePainter()->setPaintServer(strokePaintServer);
       }
   
  -    strokePainter()->setOpacity(m_style->strokeOpacity());
  -    strokePainter()->setStrokeWidth(cssPrimitiveToLength(item, m_style->strokeWidth(), 1.0));
  +    strokePainter()->setOpacity(m_style->svgStyle()->strokeOpacity());
  +    strokePainter()->setStrokeWidth(cssPrimitiveToLength(item, m_style->svgStyle()->strokeWidth(), 1.0));
   
  -    KDOM::CSSValueListImpl *dashes = m_style->strokeDashArray();
  +    KDOM::CSSValueListImpl *dashes = m_style->svgStyle()->strokeDashArray();
       if(dashes)
       {
           KDOM::CSSPrimitiveValueImpl *dash = 0;
           Q3PaintDeviceMetrics *paintDeviceMetrics = 0;
   
  -        SVGElementImpl *element = static_cast<SVGElementImpl *>(item->userData());
  +        SVGElementImpl *element = static_cast<SVGElementImpl *>(item->element());
           if(element && element->ownerDocument())
               paintDeviceMetrics = element->ownerDocument()->paintDeviceMetrics();
   
  @@ -158,19 +158,19 @@
           {
               dash = static_cast<KDOM::CSSPrimitiveValueImpl *>(dashes->item(i));
               if(dash)
  -                array.append((float) dash->computeLengthFloat(const_cast<SVGRenderStyle *>(m_style), paintDeviceMetrics));
  +                array.append((float) dash->computeLengthFloat(const_cast<khtml::RenderStyle *>(m_style), paintDeviceMetrics));
           }
   
           strokePainter()->setDashArray(array);
  -        strokePainter()->setDashOffset(cssPrimitiveToLength(item, m_style->strokeDashOffset(), 0.0));
  +        strokePainter()->setDashOffset(cssPrimitiveToLength(item, m_style->svgStyle()->strokeDashOffset(), 0.0));
       }
   
  -    strokePainter()->setStrokeMiterLimit(m_style->strokeMiterLimit());
  -    strokePainter()->setStrokeCapStyle((KCCapStyle) m_style->capStyle());
  -    strokePainter()->setStrokeJoinStyle((KCJoinStyle) m_style->joinStyle());
  +    strokePainter()->setStrokeMiterLimit(m_style->svgStyle()->strokeMiterLimit());
  +    strokePainter()->setStrokeCapStyle((KCCapStyle) m_style->svgStyle()->capStyle());
  +    strokePainter()->setStrokeJoinStyle((KCJoinStyle) m_style->svgStyle()->joinStyle());
   }
   
  -void KCanvasRenderingStyle::updateStyle(const SVGRenderStyle *style, KCanvasItem *item)
  +void KCanvasRenderingStyle::updateStyle(const khtml::RenderStyle *style, RenderPath *item)
   {
       m_style = style;
       
  @@ -190,42 +190,31 @@
       }
   }
   
  -double KCanvasRenderingStyle::cssPrimitiveToLength(KCanvasItem *item, KDOM::CSSValueImpl *value, double defaultValue) const
  +double KCanvasRenderingStyle::cssPrimitiveToLength(RenderPath *item, KDOM::CSSValueImpl *value, double defaultValue) const
   {
       KDOM::CSSPrimitiveValueImpl *primitive = static_cast<KDOM::CSSPrimitiveValueImpl *>(value);
   
  -    unsigned short cssType = (primitive ? primitive->primitiveType() : (unsigned short) KDOM::CSS_UNKNOWN);
  -    if(!(cssType > KDOM::CSS_UNKNOWN && cssType <= KDOM::CSS_PC))
  +    unsigned short cssType = (primitive ? primitive->primitiveType() : (unsigned short) KDOM::CSSPrimitiveValue::CSS_UNKNOWN);
  +    if(!(cssType > KDOM::CSSPrimitiveValue::CSS_UNKNOWN && cssType <= KDOM::CSSPrimitiveValue::CSS_PC))
           return defaultValue;
   
       Q3PaintDeviceMetrics *paintDeviceMetrics = 0;
   
  -    SVGElementImpl *element = static_cast<SVGElementImpl *>(item->userData());
  +    SVGElementImpl *element = static_cast<SVGElementImpl *>(item->element());
       if(element && element->ownerDocument())
           paintDeviceMetrics = element->ownerDocument()->paintDeviceMetrics();
   
  -    if(cssType == KDOM::CSS_PERCENTAGE)
  +    if(cssType == KDOM::CSSPrimitiveValue::CSS_PERCENTAGE)
       {
           SVGElementImpl *viewportElement = (element ? element->viewportElement() : 0);
           if(viewportElement)
           {
  -            double result = primitive->getFloatValue(KDOM::CSS_PERCENTAGE) / 100.0;
  +            double result = primitive->getFloatValue(KDOM::CSSPrimitiveValue::CSS_PERCENTAGE) / 100.0;
               return SVGHelper::PercentageOfViewport(result, viewportElement, LM_OTHER);
           }
       }
   
  -    return primitive->computeLengthFloat(const_cast<SVGRenderStyle *>(m_style), paintDeviceMetrics);
  -}
  -
  -// World matrix property
  -KCanvasMatrix KCanvasRenderingStyle::objectMatrix() const
  -{
  -    return m_matrix;
  -}
  -
  -void KCanvasRenderingStyle::setObjectMatrix(const KCanvasMatrix &matrix)
  -{
  -    m_matrix = matrix;
  +    return primitive->computeLengthFloat(const_cast<khtml::RenderStyle *>(m_style), paintDeviceMetrics);
   }
   
   // Stroke (aka Pen) properties
  @@ -265,118 +254,4 @@
       return m_fillPainter;
   }
   
  -// Display states
  -bool KCanvasRenderingStyle::visible() const
  -{
  -    return (m_style->display() != KDOM::DS_NONE) &&
  -           (m_style->visibility() == KDOM::VS_VISIBLE);
  -}
  -
  -void KCanvasRenderingStyle::setVisible(bool)
  -{
  -    // no-op
  -}
  -
  -// Color interpolation
  -KCColorInterpolation KCanvasRenderingStyle::colorInterpolation() const
  -{
  -    return KCColorInterpolation();
  -}
  -
  -void KCanvasRenderingStyle::setColorInterpolation(KCColorInterpolation)
  -{
  -    // nop-op
  -}
  -
  -KCImageRendering KCanvasRenderingStyle::imageRendering() const
  -{
  -    return (m_style->imageRendering() == IR_OPTIMIZESPEED) ? IR_OPTIMIZE_SPEED : IR_OPTIMIZE_QUALITY;
  -}
  -
  -void KCanvasRenderingStyle::setImageRendering(KCImageRendering)
  -{
  -    // no-op
  -}
  -
  -// Overall opacity
  -float KCanvasRenderingStyle::opacity() const
  -{
  -    return m_style->opacity();
  -}
  -
  -void KCanvasRenderingStyle::setOpacity(float)
  -{
  -    // no-op
  -}
  -
  -// Clipping
  -QStringList KCanvasRenderingStyle::clipPaths() const
  -{
  -    QString clipPathRef = m_style->clipPath();
  -    if(!clipPathRef.isEmpty() && (m_clipPaths.isEmpty() || (m_clipPaths.last() != clipPathRef)) )
  -        m_clipPaths.append(clipPathRef);
  -
  -    return m_clipPaths;
  -}
  -
  -void KCanvasRenderingStyle::addClipPath(const QString &clipPath)
  -{
  -    m_clipPaths.append(clipPath);
  -}
  -
  -void KCanvasRenderingStyle::removeClipPaths()
  -{
  -    m_clipPaths.clear();
  -}
  -
  -// Markers
  -KCanvasMarker *KCanvasRenderingStyle::startMarker() const
  -{
  -    // TODO: somewhere, somehow addClient should be called on this resource
  -    return static_cast<KCanvasMarker *>(m_canvas->registry()->getResourceById(m_style->startMarker().mid(1)));
  -}
  -
  -void KCanvasRenderingStyle::setStartMarker(KCanvasMarker *)
  -{
  -    // no-op
  -}
  -
  -KCanvasMarker *KCanvasRenderingStyle::midMarker() const
  -{
  -    // TODO: somewhere, somehow addClient should be called on this resource
  -    return static_cast<KCanvasMarker *>(m_canvas->registry()->getResourceById(m_style->midMarker().mid(1)));
  -}
  -
  -void KCanvasRenderingStyle::setMidMarker(KCanvasMarker *)
  -{
  -}
  -
  -KCanvasMarker *KCanvasRenderingStyle::endMarker() const
  -{
  -    // TODO: somewhere, somehow addClient should be called on this resource
  -    return static_cast<KCanvasMarker *>(m_canvas->registry()->getResourceById(m_style->endMarker().mid(1)));
  -}
  -
  -void KCanvasRenderingStyle::setEndMarker(KCanvasMarker *)
  -{
  -    // no-op
  -}
  -
  -bool KCanvasRenderingStyle::hasMarkers() const
  -{
  -    return !m_style->startMarker().isEmpty() ||
  -           !m_style->midMarker().isEmpty() ||
  -           !m_style->endMarker().isEmpty();
  -}
  -
  -KCanvasFilter *KCanvasRenderingStyle::filter() const
  -{
  -    QString lookup = m_style->filter().mid(1);
  -    if(lookup.isEmpty())
  -        return 0;
  -
  -    // TODO: somewhere, somehow addClient should be called on this resource
  -    return static_cast<KCanvasFilter *>(m_canvas->registry()->getResourceById(lookup));
  -}
  -
   // vim:ts=4:noet
  
  
  
  1.6       +46 -61    SVGSupport/ksvg2/misc/KCanvasRenderingStyle.h
  
  Index: KCanvasRenderingStyle.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/misc/KCanvasRenderingStyle.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- KCanvasRenderingStyle.h	1 Sep 2005 09:39:14 -0000	1.5
  +++ KCanvasRenderingStyle.h	21 Nov 2005 08:29:31 -0000	1.6
  @@ -26,88 +26,73 @@
   #include <kdom/css/CSSPrimitiveValueImpl.h>
   
   #include <kcanvas/KCanvasMatrix.h>
  -#include <kcanvas/device/KRenderingStyle.h>
   
  -namespace KSVG
  +// FIXME: these should be removed, use KSVG ones instead
  +typedef enum
   {
  -    class SVGRenderStyle;
  -    class KCanvasRenderingStyle : public KRenderingStyle
  -    {
  -    public:
  -        KCanvasRenderingStyle(KCanvas *canvas, const SVGRenderStyle *style);
  -        virtual ~KCanvasRenderingStyle();
  -
  -        void updateFill(KCanvasItem *item);
  -        void updateStroke(KCanvasItem *item);
  -
  -        void updateStyle(const SVGRenderStyle *style, KCanvasItem *item);
  -
  -        // World matrix property
  -        virtual KCanvasMatrix objectMatrix() const;
  -        virtual void setObjectMatrix(const KCanvasMatrix &objectMatrix);
  -
  -        // Stroke (aka Pen) properties
  -        virtual bool isStroked() const;
  -
  -        virtual KRenderingStrokePainter *strokePainter();
  -        virtual void disableStrokePainter();
  -
  -        double cssPrimitiveToLength(KCanvasItem *item, KDOM::CSSValueImpl *value, double defaultValue = 0.0) const;
  +    CAP_BUTT = 1,
  +    CAP_ROUND = 2,
  +    CAP_SQUARE = 3
  +} KCCapStyle;
   
  -        // Fill (aka Brush) properties
  -        virtual bool isFilled() const;
  +typedef enum
  +{
  +    JOIN_MITER = 1,
  +    JOIN_ROUND = 2,
  +    JOIN_BEVEL = 3
  +} KCJoinStyle;
   
  -        virtual KRenderingFillPainter *fillPainter();
  -        virtual void disableFillPainter();
   
  -        // Display states
  -        virtual bool visible() const;
  -        virtual void setVisible(bool visible);
  +// Special types
  +typedef Q3ValueList<float> KCDashArray;
   
  -        // Color interpolation
  -        virtual KCColorInterpolation colorInterpolation() const;
  -        virtual void setColorInterpolation(KCColorInterpolation interpolation);
   
  -        // Quality vs. speed control
  -        virtual KCImageRendering imageRendering() const;
  -        virtual void setImageRendering(KCImageRendering ir);
  +namespace khtml {
  +    class RenderStyle;
  +}
   
  -        // Overall opacity
  -        virtual float opacity() const;
  -        virtual void setOpacity(float);
  +class KCanvasFilter;
  +class KCanvasMarker;
  +class KRenderingFillPainter;
  +class KRenderingStrokePainter;
  +class RenderPath;
   
  -        // Clipping
  -        virtual QStringList clipPaths() const;
  +namespace KSVG
  +{
  +    class KCanvasRenderingStyle
  +    {
  +    public:
  +        KCanvasRenderingStyle(khtml::RenderCanvas *canvas, const khtml::RenderStyle *style);
  +        ~KCanvasRenderingStyle();
   
  -        void addClipPath(const QString &clipPath);
  -        void removeClipPaths();
  +        void updateFill(RenderPath *item);
  +        void updateStroke(RenderPath *item);
   
  -        // Markers
  -        virtual KCanvasMarker *startMarker() const;
  -        virtual void setStartMarker(KCanvasMarker *marker);
  +        void updateStyle(const khtml::RenderStyle *style, RenderPath *item);
   
  -        virtual KCanvasMarker *midMarker() const;
  -        virtual void setMidMarker(KCanvasMarker *marker);
  +        // Stroke (aka Pen) properties
  +        bool isStroked() const;
   
  -        virtual KCanvasMarker *endMarker() const;
  -        virtual void setEndMarker(KCanvasMarker *marker);
  +        KRenderingStrokePainter *strokePainter();
  +        void disableStrokePainter();
   
  -        virtual bool hasMarkers() const;
  +        double cssPrimitiveToLength(RenderPath *item, KDOM::CSSValueImpl *value, double defaultValue = 0.0) const;
   
  -        // Filter support
  -        virtual KCanvasFilter *filter() const;
  +        // Fill (aka Brush) properties
  +        bool isFilled() const;
   
  +        KRenderingFillPainter *fillPainter();
  +        void disableFillPainter();
  +        
  +        const khtml::RenderStyle *renderStyle() const { return m_style; }
  +        
       private:
           KCanvasRenderingStyle(const KCanvasRenderingStyle &other);
   
  -        // Data
  -        KCanvasMatrix m_matrix;
  -        mutable QStringList m_clipPaths;
  -
  -        const SVGRenderStyle *m_style;
  +        const khtml::RenderStyle *m_style;
   
           // KCanvas stuff
  -        KCanvas *m_canvas;
  +        khtml::RenderCanvas *m_canvas;
           KRenderingFillPainter *m_fillPainter;
           KRenderingStrokePainter *m_strokePainter;
       };
  
  
  
  1.9       +13 -21    SVGSupport/ksvg2/misc/KSVGTimeScheduler.cpp
  
  Index: KSVGTimeScheduler.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/misc/KSVGTimeScheduler.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- KSVGTimeScheduler.cpp	5 Oct 2005 05:35:13 -0000	1.8
  +++ KSVGTimeScheduler.cpp	21 Nov 2005 08:29:31 -0000	1.9
  @@ -23,17 +23,17 @@
   #include "config.h"
   #include <kcanvas/KCanvas.h>
   
  +#include "SVGNames.h"
   #include "SVGMatrixImpl.h"
  -#include "SVGDocumentImpl.h"
  -#include "KSVGTimeScheduler.moc"
  -#include "SVGTransformableImpl.h"
  +#include "KSVGTimeScheduler.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGStyledElementImpl.h"
   #include "SVGDOMImplementationImpl.h"
   #include "SVGAnimateColorElementImpl.h"
   #include "SVGAnimatedTransformListImpl.h"
   #include "SVGAnimateTransformElementImpl.h"
   
  -using namespace KSVG;
  +namespace KSVG {
   
   SVGTimer::SVGTimer(TimeScheduler *scheduler, unsigned int ms, bool singleShot)
   {
  @@ -201,7 +201,7 @@
                   animation->handleTimerEvent(percentage);
   
               // Special cases for animate* objects depending on 'additive' attribute
  -            if(animation->id() == ID_ANIMATETRANSFORM)
  +            if(animation->hasTagName(SVGNames::animateTransformTag))
               {
                   SVGAnimateTransformElementImpl *animTransform = static_cast<SVGAnimateTransformElementImpl *>(animation);
                   if(!animTransform)
  @@ -256,7 +256,7 @@
   
                   transformMatrix->deref();
               }
  -            else if(animation->id() == ID_ANIMATECOLOR)
  +            else if(animation->hasTagName(SVGNames::animateColorTag))
               {
                   SVGAnimateColorElementImpl *animColor = static_cast<SVGAnimateColorElementImpl *>(animation);
                   if(!animColor)
  @@ -298,21 +298,11 @@
           if(targetTransforms)
           {
               SVGElementImpl *key = tit.key();
  -            SVGTransformableImpl *transform = dynamic_cast<SVGTransformableImpl *>(key);
  -
  -            if(key && key->isStyled() && transform)
  +            if(key && key->isStyled() && key->isStyledTransformable())
               {
  +                SVGStyledTransformableElementImpl *transform = static_cast<SVGStyledTransformableElementImpl *>(key);
                   transform->transform()->setAnimVal(targetTransforms);
  -
  -                // Switch to newly created baseVal...
                   transform->updateLocalTransform(transform->transform()->animVal());
  -
  -                // ... update element & child elements ...
  -                SVGStyledElementImpl *styled = static_cast<SVGStyledElementImpl *>(key);
  -                transform->updateSubtreeMatrices(styled);
  -
  -                // ... and switch back to baseVal (and do not update!)
  -                transform->updateLocalTransform(transform->transform()->baseVal());
               }
           }
   
  @@ -324,8 +314,8 @@
               if(cit.data().isValid())
               {
                   SVGAnimationElementImpl::setTargetAttribute(tit.key(),
  -                                                            KDOM::DOMString(cit.key()).handle(),
  -                                                            KDOM::DOMString(cit.data().name()).handle());
  +                                                            KDOM::DOMString(cit.key()).impl(),
  +                                                            KDOM::DOMString(cit.data().name()).impl());
               }
           }
       }
  @@ -387,7 +377,7 @@
   
   const unsigned int TimeScheduler::staticTimerInterval = 50; // milliseconds
   
  -TimeScheduler::TimeScheduler(SVGDocumentImpl *document) : QObject(), m_document(document)
  +TimeScheduler::TimeScheduler(KDOM::DocumentImpl *document) : QObject(), m_document(document)
   {
       // Create static interval timers but don't start it yet!
       m_intervalTimer = new SVGTimer(this, staticTimerInterval, false);
  @@ -511,4 +501,6 @@
       return float(m_creationTime.elapsed()) / 1000.0;
   }
   
  +} // namespace;
  +
   // vim:ts=4:noet
  
  
  
  1.6       +7 -4      SVGSupport/ksvg2/misc/KSVGTimeScheduler.h
  
  Index: KSVGTimeScheduler.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/misc/KSVGTimeScheduler.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- KSVGTimeScheduler.h	2 Sep 2005 10:03:16 -0000	1.5
  +++ KSVGTimeScheduler.h	21 Nov 2005 08:29:31 -0000	1.6
  @@ -30,6 +30,10 @@
   
   #include "SVGAnimationElementImpl.h"
   
  +namespace KDOM {
  +    class DocumentImpl;
  +}
  +
   namespace KSVG
   {
       typedef struct
  @@ -75,12 +79,11 @@
   
       typedef Q3ValueList<SVGTimer *> SVGTimerList;
   
  -    class SVGDocumentImpl;
       class TimeScheduler : public QObject
       {
       Q_OBJECT
       public:
  -        TimeScheduler(SVGDocumentImpl *doc);
  +        TimeScheduler(KDOM::DocumentImpl *doc);
           ~TimeScheduler();
   
           // Adds singleShot Timers
  @@ -104,7 +107,7 @@
   
       private: // Helper
           friend class SVGTimer;
  -        SVGDocumentImpl *document() const { return m_document; }
  +        KDOM::DocumentImpl *document() const { return m_document; }
   
       private:
           int m_savedTime;
  @@ -113,7 +116,7 @@
           SVGTimerList m_timerList;
           
           SVGTimer *m_intervalTimer;
  -        SVGDocumentImpl *m_document;
  +        KDOM::DocumentImpl *m_document;
       };
   };
   
  
  
  
  1.1                  SVGSupport/ksvg2/scripts/cssmakeprops
  
  Index: cssmakeprops
  ===================================================================
  #!/usr/bin/perl
  #
  #   This file is part of the KDE libraries
  #
  #   Copyright (C) 1999 Lars Knoll (knoll at mpi-hd.mpg.de)
  #                 2004-2005 Nikolas Zimmermann (wildfox at kde.org)
  #
  #   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.
  #
  
  my $nsFull = $ARGV[1];
  my $ns = $nsFull; $ns =~ s/K//;
  my $basename = "cssproperties";
  if (defined($ARGV[2]) && $ARGV[2] eq "-f") {
      my $inputfile = $ARGV[3];
      $inputfile =~ m/(.*)\.in/;
      $basename = $1;
  }
  
  my $filec = "$basename.c";
  my $fileh = "$basename.h";
  my $filein = "$basename.in";
  my $filegperf = "$basename.gperf";
  
  open IN, $filein or die "Can't open $filein\n";
  open header, ">$fileh" or die "Can't open $fileh\n";
  open out, ">$filegperf" or die "Can't open $filegperf\n";
  
  print out "%{\n/* This file is automatically generated from $filein by cssmakeprops, do not edit */\n#include \"$fileh\"\n%}\n";
  print out "struct css_prop {\n    int name;\n    int id;\n};\n\n";
  print out "static const struct css_prop *find${ns}Prop (register const char *str, register unsigned int len);\n\n%%\n";
  
  print header "/* This file is automatically generated from $filein by cssmakeprops, do not edit */\n/* Copyright 1999 Lars Knoll */\n\n#ifndef ${nsFull}_CSSPROPERTIES_H\n#define ${nsFull}_CSSPROPERTIES_H\n\n#include <kglobal.h>\n\n";
  
  my %amap = ();
  
  $num = 0;
  if ($nsFull ne "KDOM") {
  	$num = 171; # ALWAYS KEEP IN SYNC WITH KDOM'S PROP_TOTAL_KEYWORDS
  
  	print header "#define ${ns}CSS_PROP_INVALID 0\n";
  	print header "#define ${ns}CSS_PROP_MIN $num\n";
  
  	$num = $num - 1;
  } else {
  	print header "#define CSS_PROP_INVALID 0\n";
  	print header "#define CSS_PROP_MIN 1\n";
  }
  
  while (<IN>) {
      chomp;
      $prop = $_;
  
  	if(not($prop =~ /#/) and (length($prop) > 0)) {
  	    $num = $num + 1;
  
  	    $up = uc($prop);
  	    push(@a, $up);
  
  		$pup = $up;
  		$pup =~ s/-/_/g;
  
  	    $amap{$pup} = $num;
  		
  		if ($nsFull eq "KDOM") {
  	    	print out $prop . ", CSS_PROP_" . $pup . "\n";
  		    print header "#define CSS_PROP_" . $pup . " " . $num . "\n";
  		} else {
  	    	print out $prop . ", ${ns}CSS_PROP_" . $pup . "\n";
  		    print header "#define ${ns}CSS_PROP_" . $pup . " " . $num . "\n";
  		}
      }
  }
  
  close(IN);
  
  if ($nsFull eq "KDOM") {
  	print header "#define CSS_PROP_MAX $num\n";
  } else {
  	print header "#define ${ns}CSS_PROP_MAX $num\n";
  }
  
  print out "%%\n";
  close out;
  
  print header "\nnamespace ${nsFull}\n{\n";
  print header "    const char *getPropertyName(unsigned short id);\n";
  print header "    int getPropertyID(const char *tagStr, int len);\n";
  print header "};\n";
  
  print header "\n#endif\n";
  close header;
  
  my $result = system("/bin/sh", "-c", "gperf -c -a -L 'ANSI-C' -P -G -D -E -C -o -t -k '*' -Nfind${ns}Prop -Hhash_prop -Wwordlist_prop -Qspool_prop -s 3 $filegperf > $filec");
  if ($result) {
    unlink "$filec";
    exit $result;
  }
  
  # Avoid clashes in parser.cpp, which includes both cssvalues.c & cssproperties.c
  system("/bin/sh", "-c", "perl -pi -e \"s/TOTAL_KEYWORDS/PROP_TOTAL_KEYWORDS/g\" $filec");
  system("/bin/sh", "-c", "perl -pi -e \"s/MIN_WORD_LENGTH/PROP_MIN_WORD_LENGTH/g\" $filec");
  system("/bin/sh", "-c", "perl -pi -e \"s/MAX_WORD_LENGTH/PROP_MAX_WORD_LENGTH/g\" $filec");
  system("/bin/sh", "-c", "perl -pi -e \"s/MIN_HASH_VALUE/PROP_MIN_HASH_VALUE/g\" $filec");
  system("/bin/sh", "-c", "perl -pi -e \"s/MAX_HASH_VALUE/PROP_MAX_HASH_VALUE/g\" $filec");
  system("/bin/sh", "-c", "perl -pi -e \"s/lookup/lookupProp/g\" $filec");
  
  # read the hash mappings (is there a better way?)
  my %hmap = ();
  open(IN, "< $filec");
  while(<IN>) {
  	$lookFor = "CSS_PROP_";
  	if ($nsFull ne "KDOM") {
  		$lookFor = $ns . $lookFor;
  	}
  
  	if (/spool_prop_str(\d+), ${lookFor}([\w_]+)/) {
  		$hmap{$amap{$2}} = $1;
  	}
  }
  close(IN);  
  
  open(OUT, ">> $filec");
  print OUT "\n\nstatic const unsigned short propList[] = {\n";
  print OUT "    65535,\n";
  
  while(defined ($line = shift @a)) {
      my $l = $line;
  
  	if(not($l =~ /#/) and (length($l) > 0)) {
  		$l =~ y/-/_/;
      	
  		die if !length($hmap{$amap{$l}});
  
  	    print OUT "    " .$hmap{$amap{$l}}.",\n";
  	}
  }
  
  $lookFor = "CSS_PROP_MAX";
  if ($nsFull ne "KDOM") {
  	$lookFor = $ns . $lookFor;
  }
  
  print OUT "    65535\n};\n\n";
  print OUT "const char *${nsFull}::getPropertyName(unsigned short id)\n{\n";
  print OUT "    if (!id || id > $lookFor) return \"\";\n";
  print OUT "    return spool_prop + wordlist_prop[propList[id]].name;\n";
  print OUT "}\n";
  print OUT "\nint ${nsFull}::getPropertyID(const char *tagStr, int len)\n";
  print OUT "{\n";
  print OUT "    const struct css_prop *propPtr = find${ns}Prop(tagStr, len);\n";
  print OUT "    if(!propPtr)\n";
  print OUT "      return 0;\n";
  print OUT "    return propPtr->id;\n";
  print OUT "}\n";
  
  
  
  
  
  
  
  1.1                  SVGSupport/ksvg2/scripts/cssmakevalues
  
  Index: cssmakevalues
  ===================================================================
  #!/usr/bin/perl
  #
  #   This file is part of the KDE libraries
  #
  #   Copyright (C) 1999 Lars Knoll (knoll at mpi-hd.mpg.de)
  #                 2004-2005 Nikolas Zimmermann (wildfox at kde.org)
  #
  #   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.
  #
  
  my $nsFull = $ARGV[1];
  my $ns = $nsFull; $ns =~ s/K//;
  my $basename = "cssvalues";
  if (defined($ARGV[2]) && $ARGV[2] eq "-f") {
      my $inputfile = $ARGV[3];
      $inputfile =~ m/(.*)\.in/;
      $basename = $1;
  }
  
  my $filec = "$basename.c";
  my $fileh = "$basename.h";
  my $filein = "$basename.in";
  my $filegperf = "$basename.gperf";
  
  open IN, $filein or die "Can't open $filein\n";
  open header, ">$fileh" or die "Can't open $fileh\n";
  open out, ">$filegperf" or die "Can't open $filegperf\n";
  
  print out "%{\n/* This file is automatically generated from $filein by cssmakevalues, do not edit */\n#include \"$fileh\"\n%}\n";
  print out "struct css_val {\n    int name;\n    int id;\n};\n\n";
  print out "static const struct css_val *find${ns}Val (register const char *str, register unsigned int len);\n\n%%\n";
  
  print header "/* This file is automatically generated from $filein by cssmakevalues, do not edit */\n/* Copyright 1999 Lars Knoll */\n\n#ifndef ${nsFull}_CSSVALUES_H\n#define ${nsFull}_CSSVALUES_H\n\n#include <kglobal.h>\n\n";
  
  my %amap = ();
  
  $num = 0;
  if ($nsFull ne "KDOM") {
  	$num = 312; # ALWAYS KEEP IN SYNC WITH KDOM'S VAL_TOTAL_KEYWORDS
  
  	print header "#define ${ns}CSS_VAL_INVALID 0\n";
  	print header "#define ${ns}CSS_VAL_MIN $num\n";
  
      $num = $num - 1;
  } else {
  	print header "#define CSS_VAL_INVALID 0\n";
  	print header "#define CSS_VAL_MIN 1\n";
  }
  
  while (<IN>) {
      chomp;
      $prop = $_;
  
  	if(not($prop =~ /#/) and (length($prop) > 0)) {
  	    $num = $num + 1;
  
  	    $up = uc($prop);
  	    push(@a, $up);
  
  		$pup = $up;
  		$pup =~ s/-/_/g;
  
  	    $amap{$pup} = $num;
  		
  		if ($nsFull eq "KDOM") {
  	    	print out $prop . ", CSS_VAL_" . $pup . "\n";
  		    print header "#define CSS_VAL_" . $pup . " " . $num . "\n";
  		} else {
  	    	print out $prop . ", ${ns}CSS_VAL_" . $pup . "\n";
  		    print header "#define ${ns}CSS_VAL_" . $pup . " " . $num . "\n";
  		}
      }
  }
  
  close(IN);
  
  if ($nsFull eq "KDOM") {
  	print header "#define CSS_VAL_MAX $num\n";
  } else {
  	print header "#define ${ns}CSS_VAL_MAX $num\n";
  }
  
  print out "%%\n";
  close out;
  
  print header "\nnamespace ${nsFull}\n{\n";
  print header "    const char *getValueName(unsigned short id);\n";
  print header "    int getValueID(const char *tagStr, int len);\n";
  print header "};\n";
  
  print header "\n#endif\n";
  close header;
  
  my $result = system("/bin/sh", "-c", "gperf -c -a -L 'ANSI-C' -P -G -D -E -C -o -t -k '*' -Nfind${ns}Val -Hhash_val -Wwordlist_val -Qspool_val -s 3 $filegperf > $filec");
  if ($result) {
    unlink "$filec";
    exit $result;
  }
  
  # Avoid clashes in parser.cpp, which includes both cssvalues.c & cssproperties.c
  system("/bin/sh", "-c", "perl -pi -e \"s/TOTAL_KEYWORDS/VAL_TOTAL_KEYWORDS/g\" $filec");
  system("/bin/sh", "-c", "perl -pi -e \"s/MIN_WORD_LENGTH/VAL_MIN_WORD_LENGTH/g\" $filec");
  system("/bin/sh", "-c", "perl -pi -e \"s/MAX_WORD_LENGTH/VAL_MAX_WORD_LENGTH/g\" $filec");
  system("/bin/sh", "-c", "perl -pi -e \"s/MIN_HASH_VALUE/VAL_MIN_HASH_VALUE/g\" $filec");
  system("/bin/sh", "-c", "perl -pi -e \"s/MAX_HASH_VALUE/VAL_MAX_HASH_VALUE/g\" $filec");
  system("/bin/sh", "-c", "perl -pi -e \"s/lookup/lookupVal/g\" $filec");
  
  # read the hash mappings (is there a better way?)
  my %hmap = ();
  open(IN, "< $filec");
  while(<IN>) {
  	$lookFor = "CSS_VAL_";
  	if ($nsFull ne "KDOM") {
  		$lookFor = $ns . $lookFor;
  	}
  
  	if (/spool_val_str(\d+), ${lookFor}([\w_]+)/) {
  		$hmap{$amap{$2}} = $1;
  	}
  }
  close(IN);  
  
  open(OUT, ">> $filec");
  print OUT "\n\nstatic const unsigned short valList[] = {\n";
  print OUT "    65535,\n";
  
  while(defined ($line = shift @a)) {
      my $l = $line;
  
  	if(not($l =~ /#/) and (length($l) > 0)) {
  		$l =~ y/-/_/;
  
      	die if !length($hmap{$amap{$l}});
  
  	    print OUT "    " .$hmap{$amap{$l}}.",\n";
  	}
  }
  
  $lookFor = "CSS_VAL_MAX";
  if ($nsFull ne "KDOM") {
  	$lookFor = $ns . $lookFor;
  }
  
  print OUT "    65535\n};\n\n";
  print OUT "const char *${nsFull}::getValueName(unsigned short id)\n{\n";
  print OUT "    if (!id || id > $lookFor) return \"\";\n";
  print OUT "    return spool_val + wordlist_val[valList[id]].name;\n";
  print OUT "}\n";
  print OUT "\nint ${nsFull}::getValueID(const char *tagStr, int len)\n";
  print OUT "{\n";
  print OUT "    const struct css_val *valPtr = find${ns}Val(tagStr, len);\n";
  print OUT "    if(!valPtr)\n";
  print OUT "      return 0;\n";
  print OUT "    return valPtr->id;\n";
  print OUT "}\n";
  
  
  
  
  
  
  
  1.1                  SVGSupport/ksvg2/scripts/make_names.pl
  
  Index: make_names.pl
  ===================================================================
  #!/usr/bin/perl -w
  
  use strict;
  use Getopt::Long;
  use File::Path;
  
  
  my $namesHeader = 0;
  my $namesCpp = 0;
  my $factoryHeader = 0;
  my $factoryCpp = 0;
  
  my $wrapperNamespace = "KSVG";
  my $namespace = "SVG";
  my $tagsFile = "ksvg2/svg/tagnames.in";
  my $attrsFile = "ksvg2/svg/attrnames.in";
  
  my $outputDir = ".";
  
  GetOptions('tags=s' => \$tagsFile, 
      'attrs=s' => \$attrsFile,
      'outputDir=s' => \$outputDir,
      'namespace=s' => \$namespace);
  
  my @tags = readNames($tagsFile);
  my @attrs = readNames($attrsFile);
  my @elements = elementsForTags(@tags);
  
  mkpath($outputDir);
  my $namesBasePath = "$outputDir/${namespace}Names";
  my $factoryBasePath = "$outputDir/${namespace}ElementFactory";
  
  printNamesHeaderFile("$namesBasePath.h");
  printNamesCppFile("$namesBasePath.cpp");
  printFactoryCppFile("$factoryBasePath.cpp");
  printFactoryHeaderFile("$factoryBasePath.h");
  
  
  sub readNames
  {
  	my $namesFile = shift;
  	
  	die "Failed to open file: $namesFile" unless open(NAMES, "<", $namesFile);
  	my @names = ();
  	while (<NAMES>) {
  		s/-/_/g;
  		chomp $_;
  		push @names, $_;
  	}	
  	close(NAMES);
  	
  	return @names
  }
  
  
  sub printMacros
  {
  	my @names = @_;
  	for my $name (@names) {
  		print "    macro($name) \\\n";
  	}
  }
  
  sub printConstructors
  {
  	my @names = @_;
  	for my $name (@names) {
  		my $upperCase = upperCaseName($name);
  	
  		print "${namespace}ElementImpl *${name}Constructor(DocumentImpl *doc, bool createdByParser)\n";
  		print "{\n";
  		print "    return new ${namespace}${upperCase}ElementImpl(${name}Tag, doc);\n";
  		print "}\n\n";
  	}
  }
  
  sub printFunctionInits
  {
  	my @names = @_;
  	for my $name (@names) {
  		print "    gFunctionMap->set(${name}Tag.localName().impl(), (void*)&${name}Constructor);\n";
  	}
  }
  
  sub upperCaseName
  {
  	my $name = shift;
  	
  	$name = camelCaseName($name);
  	$name =~ s/svg/SVG/;
  	
  	if ($name =~ /^fe(.+)$/) {
  		return "FE" . ucfirst $1;
  	}
  	return ucfirst $name;
  }
  
  sub camelCaseName
  {
  	my $name = shift;
  	$name =~ s/gradient/Gradient/;
  	$name =~ s/color/Color/;
  	$name =~ s/animate/Animate/;
  	$name =~ s/matrix/Matrix/;
  	$name =~ s/node/Node/;
  	$name =~ s/turb/Turb/;
  	$name =~ s/merge/Merge/;
  	$name =~ s/gaus/Gaus/;
  	$name =~ s/blur/Blur/;
  	$name =~ s/span/Span/;
  	$name =~ s/path/Path/;
  	$name =~ s/image/Image/;
  	$name =~ s/comp/Comp/;
  	$name =~ s/off/Off/;
  	$name =~ s/flood/Flood/;
  	$name =~ s/blend/Blend/;
  	$name =~ s/trans/Trans/;
  	$name =~ s/glyph/Glyph/;
  	$name =~ s/item/Item/;
  	$name =~ s/face/Face/;
  	$name =~ s/uri/URI/;
  	$name =~ s/src/Src/;
  	$name =~ s/format/Format/;
  	$name =~ s/ref/Ref/;
  	$name =~ s/profile/Profile/;
  	$name =~ s/spot/Spot/;
  	$name =~ s/name/Name/;
  	$name =~ s/object/Object/;
  	$name =~ s/motion/Motion/;
  	$name =~ s/motion/Light/;
  	$name =~ s/kern/Kern/;
  	$name =~ s/map/Map/;
  	$name =~ s/func(.)$/"Func". uc $1/e;
  	return lcfirst $name;
  }
  
  sub elementsForTags
  {
  	my @names = @_;
  	my @filtered = ();
  	for (@names) {
  		next if /_/;
  		next if /font/i;
  		next if /glyph/i;
  		next if /kern/i;
  		next if /motion/i;
  		next if /light/i;
  		next if /mask/i;
  		next if /meta/i;
  		next if /mpath/i;
  		next if /tref/i;
  		next if /textpath/i;
  		next if /foreign/i;
  		next if /matrix/i;
  		next if /map/i;
  		next if /morph/i;
  		push(@filtered, $_);
  	}
  	return @filtered;
  }
  
  
  sub printLicenseHeader
  {
  	print "/*
   * This file is part of the $namespace DOM implementation for KDE.
   *
   * Copyright (C) 2005 Apple Computer, Inc.
   *
   * 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.
   *
   */
  
  ";
  }
  
  sub printNamesHeaderFile
  {
  	my $headerPath = shift;
  	redirectSTDOUT($headerPath);
  	
  	printLicenseHeader();
  	print "#ifndef DOM_${namespace}NAMES_H\n";
  	print "#define DOM_${namespace}NAMES_H\n\n";
  	print "#include \"dom_qname.h\"\n\n";
  	
  	print "namespace $wrapperNamespace { namespace ${namespace}Names {\n\n";
  	
  	print"#define DOM_${namespace}NAMES_FOR_EACH_TAG(macro) \\\n";
  	printMacros(@tags);
  	print"// end of macro\n\n";
  	print "#define DOM_${namespace}NAMES_FOR_EACH_ATTR(macro) \\\n";
  	printMacros(@attrs);
  	print "// end of macro\n\n";
  	
  	my $lowerNamespace = lc($namespace);
  	print"#if !DOM_${namespace}NAMES_HIDE_GLOBALS
      // Namespace
      extern const DOM::AtomicString ${lowerNamespace}NamespaceURI;
  
      // Tags
      #define DOM_NAMES_DEFINE_TAG_GLOBAL(name) extern const DOM::QualifiedName name##Tag;
      DOM_${namespace}NAMES_FOR_EACH_TAG(DOM_NAMES_DEFINE_TAG_GLOBAL)
      #undef DOM_NAMES_DEFINE_TAG_GLOBAL
  
      // Attributes
      #define DOM_NAMES_DEFINE_ATTR_GLOBAL(name) extern const DOM::QualifiedName name##Attr;
      DOM_${namespace}NAMES_FOR_EACH_ATTR(DOM_NAMES_DEFINE_ATTR_GLOBAL)
      #undef DOM_NAMES_DEFINE_ATTR_GLOBAL
  #endif
  
      void init();
  } }
  
  #endif
  
  ";
  	restoreSTDOUT();
  }
  
  sub printNamesCppFile
  {
  	my $cppPath = shift;
  	redirectSTDOUT($cppPath);
  	
  	printLicenseHeader();
  
  print "#define DOM_${namespace}NAMES_HIDE_GLOBALS 1\n\n";
  
  print "#include \"config.h\"\n";
  print "#include \"${namespace}Names.h\"\n\n";
  
  print "namespace $wrapperNamespace { namespace ${namespace}Names {
  
  using namespace KDOM;
  
  // Define a properly-sized array of pointers to avoid static initialization.
  // Use an array of pointers instead of an array of char in case there is some alignment issue.
  
  #define DEFINE_UNINITIALIZED_GLOBAL(type, name) void *name[(sizeof(type) + sizeof(void *) - 1) / sizeof(void *)];
  
  DEFINE_UNINITIALIZED_GLOBAL(DOM::AtomicString, svgNamespaceURI)
  
  #define DEFINE_TAG_GLOBAL(name) DEFINE_UNINITIALIZED_GLOBAL(DOM::QualifiedName, name##Tag)
  DOM_${namespace}NAMES_FOR_EACH_TAG(DEFINE_TAG_GLOBAL)
  
  #define DEFINE_ATTR_GLOBAL(name) DEFINE_UNINITIALIZED_GLOBAL(DOM::QualifiedName, name##Attr)
  DOM_${namespace}NAMES_FOR_EACH_ATTR(DEFINE_ATTR_GLOBAL)
  
  void init()
  {
      static bool initialized = false;
      if (initialized)
          return;
      initialized = true;
      
      // Use placement new to initialize the globals.
  ";
  
  	my $lowerNamespace = lc($namespace);
  	
      print("    DOM::AtomicString svgNS(\"http://www.w3.org/2000/svg\");\n\n");
  
      print("    // Namespace\n");
      print("    new (&${lowerNamespace}NamespaceURI) DOM::AtomicString(${lowerNamespace}NS);\n");
  	printDefinitions(\@tags, "tags", "${lowerNamespace}NS");
  	printDefinitions(\@attrs, "attributes", "nullAtom");
  
  	print "}\n\n} }";
  	restoreSTDOUT();
  }
  
  sub printElementIncludes
  {
  	my @names = @_;
  	for my $name (@names) {
  		my $upperCase = upperCaseName($name);
  		print "#include \"${namespace}${upperCase}ElementImpl.h\"\n";
  	}
  }
  
  sub printDefinitions
  {
  	my ($namesRef, $type, $namespaceURI) = @_;
  	my $singularType = substr($type, 0, -1);
  	my $shortType = substr($singularType, 0, 4);
  	my $shortCamelType = ucfirst($shortType);
  	my $shortUpperType = uc($shortType);
  	
  	print "    // " . ucfirst($type) . "\n";
  	print "    #define DEFINE_${shortUpperType}_STRING(name) const char *name##${shortCamelType}String = #name;\n";
  	print "    DOM_${namespace}NAMES_FOR_EACH_${shortUpperType}(DEFINE_${shortUpperType}_STRING)\n\n";
  	for my $name (@$namesRef) {
  		if ($name =~ /_/) {
  			my $realName = $name;
  			$realName =~ s/_/-/;
  			print "    ${name}${shortCamelType}String = \"$realName\";\n";
  		}
  	}
  	print "\n    #define INITIALIZE_${shortUpperType}_GLOBAL(name) new (&name##${shortCamelType}) DOM::QualifiedName(nullAtom, name##${shortCamelType}String, $namespaceURI);\n";
  	print "    DOM_${namespace}NAMES_FOR_EACH_${shortUpperType}(INITIALIZE_${shortUpperType}_GLOBAL)\n\n";
  }
  
  my $savedSTDOUT;
  
  sub redirectSTDOUT
  {
  	my $filepath = shift;
  	print "Writing $filepath...\n";
  	open $savedSTDOUT, ">&STDOUT" or die "Can't save STDOUT";
  	open(STDOUT, ">", $filepath) or die "Failed to open file: $filepath";
  }
  
  sub restoreSTDOUT
  {
  	open STDOUT, ">&", $savedSTDOUT or die "Can't restor STDOUT: \$oldout: $!";
  }
  
  sub printFactoryCppFile
  {
  	my $cppPath = shift;
  	redirectSTDOUT($cppPath);
  
  printLicenseHeader();
  
  print "#include \"config.h\"\n\n";
  print "#include \"SVGElementFactory.h\"\n";
  print "#include \"${namespace}Names.h\"\n\n";
  
  printElementIncludes(@elements);
  
  print "\n\n#include <kxmlcore/HashMap.h>\n\n";
  
  print "using namespace KDOM;\n";
  print "using namespace ${wrapperNamespace}::${namespace}Names;\n\n";
  
  print "typedef KXMLCore::HashMap<DOMStringImpl *, void *, KXMLCore::PointerHash<DOMStringImpl *> > FunctionMap;\n";
  print "static FunctionMap *gFunctionMap = 0;\n\n";
  
  print "namespace ${wrapperNamespace}\n{\n\n";
  
  print "typedef ${namespace}ElementImpl *(*ConstructorFunc)(DocumentImpl *doc, bool createdByParser);\n\n";
  
  printConstructors(@elements);
  
  print "
  static inline void createFunctionMapIfNecessary()
  {
      if (gFunctionMap)
          return;
      // Create the table.
      gFunctionMap = new FunctionMap;
      
      // Populate it with constructor functions.
  ";
  
  printFunctionInits(@elements);
  
  print "}\n";
  
  print "
  ${namespace}ElementImpl *${namespace}ElementFactory::create${namespace}Element(const QualifiedName& qName, DocumentImpl* doc, bool createdByParser)
  {
      if (!doc)
          return 0; // Don't allow elements to ever be made without having a doc.
  
      createFunctionMapIfNecessary();
      void* result = gFunctionMap->get(qName.localName().impl());
      if (result) {
          ConstructorFunc func = (ConstructorFunc)result;
          return (func)(doc, createdByParser);
      }
      
      return new ${namespace}ElementImpl(qName, doc);
  }
  
  }; // namespace
  
  ";
  	restoreSTDOUT();
  }
  
  sub printFactoryHeaderFile
  {
  	my $headerPath = shift;
  	redirectSTDOUT($headerPath);
  
  	printLicenseHeader();
  
  print "#ifndef ${namespace}ELEMENTFACTORY_H\n";
  print "#define ${namespace}ELEMENTFACTORY_H\n\n";
  
  print "
  namespace KDOM {
  	class ElementImpl;
  	class DocumentImpl;
  	class QualifiedName;
  	class AtomicString;
  }
  
  namespace ${wrapperNamespace}
  {
  	class ${namespace}ElementImpl;
  	
  	// The idea behind this class is that there will eventually be a mapping from namespace URIs to ElementFactories that can dispense
  	// elements.  In a compound document world, the generic createElement function (will end up being virtual) will be called.
  	class ${namespace}ElementFactory
  	{
  	public:
  		KDOM::ElementImpl *createElement(const KDOM::QualifiedName& qName, KDOM::DocumentImpl *doc, bool createdByParser = true);
  		static ${namespace}ElementImpl *create${namespace}Element(const KDOM::QualifiedName& qName, KDOM::DocumentImpl *doc, bool createdByParser = true);
  	};
  }
  
  #endif
  
  ";
  
  	restoreSTDOUT();
  }
  
  
  
  
  
  1.7       +25 -35    SVGSupport/ksvg2/svg/SVGAElementImpl.cpp
  
  Index: SVGAElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGAElementImpl.cpp	5 Oct 2005 05:35:14 -0000	1.6
  +++ SVGAElementImpl.cpp	21 Nov 2005 08:29:33 -0000	1.7
  @@ -30,17 +30,16 @@
   #include <kcanvas/KCanvasContainer.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include <ksvg2/KSVGPart.h>
  -#include "SVGDocumentImpl.h"
   #include "SVGAElementImpl.h"
   #include "SVGAnimatedStringImpl.h"
   
   using namespace KSVG;
   
  -SVGAElementImpl::SVGAElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGURIReferenceImpl(), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl()
  +SVGAElementImpl::SVGAElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGURIReferenceImpl(), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_target = 0;
   }
  @@ -56,48 +55,36 @@
       return lazy_create<SVGAnimatedStringImpl>(m_target, this);
   }
   
  -void SVGAElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGAElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_TARGET:
  -        {
  -            target()->setBaseVal(value.handle());
  -            break;
  -        }
  -        default:
  +    if (attr->name() == SVGNames::targetAttr) {
  +        target()->setBaseVal(value.impl());
  +    } else {
  +        if(SVGURIReferenceImpl::parseMappedAttribute(attr))
           {
  -            if(SVGURIReferenceImpl::parseAttribute(attr))
  -            {
  -                m_hasAnchor = attr->value() != 0;
  -                return;
  -            }
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGTransformableImpl::parseAttribute(attr)) return;
  -            
  -            SVGStyledElementImpl::parseAttribute(attr);
  +            m_isLink = attr->value() != 0;
  +            return;
           }
  -    };
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;        
  +        SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
  -KCanvasItem *SVGAElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGAElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    return KCanvasCreator::self()->createContainer(canvas, style);
  +    return canvas()->renderingDevice()->createContainer(arena, style, this);
   }
   
   void SVGAElementImpl::defaultEventHandler(KDOM::EventImpl *evt)
   {
       // TODO : should use CLICK instead
       kdDebug() << k_funcinfo << endl;
  -    if((evt->id() == KDOM::MOUSEUP_EVENT && m_hasAnchor))
  +    if((evt->type() == KDOM::EventNames::mouseupEvent && m_isLink))
       {
  -        KDOM::MouseEventImpl *e = 0;
  -        if(evt->id() == KDOM::MOUSEUP_EVENT)
  -            e = static_cast<KDOM::MouseEventImpl*>(evt);
  +        KDOM::MouseEventImpl *e = static_cast<KDOM::MouseEventImpl*>(evt);
   
           QString url;
           QString utarget;
  @@ -106,10 +93,13 @@
               KDOM::EventTargetImpl::defaultEventHandler(evt);
               return;
           }
  -
  -        url = KDOM::DOMString(KDOM::Helper::parseURL(href()->baseVal())).string();
  +#if APPLE_CHANGES
  +        url = KDOM::parseURL(href()->baseVal()).qstring();
  +#else
  +        url = KDOM::DOMString(KDOM::Helper::parseURL(href()->baseVal())).qstring();
  +#endif
           kdDebug() << "url : " << url << endl;
  -        utarget = KDOM::DOMString(getAttribute(ATTR_TARGET)).string();
  +        utarget = KDOM::DOMString(getAttribute(SVGNames::targetAttr)).qstring();
           kdDebug() << "utarget : " << utarget << endl;
   
           if(e && e->button() == 1)
  
  
  
  1.5       +7 -9      SVGSupport/ksvg2/svg/SVGAElementImpl.h
  
  Index: SVGAElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGAElementImpl.h	1 Sep 2005 07:35:31 -0000	1.4
  +++ SVGAElementImpl.h	21 Nov 2005 08:29:33 -0000	1.5
  @@ -26,33 +26,31 @@
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
   #include "SVGURIReferenceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
   namespace KSVG
   {
       class SVGAnimatedStringImpl;
  -    class SVGAElementImpl : public SVGStyledElementImpl,
  +    class SVGAElementImpl : public SVGStyledTransformableElementImpl,
                               public SVGURIReferenceImpl,
                               public SVGTestsImpl,
                               public SVGLangSpaceImpl,
  -                            public SVGExternalResourcesRequiredImpl,
  -                            public SVGTransformableImpl
  +                            public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGAElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGAElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGAElementImpl();
   
           // 'SVGAElement' functions
           SVGAnimatedStringImpl *target() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           // Derived from: 'SVGStyledElementImpl'
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
           virtual void defaultEventHandler(KDOM::EventImpl *evt);
   
  
  
  
  1.8       +6 -6      SVGSupport/ksvg2/svg/SVGAngleImpl.cpp
  
  Index: SVGAngleImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAngleImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGAngleImpl.cpp	24 Oct 2005 06:31:51 -0000	1.7
  +++ SVGAngleImpl.cpp	21 Nov 2005 08:29:33 -0000	1.8
  @@ -89,7 +89,7 @@
   {
       m_valueAsString = KDOM::DOMString(valueAsString);
   
  -    QString s = m_valueAsString.string();
  +    QString s = m_valueAsString.qstring();
   
       bool bOK;
       m_valueInSpecifiedUnits = s.toDouble(&bOK);
  @@ -110,23 +110,23 @@
   
   KDOM::DOMStringImpl *SVGAngleImpl::valueAsString() const
   {
  -    m_valueAsString.string().setNum(m_valueInSpecifiedUnits);
  +    m_valueAsString.qstring().setNum(m_valueInSpecifiedUnits);
   
       switch(m_unitType)
       {
           case SVG_ANGLETYPE_UNSPECIFIED:
           case SVG_ANGLETYPE_DEG:
  -            m_valueAsString.string() += QString::fromLatin1("deg");
  +            m_valueAsString.qstring() += QString::fromLatin1("deg");
               break;
           case SVG_ANGLETYPE_RAD:
  -            m_valueAsString.string() += QString::fromLatin1("rad");
  +            m_valueAsString.qstring() += QString::fromLatin1("rad");
               break;
           case SVG_ANGLETYPE_GRAD:
  -            m_valueAsString.string() += QString::fromLatin1("grad");
  +            m_valueAsString.qstring() += QString::fromLatin1("grad");
               break;
       }
       
  -    return m_valueAsString.handle();
  +    return m_valueAsString.impl();
   }
   
   void SVGAngleImpl::newValueSpecifiedUnits(unsigned short unitType, float valueInSpecifiedUnits)
  
  
  
  1.7       +19 -17    SVGSupport/ksvg2/svg/SVGAnimateColorElementImpl.cpp
  
  Index: SVGAnimateColorElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimateColorElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGAnimateColorElementImpl.cpp	5 Oct 2005 05:35:14 -0000	1.6
  +++ SVGAnimateColorElementImpl.cpp	21 Nov 2005 08:29:33 -0000	1.7
  @@ -22,14 +22,16 @@
   
   #include "config.h"
   #include "SVGAnimateColorElementImpl.h"
  -#include "SVGDocumentImpl.h"
  +#include "SVGSVGElementImpl.h"
  +#include "KSVGTimeScheduler.h"
  +#include "kdom/DOMString.h"
   
   #include <kdebug.h>
   
   using namespace KSVG;
   
  -SVGAnimateColorElementImpl::SVGAnimateColorElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGAnimationElementImpl(doc, id, prefix)
  +SVGAnimateColorElementImpl::SVGAnimateColorElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGAnimationElementImpl(tagName, doc)
   {
       m_toColor = new SVGColorImpl();
       m_toColor->ref();
  @@ -61,7 +63,7 @@
           SVGColorImpl *temp = new SVGColorImpl();
           temp->ref();
               
  -        temp->setRGBColor(targetAttribute());
  +        temp->setRGBColor(targetAttribute().impl());
   
           m_initialColor = temp->color();
           
  @@ -74,7 +76,7 @@
               case FROM_TO_ANIMATION:
               {
                   KDOM::DOMString toColorString(m_to);
  -                m_toColor->setRGBColor(toColorString.handle());
  +                m_toColor->setRGBColor(toColorString.impl());
       
                   KDOM::DOMString fromColorString;
                   if(!m_from.isEmpty()) // from-to animation
  @@ -82,7 +84,7 @@
                   else // to animation
                       fromColorString = m_initialColor.name();
       
  -                m_fromColor->setRGBColor(fromColorString.handle());    
  +                m_fromColor->setRGBColor(fromColorString.impl());    
   
                   // Calculate color differences, once.
                   QColor qTo = m_toColor->color();
  @@ -98,7 +100,7 @@
               case FROM_BY_ANIMATION:
               {
                   KDOM::DOMString byColorString(m_by);
  -                m_toColor->setRGBColor(byColorString.handle());
  +                m_toColor->setRGBColor(byColorString.impl());
   
                   KDOM::DOMString fromColorString;
               
  @@ -107,7 +109,7 @@
                   else // by animation
                       fromColorString = m_initialColor.name();
   
  -                m_fromColor->setRGBColor(fromColorString.handle());
  +                m_fromColor->setRGBColor(fromColorString.impl());
   
                   QColor qBy = m_toColor->color();
                   QColor qFrom = m_fromColor->color();
  @@ -120,7 +122,7 @@
                   QColor qTo = clampColor(r, g, b);
               
                   KDOM::DOMString toColorString(qTo.name());
  -                m_toColor->setRGBColor(toColorString.handle());
  +                m_toColor->setRGBColor(toColorString.impl());
               
                   m_redDiff = qTo.red() - qFrom.red();
                   m_greenDiff = qTo.green() - qFrom.green();
  @@ -137,10 +139,10 @@
               }
           }
   
  -        SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        if(document)
  +        SVGSVGElementImpl *ownerSVG = ownerSVGElement();
  +        if (ownerSVG)
           {
  -            document->timeScheduler()->connectIntervalTimer(this);
  +            ownerSVG->timeScheduler()->connectIntervalTimer(this);
               m_connected = true;
           }
   
  @@ -181,10 +183,10 @@
                   }
   
                   KDOM::DOMString toColorString(value2);
  -                m_toColor->setRGBColor(toColorString.handle());
  +                m_toColor->setRGBColor(toColorString.impl());
       
                   KDOM::DOMString fromColorString(value1);
  -                m_fromColor->setRGBColor(fromColorString.handle());    
  +                m_fromColor->setRGBColor(fromColorString.impl());    
   
                   QColor qTo = m_toColor->color();
                   QColor qFrom = m_fromColor->color();
  @@ -233,10 +235,10 @@
               return;
           }
   
  -        SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        if(document)
  +        SVGSVGElementImpl *ownerSVG = ownerSVGElement();
  +        if (ownerSVG)
           {
  -            document->timeScheduler()->disconnectIntervalTimer(this);
  +            ownerSVG->timeScheduler()->disconnectIntervalTimer(this);
               m_connected = false;
           }
   
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGAnimateColorElementImpl.h
  
  Index: SVGAnimateColorElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimateColorElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGAnimateColorElementImpl.h	1 Sep 2005 07:35:31 -0000	1.4
  +++ SVGAnimateColorElementImpl.h	21 Nov 2005 08:29:33 -0000	1.5
  @@ -31,7 +31,7 @@
       class SVGAnimateColorElementImpl : public SVGAnimationElementImpl
       {
       public:
  -        SVGAnimateColorElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGAnimateColorElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGAnimateColorElementImpl();
   
           virtual void handleTimerEvent(double timePercentage);
  
  
  
  1.7       +19 -18    SVGSupport/ksvg2/svg/SVGAnimateElementImpl.cpp
  
  Index: SVGAnimateElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimateElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGAnimateElementImpl.cpp	5 Oct 2005 05:35:14 -0000	1.6
  +++ SVGAnimateElementImpl.cpp	21 Nov 2005 08:29:33 -0000	1.7
  @@ -22,14 +22,15 @@
   
   #include "config.h"
   #include "SVGAnimateElementImpl.h"
  -#include "SVGDocumentImpl.h"
  +#include "SVGSVGElementImpl.h"
  +#include "KSVGTimeScheduler.h"
   
   #include <kdebug.h>
   
   using namespace KSVG;
   
  -SVGAnimateElementImpl::SVGAnimateElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGAnimationElementImpl(doc, id, prefix)
  +SVGAnimateElementImpl::SVGAnimateElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGAnimationElementImpl(tagName, doc)
   {
       m_currentItem = -1;
   }
  @@ -44,8 +45,8 @@
       if(!m_connected)
       {
           // Save initial attribute value...
  -        KDOM::DOMStringImpl *attr = targetAttribute();
  -        m_savedTo = (attr ? attr->string() : QString::null);
  +        KDOM::DOMString attr(targetAttribute());
  +        m_savedTo = attr.qstring();
   
           // Animation mode handling
           switch(detectAnimationMode())
  @@ -54,7 +55,7 @@
               case FROM_TO_ANIMATION:
               {
                   KDOM::DOMString toColorString(m_to);
  -                m_toColor->setRGBColor(toColorString.handle());
  +                m_toColor->setRGBColor(toColorString.impl());
       
                   KDOM::DOMString fromColorString;
                   if(!m_from.isEmpty()) // from-to animation
  @@ -62,7 +63,7 @@
                   else // to animation
                       fromColorString = m_initialColor.name();
       
  -                m_fromColor->setRGBColor(fromColorString.handle());    
  +                m_fromColor->setRGBColor(fromColorString.impl());    
   
                   // Calculate color differences, once.
                   QColor qTo = m_toColor->color();
  @@ -78,7 +79,7 @@
               case FROM_BY_ANIMATION:
               {
                   KDOM::DOMString byColorString(m_by);
  -                m_toColor->setRGBColor(byColorString.handle());
  +                m_toColor->setRGBColor(byColorString.impl());
   
                   KDOM::DOMString fromColorString;
               
  @@ -87,7 +88,7 @@
                   else // by animation
                       fromColorString = m_initialColor.name();
   
  -                m_fromColor->setRGBColor(fromColorString.handle());
  +                m_fromColor->setRGBColor(fromColorString.impl());
   
                   QColor qBy = m_toColor->color();
                   QColor qFrom = m_fromColor->color();
  @@ -100,7 +101,7 @@
                   QColor qTo = clampColor(r, g, b);
               
                   KDOM::DOMString toColorString(qTo.name());
  -                m_toColor->setRGBColor(toColorString.handle());
  +                m_toColor->setRGBColor(toColorString.impl());
               
                   m_redDiff = qTo.red() - qFrom.red();
                   m_greenDiff = qTo.green() - qFrom.green();
  @@ -117,10 +118,10 @@
               }
           }
   
  -        SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        if(document)
  +        SVGSVGElementImpl *ownerSVG = ownerSVGElement();
  +        if(ownerSVG)
           {
  -            document->timeScheduler()->connectIntervalTimer(this);
  +            ownerSVG->timeScheduler()->connectIntervalTimer(this);
               m_connected = true;
           }
   
  @@ -161,10 +162,10 @@
                   }
   
                   KDOM::DOMString toColorString(value2);
  -                m_toColor->setRGBColor(toColorString.handle());
  +                m_toColor->setRGBColor(toColorString.impl());
       
                   KDOM::DOMString fromColorString(value1);
  -                m_fromColor->setRGBColor(fromColorString.handle());    
  +                m_fromColor->setRGBColor(fromColorString.impl());    
   
                   QColor qTo = m_toColor->color();
                   QColor qFrom = m_fromColor->color();
  @@ -205,10 +206,10 @@
               return;
           }
   
  -        SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        if(document)
  +        SVGSVGElementImpl *ownerSVG = ownerSVGElement();
  +        if(ownerSVG)
           {
  -            document->timeScheduler()->disconnectIntervalTimer(this);
  +            ownerSVG->timeScheduler()->disconnectIntervalTimer(this);
               m_connected = false;
           }
   
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGAnimateElementImpl.h
  
  Index: SVGAnimateElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimateElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGAnimateElementImpl.h	1 Sep 2005 07:35:32 -0000	1.4
  +++ SVGAnimateElementImpl.h	21 Nov 2005 08:29:34 -0000	1.5
  @@ -30,7 +30,7 @@
       class SVGAnimateElementImpl : public SVGAnimationElementImpl
       {
       public:
  -        SVGAnimateElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGAnimateElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGAnimateElementImpl();
   
           virtual void handleTimerEvent(double timePercentage);
  
  
  
  1.7       +55 -137   SVGSupport/ksvg2/svg/SVGAnimateTransformElementImpl.cpp
  
  Index: SVGAnimateTransformElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimateTransformElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGAnimateTransformElementImpl.cpp	5 Oct 2005 05:35:15 -0000	1.6
  +++ SVGAnimateTransformElementImpl.cpp	21 Nov 2005 08:29:34 -0000	1.7
  @@ -23,18 +23,18 @@
   #include "config.h"
   #include <kdom/core/AttrImpl.h>
   
  -#include <kcanvas/KCanvasItem.h>
  +#include <kcanvas/RenderPath.h>
   #include <kcanvas/KCanvasMatrix.h>
   
  -#include "svgattrs.h"
   #include "SVGAngleImpl.h"
   #include "SVGMatrixImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGTransformImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGTransformListImpl.h"
   #include "SVGAnimatedTransformListImpl.h"
   #include "SVGAnimateTransformElementImpl.h"
  +#include "SVGSVGElementImpl.h"
  +#include "KSVGTimeScheduler.h"
   
   #include <kdebug.h>
   
  @@ -43,20 +43,13 @@
   using namespace KSVG;
   using namespace std;
   
  -SVGAnimateTransformElementImpl::SVGAnimateTransformElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGAnimationElementImpl(doc, id, prefix)
  +SVGAnimateTransformElementImpl::SVGAnimateTransformElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGAnimationElementImpl(tagName, doc)
   {
       m_type = SVG_TRANSFORM_UNKNOWN;
  -    
  -    m_toTransform = 0;
  -    m_fromTransform = 0;
  -    m_initialTransform = 0;
   
       m_currentItem = -1;
   
  -    m_lastMatrix = 0;
  -    m_transformMatrix = 0;
  -
       m_rotateSpecialCase = false;
       m_toRotateSpecialCase = false;
       m_fromRotateSpecialCase = false;
  @@ -64,77 +57,54 @@
   
   SVGAnimateTransformElementImpl::~SVGAnimateTransformElementImpl()
   {
  -    if(m_toTransform)
  -        m_toTransform->deref();
  -    if(m_fromTransform)
  -        m_fromTransform->deref();
  -    if(m_initialTransform)
  -        m_initialTransform->deref();
  -    
  -    if(m_lastMatrix)    
  -        m_lastMatrix->deref();
  -    if(m_transformMatrix)
  -        m_transformMatrix->deref();
   }
   
  -void SVGAnimateTransformElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGAnimateTransformElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_TYPE:
  -        {
  -            if(value == "translate")
  -                m_type = SVG_TRANSFORM_TRANSLATE;
  -            else if(value == "scale")
  -                m_type = SVG_TRANSFORM_SCALE;
  -            else if(value == "rotate")
  -                m_type = SVG_TRANSFORM_ROTATE;
  -            else if(value == "skewX")
  -                m_type = SVG_TRANSFORM_SKEWX;
  -            else if(value == "skewY")
  -                m_type = SVG_TRANSFORM_SKEWY;
  -
  -            break;
  -        }                
  -        default:
  -            SVGAnimationElementImpl::parseAttribute(attr);
  -    };
  +    if (attr->name() == SVGNames::typeAttr) {
  +        if(value == "translate")
  +            m_type = SVG_TRANSFORM_TRANSLATE;
  +        else if(value == "scale")
  +            m_type = SVG_TRANSFORM_SCALE;
  +        else if(value == "rotate")
  +            m_type = SVG_TRANSFORM_ROTATE;
  +        else if(value == "skewX")
  +            m_type = SVG_TRANSFORM_SKEWX;
  +        else if(value == "skewY")
  +            m_type = SVG_TRANSFORM_SKEWY;
  +    } else {
  +        SVGAnimationElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   void SVGAnimateTransformElementImpl::handleTimerEvent(double timePercentage)
   {
       // Start condition.
       if(!m_connected)
  -    {    
  -        if(m_initialTransform)
  -            m_initialTransform->deref();
  -    
  +    {
           m_initialTransform = 0;
           
           // Save initial transform... (needed for fill="remove" or additve="sum")
  -        SVGTransformableImpl *transform = dynamic_cast<SVGTransformableImpl *>(targetElement());
  -        SVGTransformListImpl *transformList = (transform ? transform->transform()->baseVal() : 0);
  -        if(transformList)
  +        if(targetElement()->isStyledTransformable())
           {
  -            transformList->ref();
  -            
  -            for(unsigned long i = 0; i < transformList->numberOfItems(); i++)
  +            SVGStyledTransformableElementImpl *transform = static_cast<SVGStyledTransformableElementImpl *>(targetElement());
  +            SharedPtr<SVGTransformListImpl> transformList = transform->transform()->baseVal();
  +            if (transformList)
               {
  -                SVGTransformImpl *value = transformList->getItem(i);
  -                if(!value)
  -                    continue;
  -                    
  -                if(value->type() == m_type)
  +                for(unsigned long i = 0; i < transformList->numberOfItems(); i++)
                   {
  -                    value->ref();
  -                    m_initialTransform = value;
  -                    break;
  +                    SVGTransformImpl *value = transformList->getItem(i);
  +                    if(!value)
  +                        continue;
  +                        
  +                    if(value->type() == m_type)
  +                    {
  +                        m_initialTransform = value;
  +                        break;
  +                    }
                   }
               }
  -
  -            transformList->deref();
           }
                   
           // Animation mode handling
  @@ -142,16 +112,10 @@
           {
               case TO_ANIMATION:
               case FROM_TO_ANIMATION:
  -            {
  -                if(m_toTransform)
  -                    m_toTransform->deref();
  -        
  +            {        
                   m_toTransform = parseTransformValue(m_to);
                   m_toRotateSpecialCase = m_rotateSpecialCase;
   
  -                if(m_fromTransform)
  -                    m_fromTransform->deref();
  -
                   if(!m_from.isEmpty()) // from-to animation
                   {
                       m_fromTransform = parseTransformValue(m_from);
  @@ -160,31 +124,20 @@
                   else // to animation
                   {
                       m_fromTransform = m_initialTransform;
  -                    m_fromTransform->ref();
  -
                       m_fromRotateSpecialCase = false;
                   }
   
                   if(!m_fromTransform)
  -                {
                       m_fromTransform = new SVGTransformImpl();
  -                    m_fromTransform->ref();
  -                }
  -
  +                
                   break;
               }
               case BY_ANIMATION:
               case FROM_BY_ANIMATION:
               {
  -                if(m_toTransform)
  -                    m_toTransform->deref();
  -
                   m_toTransform = parseTransformValue(m_by);
                   m_toRotateSpecialCase = m_rotateSpecialCase;
  -            
  -                if(m_fromTransform)
  -                    m_fromTransform->deref();
  -    
  +
                   if(!m_from.isEmpty()) // from-by animation
                   {
                       m_fromTransform = parseTransformValue(m_from);
  @@ -197,10 +150,7 @@
                   }
   
                   if(!m_fromTransform)
  -                {
                       m_fromTransform = new SVGTransformImpl();
  -                    m_fromTransform->ref();
  -                }
   
                   SVGMatrixImpl *byMatrix = m_toTransform->matrix();
                   SVGMatrixImpl *fromMatrix = m_fromTransform->matrix();
  @@ -218,10 +168,10 @@
               }
           }
           
  -        SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        if(document)
  +        SVGSVGElementImpl *ownerSVG = ownerSVGElement();
  +        if(ownerSVG)
           {
  -            document->timeScheduler()->connectIntervalTimer(this);
  +            ownerSVG->timeScheduler()->connectIntervalTimer(this);
               m_connected = true;
           }
   
  @@ -261,16 +211,10 @@
                       useTimePercentage = 1.0;
                   }
   
  -                if(m_toTransform)
  -                    m_toTransform->deref();
  -        
  -                m_toTransform = parseTransformValue(value2.string());
  +                m_toTransform = parseTransformValue(value2.qstring());
                   m_toRotateSpecialCase = m_rotateSpecialCase;
  -
  -                if(m_fromTransform)
  -                    m_fromTransform->deref();
       
  -                m_fromTransform = parseTransformValue(value1.string());
  +                m_fromTransform = parseTransformValue(value1.qstring());
                   m_fromRotateSpecialCase = m_rotateSpecialCase;
   
                   m_currentItem = itemByPercentage;
  @@ -290,16 +234,13 @@
           qFromMatrix = m_fromTransform->matrix()->qmatrix();
   
       if(!m_transformMatrix)
  -    {
           m_transformMatrix = new SVGMatrixImpl();
  -        m_transformMatrix->ref();
  -    }
       else
       {
           m_transformMatrix->reset();
   
           if(isAccumulated() && repeations() != 0.0 && m_lastMatrix)
  -            m_transformMatrix->multiply(m_lastMatrix);
  +            m_transformMatrix->multiply(m_lastMatrix.get());
       }
       
       switch(m_type)
  @@ -376,57 +317,35 @@
       {
           if((m_repeatCount > 0 && m_repeations < m_repeatCount - 1) || isIndefinite(m_repeatCount))
           {
  -            if(m_lastMatrix)
  -                m_lastMatrix->deref();
  -
               m_lastMatrix = new SVGMatrixImpl();
  -            m_lastMatrix->ref();
  -    
  +            
               if(m_transformMatrix)
  -                m_lastMatrix->copy(m_transformMatrix);
  +                m_lastMatrix->copy(m_transformMatrix.get());
   
               m_repeations++;
               return;
           }
   
  -        SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        if(document)
  +        SVGSVGElementImpl *ownerSVG = ownerSVGElement();
  +        if(ownerSVG)
           {
  -            document->timeScheduler()->disconnectIntervalTimer(this);
  +            ownerSVG->timeScheduler()->disconnectIntervalTimer(this);
               m_connected = false;
           }
   
           // Reset...
           m_currentItem = -1;
  -
  -        if(m_toTransform)
  -            m_toTransform->deref();
  -
           m_toTransform = 0;
  -
  -        if(m_fromTransform)
  -            m_fromTransform->deref();
  -
           m_fromTransform = 0;
  -
  -        if(m_initialTransform)
  -            m_initialTransform->deref();
  -        
           m_initialTransform = 0;
   
           if(!isFrozen())
           {
  -            if(m_transformMatrix)
  -                m_transformMatrix->deref();
  -
               SVGMatrixImpl *initial = initialMatrix();
               if(initial)
                   m_transformMatrix = initial;
               else
  -            {
                   m_transformMatrix = new SVGMatrixImpl();
  -                m_transformMatrix->ref();
  -            }
           }
       }
   }
  @@ -573,27 +492,26 @@
   
   SVGMatrixImpl *SVGAnimateTransformElementImpl::initialMatrix() const
   {
  -    SVGTransformableImpl *transform = dynamic_cast<SVGTransformableImpl *>(targetElement());
  +    if (!targetElement()->isStyledTransformable())
  +        return 0;
  +    SVGStyledTransformableElementImpl *transform = static_cast<SVGStyledTransformableElementImpl *>(targetElement());
       SVGTransformListImpl *transformList = (transform ? transform->transform()->baseVal() : 0);
       if(!transformList)
           return 0;
       
  -    SVGTransformImpl *result = transformList->concatenate();
  +    SharedPtr<SVGTransformImpl> result = transformList->concatenate();
       if(!result)
           return 0;
   
  -    result->ref();
  -
       SVGMatrixImpl *ret = result->matrix();
       ret->ref();
   
  -    result->deref();
       return ret;
   }
   
   SVGMatrixImpl *SVGAnimateTransformElementImpl::transformMatrix() const
   {
  -    return m_transformMatrix;
  +    return m_transformMatrix.get();
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +7 -7      SVGSupport/ksvg2/svg/SVGAnimateTransformElementImpl.h
  
  Index: SVGAnimateTransformElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimateTransformElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGAnimateTransformElementImpl.h	1 Sep 2005 07:35:32 -0000	1.4
  +++ SVGAnimateTransformElementImpl.h	21 Nov 2005 08:29:34 -0000	1.5
  @@ -34,10 +34,10 @@
       class SVGAnimateTransformElementImpl : public SVGAnimationElementImpl
       {
       public:
  -        SVGAnimateTransformElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGAnimateTransformElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGAnimateTransformElementImpl();
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           virtual void handleTimerEvent(double timePercentage);
   
  @@ -52,12 +52,12 @@
           int m_currentItem;
           SVGTransformType m_type;
   
  -        SVGTransformImpl *m_toTransform;
  -        SVGTransformImpl *m_fromTransform;
  -        SVGTransformImpl *m_initialTransform;
  +        SharedPtr<SVGTransformImpl> m_toTransform;
  +        SharedPtr<SVGTransformImpl> m_fromTransform;
  +        SharedPtr<SVGTransformImpl> m_initialTransform;
   
  -        SVGMatrixImpl *m_lastMatrix;
  -        SVGMatrixImpl *m_transformMatrix;
  +        SharedPtr<SVGMatrixImpl> m_lastMatrix;
  +        SharedPtr<SVGMatrixImpl> m_transformMatrix;
   
           mutable bool m_rotateSpecialCase : 1;
           bool m_toRotateSpecialCase : 1, m_fromRotateSpecialCase : 1;
  
  
  
  1.5       +8 -8      SVGSupport/ksvg2/svg/SVGAnimatedLengthListImpl.cpp
  
  Index: SVGAnimatedLengthListImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimatedLengthListImpl.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGAnimatedLengthListImpl.cpp	5 Oct 2005 05:35:16 -0000	1.4
  +++ SVGAnimatedLengthListImpl.cpp	21 Nov 2005 08:29:34 -0000	1.5
  @@ -39,13 +39,13 @@
       return new SVGLengthListImpl(m_context);
   }
   
  -void SVGAnimatedLengthListImpl::assign(SVGLengthListImpl *src, SVGLengthListImpl *dst) const
  -{
  -    if(!src || !dst)
  -        return;
  -
  -    // Use SVGList<SVGLengthImpl>::operator=
  -    *dst = *src;
  -}
  +//void SVGAnimatedLengthListImpl::assign(SVGLengthListImpl *src, SVGLengthListImpl *dst) const
  +//{
  +//    if(!src || !dst)
  +//        return;
  +//
  +//    // Use SVGList<SVGLengthImpl>::operator=
  +//    *dst = *src;
  +//}
   
   // vim:ts=4:noet
  
  
  
  1.4       +1 -1      SVGSupport/ksvg2/svg/SVGAnimatedLengthListImpl.h
  
  Index: SVGAnimatedLengthListImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimatedLengthListImpl.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SVGAnimatedLengthListImpl.h	1 Sep 2005 07:35:33 -0000	1.3
  +++ SVGAnimatedLengthListImpl.h	21 Nov 2005 08:29:34 -0000	1.4
  @@ -38,7 +38,7 @@
   
       protected:
           virtual SVGLengthListImpl *create() const;
  -        virtual void assign(SVGLengthListImpl *src, SVGLengthListImpl *dst) const;
  +        //virtual void assign(SVGLengthListImpl *src, SVGLengthListImpl *dst) const;
       };
   };
   
  
  
  
  1.5       +8 -8      SVGSupport/ksvg2/svg/SVGAnimatedNumberListImpl.cpp
  
  Index: SVGAnimatedNumberListImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimatedNumberListImpl.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGAnimatedNumberListImpl.cpp	5 Oct 2005 05:35:16 -0000	1.4
  +++ SVGAnimatedNumberListImpl.cpp	21 Nov 2005 08:29:34 -0000	1.5
  @@ -39,13 +39,13 @@
       return new SVGNumberListImpl(m_context);
   }
   
  -void SVGAnimatedNumberListImpl::assign(SVGNumberListImpl *src, SVGNumberListImpl *dst) const
  -{
  -    if(!src || !dst)
  -        return;
  -
  -    // Use SVGList<SVGNumberImpl>::operator=
  -    *dst = *src;
  -}
  +//void SVGAnimatedNumberListImpl::assign(SVGNumberListImpl *src, SVGNumberListImpl *dst) const
  +//{
  +//    if(!src || !dst)
  +//        return;
  +//
  +//    // Use SVGList<SVGNumberImpl>::operator=
  +//    *dst = *src;
  +//}
   
   // vim:ts=4:noet
  
  
  
  1.4       +1 -1      SVGSupport/ksvg2/svg/SVGAnimatedNumberListImpl.h
  
  Index: SVGAnimatedNumberListImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimatedNumberListImpl.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SVGAnimatedNumberListImpl.h	1 Sep 2005 07:35:34 -0000	1.3
  +++ SVGAnimatedNumberListImpl.h	21 Nov 2005 08:29:34 -0000	1.4
  @@ -38,7 +38,7 @@
   
       protected:
           virtual SVGNumberListImpl *create() const;
  -        virtual void assign(SVGNumberListImpl *src, SVGNumberListImpl *dst) const;
  +        //virtual void assign(SVGNumberListImpl *src, SVGNumberListImpl *dst) const;
       };
   };
   
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGAnimatedStringImpl.cpp
  
  Index: SVGAnimatedStringImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimatedStringImpl.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGAnimatedStringImpl.cpp	5 Oct 2005 05:35:16 -0000	1.4
  +++ SVGAnimatedStringImpl.cpp	21 Nov 2005 08:29:34 -0000	1.5
  @@ -36,7 +36,7 @@
   KDOM::DOMStringImpl *SVGAnimatedStringImpl::create() const
   {
       // TODO: Do we need notifications on string manipulations? ie. appendData()?
  -    return new KDOM::DOMStringImpl();
  +    return new KDOM::DOMStringImpl("");
   }
   
   void SVGAnimatedStringImpl::assign(KDOM::DOMStringImpl *src, KDOM::DOMStringImpl *dst) const
  
  
  
  1.4       +1 -1      SVGSupport/ksvg2/svg/SVGAnimatedStringImpl.h
  
  Index: SVGAnimatedStringImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimatedStringImpl.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SVGAnimatedStringImpl.h	1 Sep 2005 07:35:34 -0000	1.3
  +++ SVGAnimatedStringImpl.h	21 Nov 2005 08:29:34 -0000	1.4
  @@ -23,7 +23,7 @@
   #ifndef KSVG_SVGAnimatedStringImpl_H
   #define KSVG_SVGAnimatedStringImpl_H
   
  -#include "DOMStringImpl.h"
  +#include "kdom/core/DOMStringImpl.h"
   #include "SVGAnimatedTemplate.h"
   
   namespace KSVG
  
  
  
  1.6       +3 -3      SVGSupport/ksvg2/svg/SVGAnimatedTemplate.h
  
  Index: SVGAnimatedTemplate.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimatedTemplate.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGAnimatedTemplate.h	24 Oct 2005 06:31:52 -0000	1.5
  +++ SVGAnimatedTemplate.h	21 Nov 2005 08:29:34 -0000	1.6
  @@ -58,7 +58,7 @@
   
           void setBaseVal(T *baseVal) const
           {
  -            KDOM_SAFE_SET(m_baseVal, baseVal);
  +            KDOM::KDOM_SAFE_SET(m_baseVal, baseVal);
   
               if(m_context)
                   m_context->notifyAttributeChange();
  @@ -79,7 +79,7 @@
   
           void setAnimVal(T *animVal) const
           {
  -            KDOM_SAFE_SET(m_animVal, animVal);
  +            KDOM::KDOM_SAFE_SET(m_animVal, animVal);
               
               // I think this is superfluous... -- ECS 4/25/05
               if(m_context)
  @@ -96,7 +96,7 @@
   
           // This methods need to be reimplemented.        
           virtual T *create() const = 0;
  -        virtual void assign(T *src, T *dst) const = 0;
  +        //virtual void assign(T *src, T *dst) const = 0;
   
           // Attribute notification context
           const SVGStyledElementImpl *m_context;
  
  
  
  1.5       +8 -8      SVGSupport/ksvg2/svg/SVGAnimatedTransformListImpl.cpp
  
  Index: SVGAnimatedTransformListImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimatedTransformListImpl.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGAnimatedTransformListImpl.cpp	5 Oct 2005 05:35:17 -0000	1.4
  +++ SVGAnimatedTransformListImpl.cpp	21 Nov 2005 08:29:34 -0000	1.5
  @@ -39,13 +39,13 @@
       return new SVGTransformListImpl(m_context);
   }
   
  -void SVGAnimatedTransformListImpl::assign(SVGTransformListImpl *src, SVGTransformListImpl *dst) const
  -{
  -    if(!src || !dst)
  -        return;
  -    
  -    // Use SVGList<SVGTransformImpl>::operator=
  -    *dst = *src;
  -}
  +//void SVGAnimatedTransformListImpl::assign(SVGTransformListImpl *src, SVGTransformListImpl *dst) const
  +//{
  +//    if(!src || !dst)
  +//        return;
  +//    
  +//    // Use SVGList<SVGTransformImpl>::operator=
  +//    *dst = *src;
  +//}
   
   // vim:ts=4:noet
  
  
  
  1.4       +1 -1      SVGSupport/ksvg2/svg/SVGAnimatedTransformListImpl.h
  
  Index: SVGAnimatedTransformListImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimatedTransformListImpl.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SVGAnimatedTransformListImpl.h	1 Sep 2005 07:35:34 -0000	1.3
  +++ SVGAnimatedTransformListImpl.h	21 Nov 2005 08:29:34 -0000	1.4
  @@ -38,7 +38,7 @@
   
       protected:
           virtual SVGTransformListImpl *create() const;
  -        virtual void assign(SVGTransformListImpl *src, SVGTransformListImpl *dst) const;
  +        //virtual void assign(SVGTransformListImpl *src, SVGTransformListImpl *dst) const;
       };
   };
   
  
  
  
  1.10      +213 -260  SVGSupport/ksvg2/svg/SVGAnimationElementImpl.cpp
  
  Index: SVGAnimationElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimationElementImpl.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SVGAnimationElementImpl.cpp	14 Oct 2005 20:20:54 -0000	1.9
  +++ SVGAnimationElementImpl.cpp	21 Nov 2005 08:29:35 -0000	1.10
  @@ -25,25 +25,24 @@
   
   #include <kdom/kdom.h>
   #include <kdom/core/AttrImpl.h>
  -#include <kdom/core/CDFInterface.h>
   #include <kdom/core/DOMImplementationImpl.h>
   #include <kdom/css/CSSStyleDeclarationImpl.h>
   #include <kdom/DOMString.h>
   
  -#include "svgattrs.h"
   #include "SVGHelper.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGURIReferenceImpl.h"
   #include "SVGStyledElementImpl.h"
   #include "SVGAnimationElementImpl.h"
  +#include "SVGSVGElementImpl.h"
  +#include "KSVGTimeScheduler.h"
   
   #include <cmath>
   
   using namespace KSVG;
   using namespace std;
   
  -SVGAnimationElementImpl::SVGAnimationElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGElementImpl(doc, id, prefix), SVGTestsImpl(), SVGExternalResourcesRequiredImpl()
  +SVGAnimationElementImpl::SVGAnimationElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGElementImpl(tagName, doc), SVGTestsImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_connected = false;
   
  @@ -90,7 +89,7 @@
           if(!m_href.isEmpty())
           {
               KDOM::DOMString targetId = SVGURIReferenceImpl::getTarget(m_href);
  -            KDOM::ElementImpl *element = ownerDocument()->getElementById(targetId.handle());
  +            KDOM::ElementImpl *element = ownerDocument()->getElementById(targetId.impl());
               m_targetElement = svg_dynamic_cast(element);
           }
           else if(parentNode())
  @@ -130,259 +129,212 @@
       return m_simpleDuration;
   }
   
  -void SVGAnimationElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGAnimationElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_HREF:
  -        {
  -            m_href = value.string();
  -            break;
  -        }
  -        case ATTR_ATTRIBUTENAME:
  -        {
  -            m_attributeName = value.string();
  -            break;
  -        }
  -        case ATTR_ATTRIBUTETYPE:
  +    if (attr->name() == SVGNames::hrefAttr)
  +            m_href = value.qstring();
  +    else if (attr->name() == SVGNames::attributeNameAttr)
  +            m_attributeName = value.qstring();
  +    else if (attr->name() == SVGNames::attributeTypeAttr)
  +    {
  +        if(value == "CSS")
  +            m_attributeType = ATTRIBUTETYPE_CSS;
  +        else if(value == "XML")
  +            m_attributeType = ATTRIBUTETYPE_XML;
  +        else if(value == "auto")
  +            m_attributeType = ATTRIBUTETYPE_AUTO;
  +    }
  +    else if (attr->name() == SVGNames::beginAttr || attr->name() == SVGNames::endAttr)
  +    {
  +        // Create list
  +        SVGStringListImpl *temp = new SVGStringListImpl();
  +        temp->ref();
  +
  +        // Feed data into list
  +        SVGHelper::ParseSeperatedList(temp, value.qstring(), ';');
  +
  +        // Parse data
  +        for(unsigned int i = 0; i < temp->numberOfItems(); i++)
           {
  -            if(value == "CSS")
  -                m_attributeType = ATTRIBUTETYPE_CSS;
  -            else if(value == "XML")
  -                m_attributeType = ATTRIBUTETYPE_XML;
  -            else if(value == "auto")
  -                m_attributeType = ATTRIBUTETYPE_AUTO;
  +            QString current = KDOM::DOMString(temp->getItem(i)).qstring();
   
  -            break;
  -        }                
  -        case ATTR_BEGIN:
  -        case ATTR_END:
  -        {
  -            // Create list
  -            SVGStringListImpl *temp = new SVGStringListImpl();
  -            temp->ref();
  +            if(current.startsWith(QString::fromLatin1("accessKey")))
  +            {
  +                // Register keyDownEventListener for the character
  +                QString character = current.mid(current.length() - 2, 1);
   
  -            // Feed data into list
  -            SVGHelper::ParseSeperatedList(temp, value.string(), ';');
  +                kdDebug() << k_funcinfo << " Supposed to register accessKey Character: " << character << " UNSUPPORTED!" << endl;
  +            }
  +            else if(current.startsWith(QString::fromLatin1("wallclock")))
  +            {
  +                int firstBrace = current.find('(');
  +                int secondBrace = current.find(')');
   
  -            // Parse data
  -            for(unsigned int i = 0; i < temp->numberOfItems(); i++)
  +                QString wallclockValue = current.mid(firstBrace + 1, secondBrace - firstBrace - 2);
  +                kdDebug() << k_funcinfo << " Supposed to use wallClock value: " << wallclockValue << " UNSUPPORTED!" << endl;
  +            }
  +            else if(current.contains('.'))
               {
  -                QString current = KDOM::DOMString(temp->getItem(i)).string();
  +                int dotPosition = current.find('.');
   
  -                if(current.startsWith(QString::fromLatin1("accessKey")))
  +                QString element = current.mid(0, dotPosition);
  +                QString clockValue;
  +                if(current.contains(QString::fromLatin1("begin")))
  +                    clockValue = current.mid(dotPosition + 6);
  +                else if(current.contains(QString::fromLatin1("end")))
  +                    clockValue = current.mid(dotPosition + 4);
  +                else if(current.contains(QString::fromLatin1("repeat")))
  +                    clockValue = current.mid(dotPosition + 7);
  +                else // DOM2 Event Reference
                   {
  -                    // Register keyDownEventListener for the character
  -                    QString character = current.mid(current.length() - 2, 1);
  +                    int plusMinusPosition = -1;
   
  -                    kdDebug() << k_funcinfo << " Supposed to register accessKey Character: " << character << " UNSUPPORTED!" << endl;
  -                }
  -                else if(current.startsWith(QString::fromLatin1("wallclock")))
  -                {
  -                    int firstBrace = current.find('(');
  -                    int secondBrace = current.find(')');
  +                    if(current.contains('+'))
  +                        plusMinusPosition = current.find('+');
  +                    else if(current.contains('-'))
  +                        plusMinusPosition = current.find('-');
   
  -                    QString wallclockValue = current.mid(firstBrace + 1, secondBrace - firstBrace - 2);
  -                    kdDebug() << k_funcinfo << " Supposed to use wallClock value: " << wallclockValue << " UNSUPPORTED!" << endl;
  +                    QString event = current.mid(dotPosition + 1, plusMinusPosition - dotPosition - 1);
  +                    clockValue = current.mid(dotPosition + event.length() + 1);
  +
  +                    kdDebug() << k_funcinfo << " Supposed to use DOM Event: " << event << " UNSUPPORTED!" << endl;
                   }
  -                else if(current.contains('.'))
  +            }
  +            else
  +            {
  +                if(attr->name() == SVGNames::beginAttr)
                   {
  -                    int dotPosition = current.find('.');
  -
  -                    QString element = current.mid(0, dotPosition);
  -                    QString clockValue;
  -                    if(current.contains(QString::fromLatin1("begin")))
  -                        clockValue = current.mid(dotPosition + 6);
  -                    else if(current.contains(QString::fromLatin1("end")))
  -                        clockValue = current.mid(dotPosition + 4);
  -                    else if(current.contains(QString::fromLatin1("repeat")))
  -                        clockValue = current.mid(dotPosition + 7);
  -                    else // DOM2 Event Reference
  -                    {
  -                        int plusMinusPosition = -1;
  -
  -                        if(current.contains('+'))
  -                            plusMinusPosition = current.find('+');
  -                        else if(current.contains('-'))
  -                            plusMinusPosition = current.find('-');
  +                    m_begin = parseClockValue(current);
  +                    if(!isIndefinite(m_begin))
  +                        m_begin *= 1000.0;
   
  -                        QString event = current.mid(dotPosition + 1, plusMinusPosition - dotPosition - 1);
  -                        clockValue = current.mid(dotPosition + event.length() + 1);
  -
  -                        kdDebug() << k_funcinfo << " Supposed to use DOM Event: " << event << " UNSUPPORTED!" << endl;
  -                    }
  +                    kdDebug() << k_funcinfo << " Setting begin time to " << m_begin << " ms!" << endl;
                   }
                   else
                   {
  -                    if(id == ATTR_BEGIN)
  -                    {
  -                        m_begin = parseClockValue(current);
  -                        if(!isIndefinite(m_begin))
  -                            m_begin *= 1000.0;
  -
  -                        kdDebug() << k_funcinfo << " Setting begin time to " << m_begin << " ms!" << endl;
  -                    }
  -                    else
  -                    {
  -                        m_end = parseClockValue(current);
  -                        if(!isIndefinite(m_end))
  -                            m_end *= 1000.0;
  +                    m_end = parseClockValue(current);
  +                    if(!isIndefinite(m_end))
  +                        m_end *= 1000.0;
   
  -                        kdDebug() << k_funcinfo << " Setting end time to " << m_end << " ms!" << endl;
  -                    }
  +                    kdDebug() << k_funcinfo << " Setting end time to " << m_end << " ms!" << endl;
                   }
               }
  -
  -            temp->deref();
  -            break;
  -        }
  -        case ATTR_DUR:
  -        {
  -            m_simpleDuration = parseClockValue(value.string());
  -            if(!isIndefinite(m_simpleDuration))
  -                m_simpleDuration *= 1000.0;
  -
  -            break;
  -        }
  -        case ATTR_MIN:
  -        {
  -            m_min = parseClockValue(value.string());
  -            if(!isIndefinite(m_min))
  -                m_min *= 1000.0;
  -
  -            break;
  -        }
  -        case ATTR_MAX:
  -        {
  -            m_max = parseClockValue(value.string());
  -            if(!isIndefinite(m_max))
  -                m_max *= 1000.0;
  -
  -            break;
  -        }
  -        case ATTR_RESTART:
  -        {
  -            if(value == "whenNotActive")
  -                m_restart = RESTART_WHENNOTACTIVE;
  -            else if(value == "never")
  -                m_restart = RESTART_NEVER;
  -            else if(value == "always")
  -                m_restart = RESTART_ALWAYS;
  -
  -            break;
  -        }
  -        case ATTR_REPEATCOUNT:
  -        {
  -            if(value == "indefinite")
  -                m_repeatCount = DBL_MAX;
  -            else
  -                m_repeatCount = value.string().toDouble();
  -                
  -            break;
  -        }
  -        case ATTR_REPEATDUR:
  -        {
  -            m_repeatDur = value.string();
  -            break;
  -        }
  -        case ATTR_FILL:
  -        {
  -            if(value == "freeze")
  -                m_fill = FILL_FREEZE;
  -            else if(value == "remove")
  -                m_fill = FILL_REMOVE;
  -
  -            break;
  -        }
  -        case ATTR_CALCMODE:
  -        {
  -            if(value == "discrete")
  -                m_calcMode = CALCMODE_DISCRETE;
  -            else if(value == "linear")
  -                m_calcMode = CALCMODE_LINEAR;
  -            else if(value == "spline")
  -                m_calcMode = CALCMODE_SPLINE;
  -            else if(value == "paced")
  -                m_calcMode = CALCMODE_PACED;
  -            
  -            break;
  -        }
  -        case ATTR_VALUES:
  -        {
  -            if(m_values)
  -                m_values->deref();
  -
  -            m_values = new SVGStringListImpl();
  -            m_values->ref();
  -                        
  -            SVGHelper::ParseSeperatedList(m_values, value.string(), ';');
  -            break;
           }
  -        case ATTR_KEYTIMES:
  -        {
  -            if(m_keyTimes)
  -                m_keyTimes->deref();
  -
  -            m_keyTimes = new SVGStringListImpl();
  -            m_keyTimes->ref();
  -                        
  -            SVGHelper::ParseSeperatedList(m_keyTimes, value.string(), ';');
  -            break;
  -        }
  -        case ATTR_KEYSPLINES:
  -        {
  -            if(m_keySplines)
  -                m_keySplines->deref();
   
  -            m_keySplines = new SVGStringListImpl();
  -            m_keySplines->ref();
  -                        
  -            SVGHelper::ParseSeperatedList(m_keySplines, value.string(), ';');
  -            break;
  -        }
  -        case ATTR_FROM:
  -        {
  -            m_from = value.string();
  -            break;
  -        }
  -        case ATTR_TO:
  -        {
  -            m_to = value.string();
  -            break;
  -        }
  -        case ATTR_BY:
  -        {
  -            m_by = value.string();
  -            break;
  -        }
  -        case ATTR_ADDITIVE:
  -        {
  -            if(value == "sum")
  -                m_additive = ADDITIVE_SUM;
  -            else if(value == "replace")
  -                m_additive = ADDITIVE_REPLACE;
  -                        
  -            break;
  -        }
  -        case ATTR_ACCUMULATE:
  -        {
  -            if(value == "sum")
  -                m_accumulate = ACCUMULATE_SUM;
  -            else if(value == "none")
  -                m_accumulate = ACCUMULATE_NONE;
  -                        
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            
  -            SVGElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        temp->deref();
  +    }
  +    else if (attr->name() == SVGNames::durAttr)
  +    {
  +        m_simpleDuration = parseClockValue(value.qstring());
  +        if(!isIndefinite(m_simpleDuration))
  +            m_simpleDuration *= 1000.0;
  +    }
  +    else if (attr->name() == SVGNames::minAttr)
  +    {
  +        m_min = parseClockValue(value.qstring());
  +        if(!isIndefinite(m_min))
  +            m_min *= 1000.0;
  +    }
  +    else if (attr->name() == SVGNames::maxAttr)
  +    {
  +        m_max = parseClockValue(value.qstring());
  +        if(!isIndefinite(m_max))
  +            m_max *= 1000.0;
  +    }
  +    else if (attr->name() == SVGNames::restartAttr)
  +    {
  +        if(value == "whenNotActive")
  +            m_restart = RESTART_WHENNOTACTIVE;
  +        else if(value == "never")
  +            m_restart = RESTART_NEVER;
  +        else if(value == "always")
  +            m_restart = RESTART_ALWAYS;
  +    }
  +    else if (attr->name() == SVGNames::repeatCountAttr)
  +    {
  +        if(value == "indefinite")
  +            m_repeatCount = DBL_MAX;
  +        else
  +            m_repeatCount = value.qstring().toDouble();
  +    }
  +    else if (attr->name() == SVGNames::repeatDurAttr)
  +        m_repeatDur = value.qstring();
  +    else if (attr->name() == SVGNames::fillAttr)
  +    {
  +        if(value == "freeze")
  +            m_fill = FILL_FREEZE;
  +        else if(value == "remove")
  +            m_fill = FILL_REMOVE;
  +    }
  +    else if (attr->name() == SVGNames::calcModeAttr)
  +    {
  +        if(value == "discrete")
  +            m_calcMode = CALCMODE_DISCRETE;
  +        else if(value == "linear")
  +            m_calcMode = CALCMODE_LINEAR;
  +        else if(value == "spline")
  +            m_calcMode = CALCMODE_SPLINE;
  +        else if(value == "paced")
  +            m_calcMode = CALCMODE_PACED;
  +    }
  +    else if (attr->name() == SVGNames::valuesAttr)
  +    {
  +        if(m_values)
  +            m_values->deref();
  +
  +        m_values = new SVGStringListImpl();
  +        m_values->ref();
  +                    
  +        SVGHelper::ParseSeperatedList(m_values, value.qstring(), ';');
  +    }
  +    else if (attr->name() == SVGNames::keyTimesAttr)
  +    {
  +        if(m_keyTimes)
  +            m_keyTimes->deref();
  +
  +        m_keyTimes = new SVGStringListImpl();
  +        m_keyTimes->ref();
  +                    
  +        SVGHelper::ParseSeperatedList(m_keyTimes, value.qstring(), ';');
  +    }
  +    else if (attr->name() == SVGNames::keySplinesAttr)
  +    {
  +        if(m_keySplines)
  +            m_keySplines->deref();
  +
  +        m_keySplines = new SVGStringListImpl();
  +        m_keySplines->ref();
  +                    
  +        SVGHelper::ParseSeperatedList(m_keySplines, value.qstring(), ';');
  +    }
  +    else if (attr->name() == SVGNames::fromAttr)
  +        m_from = value.qstring();
  +    else if (attr->name() == SVGNames::toAttr)
  +        m_to = value.qstring();
  +    else if (attr->name() == SVGNames::byAttr)
  +        m_by = value.qstring();
  +    else if (attr->name() == SVGNames::additiveAttr)
  +    {
  +        if(value == "sum")
  +            m_additive = ADDITIVE_SUM;
  +        else if(value == "replace")
  +            m_additive = ADDITIVE_REPLACE;
  +    }
  +    else if (attr->name() == SVGNames::accumulateAttr)
  +    {
  +        if(value == "sum")
  +            m_accumulate = ACCUMULATE_SUM;
  +        else if(value == "none")
  +            m_accumulate = ACCUMULATE_NONE;
  +    }
  +    else
  +    {
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        
  +        SVGElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   double SVGAnimationElementImpl::parseClockValue(const QString &data) const
  @@ -483,28 +435,27 @@
       return result;
   }
   
  -void SVGAnimationElementImpl::close()
  +void SVGAnimationElementImpl::closeRenderer()
   {
       kdDebug() << " --> ADDING " << KDOM::DOMString(localName()) << " animation (startTime = " << getStartTime() << " ms) to scheduler!" << endl;
  -    SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -    if(!document)
  +    SVGSVGElementImpl *ownerSVG = ownerSVGElement();
  +    if(!ownerSVG)
           return;
   
  -    document->timeScheduler()->addTimer(this, qRound(getStartTime()));
  +    ownerSVG->timeScheduler()->addTimer(this, qRound(getStartTime()));
   }
   
  -KDOM::DOMStringImpl *SVGAnimationElementImpl::targetAttribute() const
  +KDOM::DOMString SVGAnimationElementImpl::targetAttribute() const
   {
       if(!targetElement())
  -        return 0;
  +        return KDOM::DOMString();
       
       SVGElementImpl *target = targetElement();
       SVGStyledElementImpl *styled = NULL;
       if (target && target->isStyled())
           styled = static_cast<SVGStyledElementImpl *>(target);
  -    KDOM::CDFInterface *interface = (styled ? styled->ownerDocument()->implementation()->cdfInterface() : 0);
       
  -    KDOM::DOMStringImpl *ret = 0;
  +    KDOM::DOMString ret;
   
       EAttributeType attributeType = m_attributeType;
       if(attributeType == ATTRIBUTETYPE_AUTO)
  @@ -515,9 +466,9 @@
           // for the target element. The implementation must first search through the
           // list of CSS properties for a matching property name, and if none is found,
           // search the default XML namespace for the element.
  -        if(styled && styled->style() && interface)
  +        if(styled && styled->style())
           {
  -            int id = interface->getPropertyID(m_attributeName.ascii(), m_attributeName.length());
  +            int id = KDOM::getPropertyID(m_attributeName.ascii(), m_attributeName.length());
               if(styled->style()->getPropertyCSSValue(id))
                   attributeType = ATTRIBUTETYPE_CSS;
           }
  @@ -525,33 +476,33 @@
       
       if(attributeType == ATTRIBUTETYPE_CSS)
       {
  -        if(styled && styled->style() && interface)
  +        if(styled && styled->style())
           {
  -            int id = interface->getPropertyID(m_attributeName.ascii(), m_attributeName.length());
  +            int id = KDOM::getPropertyID(m_attributeName.ascii(), m_attributeName.length());
               ret = styled->style()->getPropertyValue(id);
           }
       }
   
  -    if(attributeType == ATTRIBUTETYPE_XML || (!ret || (ret && ret->isEmpty())))
  -        ret = targetElement()->getAttribute(KDOM::DOMString(m_attributeName).handle());
  +    if(attributeType == ATTRIBUTETYPE_XML || ret.isEmpty())
  +        ret = targetElement()->getAttribute(KDOM::DOMString(m_attributeName).impl());
   
       return ret;
   }
   
   void SVGAnimationElementImpl::setTargetAttribute(KDOM::DOMStringImpl *value)
   {
  -    SVGAnimationElementImpl::setTargetAttribute(targetElement(), KDOM::DOMString(m_attributeName).handle(), value, m_attributeType);
  +    SVGAnimationElementImpl::setTargetAttribute(targetElement(), KDOM::DOMString(m_attributeName).impl(), value, m_attributeType);
   }
   
  -void SVGAnimationElementImpl::setTargetAttribute(SVGElementImpl *target, KDOM::DOMStringImpl *name, KDOM::DOMStringImpl *value, EAttributeType type)
  +void SVGAnimationElementImpl::setTargetAttribute(SVGElementImpl *target, KDOM::DOMStringImpl *nameImpl, KDOM::DOMStringImpl *value, EAttributeType type)
   {
  -    if(!target || !name || !value)
  +    if(!target || !nameImpl || !value)
           return;
  +    KDOM::DOMString name(nameImpl);
       
       SVGStyledElementImpl *styled = NULL;
       if (target && target->isStyled())
           styled = static_cast<SVGStyledElementImpl *>(target);
  -    KDOM::CDFInterface *interface = (styled ? styled->ownerDocument()->implementation()->cdfInterface() : 0);
   
       EAttributeType attributeType = type;
       if(type == ATTRIBUTETYPE_AUTO)
  @@ -564,19 +515,21 @@
           // search the default XML namespace for the element.
           if(styled && styled->style())
           {
  -            int id = interface->getPropertyID(name->string().ascii(), name->string().length());
  +            QString attrName = name.qstring();
  +            int id = KDOM::getPropertyID(attrName.ascii(), attrName.length());
               if(styled->style()->getPropertyCSSValue(id))
                   attributeType = ATTRIBUTETYPE_CSS;
           }
       }
  -    
  +    int exceptioncode;
       if(attributeType == ATTRIBUTETYPE_CSS && styled && styled->style())
       {
  -        int id = interface->getPropertyID(name->string().ascii(), name->string().length());
  -        styled->style()->setProperty(id, value);
  +        QString attrName = name.qstring();
  +        int id = KDOM::getPropertyID(attrName.ascii(), attrName.length());
  +        styled->style()->setProperty(id, value, false, exceptioncode);
       }
       else if(attributeType == ATTRIBUTETYPE_XML)
  -        target->setAttribute(name, value);
  +        target->setAttribute(nameImpl, value, exceptioncode);
   }
   
   QString SVGAnimationElementImpl::attributeName() const
  
  
  
  1.6       +5 -5      SVGSupport/ksvg2/svg/SVGAnimationElementImpl.h
  
  Index: SVGAnimationElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGAnimationElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGAnimationElementImpl.h	8 Sep 2005 08:03:34 -0000	1.5
  +++ SVGAnimationElementImpl.h	21 Nov 2005 08:29:35 -0000	1.6
  @@ -85,7 +85,7 @@
                                       public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGAnimationElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGAnimationElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGAnimationElementImpl();
   
           // 'SVGAnimationElement' functions
  @@ -96,17 +96,17 @@
           double getCurrentTime() const;
           double getSimpleDuration() const;
       
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  -        virtual bool implementsCanvasItem() const { return false; }
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return false; }
   
  -        virtual void close();
  +        virtual void closeRenderer();
   
           // Helpers
           virtual void handleTimerEvent(double timePercentage) = 0;
   
           double parseClockValue(const QString &data) const;
   
  -        KDOM::DOMStringImpl *targetAttribute() const;
  +        KDOM::DOMString targetAttribute() const;
           void setTargetAttribute(KDOM::DOMStringImpl *value);
   
           static void setTargetAttribute(SVGElementImpl *target,
  
  
  
  1.7       +17 -32    SVGSupport/ksvg2/svg/SVGCircleElementImpl.cpp
  
  Index: SVGCircleElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGCircleElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGCircleElementImpl.cpp	5 Oct 2005 05:35:17 -0000	1.6
  +++ SVGCircleElementImpl.cpp	21 Nov 2005 08:29:35 -0000	1.7
  @@ -23,7 +23,7 @@
   #include "config.h"
   #include <kdom/core/AttrImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGCircleElementImpl.h"
   #include "SVGAnimatedLengthImpl.h"
  @@ -33,8 +33,8 @@
   
   using namespace KSVG;
   
  -SVGCircleElementImpl::SVGCircleElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl()
  +SVGCircleElementImpl::SVGCircleElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_cx = m_cy = m_r = 0;
   }
  @@ -64,37 +64,22 @@
       return lazy_create<SVGAnimatedLengthImpl>(m_r, this, LM_OTHER, viewportElement());
   }
   
  -void SVGCircleElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGCircleElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  +    const KDOM::AtomicString& value = attr->value();
  +    if (attr->name() == SVGNames::cxAttr)
  +        cx()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::cyAttr)
  +        cy()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::rAttr)
  +        r()->baseVal()->setValueAsString(value.impl());
  +    else
       {
  -        case ATTR_CX:
  -        {
  -            cx()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_CY:
  -        {
  -            cy()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_R:
  -        {
  -            r()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGTransformableImpl::parseAttribute(attr)) return;
  -            
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   KCPathDataList SVGCircleElementImpl::toPathData() const
  
  
  
  1.5       +6 -8      SVGSupport/ksvg2/svg/SVGCircleElementImpl.h
  
  Index: SVGCircleElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGCircleElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGCircleElementImpl.h	1 Sep 2005 07:35:35 -0000	1.4
  +++ SVGCircleElementImpl.h	21 Nov 2005 08:29:35 -0000	1.5
  @@ -25,21 +25,19 @@
   
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
   namespace KSVG
   {
       class SVGAnimatedLengthImpl;
  -    class SVGCircleElementImpl : public SVGStyledElementImpl,
  +    class SVGCircleElementImpl : public SVGStyledTransformableElementImpl,
                                    public SVGTestsImpl,
                                    public SVGLangSpaceImpl,
  -                                   public SVGExternalResourcesRequiredImpl,
  -                                 public SVGTransformableImpl
  +                                 public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGCircleElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGCircleElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGCircleElementImpl();
   
           // 'SVGCircleElement' functions
  @@ -47,9 +45,9 @@
           SVGAnimatedLengthImpl *cy() const;
           SVGAnimatedLengthImpl *r() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
           virtual KCPathDataList toPathData() const;
   
           virtual const SVGStyledElementImpl *pushAttributeContext(const SVGStyledElementImpl *context);
  
  
  
  1.7       +27 -40    SVGSupport/ksvg2/svg/SVGClipPathElementImpl.cpp
  
  Index: SVGClipPathElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGClipPathElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGClipPathElementImpl.cpp	5 Oct 2005 05:35:17 -0000	1.6
  +++ SVGClipPathElementImpl.cpp	21 Nov 2005 08:29:35 -0000	1.7
  @@ -25,21 +25,19 @@
   
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasPath.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGClipPathElementImpl.h"
   #include "SVGAnimatedEnumerationImpl.h"
   
   using namespace KSVG;
   
  -SVGClipPathElementImpl::SVGClipPathElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl()
  +SVGClipPathElementImpl::SVGClipPathElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_clipPathUnits = 0;
       m_clipper = 0;
  @@ -62,44 +60,31 @@
       return m_clipPathUnits;
   }
   
  -void SVGClipPathElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGClipPathElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    if (attr->name() == SVGNames::clipPathUnitsAttr)
       {
  -        case ATTR_CLIPPATHUNITS:
  -        {
  -            if(value == "userSpaceOnUse")
  -                clipPathUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  -            else if(value == "objectBoundingBox")
  -                clipPathUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGTransformableImpl::parseAttribute(attr)) return;
  -            
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(value == "userSpaceOnUse")
  +            clipPathUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  +        else if(value == "objectBoundingBox")
  +            clipPathUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  +    }
  +   else
  +    {
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
  -void SVGClipPathElementImpl::close()
  +KCanvasClipper *SVGClipPathElementImpl::canvasResource()
   {
  +    if(!canvas())
  +        return 0;
       if(!m_clipper)
  -    {
  -        SVGDocumentImpl *doc = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        KCanvas *canvas = (doc ? doc->canvas() : 0);
  -        if(!canvas)
  -            return;
  -
  -        m_clipper = static_cast<KCanvasClipper *>(canvas->renderingDevice()->createResource(RS_CLIPPER));
  -        canvas->registry()->addResourceById(KDOM::DOMString(getId()).string(), m_clipper);
  -    }
  +        m_clipper = static_cast<KCanvasClipper *>(canvas()->renderingDevice()->createResource(RS_CLIPPER));
       else
           m_clipper->resetClipData();
   
  @@ -107,13 +92,15 @@
   
       for(KDOM::NodeImpl *n = firstChild(); n != 0; n = n->nextSibling())
       {
  -        SVGStyledElementImpl *e = dynamic_cast<SVGStyledElementImpl *>(n);
  -        if(e)
  +        SVGElementImpl *e = svg_dynamic_cast(n);
  +        if(e && e->isStyled())
           {
  -            SVGRenderStyle *renderStyle = static_cast<SVGRenderStyle *>(e->renderStyle());
  -            m_clipper->addClipData(e->toPathData(), (KCWindRule) renderStyle->clipRule(), bbox);
  +            SVGStyledElementImpl *styled = static_cast<SVGStyledElementImpl *>(e);
  +            SVGRenderStyle *style = getDocument()->styleSelector()->styleForElement(this)->svgStyle();
  +            m_clipper->addClipData(styled->toPathData(), (KCWindRule) style->clipRule(), bbox);
           }
       }
  +    return m_clipper;
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +7 -10     SVGSupport/ksvg2/svg/SVGClipPathElementImpl.h
  
  Index: SVGClipPathElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGClipPathElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGClipPathElementImpl.h	1 Sep 2005 07:35:35 -0000	1.4
  +++ SVGClipPathElementImpl.h	21 Nov 2005 08:29:35 -0000	1.5
  @@ -25,32 +25,29 @@
   
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
  -class KCanvasClipper;
  +#include "KCanvasResources.h"
   
   namespace KSVG
   {
       class SVGAnimatedEnumerationImpl;
  -    class SVGClipPathElementImpl : public SVGStyledElementImpl,
  +    class SVGClipPathElementImpl : public SVGStyledTransformableElementImpl,
                                      public SVGTestsImpl,
                                      public SVGLangSpaceImpl,
  -                                   public SVGExternalResourcesRequiredImpl,
  -                                   public SVGTransformableImpl
  +                                   public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGClipPathElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGClipPathElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGClipPathElementImpl();
   
  -        // Derived from: 'ElementImpl'
  -        virtual void close();
  +        virtual KCanvasClipper *canvasResource();
   
           // 'SVGClipPathElement' functions
           SVGAnimatedEnumerationImpl *clipPathUnits() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           // Derived from: 'SVGStyledElementImpl'
           virtual bool allowAttachChildren(KDOM::ElementImpl *) const { return false; }
  
  
  
  1.7       +10 -12    SVGSupport/ksvg2/svg/SVGColorImpl.cpp
  
  Index: SVGColorImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGColorImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGColorImpl.cpp	5 Oct 2005 05:35:18 -0000	1.6
  +++ SVGColorImpl.cpp	21 Nov 2005 08:29:35 -0000	1.7
  @@ -26,9 +26,7 @@
   #include <kdom/css/RGBColorImpl.h>
   
   #include "ksvg.h"
  -#include <ksvg2/css/cssvalues.h>
   #include "SVGColorImpl.h"
  -#include "CDFInterface.h"
   #include "SVGDOMImplementationImpl.h"
   
   using namespace KSVG;
  @@ -62,7 +60,7 @@
   
   KDOM::RGBColorImpl *SVGColorImpl::rgbColor() const
   {
  -    return new KDOM::RGBColorImpl(SVGDOMImplementationImpl::self()->cdfInterface(), m_qColor);
  +    return new KDOM::RGBColorImpl(m_qColor);
   }
   
   static const QColor cmap[] =
  @@ -223,7 +221,7 @@
       if(!m_rgbColor)
           return;
   
  -    QString parse = KDOM::DOMString(m_rgbColor).string().stripWhiteSpace();
  +    QString parse = KDOM::DOMString(m_rgbColor).qstring().stripWhiteSpace();
       if(parse.startsWith(QString::fromLatin1("rgb(")))
       {
           QStringList colors = QStringList::split(',', parse);
  @@ -253,13 +251,13 @@
       }
       else
       {
  -        QString name(m_rgbColor->unicode(), m_rgbColor->length());
  -        name = name.lower();
  -        int col = KSVG::getValueID(name.ascii(), name.length());
  -        if(col == 0)
  +        KDOM::DOMString colorName = m_rgbColor->lower();
  +        QString name = colorName.qstring();
  +//        int col = KSVG::getValueID(name.ascii(), name.length());
  +//        if(col == 0)
               m_qColor = QColor(name);
  -        else
  -            m_qColor = cmap[col - SVGCSS_VAL_ALICEBLUE];
  +//        else
  +//            m_qColor = cmap[col - SVGCSS_VAL_ALICEBLUE];
       }
   }
   
  @@ -274,12 +272,12 @@
       m_colorType = colorType;
   }
   
  -KDOM::DOMStringImpl *SVGColorImpl::cssText() const
  +KDOM::DOMString SVGColorImpl::cssText() const
   {
       if(m_colorType == SVG_COLORTYPE_RGBCOLOR)
           return m_rgbColor;
   
  -    return 0;
  +    return KDOM::DOMString();
   }
   
   const QColor &SVGColorImpl::color() const
  
  
  
  1.6       +1 -1      SVGSupport/ksvg2/svg/SVGColorImpl.h
  
  Index: SVGColorImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGColorImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGColorImpl.h	1 Sep 2005 09:39:14 -0000	1.5
  +++ SVGColorImpl.h	21 Nov 2005 08:29:35 -0000	1.6
  @@ -52,7 +52,7 @@
           void setRGBColorICCColor(KDOM::DOMStringImpl *rgbColor, KDOM::DOMStringImpl *iccColor);
           void setColor(unsigned short colorType, KDOM::DOMStringImpl *rgbColor, KDOM::DOMStringImpl *iccColor);
   
  -        virtual KDOM::DOMStringImpl *cssText() const;
  +        virtual KDOM::DOMString cssText() const;
   
           // Helpers
           const QColor &color() const;
  
  
  
  1.8       +30 -55    SVGSupport/ksvg2/svg/SVGComponentTransferFunctionElementImpl.cpp
  
  Index: SVGComponentTransferFunctionElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGComponentTransferFunctionElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGComponentTransferFunctionElementImpl.cpp	5 Oct 2005 05:35:18 -0000	1.7
  +++ SVGComponentTransferFunctionElementImpl.cpp	21 Nov 2005 08:29:35 -0000	1.8
  @@ -26,7 +26,7 @@
   #include <kdom/core/AttrImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGComponentTransferFunctionElementImpl.h"
  @@ -37,8 +37,8 @@
   
   using namespace KSVG;
   
  -SVGComponentTransferFunctionElementImpl::SVGComponentTransferFunctionElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGElementImpl(doc, id, prefix)
  +SVGComponentTransferFunctionElementImpl::SVGComponentTransferFunctionElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGElementImpl(tagName, doc)
   {
       m_type = 0;
       m_tableValues = 0;
  @@ -109,61 +109,36 @@
       return lazy_create<SVGAnimatedNumberImpl>(m_offset, dummy);
   }
   
  -void SVGComponentTransferFunctionElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGComponentTransferFunctionElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    if (attr->name() == SVGNames::typeAttr)
       {
  -        case ATTR_TYPE:
  -        {
  -            if(value == "identity")
  -                type()->setBaseVal(SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY);
  -            else if(value == "table")
  -                type()->setBaseVal(SVG_FECOMPONENTTRANSFER_TYPE_TABLE);
  -            else if(value == "discrete")
  -                type()->setBaseVal(SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE);
  -            else if(value == "linear")
  -                type()->setBaseVal(SVG_FECOMPONENTTRANSFER_TYPE_LINEAR);
  -            else if(value == "gamma")
  -                type()->setBaseVal(SVG_FECOMPONENTTRANSFER_TYPE_GAMMA);
  -            break;
  -        }
  -        case ATTR_VALUES:
  -        {
  -            tableValues()->baseVal()->parse(value.string());
  -            break;
  -        }
  -        case ATTR_SLOPE:
  -        {
  -            slope()->setBaseVal(value.string().toDouble());
  -            break;
  -        }
  -        case ATTR_INTERCEPT:
  -        {
  -            intercept()->setBaseVal(value.string().toDouble());
  -            break;
  -        }
  -        case ATTR_AMPLITUDE:
  -        {
  -            amplitude()->setBaseVal(value.string().toDouble());
  -            break;
  -        }
  -        case ATTR_EXPONENT:
  -        {
  -            exponent()->setBaseVal(value.string().toDouble());
  -            break;
  -        }
  -        case ATTR_OFFSET:
  -        {
  -            offset()->setBaseVal(value.string().toDouble());
  -            break;
  -        }
  -        default:
  -        {
  -            SVGElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(value == "identity")
  +            type()->setBaseVal(SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY);
  +        else if(value == "table")
  +            type()->setBaseVal(SVG_FECOMPONENTTRANSFER_TYPE_TABLE);
  +        else if(value == "discrete")
  +            type()->setBaseVal(SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE);
  +        else if(value == "linear")
  +            type()->setBaseVal(SVG_FECOMPONENTTRANSFER_TYPE_LINEAR);
  +        else if(value == "gamma")
  +            type()->setBaseVal(SVG_FECOMPONENTTRANSFER_TYPE_GAMMA);
  +    }
  +    else if (attr->name() == SVGNames::valuesAttr)
  +        tableValues()->baseVal()->parse(value.qstring());
  +    else if (attr->name() == SVGNames::slopeAttr)
  +        slope()->setBaseVal(value.qstring().toDouble());
  +    else if (attr->name() == SVGNames::interceptAttr)
  +        intercept()->setBaseVal(value.qstring().toDouble());
  +    else if (attr->name() == SVGNames::amplitudeAttr)
  +        amplitude()->setBaseVal(value.qstring().toDouble());
  +    else if (attr->name() == SVGNames::exponentAttr)
  +        exponent()->setBaseVal(value.qstring().toDouble());
  +    else if (attr->name() == SVGNames::offsetAttr)
  +        offset()->setBaseVal(value.qstring().toDouble());
  +    else
  +        SVGElementImpl::parseMappedAttribute(attr);
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +2 -2      SVGSupport/ksvg2/svg/SVGComponentTransferFunctionElementImpl.h
  
  Index: SVGComponentTransferFunctionElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGComponentTransferFunctionElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGComponentTransferFunctionElementImpl.h	1 Sep 2005 07:35:36 -0000	1.4
  +++ SVGComponentTransferFunctionElementImpl.h	21 Nov 2005 08:29:35 -0000	1.5
  @@ -36,7 +36,7 @@
       class SVGComponentTransferFunctionElementImpl : public SVGElementImpl
       {
       public:
  -        SVGComponentTransferFunctionElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGComponentTransferFunctionElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGComponentTransferFunctionElementImpl();
   
           // 'SVGComponentTransferFunctionElement' functions
  @@ -49,7 +49,7 @@
           SVGAnimatedNumberImpl *offset() const;
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       private:
           mutable SVGAnimatedEnumerationImpl *m_type;
  
  
  
  1.3       +20 -35    SVGSupport/ksvg2/svg/SVGCursorElementImpl.cpp
  
  Index: SVGCursorElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGCursorElementImpl.cpp,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -r1.2 -r1.3
  --- SVGCursorElementImpl.cpp	5 Oct 2005 05:35:18 -0000	1.2
  +++ SVGCursorElementImpl.cpp	21 Nov 2005 08:29:35 -0000	1.3
  @@ -24,10 +24,8 @@
   #include <kdom/core/AttrImpl.h>
   #include <kdebug.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
  -#include "Namespace.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGCursorElementImpl.h"
   #include "SVGAnimatedLengthImpl.h"
   #include "SVGAnimatedStringImpl.h"
  @@ -41,8 +39,8 @@
   using namespace khtmlImLoad;
   #endif
   
  -SVGCursorElementImpl::SVGCursorElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGElementImpl(doc, id, prefix), SVGTestsImpl(), SVGExternalResourcesRequiredImpl(), SVGURIReferenceImpl(), KDOM::CachedObjectClient()
  +SVGCursorElementImpl::SVGCursorElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGElementImpl(tagName, doc), SVGTestsImpl(), SVGExternalResourcesRequiredImpl(), SVGURIReferenceImpl(), KDOM::CachedObjectClient()
   {
       m_x = m_y = 0;
       m_cachedImage = 0;
  @@ -66,41 +64,28 @@
       return lazy_create<SVGAnimatedLengthImpl>(m_y, static_cast<const SVGStyledElementImpl *>(0) /* correct? */, LM_HEIGHT, viewportElement());
   }
   
  -void SVGCursorElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGCursorElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  +     const KDOM::AtomicString& value = attr->value();
  +    if (attr->name() == SVGNames::xAttr)
  +        x()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::yAttr)
  +        y()->baseVal()->setValueAsString(value.impl());
  +    else
       {
  -        case ATTR_X:
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        if(SVGURIReferenceImpl::parseMappedAttribute(attr))
           {
  -            x()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_Y:
  -        {
  -            y()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGURIReferenceImpl::parseAttribute(attr))
  -            {
  -                QString fname = KDOM::DOMString(href()->baseVal()).string();
  -                KURL fullUrl(ownerDocument()->documentKURI(), fname);
  -                //kdDebug() << "Loading : " << fullUrl << endl;
  -                m_cachedImage = ownerDocument()->docLoader()->requestImage(fullUrl);
  -
  -                if(m_cachedImage)
  -                    m_cachedImage->ref(this);
  -                return;
  -            }
  +            m_cachedImage = ownerDocument()->docLoader()->requestImage(href()->baseVal());
   
  -            SVGElementImpl::parseAttribute(attr);
  +            if(m_cachedImage)
  +                m_cachedImage->ref(this);
  +            return;
           }
  -    };
  +
  +        SVGElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   void SVGCursorElementImpl::notifyFinished(KDOM::CachedObject *finishedObj)
  
  
  
  1.2       +2 -2      SVGSupport/ksvg2/svg/SVGCursorElementImpl.h
  
  Index: SVGCursorElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGCursorElementImpl.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SVGCursorElementImpl.h	8 Sep 2005 08:03:34 -0000	1.1
  +++ SVGCursorElementImpl.h	21 Nov 2005 08:29:36 -0000	1.2
  @@ -43,14 +43,14 @@
                                    public KDOM::CachedObjectClient
       {
       public:
  -        SVGCursorElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGCursorElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGCursorElementImpl();
   
           // 'SVGCursorElement' functions
           SVGAnimatedLengthImpl *x() const;
           SVGAnimatedLengthImpl *y() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           virtual void notifyFinished(KDOM::CachedObject *finishedObj);
   
  
  
  
  1.8       +35 -79    SVGSupport/ksvg2/svg/SVGDOMImplementationImpl.cpp
  
  Index: SVGDOMImplementationImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGDOMImplementationImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGDOMImplementationImpl.cpp	5 Oct 2005 05:35:18 -0000	1.7
  +++ SVGDOMImplementationImpl.cpp	21 Nov 2005 08:29:36 -0000	1.8
  @@ -34,13 +34,9 @@
   #include <kdom/css/MediaListImpl.h>
   
   #include "ksvg.h"
  -#include "ksvgevents.h"
  -#include "CDFInterface.h"
   #include "SVGRenderStyle.h"
   #include "SVGDocumentImpl.h"
   #include "SVGSVGElementImpl.h"
  -#include "SVGCSSStyleSelector.h"
  -#include "SVGCSSStyleSheetImpl.h"
   #include "SVGDOMImplementationImpl.h"
   
   using namespace KSVG;
  @@ -57,8 +53,7 @@
   SVGDOMImplementationImpl::~SVGDOMImplementationImpl()
   {
       // clean up static data
  -    SVGCSSStyleSelector::clear();
  -    SVGRenderStyle::cleanup();
  +    //SVGRenderStyle::cleanup();
   }
   
   SVGDOMImplementationImpl *SVGDOMImplementationImpl::self()
  @@ -117,17 +112,17 @@
   
   bool SVGDOMImplementationImpl::hasFeature(KDOM::DOMStringImpl *featureImpl, KDOM::DOMStringImpl *versionImpl) const
   {
  -    QString feature = (featureImpl ? KDOM::DOMString(featureImpl).upper().string() : QString::null);
  -    QString version = (versionImpl ? versionImpl->string() : QString::null);
  +    QString feature = (featureImpl ? KDOM::DOMString(featureImpl).upper().qstring() : QString::null);
  +    KDOM::DOMString version(versionImpl);
   
  -    if((version.isEmpty() || version == QString::fromLatin1("1.1")) &&
  +    if((version.isEmpty() || version == "1.1") &&
          feature.startsWith(QString::fromLatin1("HTTP://WWW.W3.ORG/TR/SVG11/FEATURE#")))
       {
           if(s_features.contains(feature.right(feature.length() - 35)))
               return true;
       }
   
  -    if((version.isEmpty() || version == QString::fromLatin1("1.0")) &&
  +    if((version.isEmpty() || version == "1.0") &&
          feature.startsWith(QString::fromLatin1("ORG.W3C.")))
       {
           if(s_features.contains(feature.right(feature.length() - 8)))
  @@ -137,45 +132,52 @@
       return KDOM::DOMImplementationImpl::hasFeature(featureImpl, versionImpl);
   }
   
  -KDOM::DocumentTypeImpl *SVGDOMImplementationImpl::createDocumentType(KDOM::DOMStringImpl *qualifiedName, KDOM::DOMStringImpl *publicId, KDOM::DOMStringImpl *systemId) const
  +KDOM::DocumentTypeImpl *SVGDOMImplementationImpl::createDocumentType(KDOM::DOMStringImpl *qualifiedNameImpl, KDOM::DOMStringImpl *publicId, KDOM::DOMStringImpl *systemId, int& exceptioncode) const
   {
  +    KDOM::DOMString qualifiedName(qualifiedNameImpl);
  +#if 0
       // INVALID_CHARACTER_ERR: Raised if the specified qualified name contains an illegal character.
  -    if((!qualifiedName || qualifiedName->isEmpty()) || !KDOM::Helper::ValidateAttributeName(qualifiedName))
  -        throw new KDOM::DOMExceptionImpl(KDOM::INVALID_CHARACTER_ERR);
  +    if(!qualifiedName.isEmpty() && !KDOM::Helper::ValidateAttributeName(qualifiedNameImpl)) {
  +        exceptioncode = KDOM::INVALID_CHARACTER_ERR;
  +        return 0;
  +    }
   
       // NAMESPACE_ERR: Raised if no qualifiedName supplied (not mentioned in the spec!)
  -    if(!qualifiedName || qualifiedName->isEmpty())
  -        throw new KDOM::DOMExceptionImpl(KDOM::NAMESPACE_ERR);
  +    if(qualifiedName.isEmpty()) {
  +        exceptioncode = KDOM::NAMESPACE_ERR;
  +        return 0;
  +    }
   
       // NAMESPACE_ERR: Raised if the qualifiedName is malformed.
  -    KDOM::Helper::CheckMalformedQualifiedName(qualifiedName);
  +    KDOM::Helper::CheckMalformedQualifiedName(qualifiedNameImpl);
  +#endif
   
  -    return new KDOM::DocumentTypeImpl(new KDOM::DocumentPtr(), qualifiedName, publicId, systemId);
  +    return new KDOM::DocumentTypeImpl(0, qualifiedName, publicId, systemId);
   }
   
  -KDOM::DocumentImpl *SVGDOMImplementationImpl::createDocument(KDOM::DOMStringImpl *namespaceURI, KDOM::DOMStringImpl *qualifiedNameImpl, KDOM::DocumentTypeImpl *doctype) const
  +KDOM::DocumentImpl *SVGDOMImplementationImpl::createDocument(KDOM::DOMStringImpl *namespaceURI, KDOM::DOMStringImpl *qualifiedNameImpl, KDOM::DocumentTypeImpl *doctype, int& exceptioncode) const
   {
  -    return createDocument(namespaceURI, qualifiedNameImpl, doctype, true, 0);
  +    return createDocument(namespaceURI, qualifiedNameImpl, doctype, true, 0, exceptioncode);
   }
   
  -KDOM::DocumentImpl *SVGDOMImplementationImpl::createDocument(KDOM::DOMStringImpl *namespaceURIImpl, KDOM::DOMStringImpl *qualifiedNameImpl, KDOM::DocumentTypeImpl *doctype, bool createDocElement, KDOM::KDOMView *view) const
  +KDOM::DocumentImpl *SVGDOMImplementationImpl::createDocument(KDOM::DOMStringImpl *namespaceURIImpl, KDOM::DOMStringImpl *qualifiedNameImpl, KDOM::DocumentTypeImpl *doctype, bool createDocElement, KDOM::KDOMView *view, int& exceptioncode) const
   {
  -    if(namespaceURIImpl)
  -        namespaceURIImpl->ref();
  -    if(qualifiedNameImpl)
  -        qualifiedNameImpl->ref();
       KDOM::DOMString namespaceURI(namespaceURIImpl);
       KDOM::DOMString qualifiedName(qualifiedNameImpl);
  -    if((namespaceURI != KDOM::NS_SVG) || (qualifiedName != "svg" && qualifiedName != "svg:svg"))
  -        return KDOM::DOMImplementationImpl::createDocument(namespaceURIImpl, qualifiedNameImpl, doctype, createDocElement, view);
  +    if((namespaceURI != SVGNames::svgNamespaceURI) || (qualifiedName != "svg" && qualifiedName != "svg:svg"))
  +        return KDOM::DOMImplementationImpl::instance()->createDocument(namespaceURIImpl, qualifiedNameImpl, doctype, exceptioncode);
   
  +#if 0
       int dummy;
       KDOM::Helper::CheckQualifiedName(qualifiedNameImpl, namespaceURIImpl, dummy, true /*nameCanBeNull*/, true /*nameCanBeEmpty, see #61650*/);
  +#endif
   
       // WRONG_DOCUMENT_ERR: Raised if docType has already been used with a different
       //                     document or was created from a different implementation.
  -    if(doctype != 0 && doctype->ownerDocument() != 0)
  -            throw new KDOM::DOMExceptionImpl(KDOM::WRONG_DOCUMENT_ERR);
  +    if(doctype != 0 && doctype->ownerDocument() != 0) {
  +        exceptioncode = KDOM::WRONG_DOCUMENT_ERR;
  +        return 0;
  +    }
   
       SVGDocumentImpl *doc = new SVGDocumentImpl(const_cast<SVGDOMImplementationImpl *>(this), view);
   
  @@ -186,24 +188,19 @@
       // Add root element...
       if(createDocElement)
       {
  -        KDOM::ElementImpl *svg = doc->createElementNS(namespaceURIImpl, qualifiedNameImpl);
  -        doc->appendChild(svg);
  +        KDOM::ElementImpl *svg = doc->createElementNS(namespaceURI, qualifiedName, exceptioncode);
  +        doc->appendChild(svg, exceptioncode);
       }
   
  -    if(namespaceURIImpl)
  -        namespaceURIImpl->deref();
  -    if(qualifiedNameImpl)
  -        qualifiedNameImpl->deref();
  -
       return doc;
   }
   
   KDOM::CSSStyleSheetImpl *SVGDOMImplementationImpl::createCSSStyleSheet(KDOM::DOMStringImpl *title, KDOM::DOMStringImpl *media) const
   {
       // TODO : check whether media is valid
  -    SVGCSSStyleSheetImpl *parent = 0;
  -    SVGCSSStyleSheetImpl *sheet = new SVGCSSStyleSheetImpl(parent, 0);
  -    sheet->setTitle(title);
  +    KDOM::CSSStyleSheetImpl *parent = 0;
  +    KDOM::CSSStyleSheetImpl *sheet = new KDOM::CSSStyleSheetImpl(parent);
  +    //sheet->setTitle(title);
       sheet->setMedia(new KDOM::MediaListImpl(sheet, media));
       return sheet;
   }
  @@ -217,42 +214,6 @@
       */
   }
   
  -int SVGDOMImplementationImpl::typeToId(KDOM::DOMStringImpl *typeImpl)
  -{
  -    if(!typeImpl)
  -        return -1;
  -
  -    QString type = typeImpl->string();
  -
  -    if(type == QString::fromLatin1("load")) return KDOM::LOAD_EVENT;
  -    else if(type == QString::fromLatin1("unload")) return KDOM::UNLOAD_EVENT;
  -    else if(type == QString::fromLatin1("abort")) return KDOM::ABORT_EVENT;
  -    else if(type == QString::fromLatin1("error")) return KDOM::ERROR_EVENT;
  -    else if(type == QString::fromLatin1("resize")) return KDOM::RESIZE_EVENT;
  -    else if(type == QString::fromLatin1("scroll")) return KDOM::SCROLL_EVENT;
  -    else if(type == QString::fromLatin1("zoom")) return ZOOM_EVENT;
  -
  -    return KDOM::DOMImplementationImpl::typeToId(typeImpl);
  -}
  -
  -KDOM::DOMStringImpl *SVGDOMImplementationImpl::idToType(int eventId)
  -{
  -    QString ret;
  -    switch(eventId)
  -    {
  -        case KDOM::LOAD_EVENT: ret = QString::fromLatin1("load"); break;
  -        case KDOM::UNLOAD_EVENT: ret = QString::fromLatin1("unload"); break;
  -        case KDOM::ABORT_EVENT: ret = QString::fromLatin1("abort"); break;
  -        case KDOM::ERROR_EVENT: ret = QString::fromLatin1("error"); break;
  -        case KDOM::RESIZE_EVENT: ret = QString::fromLatin1("resize"); break;
  -        case KDOM::SCROLL_EVENT: ret = QString::fromLatin1("scroll"); break;
  -        case ZOOM_EVENT: ret = QString::fromLatin1("zoom"); break;
  -        default: return KDOM::DOMImplementationImpl::idToType(eventId);
  -    }
  -
  -    return new KDOM::DOMStringImpl(ret);
  -}
  -
   bool SVGDOMImplementationImpl::inAnimationContext() const
   {
       return m_animationContext;
  @@ -263,9 +224,4 @@
       m_animationContext = value;
   }
   
  -KDOM::CDFInterface *SVGDOMImplementationImpl::createCDFInterface() const
  -{
  -    return new KSVG::CDFInterface();
  -}
  -
   // vim:ts=4:noet
  
  
  
  1.6       +3 -10     SVGSupport/ksvg2/svg/SVGDOMImplementationImpl.h
  
  Index: SVGDOMImplementationImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGDOMImplementationImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGDOMImplementationImpl.h	1 Sep 2005 09:39:15 -0000	1.5
  +++ SVGDOMImplementationImpl.h	21 Nov 2005 08:29:36 -0000	1.6
  @@ -46,24 +46,17 @@
   
           // 'SVGDOMImplementationImpl' functions
           bool hasFeature(KDOM::DOMStringImpl *feature, KDOM::DOMStringImpl *version) const;
  -        KDOM::DocumentTypeImpl *createDocumentType(KDOM::DOMStringImpl *qualifiedName, KDOM::DOMStringImpl *publicId, KDOM::DOMStringImpl *systemId) const;
  -        KDOM::DocumentImpl *createDocument(KDOM::DOMStringImpl *namespaceURI, KDOM::DOMStringImpl *qualifiedName, KDOM::DocumentTypeImpl *doctype) const;
  -        KDOM::DocumentImpl *createDocument(KDOM::DOMStringImpl *namespaceURI, KDOM::DOMStringImpl *qualifiedName, KDOM::DocumentTypeImpl *doctype, bool createDocElement, KDOM::KDOMView *view) const;
  +        KDOM::DocumentTypeImpl *createDocumentType(KDOM::DOMStringImpl *qualifiedName, KDOM::DOMStringImpl *publicId, KDOM::DOMStringImpl *systemId, int& exceptioncode) const;
  +        KDOM::DocumentImpl *createDocument(KDOM::DOMStringImpl *namespaceURI, KDOM::DOMStringImpl *qualifiedName, KDOM::DocumentTypeImpl *doctype, int& exceptioncode) const;
  +        KDOM::DocumentImpl *createDocument(KDOM::DOMStringImpl *namespaceURI, KDOM::DOMStringImpl *qualifiedName, KDOM::DocumentTypeImpl *doctype, bool createDocElement, KDOM::KDOMView *view, int& exceptioncode) const;
   
           virtual KDOM::CSSStyleSheetImpl *createCSSStyleSheet(KDOM::DOMStringImpl *title, KDOM::DOMStringImpl *media) const;
   
  -        // Internal
  -        virtual int typeToId(KDOM::DOMStringImpl *type);
  -        virtual KDOM::DOMStringImpl *idToType(int eventId);
  -
           virtual KDOM::DocumentTypeImpl *defaultDocumentType() const;
   
           bool inAnimationContext() const;
           void setAnimationContext(bool value);
   
  -    protected:
  -        virtual KDOM::CDFInterface *createCDFInterface() const;
  -
       private:
           bool m_animationContext : 1;
   
  
  
  
  1.6       +1 -1      SVGSupport/ksvg2/svg/SVGDefsElementImpl.cpp
  
  Index: SVGDefsElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGDefsElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGDefsElementImpl.cpp	5 Oct 2005 05:35:18 -0000	1.5
  +++ SVGDefsElementImpl.cpp	21 Nov 2005 08:29:36 -0000	1.6
  @@ -25,7 +25,7 @@
   
   using namespace KSVG;
   
  -SVGDefsElementImpl::SVGDefsElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl()
  +SVGDefsElementImpl::SVGDefsElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
   }
   
  
  
  
  1.5       +4 -6      SVGSupport/ksvg2/svg/SVGDefsElementImpl.h
  
  Index: SVGDefsElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGDefsElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGDefsElementImpl.h	1 Sep 2005 07:35:36 -0000	1.4
  +++ SVGDefsElementImpl.h	21 Nov 2005 08:29:36 -0000	1.5
  @@ -23,22 +23,20 @@
   #ifndef KSVG_SVGDefsElementImpl_H
   #define KSVG_SVGDefsElementImpl_H
   
  -#include "SVGStyledElementImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
  -#include "SVGTransformableImpl.h"
   
   namespace KSVG
   {
  -    class SVGDefsElementImpl : public SVGStyledElementImpl,
  +    class SVGDefsElementImpl : public SVGStyledTransformableElementImpl,
                                  public SVGTestsImpl,
                                  public SVGLangSpaceImpl,
  -                               public SVGExternalResourcesRequiredImpl,
  -                               public SVGTransformableImpl
  +                               public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGDefsElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGDefsElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGDefsElementImpl();
   
           // Derived from: 'SVGStyledElementImpl'
  
  
  
  1.6       +2 -2      SVGSupport/ksvg2/svg/SVGDescElementImpl.cpp
  
  Index: SVGDescElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGDescElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGDescElementImpl.cpp	5 Oct 2005 05:35:18 -0000	1.5
  +++ SVGDescElementImpl.cpp	21 Nov 2005 08:29:36 -0000	1.6
  @@ -25,7 +25,7 @@
   
   using namespace KSVG;
   
  -SVGDescElementImpl::SVGDescElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGStyledElementImpl(doc, id, prefix), SVGLangSpaceImpl()
  +SVGDescElementImpl::SVGDescElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGStyledElementImpl(tagName, doc), SVGLangSpaceImpl()
   {
   }
   
  @@ -35,7 +35,7 @@
   
   KDOM::DOMStringImpl *SVGDescElementImpl::description() const
   {
  -    return new KDOM::DOMStringImpl(KDOM::DOMString(textContent()).string().simplifyWhiteSpace());
  +    return new KDOM::DOMStringImpl(KDOM::DOMString(textContent()).qstring().simplifyWhiteSpace());
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGDescElementImpl.h
  
  Index: SVGDescElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGDescElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGDescElementImpl.h	1 Sep 2005 07:35:36 -0000	1.4
  +++ SVGDescElementImpl.h	21 Nov 2005 08:29:36 -0000	1.5
  @@ -32,7 +32,7 @@
                                  public SVGLangSpaceImpl
       {
       public:
  -        SVGDescElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGDescElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGDescElementImpl();
   
           KDOM::DOMStringImpl *description() const;
  
  
  
  1.12      +62 -779   SVGSupport/ksvg2/svg/SVGDocumentImpl.cpp
  
  Index: SVGDocumentImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGDocumentImpl.cpp,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SVGDocumentImpl.cpp	8 Oct 2005 09:18:15 -0000	1.11
  +++ SVGDocumentImpl.cpp	21 Nov 2005 08:29:36 -0000	1.12
  @@ -42,458 +42,71 @@
   #include <kdom/core/ProcessingInstructionImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasItem.h>
  -#include <kcanvas/KCanvasView.h>
  +#include <kcanvas/RenderPath.h>
   
   #include "ksvg.h"
   //#include "Ecma.h"
   #include <ksvg2/KSVGView.h>
  -#include "SVGEventImpl.h"
   #include "SVGElementImpl.h"
   #include "SVGRenderStyle.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGZoomEventImpl.h"
   #include "KSVGTimeScheduler.h"
   #include "SVGSVGElementImpl.h"
  -#include "SVGCSSStyleSelector.h"
  -#include "SVGCSSStyleSheetImpl.h"
   #include "SVGAnimatedStringImpl.h"
   #include "SVGDOMImplementationImpl.h"
  -#include "SVGAElementImpl.h"
  -#include "SVGGElementImpl.h"
  -#include "SVGUseElementImpl.h"
  -#include "SVGSVGElementImpl.h"
  -#include "SVGSetElementImpl.h"
  -#include "SVGDescElementImpl.h"
  -#include "SVGRectElementImpl.h"
  -#include "SVGDefsElementImpl.h"
  -#include "SVGStopElementImpl.h"
  -#include "SVGPathElementImpl.h"
  -#include "SVGLineElementImpl.h"
  -#include "SVGViewElementImpl.h"
  -#include "SVGTextElementImpl.h"
  -#include "SVGTSpanElementImpl.h"
  -#include "SVGImageElementImpl.h"
  -#include "SVGTitleElementImpl.h"
  -#include "SVGCursorElementImpl.h"
  -#include "SVGFilterElementImpl.h"
  -#include "SVGFEImageElementImpl.h"
  -#include "SVGFEBlendElementImpl.h"
  -#include "SVGFEFloodElementImpl.h"
  -#include "SVGFEOffsetElementImpl.h"
  -#include "SVGFEMergeElementImpl.h"
  -#include "SVGFEMergeNodeElementImpl.h"
  -#include "SVGFETurbulenceElementImpl.h"
  -#include "SVGFEFuncRElementImpl.h"
  -#include "SVGFEFuncGElementImpl.h"
  -#include "SVGFEFuncBElementImpl.h"
  -#include "SVGFEFuncAElementImpl.h"
  -#include "SVGStyleElementImpl.h"
  -#include "SVGSwitchElementImpl.h"
   #include "SVGScriptElementImpl.h"
  -#include "SVGCircleElementImpl.h"
  -#include "SVGSymbolElementImpl.h"
  -#include "SVGMarkerElementImpl.h"
  -#include "SVGEllipseElementImpl.h"
  -#include "SVGAnimateElementImpl.h"
  -#include "SVGPolygonElementImpl.h"
  -#include "SVGPatternElementImpl.h"
  -#include "SVGPolylineElementImpl.h"
  -#include "SVGClipPathElementImpl.h"
  -#include "SVGAnimateColorElementImpl.h"
  -#include "SVGFECompositeElementImpl.h"
  -#include "SVGFEColorMatrixElementImpl.h"
  -#include "SVGFEGaussianBlurElementImpl.h"
  -#include "SVGLinearGradientElementImpl.h"
  -#include "SVGRadialGradientElementImpl.h"
  -#include "SVGAnimateTransformElementImpl.h"
  -#include "SVGFEComponentTransferElementImpl.h"
  -
  -#include "svgtags.c"
  -#include "svgtags.h"
  -#include "svgattrs.c"
  -#include "svgattrs.h"
  +#include "SVGElementFactory.h"
  +#include "SVGStyleElementImpl.h"
  +#include "SVGTitleElementImpl.h"
  +#include "SVGDocumentImpl.h"
  +#include "EventNames.h"
   
   using namespace KSVG;
  +using namespace khtml;
   
  -SVGDocumentImpl::SVGDocumentImpl(SVGDOMImplementationImpl *i, KDOM::KDOMView *view) : KDOM::DocumentImpl(i, view, ID_LAST_SVGTAG + 1, ATTR_LAST_SVGATTR + 1), KDOM::CachedObjectClient()
  +SVGDocumentImpl::SVGDocumentImpl(SVGDOMImplementationImpl *i, KDOM::KDOMView *view) : KDOM::DocumentImpl(i, view), KDOM::CachedObjectClient()
   {
       setPaintDevice(svgView()); // Assign our KSVGView as document paint device
  -    
  -    KDOM::DOMStringImpl *svgNamespace = KDOM::NS_SVG.handle();
  -    svgNamespace->ref();
  -    m_namespaceMap->names.insert(0, svgNamespace);
  -    m_namespaceMap->count++;
   
  -    m_canvasView = 0;
       m_lastTarget = 0;
   
       m_scriptsIt = 0;
       m_cachedScript = 0;
  -
  -    m_timeScheduler = new TimeScheduler(this);
   }
   
   SVGDocumentImpl::~SVGDocumentImpl()
   {
       // Fire UNLOAD_EVENT upon destruction...
  -    if(KDOM::DocumentImpl::hasListenerType(KDOM::UNLOAD_EVENT))
  +    //if(KDOM::DocumentImpl::hasListenerType(KDOM::UNLOAD_EVENT))
       {
  -        SVGEventImpl *event = static_cast<SVGEventImpl *>(createEvent(KDOM::DOMString("SVGEvents").handle()));
  -        event->ref();
  -
  -        event->initEvent(KDOM::DOMString("unload").handle(), false, false);
  -        dispatchRecursiveEvent(event, lastChild());
  -
  -        event->deref();
  +        int exceptioncode;
  +        SharedPtr<KDOM::EventImpl> event = createEvent("SVGEvents", exceptioncode);
  +        event->initEvent(KDOM::EventNames::unloadEvent, false, false);
  +        dispatchRecursiveEvent(event.get(), lastChild());
       }
   
       delete m_scriptsIt;
  -    delete m_timeScheduler;
       delete m_cachedScript;
   }
   
  -KDOM::DOMStringImpl *SVGDocumentImpl::title() const
  +KDOM::DOMString SVGDocumentImpl::title() const
   {
       if(rootElement())
       {
           for(NodeImpl *child = rootElement()->firstChild(); child != 0; child = child->nextSibling())
  -            if(child->id() == ID_TITLE)
  +            if(child->hasTagName(SVGNames::titleTag))
                   return static_cast<SVGTitleElementImpl *>(child)->title();
       }
   
  -    return 0;
  +    return KDOM::DOMString();
   }
   
  -KDOM::DOMStringImpl *SVGDocumentImpl::referrer() const
  +KDOM::ElementImpl *SVGDocumentImpl::createElement(const KDOM::DOMString& tagName, int& exceptionCode)
   {
  -    // TODO
  -    return 0;
  -}
  -
  -KDOM::DOMStringImpl *SVGDocumentImpl::domain() const
  -{
  -    // TODO
  -    return 0;
  -}
  -
  -KDOM::DOMStringImpl *SVGDocumentImpl::URL() const
  -{
  -    return new KDOM::DOMStringImpl(m_url.prettyURL());
  -}
  -
  -SVGElementImpl *SVGDocumentImpl::createSVGElement(KDOM::DOMStringImpl *prefix, KDOM::DOMStringImpl *localName)
  -{
  -    SVGElementImpl *element = 0;
  -
  -    QString local = (localName ? localName->string() : QString::null);
  -    KDOM::NodeImpl::Id id = implementation()->cdfInterface()->getTagID(local.ascii(), local.length());
  -    switch(id)
  -    {
  -        case ID_SVG:
  -        {
  -            element = new SVGSVGElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_STYLE:
  -        {
  -            element = new SVGStyleElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_SCRIPT:
  -        {
  -            element = new SVGScriptElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_RECT:
  -        {
  -            element = new SVGRectElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_CIRCLE:
  -        {
  -            element = new SVGCircleElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_ELLIPSE:
  -        {
  -            element = new SVGEllipseElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_POLYLINE:
  -        {
  -            element = new SVGPolylineElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_POLYGON:
  -        {
  -            element = new SVGPolygonElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_G:
  -        {
  -            element = new SVGGElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_SWITCH:
  -        {
  -            element = new SVGSwitchElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_DEFS:
  -        {
  -            element = new SVGDefsElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_STOP:
  -        {
  -            element = new SVGStopElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_PATH:
  -        {
  -            element = new SVGPathElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_IMAGE:
  -        {
  -            element = new SVGImageElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_CLIPPATH:
  -        {
  -            element = new SVGClipPathElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_A:
  -        {
  -            element = new SVGAElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_LINE:
  -        {
  -            element = new SVGLineElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_LINEARGRADIENT:
  -        {
  -            element = new SVGLinearGradientElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_RADIALGRADIENT:
  -        {
  -            element = new SVGRadialGradientElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_TITLE:
  -        {
  -            element = new SVGTitleElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_DESC:
  -        {
  -            element = new SVGDescElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_SYMBOL:
  -        {
  -            element = new SVGSymbolElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_USE:
  -        {
  -            element = new SVGUseElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_PATTERN:
  -        {
  -            element = new SVGPatternElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_ANIMATECOLOR:
  -        {
  -            element = new SVGAnimateColorElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_ANIMATETRANSFORM:
  -        {
  -            element = new SVGAnimateTransformElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_SET:
  -        {
  -            element = new SVGSetElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_ANIMATE:
  -        {
  -            element = new SVGAnimateElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_MARKER:
  -        {
  -            element = new SVGMarkerElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_VIEW:
  -        {
  -            element = new SVGViewElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FILTER:
  -        {
  -            element = new SVGFilterElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEGAUSSIANBLUR:
  -        {
  -            element = new SVGFEGaussianBlurElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEFLOOD:
  -        {
  -            element = new SVGFEFloodElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEBLEND:
  -        {
  -            element = new SVGFEBlendElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEOFFSET:
  -        {
  -            element = new SVGFEOffsetElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FECOMPOSITE:
  -        {
  -            element = new SVGFECompositeElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FECOLORMATRIX:
  -        {
  -            element = new SVGFEColorMatrixElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEIMAGE:
  -        {
  -            element = new SVGFEImageElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEMERGE:
  -        {
  -            element = new SVGFEMergeElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEMERGENODE:
  -        {
  -            element = new SVGFEMergeNodeElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FECOMPONENTTRANSFER:
  -        {
  -            element = new SVGFEComponentTransferElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEFUNCR:
  -        {
  -            element = new SVGFEFuncRElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEFUNCG:
  -        {
  -            element = new SVGFEFuncGElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEFUNCB:
  -        {
  -            element = new SVGFEFuncRElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FEFUNCA:
  -        {
  -            element = new SVGFEFuncAElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_FETURBULENCE:
  -        {
  -            element = new SVGFETurbulenceElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_TEXT:
  -        {
  -            element = new SVGTextElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_TSPAN:
  -        {
  -            element = new SVGTSpanElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        case ID_CURSOR:
  -        {
  -            element = new SVGCursorElementImpl(docPtr(), id, prefix);
  -            break;
  -        }
  -        default:
  -            element = 0;
  -    };
  -
  -    return element;
  -}
  -
  -KDOM::ElementImpl *SVGDocumentImpl::createElement(KDOM::DOMStringImpl *tagName)
  -{
  -    if(tagName)
  -        tagName->ref();
  -
  -    SVGElementImpl *elem = createSVGElement(0, tagName);
  +    KDOM::QualifiedName qname(KDOM::nullAtom, tagName.impl(), SVGNames::svgNamespaceURI);
  +    SVGElementImpl *elem = SVGElementFactory::createSVGElement(qname, this, false);
       if(!elem)
  -        return KDOM::DocumentImpl::createElement(tagName);
  -
  -    if(tagName)
  -        tagName->deref();
  -
  -    return elem;
  -}
  -
  -KDOM::ElementImpl *SVGDocumentImpl::createElementNS(KDOM::DOMStringImpl *namespaceURIImpl, KDOM::DOMStringImpl *qualifiedName)
  -{
  -    KDOM::ElementImpl *elem = NULL;
  -    if(namespaceURIImpl)
  -        namespaceURIImpl->ref();
  -    if(qualifiedName)
  -        qualifiedName->ref();
  -
  -    KDOM::DOMStringImpl *prefix = 0, *localName = 0;
  -    KDOM::Helper::SplitPrefixLocalName(qualifiedName, prefix, localName);
  -
  -    if(prefix)
  -        prefix->ref();
  -    if(localName)
  -        localName->ref();
  -
  -    KDOM::DOMString namespaceURI(namespaceURIImpl);
  -    if(!((!prefix || prefix->length() == 0) || KDOM::DOMString(prefix) == "svg") &&
  -        (namespaceURI == KDOM::NS_SVG || namespaceURI.isEmpty()))
  -        elem = KDOM::DocumentImpl::createElementNS(namespaceURIImpl, qualifiedName);
  -    else {
  -        int dummy;
  -        KDOM::Helper::CheckQualifiedName(qualifiedName, namespaceURIImpl, dummy, false, false);
  -
  -        elem = createSVGElement(prefix, localName);
  -        if(!elem)
  -            elem = KDOM::DocumentImpl::createElementNS(namespaceURIImpl, qualifiedName);
  -    }
  -
  -    if(prefix)
  -        prefix->deref();
  -    if(localName)
  -        localName->deref();
  -    if(namespaceURIImpl)
  -        namespaceURIImpl->deref();
  -    if(qualifiedName)
  -        qualifiedName->deref();
  +        return KDOM::DocumentImpl::createElement(tagName, exceptionCode);
   
       return elem;
   }
  @@ -501,23 +114,12 @@
   SVGSVGElementImpl *SVGDocumentImpl::rootElement() const
   {
       KDOM::ElementImpl *elem = documentElement();
  -    if(elem && elem->id() == ID_SVG)
  +    if(elem && elem->hasTagName(SVGNames::svgTag))
           return static_cast<SVGSVGElementImpl *>(elem);
   
       return 0;
   }
   
  -KDOM::EventImpl *SVGDocumentImpl::createEvent(KDOM::DOMStringImpl *eventTypeImpl)
  -{
  -    QString eventType = (eventTypeImpl ? eventTypeImpl->string() : QString::null);
  -    if(eventType == QString::fromLatin1("SVGEvents"))
  -        return new SVGEventImpl();
  -    else if(eventType == QString::fromLatin1("SVGZoomEvents"))
  -        return new SVGZoomEventImpl();
  -
  -    return DocumentEventImpl::createEvent(eventTypeImpl);
  -}
  -
   void SVGDocumentImpl::notifyFinished(KDOM::CachedObject *finishedObj)
   {
       // This is called when a script has finished loading that was requested from
  @@ -530,7 +132,7 @@
           m_cachedScript->deref(this);
           m_cachedScript = 0;
           
  -        SVGScriptElementImpl::executeScript(this, KDOM::DOMString(scriptSource.string()).handle());
  +        SVGScriptElementImpl::executeScript(this, KDOM::DOMString(scriptSource.qstring()).impl());
           executeScripts(true);
       }
   }
  @@ -566,194 +168,54 @@
       // Iterate the tree, backwards, and dispatch the event to every child
       for(KDOM::NodeImpl *n = obj; n != 0; n = n->previousSibling())
       {
  +        int exceptioncode;
           if(n->hasChildNodes())
           {
               // Dispatch to all children
               dispatchRecursiveEvent(event, n->lastChild());
   
               // Dispatch, locally
  -            n->dispatchEvent(event);
  +            n->dispatchEvent(event, exceptioncode);
           }
           else
  -            n->dispatchEvent(event);
  +            n->dispatchEvent(event, exceptioncode);
       }
   }
   
   void SVGDocumentImpl::dispatchZoomEvent(float prevScale, float newScale)
   {
       // dispatch zoom event
  -    SVGZoomEventImpl *event = static_cast<SVGZoomEventImpl *>(createEvent(KDOM::DOMString("SVGZoomEvents").handle()));
  -    event->ref();
  -
  -    event->initEvent(KDOM::DOMString("zoom").handle(), true, false);
  +    int exceptioncode;
  +    SharedPtr<SVGZoomEventImpl> event = static_cast<SVGZoomEventImpl *>(createEvent("SVGZoomEvents", exceptioncode));
  +    event->initEvent(KDOM::EventNames::zoomEvent, true, false);
       event->setPreviousScale(prevScale);
       event->setNewScale(newScale);
  -    rootElement()->dispatchEvent(event);
  -
  -    event->deref();
  +    rootElement()->dispatchEvent(event.get(), exceptioncode);
   }
   
   void SVGDocumentImpl::dispatchScrollEvent()
   {
       // dispatch zoom event
  -    SVGEventImpl *event = static_cast<SVGEventImpl *>(createEvent(KDOM::DOMString("SVGEvents").handle()));
  -    event->ref();
  -
  -    event->initEvent(KDOM::DOMString("scroll").handle(), true, false);
  -    rootElement()->dispatchEvent(event);
  -
  -    event->deref();
  +    int exceptioncode;
  +    SharedPtr<KDOM::EventImpl> event = createEvent("SVGEvents", exceptioncode);
  +    event->initEvent(KDOM::EventNames::scrollEvent, true, false);
  +    rootElement()->dispatchEvent(event.get(), exceptioncode);
   }
   
   bool SVGDocumentImpl::dispatchKeyEvent(KDOM::EventTargetImpl *target, QKeyEvent *key, bool keypress)
   {
       // dispatch key event
  -    KDOM::KeyboardEventImpl *keyEventImpl = static_cast<KDOM::KeyboardEventImpl *>(createEvent(KDOM::DOMString("KeyboardEvents").handle()));
  -    keyEventImpl->ref();
  -
  -    keyEventImpl->initKeyboardEvent(key);
  -    target->dispatchEvent(keyEventImpl);
  -
  -    bool r = /*keyEventImpl->defaultHandled() ||*/ keyEventImpl->defaultPrevented();
  -    keyEventImpl->deref();
  -    return r;
  -}
  +    int exceptioncode;
  +    SharedPtr<KDOM::KeyboardEventImpl> keyEventImpl = static_cast<KDOM::KeyboardEventImpl *>(createEvent("KeyboardEvents", exceptioncode));
  +    //keyEventImpl->initKeyboardEvent(key);
  +    target->dispatchEvent(keyEventImpl.get(), exceptioncode);
   
  -KDOM::DOMStringImpl *SVGDocumentImpl::defaultNS() const
  -{
  -    return KDOM::NS_SVG.handle();
  -}
  -
  -void SVGDocumentImpl::recalcStyleSelector()
  -{
  -    if(!attached())
  -        return;
  -
  -    assert(m_pendingStylesheets == 0);
  -
  -    QString sheetUsed; // Empty sheet
  -
  -    Q3PtrList<KDOM::StyleSheetImpl> oldStyleSheets = m_styleSheets->styleSheets;
  -    m_styleSheets->styleSheets.clear();
  -
  -    for(int i = 0; i < 2; i++)
  -    {
  -        m_availableSheets.clear();
  -#ifndef APPLE_COMPILE_HACK
  -        m_availableSheets << i18n("Basic Page Style");
  -#endif
  -
  -        for(KDOM::NodeImpl *n = this; n != 0; n = n->traverseNextNode())
  -        {
  -            KDOM::StyleSheetImpl *sheet = 0;
  -
  -            if(n->nodeType() == KDOM::PROCESSING_INSTRUCTION_NODE)
  -            {
  -                // Processing instruction (XML documents only)
  -                KDOM::ProcessingInstructionImpl *pi = static_cast<KDOM::ProcessingInstructionImpl *>(n);
  -                sheet = pi->sheet();
  -                if(!sheet && pi->localHref() && !pi->localHref()->isEmpty())
  -                {
  -                    // Processing instruction with reference to an element in this document
  -                    // - e.g. <?xml-stylesheet href="#mystyle">, with the element
  -                    // <foo id="mystyle">heading { color: red; }</foo> at some location in the document
  -                    KDOM::ElementImpl *elem = getElementById(pi->localHref());
  -                    if(elem)
  -                    {
  -                        KDOM::DOMString sheetText("");
  -                        for(KDOM::NodeImpl *c = elem->firstChild(); c != 0; c = c->nextSibling())
  -                        {
  -                            if(c->nodeType() == KDOM::TEXT_NODE ||
  -                               c->nodeType() == KDOM::CDATA_SECTION_NODE)
  -                            {
  -                                sheetText += KDOM::DOMString(c->nodeValue());
  -                            }
  -                        }
  -
  -                        KDOM::CSSStyleSheetImpl *cssSheet = createCSSStyleSheet(this, 0);
  -                        cssSheet->parseString(sheetText.handle());
  -                        pi->setStyleSheet(cssSheet);
  -
  -                        sheet = cssSheet;
  -                    }
  -                }
  -            }
  -            else
  -            {
  -                QString title;
  -
  -                if(n && n->id() == ID_STYLE)
  -                {
  -                    // <STYLE> element
  -                    SVGStyleElementImpl *s = static_cast<SVGStyleElementImpl*>(n);
  -                    if(!s->isLoading())
  -                    {
  -                        sheet = s->sheet();
  -                        if(sheet)
  -                            title = KDOM::DOMString(s->getAttribute(ATTR_TITLE)).string();
  -                    }
  -                }
  -
  -                if(!title.isEmpty() && sheetUsed.isEmpty())
  -                    sheetUsed = title;
  -
  -                if(!title.isEmpty())
  -                {
  -                    if(title != sheetUsed)
  -                        sheet = 0; // don't use it
  -
  -                    title = title.replace('&', QString::fromLatin1("&&"));
  -
  -                    if(!m_availableSheets.contains(title))
  -                        m_availableSheets.append(title);
  -                }
  -            }
  -
  -            if(sheet)
  -            {
  -                sheet->ref();
  -                m_styleSheets->styleSheets.append(sheet);
  -            }
  -        }
  -
  -        // we're done if we don't select an alternative sheet or we found the sheet we selected
  -        if(sheetUsed.isEmpty() || m_availableSheets.contains(sheetUsed))
  -            break;
  -    }
  -
  -    // De-reference all the stylesheets in the old list
  -    Q3PtrListIterator<KDOM::StyleSheetImpl> it(oldStyleSheets);
  -    for(;it.current(); ++it)
  -        it.current()->deref();
  -
  -    QString userSheet = m_userSheet;
  -    if(m_view && m_view->mediaType() == QString::fromLatin1("print"))
  -        userSheet += m_printSheet;
  -
  -    // Create a new style selector
  -    delete m_styleSelector;
  -    m_styleSelector = createStyleSelector(userSheet);
  +    return /*keyEventImpl->defaultHandled() ||*/ keyEventImpl->defaultPrevented();
   }
   
   KDOM::CSSStyleSelector *SVGDocumentImpl::createStyleSelector(const QString &usersheet)
   {
  -    return new SVGCSSStyleSelector(this, usersheet, m_styleSheets, m_url, false);
  -}
  -
  -KCanvas *SVGDocumentImpl::canvas() const
  -{
  -    return m_canvasView ? m_canvasView->canvas() : 0;
  -}
  -
  -void SVGDocumentImpl::attach()
  -{
  -    if(!canvasView())
  -        return;
  -
  -    assert(!m_styleSelector);
  -    m_styleSelector = createStyleSelector(m_userSheet);
  -
  -    NodeBaseImpl::attach();
  +    return new KDOM::CSSStyleSelector(this, usersheet, m_styleSheets, false);
   }
   
   void SVGDocumentImpl::addScripts(KDOM::NodeImpl *n)
  @@ -761,9 +223,9 @@
       if(!n)
           return;
   
  -    // Recursively go through the entire document tree, looking for html <script> tags.
  +    // Recursively go through the entire document tree, looking for svg <script> tags.
       // For each of these that is found, add it to the m_scripts list from which they will be executed
  -    if(n->localId() == ID_SCRIPT)
  +    if (n->hasTagName(SVGNames::scriptTag))
           m_scripts.append(static_cast<SVGScriptElementImpl *>(n));
   
       NodeImpl *child;
  @@ -780,13 +242,12 @@
       while((script = m_scriptsIt->current()))
       {
           KDOM::DOMString hrefAttr(script->href()->baseVal());
  -        QString charset; // TODO m_scriptsIt->current()->getAttribute(ATTR_CHARSET).string();
  +        QString charset; // TODO m_scriptsIt->current()->getAttribute(SVGNames::charsetAttr).qstring();
   
           if(!hrefAttr.isEmpty())
           {
               // we have a src attribute
  -            KURL fullUrl(documentKURI(), hrefAttr.string());
  -            m_cachedScript = docLoader()->requestScript(fullUrl, charset);
  +            m_cachedScript = docLoader()->requestScript(hrefAttr, charset);
               ++(*m_scriptsIt);
               m_cachedScript->ref(this); // will call executeScripts() again if already cached
               return;
  @@ -794,7 +255,7 @@
           else
           {
               // no src attribute - execute from contents of tag
  -            SVGScriptElementImpl::executeScript(this, script->textContent());
  +            SVGScriptElementImpl::executeScript(this, script->textContent().impl());
               ++(*m_scriptsIt);
   
               needsStyleSelectorUpdate = true;
  @@ -802,33 +263,31 @@
       }
   
       // Fire LOAD_EVENT after all scripts are evaluated
  -    if(KDOM::DocumentImpl::hasListenerType(KDOM::LOAD_EVENT) && !m_scriptsIt->current())
  +    if(!m_scriptsIt->current())
       {
  -        SVGEventImpl *event = static_cast<SVGEventImpl *>(createEvent(KDOM::DOMString("SVGEvents").handle()));
  -        event->ref();
  -
  -        event->initEvent(KDOM::DOMString("load").handle(), false, false);
  -        dispatchRecursiveEvent(event, lastChild());
  -
  -        event->deref();
  +        int exceptioncode;
  +        SharedPtr<KDOM::EventImpl> event = createEvent("SVGEvents", exceptioncode);
  +        event->initEvent(KDOM::EventNames::loadEvent, false, false);
  +        dispatchRecursiveEvent(event.get(), lastChild());
       }
   
       // All scripts have finished executing, so calculate the
       // style for the document and close the last element
  -    if(canvas() && needsStyleSelectorUpdate)
  +    if(renderer() && needsStyleSelectorUpdate)
           updateStyleSelector();
   
       // close any unclosed nodes
       Q3PtrListIterator<SVGElementImpl> it(m_forwardReferences);
       for(;it.current(); ++it)
       {
  -        if(!it.current()->closed())
  -            it.current()->close();
  +        if(!it.current()->isClosed())
  +            it.current()->closeRenderer();
       }
       m_forwardReferences.clear();
   
       // Start animations, as "load" scripts are executed.
  -    m_timeScheduler->startAnimations();
  +    // FIXME: this won't work for CDF
  +    rootElement()->timeScheduler()->startAnimations();
   }
   
   void SVGDocumentImpl::recalcStyle(StyleChange change)
  @@ -840,198 +299,22 @@
       }
   }
   
  -KDOM::CSSStyleSheetImpl *SVGDocumentImpl::createCSSStyleSheet(KDOM::NodeImpl *parent, KDOM::DOMStringImpl *url) const
  -{
  -    SVGCSSStyleSheetImpl *sheet = new SVGCSSStyleSheetImpl(parent, url);
  -    sheet->ref();
  -    return sheet;
  -}
  -
  -KDOM::CSSStyleSheetImpl *SVGDocumentImpl::createCSSStyleSheet(KDOM::CSSRuleImpl *ownerRule, KDOM::DOMStringImpl *url) const
  -{
  -    SVGCSSStyleSheetImpl *sheet = new SVGCSSStyleSheetImpl(ownerRule, url);
  -    sheet->ref();
  -    return sheet;
  -}
  -
  -bool SVGDocumentImpl::prepareMouseEvent(bool, int x, int y, KDOM::MouseEventImpl *event)
  -{
  -    if(!canvas() || !event)
  -        return false;
  -
  -    QPoint coordinate(x, y);
  -    SVGStyledElementImpl *current = 0;
  -
  -    KCanvasItemList hits;
  -    canvas()->collisions(coordinate, hits);
  -
  -    KCanvasItemList::ConstIterator it = hits.begin();
  -    KCanvasItemList::ConstIterator end = hits.end();
  -
  -    // Check for mouseout/focusout events first..
  -    if(event->id() == KDOM::MOUSEMOVE_EVENT && hits.isEmpty())
  -    {
  -        if(m_lastTarget && m_lastTarget != current)
  -        {
  -            if(m_lastTarget->hasListenerType(KDOM::DOMFOCUSOUT_EVENT))
  -                dispatchUIEvent(m_lastTarget, KDOM::DOMString("DOMFocusOut").handle());
  -
  -            if(m_lastTarget->hasListenerType(KDOM::MOUSEOUT_EVENT))
  -                dispatchMouseEvent(m_lastTarget, KDOM::DOMString("mouseout").handle());
  -
  -            m_lastTarget = 0;
  -        }
  -    }
  -
  -    for(; it != end; ++it)
  -    {
  -        current = static_cast<SVGStyledElementImpl *>((*it)->userData());
  -
  -        if(current)
  -        {
  -            SVGRenderStyle *style = static_cast<SVGRenderStyle *>(current->renderStyle());
  -            if(!style || style->pointerEvents() == PE_NONE)
  -                return false;
  -
  -            bool isStroked = (style->strokePaint() != 0);
  -            bool isVisible = (style->visibility() == KDOM::VS_VISIBLE);
  -
  -            KCanvasItem *canvasItem = current->canvasItem();
  -
  -            bool testFill = false;
  -            bool testStroke = false;
  -            switch(style->pointerEvents())
  -            {
  -                case PE_VISIBLE:
  -                {
  -                    testFill = isVisible;
  -                    testStroke = isVisible;
  -                    break;
  -                }
  -                case PE_VISIBLE_PAINTED:
  -                    testStroke = (isVisible && isStroked);
  -                case PE_VISIBLE_FILL:
  -                {
  -                    testFill = isVisible;
  -                    break;
  -                }
  -                case PE_VISIBLE_STROKE:
  -                {
  -                    testStroke = (isVisible && isStroked);
  -                    break;
  -                }
  -                case PE_PAINTED:
  -                    testStroke = isStroked;
  -                case PE_FILL:
  -                {
  -                    testFill = true;
  -                    break;
  -                }
  -                case PE_STROKE:
  -                {
  -                    testStroke = isStroked;
  -                    break;
  -                }
  -                case PE_ALL:
  -                default:
  -                {
  -                    testFill = true;
  -                    testStroke = true;
  -                }
  -            };
  -            
  -            if(testFill || testStroke)
  -            {
  -                if((testFill && canvasItem->fillContains(coordinate)) ||
  -                   (testStroke && canvasItem->strokeContains(coordinate)))
  -                {
  -                    if(event->id() == KDOM::MOUSEUP_EVENT)
  -                    {
  -                        if(current->hasListenerType(KDOM::CLICK_EVENT))
  -                            dispatchMouseEvent(current, KDOM::DOMString("click").handle());
  -
  -                        if(current->hasListenerType(KDOM::DOMACTIVATE_EVENT))
  -                            dispatchUIEvent(current, KDOM::DOMString("DOMActivate").handle());
  -
  -                        if(current->hasListenerType(KDOM::DOMFOCUSIN_EVENT))
  -                            dispatchUIEvent(current, KDOM::DOMString("DOMFocusIn").handle());    
  -                    }
  -                    else if(event->id() == KDOM::MOUSEMOVE_EVENT)
  -                    {
  -                        if(m_lastTarget && m_lastTarget != current)
  -                        {
  -                            if(m_lastTarget->hasListenerType(KDOM::DOMFOCUSOUT_EVENT))
  -                                dispatchUIEvent(m_lastTarget, KDOM::DOMString("DOMFocusOut").handle());
  -
  -                            if(m_lastTarget->hasListenerType(KDOM::MOUSEOUT_EVENT))
  -                                dispatchMouseEvent(m_lastTarget, KDOM::DOMString("mouseout").handle());
  -
  -                            m_lastTarget = 0;
  -                        }
  -                        
  -                        if(current->hasListenerType(KDOM::MOUSEOVER_EVENT))
  -                        {
  -                            if(m_lastTarget != current)
  -                                dispatchMouseEvent(current, KDOM::DOMString("mouseover").handle());
  -                        }
  -                    }
  -
  -                    m_lastTarget = current;
  -
  -                    event->setRelatedTarget(current);
  -
  -                    // TODO : investigate hasListenerType
  -                    // in some cases default actions need
  -                    // to take place when there are no
  -                    // listeners, so dispatchEvent has to be
  -                    // called, that is the problem here...
  -                    //if(current->hasListenerType(event->id()))
  -                        current->dispatchEvent(event);
  -
  -                    return true;
  -                }
  -            }
  -        }
  -    }
  -    
  -    return false;
  -}
  -
  -TimeScheduler *SVGDocumentImpl::timeScheduler() const
  -{
  -    return m_timeScheduler;
  -}
  -
  -void SVGDocumentImpl::dispatchUIEvent(KDOM::EventTargetImpl *target, KDOM::DOMStringImpl *type)
  +void SVGDocumentImpl::dispatchUIEvent(KDOM::EventTargetImpl *target, const KDOM::AtomicString &type)
   {
       // Setup kdom 'UIEvent'...
  -    KDOM::DOMStringImpl *eventType = new KDOM::DOMStringImpl("UIEvents");
  -    eventType->ref();
  -
  -    KDOM::UIEventImpl *event = static_cast<KDOM::UIEventImpl *>(createEvent(eventType));
  -    event->ref();
  -
  +    int exceptioncode;
  +    SharedPtr<KDOM::UIEventImpl> event = static_cast<KDOM::UIEventImpl *>(createEvent("UIEvents", exceptioncode));
       event->initUIEvent(type, true, true, 0, 0);
  -    target->dispatchEvent(event);
  -
  -    event->deref();
  -    eventType->deref();
  +    target->dispatchEvent(event.get(), exceptioncode);
   }
   
  -void SVGDocumentImpl::dispatchMouseEvent(KDOM::EventTargetImpl *target, KDOM::DOMStringImpl *type)
  +void SVGDocumentImpl::dispatchMouseEvent(KDOM::EventTargetImpl *target, const KDOM::AtomicString &type)
   {
       // Setup kdom 'MouseEvent'...
  -    KDOM::DOMStringImpl *eventType = new KDOM::DOMStringImpl("MouseEvents");
  -    eventType->ref();
  -
  -    KDOM::MouseEventImpl *event = static_cast<KDOM::MouseEventImpl *>(createEvent(eventType));
  -    event->ref();
  -
  +    int exceptioncode;
  +    SharedPtr<KDOM::MouseEventImpl> event = static_cast<KDOM::MouseEventImpl *>(createEvent("MouseEvents", exceptioncode));
       event->initEvent(type, true, true);
  -    target->dispatchEvent(event);
  -
  -    event->deref();
  -    eventType->deref();
  +    target->dispatchEvent(event.get(), exceptioncode);
   }
   
   void SVGDocumentImpl::addForwardReference(const SVGElementImpl *element)
  
  
  
  1.9       +9 -39     SVGSupport/ksvg2/svg/SVGDocumentImpl.h
  
  Index: SVGDocumentImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGDocumentImpl.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGDocumentImpl.h	8 Oct 2005 09:18:15 -0000	1.8
  +++ SVGDocumentImpl.h	21 Nov 2005 08:29:36 -0000	1.9
  @@ -31,12 +31,12 @@
   
   #include <ksvg2/misc/KSVGTimeScheduler.h>
   
  -class KCanvas;
  -class KCanvasView;
  +#ifdef APPLE_CHANGES
  +class KHTMLView;
  +#endif
   
   namespace KSVG
   {
  -    class KSVGView;
       class SVGElementImpl;
       class SVGSVGElementImpl;
       class SVGScriptElementImpl;
  @@ -49,19 +49,11 @@
           SVGDocumentImpl(SVGDOMImplementationImpl *i, KDOM::KDOMView *view);
           virtual ~SVGDocumentImpl();
   
  -        // 'SVGDocumentImpl' functions
  -        KDOM::DOMStringImpl *title() const;
  -        KDOM::DOMStringImpl *referrer() const;
  -        KDOM::DOMStringImpl *domain() const;
  -        KDOM::DOMStringImpl *URL() const;
  -
           SVGSVGElementImpl *rootElement() const;
  -
  -        virtual KDOM::ElementImpl *createElement(KDOM::DOMStringImpl *tagName);
  -        virtual KDOM::ElementImpl *createElementNS(KDOM::DOMStringImpl *namespaceURI, KDOM::DOMStringImpl *qualifiedName);
  -
  -        // 'DocumentEvent' functions
  -        virtual KDOM::EventImpl *createEvent(KDOM::DOMStringImpl *eventType);
  +        
  +        KDOM::DOMString title() const;
  +        
  +        virtual KDOM::ElementImpl *createElement(const KDOM::DOMString& tagName, int& exceptionCode);
   
           // Derived from: 'CachedObjectClient'
           virtual void notifyFinished(KDOM::CachedObject *finishedObj);
  @@ -78,23 +70,6 @@
           void dispatchScrollEvent();
           bool dispatchKeyEvent(KDOM::EventTargetImpl *target, QKeyEvent *key, bool keypress);
   
  -        virtual KDOM::DOMStringImpl *defaultNS() const;
  -
  -        KCanvas *canvas() const;
  -        KCanvasView *canvasView() const { return m_canvasView; }
  -        void setCanvasView(KCanvasView *canvasView) { m_canvasView = canvasView; }
  -
  -        virtual void attach();
  -        virtual bool attached() const { return m_canvasView != 0; }
  -
  -        virtual KDOM::CSSStyleSheetImpl *createCSSStyleSheet(KDOM::NodeImpl *parent, KDOM::DOMStringImpl *url) const;
  -        virtual KDOM::CSSStyleSheetImpl *createCSSStyleSheet(KDOM::CSSRuleImpl *ownerRule, KDOM::DOMStringImpl *url) const;
  -        virtual bool prepareMouseEvent(bool readonly, int x, int y, KDOM::MouseEventImpl *event);
  -
  -        // Animations
  -        TimeScheduler *timeScheduler() const;
  -
  -        virtual void recalcStyleSelector();
           virtual void recalcStyle(StyleChange = NoChange);
   
           void addForwardReference(const SVGElementImpl *element);
  @@ -103,16 +78,11 @@
           virtual KDOM::CSSStyleSelector *createStyleSelector(const QString &);
   
       private:
  -        void dispatchUIEvent(KDOM::EventTargetImpl *target, KDOM::DOMStringImpl *type);
  -        void dispatchMouseEvent(KDOM::EventTargetImpl *target, KDOM::DOMStringImpl *type);
  +        void dispatchUIEvent(KDOM::EventTargetImpl *target, const KDOM::AtomicString &type);
  +        void dispatchMouseEvent(KDOM::EventTargetImpl *target, const KDOM::AtomicString &type);
   
  -        SVGElementImpl *createSVGElement(KDOM::DOMStringImpl *prefix, KDOM::DOMStringImpl *localName);
  -
  -        KCanvasView *m_canvasView;
           KDOM::EventTargetImpl *m_lastTarget;
   
  -        TimeScheduler *m_timeScheduler;
  -
           // <script> related
           void executeScripts(bool needsStyleSelectorUpdate);
           void addScripts(KDOM::NodeImpl *obj);
  
  
  
  1.8       +31 -92    SVGSupport/ksvg2/svg/SVGElementImpl.cpp
  
  Index: SVGElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGElementImpl.cpp	5 Oct 2005 05:35:19 -0000	1.7
  +++ SVGElementImpl.cpp	21 Nov 2005 08:29:37 -0000	1.8
  @@ -30,17 +30,15 @@
   #include <kdom/events/EventListenerImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   //#include "SVGException.h"
   #include "SVGElementImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGSVGElementImpl.h"
   #include "SVGDOMImplementationImpl.h"
  -#include "SVGCSSStyleDeclarationImpl.h"
   
   using namespace KSVG;
   
  -SVGElementImpl::SVGElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : KDOM::XMLElementImpl(doc, id, prefix)
  +SVGElementImpl::SVGElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : KDOM::XMLElementImpl(tagName, doc), m_closed(false)
   {
   }
   
  @@ -50,31 +48,10 @@
   
   bool SVGElementImpl::isSupported(KDOM::DOMStringImpl *feature, KDOM::DOMStringImpl *version) const
   {
  -    if(SVGDOMImplementationImpl::self()->hasFeature(feature, version))
  +    if(SVGDOMImplementationImpl::instance()->hasFeature(feature, version))
           return true;
   
  -    return KDOM::DOMImplementationImpl::self()->hasFeature(feature, version);
  -}
  -
  -KDOM::DOMStringImpl *SVGElementImpl::getId() const
  -{
  -    KDOM::DOMString id("id");
  -    return tryGetAttribute(id.handle());
  -}
  -
  -void SVGElementImpl::setGetId(KDOM::DOMStringImpl *)
  -{
  -    throw new KDOM::DOMExceptionImpl(KDOM::NO_MODIFICATION_ALLOWED_ERR);
  -}
  -
  -KDOM::DOMStringImpl *SVGElementImpl::xmlbase() const
  -{
  -    return tryGetAttribute(KDOM::DOMString("xml:base").handle());
  -}
  -
  -void SVGElementImpl::setXmlbase(KDOM::DOMStringImpl *)
  -{
  -    throw new KDOM::DOMExceptionImpl(KDOM::NO_MODIFICATION_ALLOWED_ERR);
  +    return KDOM::DOMImplementationImpl::instance()->hasFeature(feature, version);
   }
   
   SVGSVGElementImpl *SVGElementImpl::ownerSVGElement() const
  @@ -82,7 +59,7 @@
       NodeImpl *n = parentNode();
       while(n)
       {
  -        if(n->nodeType() == KDOM::ELEMENT_NODE && n->id() == ID_SVG)
  +        if(n->nodeType() == KDOM::ELEMENT_NODE && n->hasTagName(SVGNames::svgTag))
               return static_cast<SVGSVGElementImpl *>(n);
   
           n = n->parentNode();
  @@ -97,7 +74,7 @@
       while(n)
       {
           if(n->nodeType() == KDOM::ELEMENT_NODE &&
  -            (n->id() == ID_SVG || n->id() == ID_IMAGE || n->id() == ID_SYMBOL))
  +            (n->hasTagName(SVGNames::svgTag) || n->hasTagName(SVGNames::imageTag) || n->hasTagName(SVGNames::symbolTag)))
               return static_cast<SVGElementImpl *>(n);
   
           n = n->parentNode();
  @@ -106,80 +83,55 @@
       return 0;
   }
   
  -KDOM::DOMStringImpl *SVGElementImpl::tryGetAttribute(KDOM::DOMStringImpl *name, KDOM::DOMStringImpl *defaultVal) const
  +KDOM::AtomicString SVGElementImpl::tryGetAttribute(const KDOM::DOMString& name, KDOM::AtomicString defaultVal) const
   {
       if(hasAttribute(name))
           return getAttribute(name);
   
  -    return defaultVal->copy();
  +    return defaultVal;
   }
   
  -KDOM::DOMStringImpl *SVGElementImpl::tryGetAttributeNS(KDOM::DOMStringImpl *namespaceURI, KDOM::DOMStringImpl *localName, KDOM::DOMStringImpl *defaultVal) const
  +KDOM::AtomicString SVGElementImpl::tryGetAttributeNS(const KDOM::DOMString& namespaceURI, const KDOM::DOMString& localName, KDOM::AtomicString defaultVal) const
   {
       if(hasAttributeNS(namespaceURI, localName))
           return getAttributeNS(namespaceURI, localName);
   
  -    return defaultVal->copy();
  +    return defaultVal;
   }
   
  -void SVGElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
       const KDOM::DocumentImpl *doc = ownerDocument();
       if(!doc)
           return;
   
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    switch(id)
  -    {
  -        case ATTR_ONLOAD:
  -        {
  +//    if (attr->name() == SVGNames::onloadAttr)
   //            addSVGEventListener(doc->ecmaEngine(), KDOM::DOMString("load"), value);
  -            break;
  -        }
  -        case ATTR_ONUNLOAD:
  -        {
  +//    else if (attr->name() == SVGNames::onunloadAttr)
   //            addSVGEventListener(doc->ecmaEngine(), KDOM::DOMString("unload"), value);
  -            break;
  -        }
  -        case ATTR_ONABORT:
  -        {
  +//    else if (attr->name() == SVGNames::onabortAttr)
   //            addSVGEventListener(doc->ecmaEngine(), KDOM::DOMString("abort"), value);
  -            break;
  -        }
  -        case ATTR_ONERROR:
  -        {
  +//    else if (attr->name() == SVGNames::onerrorAttr)
   //            addSVGEventListener(doc->ecmaEngine(), KDOM::DOMString("error"), value);
  -            break;
  -        }
  -        case ATTR_ONRESIZE:
  -        {
  +//    else if (attr->name() == SVGNames::onresizeAttr)
   //            addSVGEventListener(doc->ecmaEngine(), KDOM::DOMString("resize"), value);
  -            break;
  -        }
  -        case ATTR_ONSCROLL:
  -        {
  +//    else if (attr->name() == SVGNames::onscrollAttr)
   //            addSVGEventListener(doc->ecmaEngine(), KDOM::DOMString("scroll"), value);
  -            break;
  -        }
  -        case ATTR_ONZOOM:
  -        {
  +//    else if (attr->name() == SVGNames::onzoomAttr)
   //            addSVGEventListener(doc->ecmaEngine(), KDOM::DOMString("zoom"), value);
  -            break;
  -        }
  -        case ATTR_ID:
  -        {
  -            KDOM::DOMString svg(KDOM::NS_SVG);
  -            KDOM::DOMString id("id");
  -
  -            KDOM::AttrImpl *attr = getAttributeNodeNS(svg.handle(), id.handle());
  -            if(attr)
  -                attr->setIsId(true);
  -
  -            break;
  -        }
  -        default:
  -            KDOM::ElementImpl::parseAttribute(attr);
  -    };
  +//    else
  +#ifndef APPLE_COMPILE_HACK
  +    // We don't yet know how to support setIsId/isId
  +    if (attr->name() == SVGNames::idAttr)
  +    {
  +        // FIXME: This seems bogus.  id should be in the null or xml namespace, right? -- ecs 10/31/05
  +        KDOM::AttrImpl *attr = getAttributeNodeNS(KDOM::NS_SVG, "id");
  +        if(attr)
  +            attr->setIsId(true);
  +    }
  +    else
  +#endif
  +    KDOM::StyledElementImpl::parseMappedAttribute(attr);
   }
   #if 0
   void SVGElementImpl::addSVGEventListener(KDOM::Ecma *ecmaEngine, KDOM::DOMStringImpl *type, KDOM::DOMStringImpl *value)
  @@ -195,18 +147,5 @@
       }
   }
   #endif
  -void SVGElementImpl::createStyleDeclaration() const
  -{
  -    m_styleDeclarations = new SVGCSSStyleDeclarationImpl(ownerDocument()->implementation()->cdfInterface(), 0);
  -    m_styleDeclarations->ref();
  -
  -    m_styleDeclarations->setNode(const_cast<SVGElementImpl *>(this));
  -    m_styleDeclarations->setParent(ownerDocument()->elementSheet());
  -}
  -
  -SVGDocumentImpl *SVGElementImpl::getDocument() const
  -{
  -    return static_cast<SVGDocumentImpl *>(ownerDocument());
  -}
   
   // vim:ts=4:noet
  
  
  
  1.8       +19 -18    SVGSupport/ksvg2/svg/SVGElementImpl.h
  
  Index: SVGElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGElementImpl.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGElementImpl.h	28 Sep 2005 05:06:07 -0000	1.7
  +++ SVGElementImpl.h	21 Nov 2005 08:29:37 -0000	1.8
  @@ -23,7 +23,7 @@
   #ifndef KSVG_SVGElementImpl_H
   #define KSVG_SVGElementImpl_H
   
  -#include <ksvg2/svg/svgtags.h>
  +#include "SVGNames.h"
   #include <kdom/core/XMLElementImpl.h>
   
   namespace KDOM
  @@ -37,46 +37,47 @@
       class SVGMatrixImpl;
       class SVGSVGElementImpl;
       class SVGStyledElementImpl;
  -    class SVGDocumentImpl;
   
       class SVGElementImpl : public KDOM::XMLElementImpl
       {
       public:
  -        SVGElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGElementImpl();
  -#if APPLE_CHANGES
           virtual bool isSVGElement() { return true; }
  -#endif
           virtual bool isSupported(KDOM::DOMStringImpl *feature, KDOM::DOMStringImpl *version) const;
   
  -        // 'SVGElement' functions
  -        KDOM::DOMStringImpl *getId() const;
  -        void setGetId(KDOM::DOMStringImpl *);
  -        KDOM::DOMStringImpl *xmlbase() const;
  -        void setXmlbase(KDOM::DOMStringImpl *);
  -
           SVGSVGElementImpl *ownerSVGElement() const;
           SVGElementImpl *viewportElement() const;
   
           // Helper methods that returns the attr value if attr is set, otherwise the default value.
           // It throws NO_MODIFICATION_ALLOWED_ERR if the element is read-only.
  -        KDOM::DOMStringImpl *tryGetAttribute(KDOM::DOMStringImpl *name, KDOM::DOMStringImpl *defaultVal = 0) const;
  -        KDOM::DOMStringImpl *tryGetAttributeNS(KDOM::DOMStringImpl *namespaceURI, KDOM::DOMStringImpl *localName, KDOM::DOMStringImpl *defaultVal = 0) const;
  +        KDOM::AtomicString tryGetAttribute(const KDOM::DOMString& name, KDOM::AtomicString defaultValue = KDOM::AtomicString()) const;
  +        KDOM::AtomicString tryGetAttributeNS(const KDOM::DOMString& namespaceURI, const KDOM::DOMString& localName, KDOM::AtomicString defaultValue = KDOM::AtomicString()) const;
   
           // Internal
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  -
  -        virtual void createStyleDeclaration() const;
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           // To be implemented by any element which can establish new viewports...
           virtual QString adjustViewportClipping() const { return QString::null; }
  -
  -        SVGDocumentImpl *getDocument() const;
           
           virtual bool isStyled() const { return false; }
  +        virtual bool isStyledTransformable() const { return false; }
  +        virtual bool isStyledLocatable() const { return false; }
           virtual bool isSVG() const { return false; }
  +        virtual bool isFilterEffect() { return false; }
  +        virtual bool isGradientStop() { return false; }
  +        
  +        // For SVGTestsImpl
  +        virtual bool isValid() { return false; }
  +        
  +        virtual void closeRenderer() { m_closed = true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return false; }
  +        
  +        // helper:
  +        bool isClosed() { return m_closed; }
   
       private:
  +        bool m_closed;
   #if 0
           void addSVGEventListener(KDOM::Ecma *ecmaEngine, const KDOM::DOMString &type, const KDOM::DOMString &value);
   #endif
  
  
  
  1.7       +22 -38    SVGSupport/ksvg2/svg/SVGEllipseElementImpl.cpp
  
  Index: SVGEllipseElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGEllipseElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGEllipseElementImpl.cpp	5 Oct 2005 05:35:19 -0000	1.6
  +++ SVGEllipseElementImpl.cpp	21 Nov 2005 08:29:37 -0000	1.7
  @@ -23,7 +23,7 @@
   #include "config.h"
   #include <kdom/core/AttrImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGEllipseElementImpl.h"
   #include "SVGAnimatedLengthImpl.h"
  @@ -31,10 +31,10 @@
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasCreator.h>
   
  -using namespace KSVG;
  +namespace KSVG {
   
  -SVGEllipseElementImpl::SVGEllipseElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl()
  +SVGEllipseElementImpl::SVGEllipseElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_cx = m_cy = m_rx = m_ry = 0;
   }
  @@ -71,42 +71,24 @@
       return lazy_create<SVGAnimatedLengthImpl>(m_ry, this, LM_HEIGHT, viewportElement());
   }
   
  -void SVGEllipseElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGEllipseElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  +    const KDOM::AtomicString& value = attr->value();
  +    if (attr->name() == SVGNames::cxAttr)
  +        cx()->baseVal()->setValueAsString(value.impl());
  +    if (attr->name() == SVGNames::cyAttr)
  +        cy()->baseVal()->setValueAsString(value.impl());
  +    if (attr->name() == SVGNames::rxAttr)
  +        rx()->baseVal()->setValueAsString(value.impl());
  +    if (attr->name() == SVGNames::ryAttr)
  +        ry()->baseVal()->setValueAsString(value.impl());
  +    else
       {
  -        case ATTR_CX:
  -        {
  -            cx()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_CY:
  -        {
  -            cy()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_RX:
  -        {
  -            rx()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_RY:
  -        {
  -            ry()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGTransformableImpl::parseAttribute(attr)) return;
  -            
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   KCPathDataList SVGEllipseElementImpl::toPathData() const
  @@ -131,4 +113,6 @@
       return restore;
   }
   
  +}
  +
   // vim:ts=4:noet
  
  
  
  1.5       +6 -8      SVGSupport/ksvg2/svg/SVGEllipseElementImpl.h
  
  Index: SVGEllipseElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGEllipseElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGEllipseElementImpl.h	1 Sep 2005 07:35:37 -0000	1.4
  +++ SVGEllipseElementImpl.h	21 Nov 2005 08:29:37 -0000	1.5
  @@ -25,21 +25,19 @@
   
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
   namespace KSVG
   {
       class SVGAnimatedLengthImpl;
  -    class SVGEllipseElementImpl : public SVGStyledElementImpl,
  +    class SVGEllipseElementImpl : public SVGStyledTransformableElementImpl,
                                     public SVGTestsImpl,
                                     public SVGLangSpaceImpl,
  -                                  public SVGExternalResourcesRequiredImpl,
  -                                  public SVGTransformableImpl
  +                                  public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGEllipseElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGEllipseElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGEllipseElementImpl();
   
           // 'SVGEllipseElement' functions
  @@ -48,9 +46,9 @@
           SVGAnimatedLengthImpl *rx() const;
           SVGAnimatedLengthImpl *ry() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
           virtual KCPathDataList toPathData() const;
   
           virtual const SVGStyledElementImpl *pushAttributeContext(const SVGStyledElementImpl *context);
  
  
  
  1.6       +3 -5      SVGSupport/ksvg2/svg/SVGExternalResourcesRequiredImpl.cpp
  
  Index: SVGExternalResourcesRequiredImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGExternalResourcesRequiredImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGExternalResourcesRequiredImpl.cpp	5 Oct 2005 05:35:20 -0000	1.5
  +++ SVGExternalResourcesRequiredImpl.cpp	21 Nov 2005 08:29:37 -0000	1.6
  @@ -23,7 +23,7 @@
   #include "config.h"
   #include <kdom/core/AttrImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGElementImpl.h"
   #include "SVGAnimatedBooleanImpl.h"
  @@ -47,12 +47,10 @@
       return lazy_create<SVGAnimatedBooleanImpl>(m_external, static_cast<const SVGStyledElementImpl *>(0));
   }
   
  -bool SVGExternalResourcesRequiredImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +bool SVGExternalResourcesRequiredImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    if(id == ATTR_EXTERNALRESOURCESREQUIRED)
  -    {
  +    if (attr->name() == SVGNames::externalResourcesRequiredAttr) {
           externalResourcesRequired()->setBaseVal(value == "true");
           return true;
       }
  
  
  
  1.4       +1 -1      SVGSupport/ksvg2/svg/SVGExternalResourcesRequiredImpl.h
  
  Index: SVGExternalResourcesRequiredImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGExternalResourcesRequiredImpl.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SVGExternalResourcesRequiredImpl.h	1 Sep 2005 07:35:38 -0000	1.3
  +++ SVGExternalResourcesRequiredImpl.h	21 Nov 2005 08:29:37 -0000	1.4
  @@ -40,7 +40,7 @@
           // 'SVGExternalResourcesRequired' functions
           SVGAnimatedBooleanImpl *externalResourcesRequired() const;
   
  -        bool parseAttribute(KDOM::AttributeImpl *attr);
  +        bool parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       private:
           mutable SVGAnimatedBooleanImpl *m_external;
  
  
  
  1.7       +25 -40    SVGSupport/ksvg2/svg/SVGFEBlendElementImpl.cpp
  
  Index: SVGFEBlendElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEBlendElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGFEBlendElementImpl.cpp	5 Oct 2005 05:35:20 -0000	1.6
  +++ SVGFEBlendElementImpl.cpp	21 Nov 2005 08:29:37 -0000	1.7
  @@ -26,12 +26,10 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasFilters.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGFEBlendElementImpl.h"
  @@ -41,8 +39,8 @@
   
   using namespace KSVG;
   
  -SVGFEBlendElementImpl::SVGFEBlendElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix)
  +SVGFEBlendElementImpl::SVGFEBlendElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGFilterPrimitiveStandardAttributesImpl(tagName, doc)
   {
       m_in1 = m_in2 = 0;
       m_mode = 0;
  @@ -77,49 +75,36 @@
       return lazy_create<SVGAnimatedEnumerationImpl>(m_mode, dummy);
   }
   
  -void SVGFEBlendElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFEBlendElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    if (attr->name() == SVGNames::modeAttr)
       {
  -        case ATTR_MODE:
  -        {
  -            if(value == "normal")
  -                mode()->setBaseVal(SVG_FEBLEND_MODE_NORMAL);
  -            else if(value == "multiply")
  -                mode()->setBaseVal(SVG_FEBLEND_MODE_MULTIPLY);
  -            else if(value == "screen")
  -                mode()->setBaseVal(SVG_FEBLEND_MODE_SCREEN);
  -            else if(value == "darken")
  -                mode()->setBaseVal(SVG_FEBLEND_MODE_DARKEN);
  -            else if(value == "lighten")
  -                mode()->setBaseVal(SVG_FEBLEND_MODE_LIGHTEN);
  -            break;
  -        }
  -        case ATTR_IN:
  -        {
  -            in1()->setBaseVal(value.handle());
  -            break;
  -        }
  -        case ATTR_IN2:
  -        {
  -            in2()->setBaseVal(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(value == "normal")
  +            mode()->setBaseVal(SVG_FEBLEND_MODE_NORMAL);
  +        else if(value == "multiply")
  +            mode()->setBaseVal(SVG_FEBLEND_MODE_MULTIPLY);
  +        else if(value == "screen")
  +            mode()->setBaseVal(SVG_FEBLEND_MODE_SCREEN);
  +        else if(value == "darken")
  +            mode()->setBaseVal(SVG_FEBLEND_MODE_DARKEN);
  +        else if(value == "lighten")
  +            mode()->setBaseVal(SVG_FEBLEND_MODE_LIGHTEN);
  +    }
  +    else if (attr->name() == SVGNames::inAttr)
  +        in1()->setBaseVal(value.impl());
  +    else if (attr->name() == SVGNames::in2Attr)
  +        in2()->setBaseVal(value.impl());
  +    else
  +        SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -KCanvasItem *SVGFEBlendElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGFEBlendElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    m_filterEffect = static_cast<KCanvasFEBlend *>(canvas->renderingDevice()->createFilterEffect(FE_BLEND));
  +    m_filterEffect = static_cast<KCanvasFEBlend *>(canvas()->renderingDevice()->createFilterEffect(FE_BLEND));
       m_filterEffect->setBlendMode((KCBlendModeType)(mode()->baseVal()-1));
  -    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).string());
  -    m_filterEffect->setIn2(KDOM::DOMString(in2()->baseVal()).string());
  +    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
  +    m_filterEffect->setIn2(KDOM::DOMString(in2()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       return 0;
   }
  
  
  
  1.6       +4 -4      SVGSupport/ksvg2/svg/SVGFEBlendElementImpl.h
  
  Index: SVGFEBlendElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEBlendElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEBlendElementImpl.h	4 Sep 2005 09:10:54 -0000	1.5
  +++ SVGFEBlendElementImpl.h	21 Nov 2005 08:29:37 -0000	1.6
  @@ -36,7 +36,7 @@
       class SVGFEBlendElementImpl : public SVGFilterPrimitiveStandardAttributesImpl
       {
       public:
  -        SVGFEBlendElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEBlendElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEBlendElementImpl();
   
           // 'SVGFEBlendElement' functions
  @@ -45,11 +45,11 @@
           SVGAnimatedEnumerationImpl *mode() const;
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  
  
  
  1.8       +23 -37    SVGSupport/ksvg2/svg/SVGFEColorMatrixElementImpl.cpp
  
  Index: SVGFEColorMatrixElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEColorMatrixElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFEColorMatrixElementImpl.cpp	5 Oct 2005 05:35:20 -0000	1.7
  +++ SVGFEColorMatrixElementImpl.cpp	21 Nov 2005 08:29:37 -0000	1.8
  @@ -26,14 +26,13 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasResources.h>
   #include <kcanvas/KCanvasFilters.h>
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingPaintServerGradient.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGFEColorMatrixElementImpl.h"
  @@ -44,8 +43,8 @@
   
   using namespace KSVG;
   
  -SVGFEColorMatrixElementImpl::SVGFEColorMatrixElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix)
  +SVGFEColorMatrixElementImpl::SVGFEColorMatrixElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGFilterPrimitiveStandardAttributesImpl(tagName, doc)
   {
       m_in1 = 0;
       m_type = 0;
  @@ -81,45 +80,32 @@
       return lazy_create<SVGAnimatedNumberListImpl>(m_values, dummy);
   }
   
  -void SVGFEColorMatrixElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFEColorMatrixElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    if (attr->name() == SVGNames::typeAttr)
       {
  -        case ATTR_TYPE:
  -        {
  -            if(value == "matrix")
  -                type()->setBaseVal(SVG_FECOLORMATRIX_TYPE_MATRIX);
  -            else if(value == "saturate")
  -                type()->setBaseVal(SVG_FECOLORMATRIX_TYPE_SATURATE);
  -            else if(value == "hueRotate")
  -                type()->setBaseVal(SVG_FECOLORMATRIX_TYPE_HUEROTATE);
  -            else if(value == "luminanceToAlpha")
  -                type()->setBaseVal(SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA);
  -            break;
  -        }
  -        case ATTR_IN:
  -        {
  -            in1()->setBaseVal(value.handle());
  -            break;
  -        }
  -        case ATTR_VALUES:
  -        {
  -            values()->baseVal()->parse(value.string(), this);
  -            break;
  -        }
  -        default:
  -        {
  -            SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(value == "matrix")
  +            type()->setBaseVal(SVG_FECOLORMATRIX_TYPE_MATRIX);
  +        else if(value == "saturate")
  +            type()->setBaseVal(SVG_FECOLORMATRIX_TYPE_SATURATE);
  +        else if(value == "hueRotate")
  +            type()->setBaseVal(SVG_FECOLORMATRIX_TYPE_HUEROTATE);
  +        else if(value == "luminanceToAlpha")
  +            type()->setBaseVal(SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA);
  +    }
  +    else if (attr->name() == SVGNames::inAttr)
  +        in1()->setBaseVal(value.impl());
  +    else if (attr->name() == SVGNames::valuesAttr)
  +        values()->baseVal()->parse(value.qstring(), this);
  +    else
  +        SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -KCanvasItem *SVGFEColorMatrixElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *) const
  +khtml::RenderObject *SVGFEColorMatrixElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *)
   {
  -    m_filterEffect = static_cast<KCanvasFEColorMatrix *>(canvas->renderingDevice()->createFilterEffect(FE_COLOR_MATRIX));
  -    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).string());
  +    m_filterEffect = static_cast<KCanvasFEColorMatrix *>(canvas()->renderingDevice()->createFilterEffect(FE_COLOR_MATRIX));
  +    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       Q3ValueList<float> _values;
       SVGNumberListImpl *numbers = values()->baseVal();
  
  
  
  1.5       +4 -4      SVGSupport/ksvg2/svg/SVGFEColorMatrixElementImpl.h
  
  Index: SVGFEColorMatrixElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEColorMatrixElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEColorMatrixElementImpl.h	1 Sep 2005 07:35:38 -0000	1.4
  +++ SVGFEColorMatrixElementImpl.h	21 Nov 2005 08:29:37 -0000	1.5
  @@ -37,7 +37,7 @@
       class SVGFEColorMatrixElementImpl : public SVGFilterPrimitiveStandardAttributesImpl
       {
       public:
  -        SVGFEColorMatrixElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEColorMatrixElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEColorMatrixElementImpl();
   
           // 'SVGFEColorMatrixElement' functions
  @@ -46,11 +46,11 @@
           SVGAnimatedNumberListImpl *values() const;
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  
  
  
  1.8       +16 -26    SVGSupport/ksvg2/svg/SVGFEComponentTransferElementImpl.cpp
  
  Index: SVGFEComponentTransferElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEComponentTransferElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFEComponentTransferElementImpl.cpp	5 Oct 2005 05:35:20 -0000	1.7
  +++ SVGFEComponentTransferElementImpl.cpp	21 Nov 2005 08:29:37 -0000	1.8
  @@ -26,12 +26,11 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasResources.h>
   #include <kcanvas/KCanvasFilters.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGFEComponentTransferElementImpl.h"
  @@ -46,8 +45,8 @@
   
   using namespace KSVG;
   
  -SVGFEComponentTransferElementImpl::SVGFEComponentTransferElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix)
  +SVGFEComponentTransferElementImpl::SVGFEComponentTransferElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGFilterPrimitiveStandardAttributesImpl(tagName, doc)
   {
       m_in1 = 0;
       m_filterEffect = 0;
  @@ -65,31 +64,22 @@
       return lazy_create<SVGAnimatedStringImpl>(m_in1, dummy);
   }
   
  -void SVGFEComponentTransferElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFEComponentTransferElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_IN:
  -        {
  -            in1()->setBaseVal(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(attr);
  -        }
  -    };
  +    if (attr->name() == SVGNames::inAttr)
  +        in1()->setBaseVal(value.impl());
  +    else
  +        SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -KCanvasItem *SVGFEComponentTransferElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGFEComponentTransferElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    m_filterEffect = static_cast<KCanvasFEComponentTransfer *>(canvas->renderingDevice()->createFilterEffect(FE_COMPONENT_TRANSFER));
  +    m_filterEffect = static_cast<KCanvasFEComponentTransfer *>(canvas()->renderingDevice()->createFilterEffect(FE_COMPONENT_TRANSFER));
       if (!m_filterEffect)
           return 0;
   
  -    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).string());
  +    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       return 0;
   }
  @@ -99,7 +89,7 @@
       return m_filterEffect;
   }
   
  -void SVGFEComponentTransferElementImpl::close()
  +void SVGFEComponentTransferElementImpl::closeRenderer()
   {
       if (!m_filterEffect)
           return;
  @@ -107,7 +97,7 @@
       for(KDOM::NodeImpl *n = firstChild(); n != 0; n = n->nextSibling())
       {
           KCComponentTransferFunction func;
  -        if(n->id() == ID_FEFUNCR)
  +        if(n->hasTagName(SVGNames::feFuncRTag))
           {
               SVGFEFuncRElementImpl *funcR = static_cast<SVGFEFuncRElementImpl *>(n);
               func.type = (KCComponentTransferType)(funcR->type()->baseVal() - 1);
  @@ -118,7 +108,7 @@
               func.offset = funcR->offset()->baseVal();
               m_filterEffect->setRedFunction(func);
           }
  -        else if(n->id() == ID_FEFUNCG)
  +        else if(n->hasTagName(SVGNames::feFuncGTag))
           {
               SVGFEFuncGElementImpl *funcG = static_cast<SVGFEFuncGElementImpl *>(n);
               func.type = (KCComponentTransferType)(funcG->type()->baseVal() - 1);
  @@ -129,7 +119,7 @@
               func.offset = funcG->offset()->baseVal();
               m_filterEffect->setGreenFunction(func);
           }
  -        else if(n->id() == ID_FEFUNCB)
  +        else if(n->hasTagName(SVGNames::feFuncBTag))
           {
               SVGFEFuncBElementImpl *funcB = static_cast<SVGFEFuncBElementImpl *>(n);
               func.type = (KCComponentTransferType)(funcB->type()->baseVal() - 1);
  @@ -140,7 +130,7 @@
               func.offset = funcB->offset()->baseVal();
               m_filterEffect->setBlueFunction(func);
           }
  -        else if(n->id() == ID_FEFUNCA)
  +        else if(n->hasTagName(SVGNames::feFuncATag))
           {
               SVGFEFuncAElementImpl *funcA = static_cast<SVGFEFuncAElementImpl *>(n);
               func.type = (KCComponentTransferType)(funcA->type()->baseVal() - 1);
  
  
  
  1.5       +5 -5      SVGSupport/ksvg2/svg/SVGFEComponentTransferElementImpl.h
  
  Index: SVGFEComponentTransferElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEComponentTransferElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEComponentTransferElementImpl.h	1 Sep 2005 07:35:38 -0000	1.4
  +++ SVGFEComponentTransferElementImpl.h	21 Nov 2005 08:29:37 -0000	1.5
  @@ -35,22 +35,22 @@
       class SVGFEComponentTransferElementImpl : public SVGFilterPrimitiveStandardAttributesImpl
       {
       public:
  -        SVGFEComponentTransferElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEComponentTransferElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEComponentTransferElementImpl();
   
           // 'SVGFEComponentTransferElement' functions
           SVGAnimatedStringImpl *in1() const;
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  -        virtual void close();
  +        virtual void closeRenderer();
   
       private:
           mutable SVGAnimatedStringImpl *m_in1;
  
  
  
  1.7       +28 -42    SVGSupport/ksvg2/svg/SVGFECompositeElementImpl.cpp
  
  Index: SVGFECompositeElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFECompositeElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGFECompositeElementImpl.cpp	5 Oct 2005 05:35:20 -0000	1.6
  +++ SVGFECompositeElementImpl.cpp	21 Nov 2005 08:29:38 -0000	1.7
  @@ -26,14 +26,13 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasResources.h>
   #include <kcanvas/KCanvasFilters.h>
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingPaintServerGradient.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGFECompositeElementImpl.h"
  @@ -44,8 +43,8 @@
   
   using namespace KSVG;
   
  -SVGFECompositeElementImpl::SVGFECompositeElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix)
  +SVGFECompositeElementImpl::SVGFECompositeElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGFilterPrimitiveStandardAttributesImpl(tagName, doc)
   {
       m_in1 = m_in2 = 0;
       m_k1 = m_k2 = m_k3 = m_k4 = 0;
  @@ -113,51 +112,38 @@
       return lazy_create<SVGAnimatedNumberImpl>(m_k4, dummy);
   }
   
  -void SVGFECompositeElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFECompositeElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    if (attr->name() == SVGNames::operatorAttr)
       {
  -        case ATTR_OPERATOR:
  -        {
  -            if(value == "over")
  -                _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_OVER);
  -            else if(value == "in")
  -                _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_IN);
  -            else if(value == "out")
  -                _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_OUT);
  -            else if(value == "atop")
  -                _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_ATOP);
  -            else if(value == "xor")
  -                _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_XOR);
  -            else if(value == "arithmatic")
  -                _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_ARITHMETIC);
  -            break;
  -        }
  -        case ATTR_IN:
  -        {
  -            in1()->setBaseVal(value.handle());
  -            break;
  -        }
  -        case ATTR_IN2:
  -        {
  -            in2()->setBaseVal(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(value == "over")
  +            _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_OVER);
  +        else if(value == "in")
  +            _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_IN);
  +        else if(value == "out")
  +            _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_OUT);
  +        else if(value == "atop")
  +            _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_ATOP);
  +        else if(value == "xor")
  +            _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_XOR);
  +        else if(value == "arithmatic")
  +            _operator()->setBaseVal(SVG_FECOMPOSITE_OPERATOR_ARITHMETIC);
  +    }
  +    else if (attr->name() == SVGNames::inAttr)
  +        in1()->setBaseVal(value.impl());
  +    else if (attr->name() == SVGNames::in2Attr)
  +        in2()->setBaseVal(value.impl());
  +    else
  +        SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -KCanvasItem *SVGFECompositeElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGFECompositeElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    m_filterEffect = static_cast<KCanvasFEComposite *>(canvas->renderingDevice()->createFilterEffect(FE_COMPOSITE));
  +    m_filterEffect = static_cast<KCanvasFEComposite *>(canvas()->renderingDevice()->createFilterEffect(FE_COMPOSITE));
       m_filterEffect->setOperation((KCCompositeOperationType)(_operator()->baseVal() - 1));
  -    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).string());
  -    m_filterEffect->setIn2(KDOM::DOMString(in2()->baseVal()).string());
  +    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
  +    m_filterEffect->setIn2(KDOM::DOMString(in2()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       m_filterEffect->setK1(k1()->baseVal());
       m_filterEffect->setK2(k2()->baseVal());
  
  
  
  1.5       +4 -4      SVGSupport/ksvg2/svg/SVGFECompositeElementImpl.h
  
  Index: SVGFECompositeElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFECompositeElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFECompositeElementImpl.h	1 Sep 2005 07:35:38 -0000	1.4
  +++ SVGFECompositeElementImpl.h	21 Nov 2005 08:29:38 -0000	1.5
  @@ -37,7 +37,7 @@
       class SVGFECompositeElementImpl : public SVGFilterPrimitiveStandardAttributesImpl
       {
       public:
  -        SVGFECompositeElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFECompositeElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFECompositeElementImpl();
   
           // 'SVGFECompositeElement' functions
  @@ -50,11 +50,11 @@
           SVGAnimatedNumberImpl *k4() const;
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  
  
  
  1.7       +13 -23    SVGSupport/ksvg2/svg/SVGFEFloodElementImpl.cpp
  
  Index: SVGFEFloodElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFloodElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGFEFloodElementImpl.cpp	5 Oct 2005 05:35:20 -0000	1.6
  +++ SVGFEFloodElementImpl.cpp	21 Nov 2005 08:29:38 -0000	1.7
  @@ -26,11 +26,10 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasFilters.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGFEFloodElementImpl.h"
  @@ -39,8 +38,8 @@
   
   using namespace KSVG;
   
  -SVGFEFloodElementImpl::SVGFEFloodElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix)
  +SVGFEFloodElementImpl::SVGFEFloodElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGFilterPrimitiveStandardAttributesImpl(tagName, doc)
   {
       m_in1 = 0;
       m_filterEffect = 0;
  @@ -58,31 +57,22 @@
       return lazy_create<SVGAnimatedStringImpl>(m_in1, dummy);
   }
   
  -void SVGFEFloodElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFEFloodElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_IN:
  -        {
  -            in1()->setBaseVal(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(attr);
  -        }
  -    };
  +    if (attr->name() == SVGNames::inAttr)
  +        in1()->setBaseVal(value.impl());
  +    else
  +        SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -KCanvasItem *SVGFEFloodElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGFEFloodElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    m_filterEffect = static_cast<KCanvasFEFlood *>(canvas->renderingDevice()->createFilterEffect(FE_FLOOD));
  -    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).string());
  +    m_filterEffect = static_cast<KCanvasFEFlood *>(canvas()->renderingDevice()->createFilterEffect(FE_FLOOD));
  +    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
  -    m_filterEffect->setFloodColor(static_cast<SVGRenderStyle *>(renderStyle())->floodColor());
  -    m_filterEffect->setFloodOpacity(static_cast<SVGRenderStyle *>(renderStyle())->floodOpacity());
  +    //m_filterEffect->setFloodColor(static_cast<SVGRenderStyle *>(renderStyle())->floodColor());
  +    //m_filterEffect->setFloodOpacity(static_cast<SVGRenderStyle *>(renderStyle())->floodOpacity());
       return 0;
   }
   
  
  
  
  1.6       +4 -4      SVGSupport/ksvg2/svg/SVGFEFloodElementImpl.h
  
  Index: SVGFEFloodElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFloodElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEFloodElementImpl.h	4 Sep 2005 09:10:54 -0000	1.5
  +++ SVGFEFloodElementImpl.h	21 Nov 2005 08:29:38 -0000	1.6
  @@ -35,18 +35,18 @@
       class SVGFEFloodElementImpl : public SVGFilterPrimitiveStandardAttributesImpl
       {
       public:
  -        SVGFEFloodElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEFloodElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEFloodElementImpl();
   
           // 'SVGFEFloodElement' functions
           SVGAnimatedStringImpl *in1() const;
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  
  
  
  1.6       +2 -2      SVGSupport/ksvg2/svg/SVGFEFuncAElementImpl.cpp
  
  Index: SVGFEFuncAElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFuncAElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEFuncAElementImpl.cpp	5 Oct 2005 05:35:20 -0000	1.5
  +++ SVGFEFuncAElementImpl.cpp	21 Nov 2005 08:29:38 -0000	1.6
  @@ -25,8 +25,8 @@
   
   using namespace KSVG;
   
  -SVGFEFuncAElementImpl::SVGFEFuncAElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGComponentTransferFunctionElementImpl(doc, id, prefix)
  +SVGFEFuncAElementImpl::SVGFEFuncAElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGComponentTransferFunctionElementImpl(tagName, doc)
   {
   }
   
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGFEFuncAElementImpl.h
  
  Index: SVGFEFuncAElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFuncAElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEFuncAElementImpl.h	1 Sep 2005 07:35:39 -0000	1.4
  +++ SVGFEFuncAElementImpl.h	21 Nov 2005 08:29:38 -0000	1.5
  @@ -30,7 +30,7 @@
       class SVGFEFuncAElementImpl : public SVGComponentTransferFunctionElementImpl
       {
       public:
  -        SVGFEFuncAElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEFuncAElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEFuncAElementImpl();
       };
   };
  
  
  
  1.6       +2 -2      SVGSupport/ksvg2/svg/SVGFEFuncBElementImpl.cpp
  
  Index: SVGFEFuncBElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFuncBElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEFuncBElementImpl.cpp	5 Oct 2005 05:35:21 -0000	1.5
  +++ SVGFEFuncBElementImpl.cpp	21 Nov 2005 08:29:38 -0000	1.6
  @@ -25,8 +25,8 @@
   
   using namespace KSVG;
   
  -SVGFEFuncBElementImpl::SVGFEFuncBElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGComponentTransferFunctionElementImpl(doc, id, prefix)
  +SVGFEFuncBElementImpl::SVGFEFuncBElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGComponentTransferFunctionElementImpl(tagName, doc)
   {
   }
   
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGFEFuncBElementImpl.h
  
  Index: SVGFEFuncBElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFuncBElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEFuncBElementImpl.h	1 Sep 2005 07:35:39 -0000	1.4
  +++ SVGFEFuncBElementImpl.h	21 Nov 2005 08:29:38 -0000	1.5
  @@ -30,7 +30,7 @@
       class SVGFEFuncBElementImpl : public SVGComponentTransferFunctionElementImpl
       {
       public:
  -        SVGFEFuncBElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEFuncBElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEFuncBElementImpl();
       };
   };
  
  
  
  1.6       +2 -2      SVGSupport/ksvg2/svg/SVGFEFuncGElementImpl.cpp
  
  Index: SVGFEFuncGElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFuncGElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEFuncGElementImpl.cpp	5 Oct 2005 05:35:21 -0000	1.5
  +++ SVGFEFuncGElementImpl.cpp	21 Nov 2005 08:29:38 -0000	1.6
  @@ -25,8 +25,8 @@
   
   using namespace KSVG;
   
  -SVGFEFuncGElementImpl::SVGFEFuncGElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGComponentTransferFunctionElementImpl(doc, id, prefix)
  +SVGFEFuncGElementImpl::SVGFEFuncGElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGComponentTransferFunctionElementImpl(tagName, doc)
   {
   }
   
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGFEFuncGElementImpl.h
  
  Index: SVGFEFuncGElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFuncGElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEFuncGElementImpl.h	1 Sep 2005 07:35:39 -0000	1.4
  +++ SVGFEFuncGElementImpl.h	21 Nov 2005 08:29:38 -0000	1.5
  @@ -30,7 +30,7 @@
       class SVGFEFuncGElementImpl : public SVGComponentTransferFunctionElementImpl
       {
       public:
  -        SVGFEFuncGElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEFuncGElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEFuncGElementImpl();
       };
   };
  
  
  
  1.6       +2 -2      SVGSupport/ksvg2/svg/SVGFEFuncRElementImpl.cpp
  
  Index: SVGFEFuncRElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFuncRElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGFEFuncRElementImpl.cpp	5 Oct 2005 05:35:21 -0000	1.5
  +++ SVGFEFuncRElementImpl.cpp	21 Nov 2005 08:29:38 -0000	1.6
  @@ -25,8 +25,8 @@
   
   using namespace KSVG;
   
  -SVGFEFuncRElementImpl::SVGFEFuncRElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGComponentTransferFunctionElementImpl(doc, id, prefix)
  +SVGFEFuncRElementImpl::SVGFEFuncRElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGComponentTransferFunctionElementImpl(tagName, doc)
   {
   }
   
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGFEFuncRElementImpl.h
  
  Index: SVGFEFuncRElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEFuncRElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEFuncRElementImpl.h	1 Sep 2005 07:35:39 -0000	1.4
  +++ SVGFEFuncRElementImpl.h	21 Nov 2005 08:29:38 -0000	1.5
  @@ -30,7 +30,7 @@
       class SVGFEFuncRElementImpl : public SVGComponentTransferFunctionElementImpl
       {
       public:
  -        SVGFEFuncRElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEFuncRElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEFuncRElementImpl();
       };
   };
  
  
  
  1.8       +19 -32    SVGSupport/ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp
  
  Index: SVGFEGaussianBlurElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEGaussianBlurElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFEGaussianBlurElementImpl.cpp	5 Oct 2005 05:35:21 -0000	1.7
  +++ SVGFEGaussianBlurElementImpl.cpp	21 Nov 2005 08:29:38 -0000	1.8
  @@ -26,13 +26,12 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasResources.h>
   #include <kcanvas/KCanvasFilters.h>
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingPaintServerGradient.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGFEGaussianBlurElementImpl.h"
  @@ -42,8 +41,8 @@
   
   using namespace KSVG;
   
  -SVGFEGaussianBlurElementImpl::SVGFEGaussianBlurElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix)
  +SVGFEGaussianBlurElementImpl::SVGFEGaussianBlurElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGFilterPrimitiveStandardAttributesImpl(tagName, doc)
   {
       m_in1 = 0;
       m_stdDeviationX = 0;
  @@ -83,39 +82,27 @@
   {
   }
   
  -void SVGFEGaussianBlurElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFEGaussianBlurElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_STDDEVIATION:
  -        {
  -            QStringList numbers = QStringList::split(' ', value.string());
  -            stdDeviationX()->setBaseVal(numbers[0].toDouble());
  -            if(numbers.count() == 1)
  -                stdDeviationY()->setBaseVal(numbers[0].toDouble());
  -            else
  -                stdDeviationY()->setBaseVal(numbers[1].toDouble());
  -
  -            break;
  -        }
  -        case ATTR_IN:
  -        {
  -            in1()->setBaseVal(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(attr);
  -        }
  -    };
  +    if (attr->name() == SVGNames::stdDeviationAttr) {
  +        QStringList numbers = QStringList::split(' ', value.qstring());
  +        stdDeviationX()->setBaseVal(numbers[0].toDouble());
  +        if(numbers.count() == 1)
  +            stdDeviationY()->setBaseVal(numbers[0].toDouble());
  +        else
  +            stdDeviationY()->setBaseVal(numbers[1].toDouble());
  +    }
  +    else if (attr->name() == SVGNames::inAttr)
  +        in1()->setBaseVal(value.impl());
  +    else
  +        SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -KCanvasItem *SVGFEGaussianBlurElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGFEGaussianBlurElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    m_filterEffect = static_cast<KCanvasFEGaussianBlur *>(canvas->renderingDevice()->createFilterEffect(FE_GAUSSIAN_BLUR));
  -    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).string());
  +    m_filterEffect = static_cast<KCanvasFEGaussianBlur *>(canvas()->renderingDevice()->createFilterEffect(FE_GAUSSIAN_BLUR));
  +    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       m_filterEffect->setStdDeviationX(stdDeviationX()->baseVal());
       m_filterEffect->setStdDeviationY(stdDeviationY()->baseVal());
  
  
  
  1.5       +4 -4      SVGSupport/ksvg2/svg/SVGFEGaussianBlurElementImpl.h
  
  Index: SVGFEGaussianBlurElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEGaussianBlurElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEGaussianBlurElementImpl.h	1 Sep 2005 07:35:39 -0000	1.4
  +++ SVGFEGaussianBlurElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  @@ -36,7 +36,7 @@
       class SVGFEGaussianBlurElementImpl : public SVGFilterPrimitiveStandardAttributesImpl
       {
       public:
  -        SVGFEGaussianBlurElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEGaussianBlurElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEGaussianBlurElementImpl();
   
           // 'SVGFEGaussianBlurElement' functions
  @@ -47,11 +47,11 @@
           void setStdDeviation(float stdDeviationX, float stdDeviationY);
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  
  
  
  1.7       +20 -26    SVGSupport/ksvg2/svg/SVGFEImageElementImpl.cpp
  
  Index: SVGFEImageElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEImageElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGFEImageElementImpl.cpp	5 Oct 2005 05:35:21 -0000	1.6
  +++ SVGFEImageElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.7
  @@ -27,9 +27,8 @@
   #include <kdom/cache/KDOMLoader.h>
   #include <kdom/cache/KDOMCachedObject.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGFEImageElementImpl.h"
   #include "SVGAnimatedLengthImpl.h"
   #include "SVGAnimatedStringImpl.h"
  @@ -39,15 +38,15 @@
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasCreator.h>
   #include <kcanvas/KCanvasImage.h>
  -#include <kcanvas/device/KRenderingStyle.h>
  +#include "KCanvasRenderingStyle.h"
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingFillPainter.h>
   #include <kcanvas/device/KRenderingPaintServerImage.h>
   
   using namespace KSVG;
   
  -SVGFEImageElementImpl::SVGFEImageElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix), SVGURIReferenceImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
  +SVGFEImageElementImpl::SVGFEImageElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGFilterPrimitiveStandardAttributesImpl(tagName, doc), SVGURIReferenceImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_preserveAspectRatio = 0;
       m_cachedImage = 0;
  @@ -64,26 +63,19 @@
       return lazy_create<SVGAnimatedPreserveAspectRatioImpl>(m_preserveAspectRatio, this);
   }
   
  -void SVGFEImageElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFEImageElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    if (attr->name() == SVGNames::preserveAspectRatioAttr)
  +        preserveAspectRatio()->baseVal()->parsePreserveAspectRatio(value.impl());
  +    else
       {
  -        case ATTR_PRESERVEASPECTRATIO:
  -        {
  -            preserveAspectRatio()->baseVal()->parsePreserveAspectRatio(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGURIReferenceImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -
  -            SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(SVGURIReferenceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +
  +        SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
  +    }
   }
   
   void SVGFEImageElementImpl::notifyFinished(KDOM::CachedObject *finishedObj)
  @@ -103,17 +95,19 @@
   
   void SVGFEImageElementImpl::finalizeStyle(KCanvasRenderingStyle *style, bool /* needFillStrokeUpdate */)
   {
  -    KURL fullUrl(ownerDocument()->documentKURI(), KDOM::DOMString(href()->baseVal()).string());
  +#ifndef APPLE_CHANGES
  +    KURL fullUrl(ownerDocument()->documentKURI(), KDOM::DOMString(href()->baseVal()).qstring());
       kdDebug() << "REQUESTING LOAD OF " << fullUrl.prettyURL() << endl;
  +#endif
   
  -    m_cachedImage = ownerDocument()->docLoader()->requestImage(fullUrl);
  +    m_cachedImage = ownerDocument()->docLoader()->requestImage(href()->baseVal());
       if(m_cachedImage)
           m_cachedImage->ref(this);
   }
   
  -KCanvasItem *SVGFEImageElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGFEImageElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    m_filterEffect = static_cast<KCanvasFEImage *>(canvas->renderingDevice()->createFilterEffect(FE_IMAGE));
  +    m_filterEffect = static_cast<KCanvasFEImage *>(canvas()->renderingDevice()->createFilterEffect(FE_IMAGE));
       setStandardAttributes(m_filterEffect);
       return 0;
   }
  
  
  
  1.5       +4 -4      SVGSupport/ksvg2/svg/SVGFEImageElementImpl.h
  
  Index: SVGFEImageElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEImageElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEImageElementImpl.h	1 Sep 2005 07:35:40 -0000	1.4
  +++ SVGFEImageElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  @@ -44,21 +44,21 @@
                                     public KDOM::CachedObjectClient
       {
       public:
  -        SVGFEImageElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGFEImageElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEImageElementImpl();
   
           // 'SVGFEImageElement' functions
           SVGAnimatedPreserveAspectRatioImpl *preserveAspectRatio() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual void notifyFinished(KDOM::CachedObject *finishedObj);
   
       protected:
           virtual void finalizeStyle(KCanvasRenderingStyle *style, bool needFillStrokeUpdate = true);
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  
  
  
  1.7       +7 -9      SVGSupport/ksvg2/svg/SVGFEMergeElementImpl.cpp
  
  Index: SVGFEMergeElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEMergeElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGFEMergeElementImpl.cpp	5 Oct 2005 05:35:21 -0000	1.6
  +++ SVGFEMergeElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.7
  @@ -26,12 +26,10 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasFilters.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGFEMergeElementImpl.h"
  @@ -42,8 +40,8 @@
   
   using namespace KSVG;
   
  -SVGFEMergeElementImpl::SVGFEMergeElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix)
  +SVGFEMergeElementImpl::SVGFEMergeElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGFilterPrimitiveStandardAttributesImpl(tagName, doc)
   {
       m_filterEffect = 0;
   }
  @@ -52,9 +50,9 @@
   {
   }
   
  -KCanvasItem *SVGFEMergeElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *) const
  +khtml::RenderObject *SVGFEMergeElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *)
   {
  -    m_filterEffect = static_cast<KCanvasFEMerge *>(canvas->renderingDevice()->createFilterEffect(FE_MERGE));
  +    m_filterEffect = static_cast<KCanvasFEMerge *>(canvas()->renderingDevice()->createFilterEffect(FE_MERGE));
       setStandardAttributes(m_filterEffect);
       return 0;
   }
  @@ -64,15 +62,15 @@
       return m_filterEffect;
   }
   
  -void SVGFEMergeElementImpl::close()
  +void SVGFEMergeElementImpl::closeRenderer()
   {
       QStringList mergeInputs;
       for(KDOM::NodeImpl *n = firstChild(); n != 0; n = n->nextSibling())
       {
  -        if(n->id() == ID_FEMERGENODE)
  +        if(n->hasTagName(SVGNames::feMergeNodeTag))
           {
               SVGFEMergeNodeElementImpl *mergeNode = static_cast<SVGFEMergeNodeElementImpl *>(n);
  -            mergeInputs.append(KDOM::DOMString(mergeNode->in1()->baseVal()).string());
  +            mergeInputs.append(KDOM::DOMString(mergeNode->in1()->baseVal()).qstring());
           }
       }
   
  
  
  
  1.5       +4 -4      SVGSupport/ksvg2/svg/SVGFEMergeElementImpl.h
  
  Index: SVGFEMergeElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEMergeElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEMergeElementImpl.h	1 Sep 2005 07:35:40 -0000	1.4
  +++ SVGFEMergeElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  @@ -33,16 +33,16 @@
       class SVGFEMergeElementImpl : public SVGFilterPrimitiveStandardAttributesImpl
       {
       public:
  -        SVGFEMergeElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEMergeElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEMergeElementImpl();
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  -        virtual void close();
  +        virtual void closeRenderer();
   
       private:
           mutable KCanvasFEMerge *m_filterEffect;
  
  
  
  1.7       +6 -17     SVGSupport/ksvg2/svg/SVGFEMergeNodeElementImpl.cpp
  
  Index: SVGFEMergeNodeElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEMergeNodeElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGFEMergeNodeElementImpl.cpp	5 Oct 2005 05:35:22 -0000	1.6
  +++ SVGFEMergeNodeElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.7
  @@ -23,15 +23,13 @@
   #include "config.h"
   #include <kdom/core/AttrImpl.h>
   
  -#include "svgattrs.h"
   #include "SVGHelper.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGFEMergeNodeElementImpl.h"
   #include "SVGAnimatedStringImpl.h"
   
   using namespace KSVG;
   
  -SVGFEMergeNodeElementImpl::SVGFEMergeNodeElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGElementImpl(doc, id, prefix)
  +SVGFEMergeNodeElementImpl::SVGFEMergeNodeElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGElementImpl(tagName, doc)
   {
       m_in1 = 0;
   }
  @@ -48,22 +46,13 @@
       return lazy_create<SVGAnimatedStringImpl>(m_in1, dummy);
   }
   
  -void SVGFEMergeNodeElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFEMergeNodeElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_IN:
  -        {
  -            in1()->setBaseVal(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            SVGElementImpl::parseAttribute(attr);
  -        }
  -    };
  +    if (attr->name() == SVGNames::inAttr)
  +        in1()->setBaseVal(value.impl());
  +    else
  +        SVGElementImpl::parseMappedAttribute(attr);
   }
   
   
  
  
  
  1.5       +2 -2      SVGSupport/ksvg2/svg/SVGFEMergeNodeElementImpl.h
  
  Index: SVGFEMergeNodeElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEMergeNodeElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEMergeNodeElementImpl.h	1 Sep 2005 07:35:40 -0000	1.4
  +++ SVGFEMergeNodeElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  @@ -31,11 +31,11 @@
       class SVGFEMergeNodeElementImpl : public SVGElementImpl
       {
       public:
  -        SVGFEMergeNodeElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEMergeNodeElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEMergeNodeElementImpl();
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           // 'SVGFEMergeNodeElement' functions
           SVGAnimatedStringImpl *in1() const;
  
  
  
  1.8       +14 -31    SVGSupport/ksvg2/svg/SVGFEOffsetElementImpl.cpp
  
  Index: SVGFEOffsetElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEOffsetElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFEOffsetElementImpl.cpp	5 Oct 2005 05:35:22 -0000	1.7
  +++ SVGFEOffsetElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.8
  @@ -26,13 +26,11 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasResources.h>
   #include <kcanvas/KCanvasFilters.h>
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingPaintServerGradient.h>
   
  -#include "svgattrs.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGFEOffsetElementImpl.h"
  @@ -42,8 +40,8 @@
   
   using namespace KSVG;
   
  -SVGFEOffsetElementImpl::SVGFEOffsetElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix)
  +SVGFEOffsetElementImpl::SVGFEOffsetElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGFilterPrimitiveStandardAttributesImpl(tagName, doc)
   {
       m_in1 = 0;
       m_dx = 0;
  @@ -79,38 +77,23 @@
       return lazy_create<SVGAnimatedNumberImpl>(m_dy, dummy);
   }
   
  -void SVGFEOffsetElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFEOffsetElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_DX:
  -        {
  -            dx()->setBaseVal(value.string().toDouble());
  -            break;
  -        }
  -        case ATTR_DY:
  -        {
  -            dy()->setBaseVal(value.string().toDouble());
  -            break;
  -        }
  -        case ATTR_IN:
  -        {
  -            in1()->setBaseVal(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(attr);
  -        }
  -    };
  +    if (attr->name() == SVGNames::dxAttr)
  +        dx()->setBaseVal(value.qstring().toDouble());
  +    else if (attr->name() == SVGNames::dyAttr)
  +        dy()->setBaseVal(value.qstring().toDouble());
  +    else if (attr->name() == SVGNames::inAttr)
  +        in1()->setBaseVal(value.impl());
  +    else
  +        SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -KCanvasItem *SVGFEOffsetElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGFEOffsetElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    m_filterEffect = static_cast<KCanvasFEOffset *>(canvas->renderingDevice()->createFilterEffect(FE_OFFSET));
  -    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).string());
  +    m_filterEffect = static_cast<KCanvasFEOffset *>(canvas()->renderingDevice()->createFilterEffect(FE_OFFSET));
  +    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       m_filterEffect->setDx(dx()->baseVal());
       m_filterEffect->setDy(dy()->baseVal());
  
  
  
  1.5       +4 -4      SVGSupport/ksvg2/svg/SVGFEOffsetElementImpl.h
  
  Index: SVGFEOffsetElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFEOffsetElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFEOffsetElementImpl.h	1 Sep 2005 07:35:41 -0000	1.4
  +++ SVGFEOffsetElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  @@ -36,7 +36,7 @@
       class SVGFEOffsetElementImpl : public SVGFilterPrimitiveStandardAttributesImpl
       {
       public:
  -        SVGFEOffsetElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFEOffsetElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFEOffsetElementImpl();
   
           // 'SVGFEOffsetElement' functions
  @@ -45,11 +45,11 @@
           SVGAnimatedNumberImpl *dy() const;
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  
  
  
  1.7       +10 -21    SVGSupport/ksvg2/svg/SVGFETileElementImpl.cpp
  
  Index: SVGFETileElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFETileElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGFETileElementImpl.cpp	5 Oct 2005 05:35:22 -0000	1.6
  +++ SVGFETileElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.7
  @@ -26,11 +26,9 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasFilters.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
  -#include "svgattrs.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGFETileElementImpl.h"
  @@ -39,8 +37,8 @@
   
   using namespace KSVG;
   
  -SVGFETileElementImpl::SVGFETileElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix)
  +SVGFETileElementImpl::SVGFETileElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGFilterPrimitiveStandardAttributesImpl(tagName, doc)
   {
       m_in1 = 0;
       m_filterEffect = 0;
  @@ -58,28 +56,19 @@
       return lazy_create<SVGAnimatedStringImpl>(m_in1, dummy);
   }
   
  -void SVGFETileElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFETileElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_IN:
  -        {
  -            in1()->setBaseVal(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(attr);
  -        }
  -    };
  +    if (attr->name() == SVGNames::inAttr)
  +        in1()->setBaseVal(value.impl());
  +    else
  +        SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -KCanvasItem *SVGFETileElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGFETileElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    m_filterEffect = static_cast<KCanvasFETile *>(canvas->renderingDevice()->createFilterEffect(FE_TILE));
  -    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).string());
  +    m_filterEffect = static_cast<KCanvasFETile *>(canvas()->renderingDevice()->createFilterEffect(FE_TILE));
  +    m_filterEffect->setIn(KDOM::DOMString(in1()->baseVal()).qstring());
       setStandardAttributes(m_filterEffect);
       return 0;
   }
  
  
  
  1.5       +4 -4      SVGSupport/ksvg2/svg/SVGFETileElementImpl.h
  
  Index: SVGFETileElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFETileElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFETileElementImpl.h	1 Sep 2005 07:35:41 -0000	1.4
  +++ SVGFETileElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  @@ -35,18 +35,18 @@
       class SVGFETileElementImpl : public SVGFilterPrimitiveStandardAttributesImpl
       {
       public:
  -        SVGFETileElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFETileElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFETileElementImpl();
   
           // 'SVGFETileElement' functions
           SVGAnimatedStringImpl *in1() const;
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  
  
  
  1.9       +33 -51    SVGSupport/ksvg2/svg/SVGFETurbulenceElementImpl.cpp
  
  Index: SVGFETurbulenceElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFETurbulenceElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGFETurbulenceElementImpl.cpp	5 Oct 2005 05:35:22 -0000	1.8
  +++ SVGFETurbulenceElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.9
  @@ -26,14 +26,12 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasResources.h>
   #include <kcanvas/KCanvasFilters.h>
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingPaintServerGradient.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
   #include "SVGFETurbulenceElementImpl.h"
  @@ -44,8 +42,8 @@
   
   using namespace KSVG;
   
  -SVGFETurbulenceElementImpl::SVGFETurbulenceElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : 
  -SVGFilterPrimitiveStandardAttributesImpl(doc, id, prefix)
  +SVGFETurbulenceElementImpl::SVGFETurbulenceElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : 
  +SVGFilterPrimitiveStandardAttributesImpl(tagName, doc)
   {
       m_baseFrequencyX = m_baseFrequencyY = m_seed = 0;
       m_numOctaves = 0;
  @@ -105,60 +103,44 @@
       return lazy_create<SVGAnimatedEnumerationImpl>(m_type, dummy);
   }
   
  -void SVGFETurbulenceElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFETurbulenceElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    if (attr->name() == SVGNames::typeAttr)
       {
  -        case ATTR_TYPE:
  -        {
  -            if(value == "fractalNoise")
  -                type()->setBaseVal(SVG_TURBULENCE_TYPE_FRACTALNOISE);
  -            else if(value == "turbulence")
  -                type()->setBaseVal(SVG_TURBULENCE_TYPE_TURBULENCE);
  -            break;
  -        }
  -        case ATTR_STITCHTILES:
  -        {
  -            if(value == "stitch")
  -                stitchTiles()->setBaseVal(SVG_STITCHTYPE_STITCH);
  -            else if(value == "nostitch")
  -                stitchTiles()->setBaseVal(SVG_STITCHTYPE_NOSTITCH);
  -            break;
  -        }
  -        case ATTR_BASEFREQUENCY:
  -        {
  -            QStringList numbers = QStringList::split(' ', value.string());
  -            baseFrequencyX()->setBaseVal(numbers[0].toDouble());
  -            if(numbers.count() == 1)
  -                baseFrequencyY()->setBaseVal(numbers[0].toDouble());
  -            else
  -                baseFrequencyY()->setBaseVal(numbers[1].toDouble());
  -
  -            break;
  -        }
  -        case ATTR_SEED:
  -        {
  -            seed()->setBaseVal(value.string().toDouble());
  -            break;
  -        }
  -        case ATTR_NUMOCTAVES:
  -        {
  -            numOctaves()->setBaseVal(value.string().toUInt());
  -            break;
  -        }
  -        default:
  -        {
  -            SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(value == "fractalNoise")
  +            type()->setBaseVal(SVG_TURBULENCE_TYPE_FRACTALNOISE);
  +        else if(value == "turbulence")
  +            type()->setBaseVal(SVG_TURBULENCE_TYPE_TURBULENCE);
  +    }
  +    else if (attr->name() == SVGNames::stitchTilesAttr)
  +    {
  +        if(value == "stitch")
  +            stitchTiles()->setBaseVal(SVG_STITCHTYPE_STITCH);
  +        else if(value == "nostitch")
  +            stitchTiles()->setBaseVal(SVG_STITCHTYPE_NOSTITCH);
  +    }
  +    else if (attr->name() == SVGNames::baseFrequencyAttr)
  +    {
  +        QStringList numbers = QStringList::split(' ', value.qstring());
  +        baseFrequencyX()->setBaseVal(numbers[0].toDouble());
  +        if(numbers.count() == 1)
  +            baseFrequencyY()->setBaseVal(numbers[0].toDouble());
  +        else
  +            baseFrequencyY()->setBaseVal(numbers[1].toDouble());
  +    }
  +    else if (attr->name() == SVGNames::seedAttr)
  +        seed()->setBaseVal(value.qstring().toDouble());
  +    else if (attr->name() == SVGNames::numOctavesAttr)
  +        numOctaves()->setBaseVal(value.qstring().toUInt());
  +    else
  +        SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(attr);
   }
   
  -KCanvasItem *SVGFETurbulenceElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGFETurbulenceElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
   
  -    m_filterEffect = static_cast<KCanvasFETurbulence *>(canvas->renderingDevice()->createFilterEffect(FE_TURBULENCE));
  +    m_filterEffect = static_cast<KCanvasFETurbulence *>(canvas()->renderingDevice()->createFilterEffect(FE_TURBULENCE));
       if (!m_filterEffect)
           return 0;
       
  
  
  
  1.5       +4 -4      SVGSupport/ksvg2/svg/SVGFETurbulenceElementImpl.h
  
  Index: SVGFETurbulenceElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFETurbulenceElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFETurbulenceElementImpl.h	1 Sep 2005 07:35:41 -0000	1.4
  +++ SVGFETurbulenceElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  @@ -37,7 +37,7 @@
       class SVGFETurbulenceElementImpl : public SVGFilterPrimitiveStandardAttributesImpl
       {
       public:
  -        SVGFETurbulenceElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFETurbulenceElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFETurbulenceElementImpl();
   
           // 'SVGFETurbulenceElement' functions
  @@ -49,11 +49,11 @@
           SVGAnimatedEnumerationImpl *type() const;
   
           // Derived from: 'ElementImpl'
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual KCanvasFilterEffect *filterEffect() const;
   
  
  
  
  1.7       +47 -69    SVGSupport/ksvg2/svg/SVGFilterElementImpl.cpp
  
  Index: SVGFilterElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFilterElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGFilterElementImpl.cpp	5 Oct 2005 05:35:22 -0000	1.6
  +++ SVGFilterElementImpl.cpp	21 Nov 2005 08:29:39 -0000	1.7
  @@ -25,13 +25,11 @@
   
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasResources.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/KCanvasFilters.h>
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGFilterElementImpl.h"
   #include "SVGFilterPrimitiveStandardAttributesImpl.h"
   #include "SVGAnimatedLengthImpl.h"
  @@ -41,8 +39,8 @@
   
   using namespace KSVG;
   
  -SVGFilterElementImpl::SVGFilterElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGURIReferenceImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
  +SVGFilterElementImpl::SVGFilterElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledElementImpl(tagName, doc), SVGURIReferenceImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_filterUnits = m_primitiveUnits = 0;
       m_x = m_y = m_width = m_height = 0;
  @@ -98,7 +96,7 @@
       if(!m_x)
       {
            lazy_create<SVGAnimatedLengthImpl>(m_x, this, LM_WIDTH, viewportElement());
  -        m_x->baseVal()->setValueAsString(KDOM::DOMString("-10%").handle());
  +        m_x->baseVal()->setValueAsString(KDOM::DOMString("-10%").impl());
           return m_x;
       }
   
  @@ -111,7 +109,7 @@
       if(!m_y)
       {
            lazy_create<SVGAnimatedLengthImpl>(m_y, this, LM_HEIGHT, viewportElement());
  -        m_y->baseVal()->setValueAsString(KDOM::DOMString("-10%").handle());
  +        m_y->baseVal()->setValueAsString(KDOM::DOMString("-10%").impl());
           return m_y;
       }
   
  @@ -124,7 +122,7 @@
       if(!m_width)
       {
            lazy_create<SVGAnimatedLengthImpl>(m_width, this, LM_WIDTH, viewportElement());
  -        m_width->baseVal()->setValueAsString(KDOM::DOMString("120%").handle());
  +        m_width->baseVal()->setValueAsString(KDOM::DOMString("120%").impl());
           return m_width;
       }
   
  @@ -137,7 +135,7 @@
       if(!m_height)
       {
            lazy_create<SVGAnimatedLengthImpl>(m_height, this, LM_HEIGHT, viewportElement());
  -        m_height->baseVal()->setValueAsString(KDOM::DOMString("120%").handle());
  +        m_height->baseVal()->setValueAsString(KDOM::DOMString("120%").impl());
           return m_height;
       }
   
  @@ -158,70 +156,48 @@
   {
   }
   
  -void SVGFilterElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFilterElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    if (attr->name() == SVGNames::filterUnitsAttr)
       {
  -        case ATTR_FILTERUNITS:
  -        {
  -            if(value == "userSpaceOnUse")
  -                filterUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  -            else if(value == "objectBoundingBox")
  -                filterUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  -            break;
  -        }
  -        case ATTR_PRIMITIVEUNITS:
  -        {
  -            if(value == "userSpaceOnUse")
  -                primitiveUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  -            else if(value == "objectBoundingBox")
  -                primitiveUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  -            break;
  -        }
  -        case ATTR_X:
  -        {
  -            x()->baseVal()->setValueAsString(value.handle());
  -            break;
  -        }
  -        case ATTR_Y:
  -        {
  -            y()->baseVal()->setValueAsString(value.handle());
  -            break;
  -        }
  -        case ATTR_WIDTH:
  -        {
  -            width()->baseVal()->setValueAsString(value.handle());
  -            break;
  -        }
  -        case ATTR_HEIGHT:
  -        {
  -            height()->baseVal()->setValueAsString(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGURIReferenceImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  +        if(value == "userSpaceOnUse")
  +            filterUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  +        else if(value == "objectBoundingBox")
  +            filterUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  +    }
  +    else if (attr->name() == SVGNames::primitiveUnitsAttr)
  +    {
  +        if(value == "userSpaceOnUse")
  +            primitiveUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  +        else if(value == "objectBoundingBox")
  +            primitiveUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  +    }
  +    else if (attr->name() == SVGNames::xAttr)
  +        x()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::yAttr)
  +        y()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::widthAttr)
  +        width()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::heightAttr)
  +        height()->baseVal()->setValueAsString(value.impl());
  +    else
  +    {
  +        if(SVGURIReferenceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
   
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        SVGStyledElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
  -void SVGFilterElementImpl::close()
  +KCanvasFilter *SVGFilterElementImpl::canvasResource()
   {
  -    if(!m_filter)
  -    {
  -        KCanvas *_canvas = canvas();
  -        if(!_canvas)
  -            return;
  +    if(!canvas())
  +        return 0;
   
  -        m_filter = static_cast<KCanvasFilter *>(_canvas->renderingDevice()->createResource(RS_FILTER));
  -        _canvas->registry()->addResourceById(KDOM::DOMString(getId()).string(), m_filter);
  -    }
  +    if(!m_filter)
  +        m_filter = static_cast<KCanvasFilter *>(canvas()->renderingDevice()->createResource(RS_FILTER));
   
       bool filterBBoxMode = filterUnits()->baseVal() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
       m_filter->setFilterBoundingBoxMode(filterBBoxMode);
  @@ -244,12 +220,14 @@
       // TODO : use switch/case instead?
       for(KDOM::NodeImpl *n = firstChild(); n != 0; n = n->nextSibling())
       {
  -        SVGFilterPrimitiveStandardAttributesImpl *fe = dynamic_cast<SVGFilterPrimitiveStandardAttributesImpl *>(n);
  -        if(fe && fe->filterEffect())
  -        {
  -            m_filter->addFilterEffect(fe->filterEffect());
  +        SVGElementImpl *element = svg_dynamic_cast(n);
  +        if(element->isFilterEffect()) {
  +            SVGFilterPrimitiveStandardAttributesImpl *fe = static_cast<SVGFilterPrimitiveStandardAttributesImpl *>(n);
  +            if (fe->filterEffect())
  +                m_filter->addFilterEffect(fe->filterEffect());
           }
       }
  +    return m_filter;
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +4 -5      SVGSupport/ksvg2/svg/SVGFilterElementImpl.h
  
  Index: SVGFilterElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFilterElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFilterElementImpl.h	1 Sep 2005 07:35:41 -0000	1.4
  +++ SVGFilterElementImpl.h	21 Nov 2005 08:29:39 -0000	1.5
  @@ -28,7 +28,7 @@
   #include "SVGStyledElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
  -class KCanvasFilter;
  +#include "KCanvasFilters.h"
   
   namespace KSVG
   {
  @@ -42,11 +42,10 @@
                                    public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGFilterElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGFilterElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFilterElementImpl();
   
  -        // Derived from: 'ElementImpl'
  -        virtual void close();
  +        virtual KCanvasFilter *canvasResource();
   
           // 'SVGFilterElement' functions
           SVGAnimatedEnumerationImpl *filterUnits() const;
  @@ -63,7 +62,7 @@
   
           void setFilterRes(unsigned long filterResX, unsigned long filterResY) const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       private:
           mutable SVGAnimatedEnumerationImpl *m_filterUnits;
  
  
  
  1.8       +21 -43    SVGSupport/ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.cpp
  
  Index: SVGFilterPrimitiveStandardAttributesImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFilterPrimitiveStandardAttributesImpl.cpp	5 Oct 2005 05:35:22 -0000	1.7
  +++ SVGFilterPrimitiveStandardAttributesImpl.cpp	21 Nov 2005 08:29:40 -0000	1.8
  @@ -24,7 +24,7 @@
   #include <kdom/core/AttrImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGFilterPrimitiveStandardAttributesImpl.h"
   #include "SVGAnimatedEnumerationImpl.h"
   #include "SVGAnimatedStringImpl.h"
  @@ -36,8 +36,8 @@
   
   using namespace KSVG;
   
  -SVGFilterPrimitiveStandardAttributesImpl::SVGFilterPrimitiveStandardAttributesImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix)
  +SVGFilterPrimitiveStandardAttributesImpl::SVGFilterPrimitiveStandardAttributesImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledElementImpl(tagName, doc)
   {
       m_x = m_y = m_width = m_height = 0;
       m_result = 0;
  @@ -75,7 +75,7 @@
       if(!m_width)
       {
           lazy_create<SVGAnimatedLengthImpl>(m_width, this, LM_WIDTH);
  -        m_width->baseVal()->setValueAsString(KDOM::DOMString("100%").handle());
  +        m_width->baseVal()->setValueAsString(KDOM::DOMString("100%").impl());
           return m_width;
       }
   
  @@ -88,7 +88,7 @@
       if(!m_height)
       {
           lazy_create<SVGAnimatedLengthImpl>(m_height, this, LM_HEIGHT);
  -        m_height->baseVal()->setValueAsString(KDOM::DOMString("100%").handle());
  +        m_height->baseVal()->setValueAsString(KDOM::DOMString("100%").impl());
           return m_height;
       }
   
  @@ -100,50 +100,28 @@
       return lazy_create<SVGAnimatedStringImpl>(m_result, this);
   }
   
  -void SVGFilterPrimitiveStandardAttributesImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGFilterPrimitiveStandardAttributesImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  -    {
  -        case ATTR_X:
  -        {
  -            x()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_Y:
  -        {
  -            y()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_WIDTH:
  -        {
  -            width()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_HEIGHT:
  -        {
  -            height()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_RESULT:
  -        {
  -            result()->setBaseVal(value);
  -            break;
  -        }
  -        default:
  -        {
  -            return SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  -
  +    const KDOM::AtomicString& value = attr->value();
  +    if (attr->name() == SVGNames::xAttr)
  +        x()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::yAttr)
  +        y()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::widthAttr)
  +        width()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::heightAttr)
  +        height()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::resultAttr)
  +        result()->setBaseVal(value.impl());
  +    else
  +        return SVGStyledElementImpl::parseMappedAttribute(attr);
   }
   
   void SVGFilterPrimitiveStandardAttributesImpl::setStandardAttributes(KCanvasFilterEffect *filterEffect) const
   {
       if (!filterEffect) return;
       bool bbox = false;
  -    if(parentNode() && parentNode()->id() == ID_FILTER)
  +    if(parentNode() && parentNode()->hasTagName(SVGNames::filterTag))
           bbox = static_cast<SVGFilterElementImpl *>(parentNode())->primitiveUnits()->baseVal() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX;
   
       x()->baseVal()->setBboxRelative(bbox);
  @@ -157,7 +135,7 @@
       else
           filterEffect->setSubRegion(QRect(int(_x), int(_y), int(_width), int(_height)));
   
  -    filterEffect->setResult(KDOM::DOMString(result()->baseVal()).string());
  +    filterEffect->setResult(KDOM::DOMString(result()->baseVal()).qstring());
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +4 -2      SVGSupport/ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.h
  
  Index: SVGFilterPrimitiveStandardAttributesImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFilterPrimitiveStandardAttributesImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGFilterPrimitiveStandardAttributesImpl.h	1 Sep 2005 07:35:42 -0000	1.4
  +++ SVGFilterPrimitiveStandardAttributesImpl.h	21 Nov 2005 08:29:40 -0000	1.5
  @@ -35,8 +35,10 @@
       class SVGFilterPrimitiveStandardAttributesImpl : public SVGStyledElementImpl
       {
       public:
  -        SVGFilterPrimitiveStandardAttributesImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGFilterPrimitiveStandardAttributesImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGFilterPrimitiveStandardAttributesImpl();
  +        
  +        virtual bool isFilterEffect() { return true; }
   
           // 'SVGFilterPrimitiveStandardAttributes' functions
           SVGAnimatedLengthImpl *x() const;
  @@ -45,7 +47,7 @@
           SVGAnimatedLengthImpl *height() const;
           SVGAnimatedStringImpl *result() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           virtual KCanvasFilterEffect *filterEffect() const = 0;
   
  
  
  
  1.8       +18 -31    SVGSupport/ksvg2/svg/SVGFitToViewBoxImpl.cpp
  
  Index: SVGFitToViewBoxImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFitToViewBoxImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGFitToViewBoxImpl.cpp	5 Oct 2005 05:35:22 -0000	1.7
  +++ SVGFitToViewBoxImpl.cpp	21 Nov 2005 08:29:40 -0000	1.8
  @@ -26,7 +26,7 @@
   #include <kdom/core/AttrImpl.h>
   #include <kdom/core/DOMStringImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGRectImpl.h"
   #include "SVGSVGElementImpl.h"
   #include "SVGAnimatedRectImpl.h"
  @@ -38,46 +38,38 @@
   
   SVGFitToViewBoxImpl::SVGFitToViewBoxImpl()
   {
  -    m_viewBox = 0;
  -    m_preserveAspectRatio = 0;
   }
   
   SVGFitToViewBoxImpl::~SVGFitToViewBoxImpl()
   {
  -    if(m_viewBox)
  -        m_viewBox->deref();
  -    if(m_preserveAspectRatio)
  -        m_preserveAspectRatio->deref();
   }
   
   SVGAnimatedRectImpl *SVGFitToViewBoxImpl::viewBox() const
   {
       if(!m_viewBox)
       {
  -        const SVGStyledElementImpl *context = dynamic_cast<const SVGStyledElementImpl *>(this);
  -        m_viewBox = new SVGAnimatedRectImpl(context);
  -        m_viewBox->ref();
  +        //const SVGStyledElementImpl *context = dynamic_cast<const SVGStyledElementImpl *>(this);
  +        m_viewBox = new SVGAnimatedRectImpl(0); // FIXME: 0 is a hack
       }
   
  -    return m_viewBox;
  +    return m_viewBox.get();
   }
   
   SVGAnimatedPreserveAspectRatioImpl *SVGFitToViewBoxImpl::preserveAspectRatio() const
   {
       if(!m_preserveAspectRatio)
       {
  -        const SVGStyledElementImpl *context = dynamic_cast<const SVGStyledElementImpl *>(this);
  -        m_preserveAspectRatio = new SVGAnimatedPreserveAspectRatioImpl(context);
  -        m_preserveAspectRatio->ref();
  +        //const SVGStyledElementImpl *context = dynamic_cast<const SVGStyledElementImpl *>(this);
  +        m_preserveAspectRatio = new SVGAnimatedPreserveAspectRatioImpl(0); // FIXME: 0 is a hack
       }
   
  -    return m_preserveAspectRatio;
  +    return m_preserveAspectRatio.get();
   }
   
   void SVGFitToViewBoxImpl::parseViewBox(KDOM::DOMStringImpl *str)
   {
       // allow for viewbox def with ',' or whitespace
  -    QString viewbox(str->unicode(), str->length());
  +    QString viewbox = KDOM::DOMString(str).qstring();
       QStringList points = QStringList::split(' ', viewbox.replace(',', ' ').simplifyWhiteSpace());
   
       if (points.count() == 4) {
  @@ -85,9 +77,8 @@
           viewBox()->baseVal()->setY(points[1].toDouble());
           viewBox()->baseVal()->setWidth(points[2].toDouble());
           viewBox()->baseVal()->setHeight(points[3].toDouble());
  -    } else {
  +    } else
           fprintf(stderr, "WARNING: Malformed viewbox string: %s (l: %i)", viewbox.ascii(), viewbox.length());
  -    }
   }
   
   SVGMatrixImpl *SVGFitToViewBoxImpl::viewBoxToViewTransform(float viewWidth, float viewHeight) const
  @@ -101,21 +92,17 @@
               0, 0, viewWidth, viewHeight);
   }
   
  -bool SVGFitToViewBoxImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +bool SVGFitToViewBoxImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    switch(id)
  +    if (attr->name() == SVGNames::viewBoxAttr)
  +    {
  +        parseViewBox(attr->value().impl());
  +        return true;
  +    }
  +    else if (attr->name() == SVGNames::preserveAspectRatioAttr)
       {
  -        case ATTR_VIEWBOX:
  -        {
  -            parseViewBox(attr->value());
  -            return true;
  -        }
  -        case ATTR_PRESERVEASPECTRATIO:
  -        {
  -            preserveAspectRatio()->baseVal()->parsePreserveAspectRatio(attr->value());
  -            return true;
  -        }
  +        preserveAspectRatio()->baseVal()->parsePreserveAspectRatio(attr->value().impl());
  +        return true;
       }
   
       return false;
  
  
  
  1.4       +3 -3      SVGSupport/ksvg2/svg/SVGFitToViewBoxImpl.h
  
  Index: SVGFitToViewBoxImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGFitToViewBoxImpl.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SVGFitToViewBoxImpl.h	1 Sep 2005 07:35:42 -0000	1.3
  +++ SVGFitToViewBoxImpl.h	21 Nov 2005 08:29:40 -0000	1.4
  @@ -47,11 +47,11 @@
           void parseViewBox(KDOM::DOMStringImpl *str);
           SVGMatrixImpl *viewBoxToViewTransform(float viewWidth, float viewHeight) const;
   
  -        bool parseAttribute(KDOM::AttributeImpl *attr);
  +        bool parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       private:
  -        mutable SVGAnimatedRectImpl *m_viewBox;
  -        mutable SVGAnimatedPreserveAspectRatioImpl *m_preserveAspectRatio;
  +        mutable SharedPtr<SVGAnimatedRectImpl> m_viewBox;
  +        mutable SharedPtr<SVGAnimatedPreserveAspectRatioImpl> m_preserveAspectRatio;
       };
   };
   
  
  
  
  1.6       +12 -15    SVGSupport/ksvg2/svg/SVGGElementImpl.cpp
  
  Index: SVGGElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGGElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGGElementImpl.cpp	5 Oct 2005 05:35:23 -0000	1.5
  +++ SVGGElementImpl.cpp	21 Nov 2005 08:29:40 -0000	1.6
  @@ -22,7 +22,6 @@
   
   #include "config.h"
   #include "SVGGElementImpl.h"
  -#include "SVGTransformableImpl.h"
   
   #include <kcanvas/KCanvasCreator.h>
   #include <kcanvas/KCanvasContainer.h>
  @@ -30,7 +29,7 @@
   
   using namespace KSVG;
   
  -SVGGElementImpl::SVGGElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl()
  +SVGGElementImpl::SVGGElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
   }
   
  @@ -38,30 +37,28 @@
   {
   }
   
  -void SVGGElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGGElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    if(SVGTestsImpl::parseAttribute(attr)) return;
  -    if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -    if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -    if(SVGTransformableImpl::parseAttribute(attr)) return;
  -
  -    SVGStyledElementImpl::parseAttribute(attr);
  +    if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +    if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +    if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +    SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
   }
   
   void SVGGElementImpl::setChanged(bool b, bool)
   {
       // FIXME: this is waaay to slow & wrong!
  -    KDOM::NodeImpl::setChanged(b, true);
  +    //KDOM::NodeImpl::setChanged(b, true);
       //KDOM::NodeImpl::setChanged(b, false);
   }
   
  -KCanvasItem *SVGGElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGGElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    return KCanvasCreator::self()->createContainer(canvas, style);
  +    return canvas()->renderingDevice()->createContainer(arena, style, this);
   }
   
   // Helper class for <use> support
  -SVGDummyElementImpl::SVGDummyElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id, KDOM::DOMStringImpl *prefix) : SVGGElementImpl(doc, 0, prefix)
  +SVGDummyElementImpl::SVGDummyElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGGElementImpl(tagName, doc),  m_localName("dummy")
   {
   }
   
  @@ -69,9 +66,9 @@
   {
   }
   
  -KDOM::DOMStringImpl *SVGDummyElementImpl::localName() const
  +const KDOM::AtomicString& SVGDummyElementImpl::localName() const
   {
  -    return new KDOM::DOMStringImpl("dummy");
  +    return m_localName;
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +11 -11    SVGSupport/ksvg2/svg/SVGGElementImpl.h
  
  Index: SVGGElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGGElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGGElementImpl.h	1 Sep 2005 07:35:42 -0000	1.4
  +++ SVGGElementImpl.h	21 Nov 2005 08:29:40 -0000	1.5
  @@ -23,28 +23,26 @@
   #ifndef KSVG_SVGGElementImpl_H
   #define KSVG_SVGGElementImpl_H
   
  -#include "SVGStyledElementImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
  -#include "SVGTransformableImpl.h"
   
   namespace KSVG
   {
  -    class SVGGElementImpl : public SVGStyledElementImpl,
  +    class SVGGElementImpl : public SVGStyledTransformableElementImpl,
                               public SVGTestsImpl,
                               public SVGLangSpaceImpl,
  -                            public SVGExternalResourcesRequiredImpl,
  -                            public SVGTransformableImpl
  +                            public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGGElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGGElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGGElementImpl();
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
           virtual void setChanged(bool b = true, bool deep = false);
       };
  @@ -52,11 +50,13 @@
       class SVGDummyElementImpl : public SVGGElementImpl
       {
       public:
  -        SVGDummyElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGDummyElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGDummyElementImpl();
   
           // Derived from: 'ElementImpl'
  -        virtual KDOM::DOMStringImpl *localName() const;
  +        virtual const KDOM::AtomicString& localName() const;
  +    private:
  +        KDOM::AtomicString m_localName;
       };
   };
   
  
  
  
  1.8       +82 -63    SVGSupport/ksvg2/svg/SVGGradientElementImpl.cpp
  
  Index: SVGGradientElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGGradientElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGGradientElementImpl.cpp	5 Oct 2005 05:35:23 -0000	1.7
  +++ SVGGradientElementImpl.cpp	21 Nov 2005 08:29:40 -0000	1.8
  @@ -24,23 +24,24 @@
   #include <kdom/core/AttrImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGTransformableImpl.h"
   #include "SVGTransformListImpl.h"
   #include "SVGGradientElementImpl.h"
   #include "SVGDOMImplementationImpl.h"
   #include "SVGAnimatedEnumerationImpl.h"
   #include "SVGAnimatedTransformListImpl.h"
  +#include "SVGAnimatedNumberImpl.h"
  +#include "SVGStopElementImpl.h"
  +#include "SVGRenderStyle.h"
   
  -#include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/device/KRenderingPaintServerGradient.h>
  +#include <kcanvas/device/KRenderingDevice.h>
   
   using namespace KSVG;
   
  -SVGGradientElementImpl::SVGGradientElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGStyledElementImpl(doc, id, prefix), SVGURIReferenceImpl(), SVGExternalResourcesRequiredImpl()
  +SVGGradientElementImpl::SVGGradientElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGStyledElementImpl(tagName, doc), SVGURIReferenceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_spreadMethod = 0;
       m_gradientUnits = 0;
  @@ -78,74 +79,92 @@
       return lazy_create<SVGAnimatedEnumerationImpl>(m_spreadMethod, this);
   }
   
  -void SVGGradientElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGGradientElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    if (attr->name() == SVGNames::gradientUnitsAttr)
       {
  -        case ATTR_GRADIENTUNITS:
  -        {
  -            if(value == "userSpaceOnUse")
  -                gradientUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  -            else if(value == "objectBoundingBox")
  -                gradientUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  -            break;
  -        }
  -        case ATTR_GRADIENTTRANSFORM:
  -        {
  -            SVGTransformListImpl *gradientTransforms = gradientTransform()->baseVal();
  -            SVGTransformableImpl::parseTransformAttribute(gradientTransforms, attr->value());
  -            break;
  -        }
  -        case ATTR_SPREADMETHOD:
  -        {
  -            if(value == "reflect")
  -                spreadMethod()->setBaseVal(SVG_SPREADMETHOD_REFLECT);
  -            else if(value == "repeat")
  -                spreadMethod()->setBaseVal(SVG_SPREADMETHOD_REPEAT);
  -            else if(value == "pad")
  -                spreadMethod()->setBaseVal(SVG_SPREADMETHOD_PAD);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGURIReferenceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(value == "userSpaceOnUse")
  +            gradientUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  +        else if(value == "objectBoundingBox")
  +            gradientUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  +    }
  +    else if (attr->name() == SVGNames::gradientTransformAttr)
  +    {
  +        SVGTransformListImpl *gradientTransforms = gradientTransform()->baseVal();
  +        SVGTransformableImpl::parseTransformAttribute(gradientTransforms, attr->value().impl());
  +    }
  +    else if (attr->name() == SVGNames::spreadMethodAttr)
  +    {
  +        if(value == "reflect")
  +            spreadMethod()->setBaseVal(SVG_SPREADMETHOD_REFLECT);
  +        else if(value == "repeat")
  +            spreadMethod()->setBaseVal(SVG_SPREADMETHOD_REPEAT);
  +        else if(value == "pad")
  +            spreadMethod()->setBaseVal(SVG_SPREADMETHOD_PAD);
  +    }
  +    else
  +    {
  +        if(SVGURIReferenceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        
  +        SVGStyledElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   void SVGGradientElementImpl::notifyAttributeChange() const
   {
  -    if(ownerDocument()->parsing())
  +    if(ownerDocument()->parsing() || !attached())
           return;
   
       // Update clients of this gradient resource...
  -    SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -    KCanvas *canvas = (document ? document->canvas() : 0);
  -    if(canvas)
  -    {
  -        KRenderingPaintServerGradient *pserver = static_cast<KRenderingPaintServerGradient *>(canvas->registry()->getPaintServerById(KDOM::DOMString(getId()).string()));
  -        if(pserver)
  -        {
  -            buildGradient(pserver, canvas);
  -            
  -            pserver->invalidate();  // should this be added to build gradient?
  -            
  -            const KCanvasItemList &clients = pserver->clients();
  -
  -            KCanvasItemList::ConstIterator it = clients.begin();
  -            KCanvasItemList::ConstIterator end = clients.end();
  -
  -            for(; it != end; ++it)
  -            {
  -                const KCanvasItem *current = (*it);
  -                SVGStyledElementImpl *styled = (current ? static_cast<SVGStyledElementImpl *>(current->userData()) : 0);
  -                if(styled)
  -                    styled->setChanged(true);
  +    buildGradient(m_resource);
  +    
  +    m_resource->invalidate();  // should this be added to build gradient?
  +    
  +    const KCanvasItemList &clients = m_resource->clients();
  +    for(KCanvasItemList::ConstIterator it = clients.begin(); it != clients.end(); ++it)
  +    {
  +        const RenderPath *current = (*it);
  +        SVGStyledElementImpl *styled = (current ? static_cast<SVGStyledElementImpl *>(current->element()) : 0);
  +        if(styled)
  +            styled->setChanged(true);
  +    }
  +}
  +
  +KRenderingPaintServerGradient *SVGGradientElementImpl::canvasResource()
  +{
  +    if (!m_resource) {
  +        KRenderingPaintServer *temp = canvas()->renderingDevice()->createPaintServer(gradientType());
  +        m_resource = static_cast<KRenderingPaintServerGradient *>(temp);
  +        m_resource->setListener(this);
  +        buildGradient(m_resource);
  +    }
  +    return m_resource;
  +}
  +
  +void SVGGradientElementImpl::resourceNotification() const
  +{
  +    // We're referenced by a "client", build the gradient now...
  +    buildGradient(m_resource);
  +}
  +
  +void SVGGradientElementImpl::rebuildStops() const
  +{
  +    if (m_resource && !ownerDocument()->parsing()) {
  +        KCSortedGradientStopList &stops = m_resource->gradientStops();
  +        stops.clear();
  +        for (KDOM::NodeImpl *n = firstChild(); n; n = n->nextSibling()) {
  +            SVGElementImpl *element = svg_dynamic_cast(n);
  +            if (element && element->isGradientStop()) {
  +                SVGStopElementImpl *stop = static_cast<SVGStopElementImpl *>(element);
  +                float stopOffset = stop->offset()->baseVal();
  +                
  +                SVGRenderStyle *stopStyle = getDocument()->styleSelector()->styleForElement(stop)->svgStyle();
  +                QColor c = stopStyle->stopColor();
  +                float opacity = stopStyle->stopOpacity();
  +                
  +                stops.addStop(stopOffset, qRgba(c.red(), c.green(), c.blue(), int(opacity * 255.)));
               }
           }
       }
  
  
  
  1.5       +10 -7     SVGSupport/ksvg2/svg/SVGGradientElementImpl.h
  
  Index: SVGGradientElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGGradientElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGGradientElementImpl.h	1 Sep 2005 07:35:42 -0000	1.4
  +++ SVGGradientElementImpl.h	21 Nov 2005 08:29:40 -0000	1.5
  @@ -27,10 +27,7 @@
   #include "SVGStyledElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
  -#include <kcanvas/KCanvasResourceListener.h>
  -
  -class KCanvas;
  -class KRenderingPaintServerGradient;
  +#include "KRenderingPaintServerGradient.h"
   
   namespace KSVG
   {
  @@ -43,7 +40,7 @@
                                      public KCanvasResourceListener
       {
       public:
  -        SVGGradientElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGGradientElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGGradientElementImpl();
   
           // 'SVGGradientElement' functions
  @@ -51,16 +48,22 @@
           SVGAnimatedTransformListImpl *gradientTransform() const;
           SVGAnimatedEnumerationImpl *spreadMethod() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
           virtual void notifyAttributeChange() const;
  +        
  +        virtual KRenderingPaintServerGradient *canvasResource();
  +        virtual void resourceNotification() const;
   
       protected:
  -        virtual void buildGradient(KRenderingPaintServerGradient *grad, KCanvas *canvas) const = 0;
  +        virtual void buildGradient(KRenderingPaintServerGradient *grad) const = 0;
  +        virtual KCPaintServerType gradientType() const = 0;
  +        void rebuildStops() const;
   
       protected:
           mutable SVGAnimatedEnumerationImpl *m_spreadMethod;
           mutable SVGAnimatedEnumerationImpl *m_gradientUnits;
           mutable SVGAnimatedTransformListImpl *m_gradientTransform;
  +        mutable KRenderingPaintServerGradient *m_resource;
       };
   };
   
  
  
  
  1.8       +6 -8      SVGSupport/ksvg2/svg/SVGHelper.cpp
  
  Index: SVGHelper.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGHelper.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGHelper.cpp	5 Oct 2005 05:35:23 -0000	1.7
  +++ SVGHelper.cpp	21 Nov 2005 08:29:40 -0000	1.8
  @@ -23,7 +23,6 @@
   #include "config.h"
   #include "ksvg.h"
   #include "SVGHelper.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGStringListImpl.h"
   #include "SVGSVGElementImpl.h"
   #include "SVGAnimatedRectImpl.h"
  @@ -45,8 +44,7 @@
       if(viewportElement->isSVG())
       {
           const SVGSVGElementImpl *svg = static_cast<const SVGSVGElementImpl *>(viewportElement);
  -        KDOM::DOMString viewBox("viewBox");
  -        if(svg->hasAttribute(viewBox.handle()))
  +        if(svg->hasAttribute(SVGNames::viewBoxAttr))
           {
               width = svg->viewBox()->baseVal()->width();
               height = svg->viewBox()->baseVal()->height();
  @@ -56,15 +54,15 @@
           {
               // TODO: Shouldn't w/h be multiplied with the percentage values?!
               // AFAIK, this assumes width & height == 100%, Rob??
  -            SVGDocumentImpl *doc = static_cast<SVGDocumentImpl *>(svg->ownerDocument());
  -            if(doc && doc->rootElement() == svg)
  +            KDOM::DocumentImpl *doc = svg->getDocument();
  +            if(doc->documentElement() == svg)
               {
                   // We have to ask the canvas for the full "canvas size"...
  -                KCanvas *canvas = doc->canvas();
  +                khtml::RenderCanvas *canvas = static_cast<khtml::RenderCanvas *>(doc->renderer());
                   if(canvas)
                   {
  -                    width = canvas->canvasSize().width(); // TODO: recheck!
  -                    height = canvas->canvasSize().height(); // TODO: recheck!
  +                    width = canvas->viewportWidth(); // TODO: recheck!
  +                    height = canvas->viewportHeight(); // TODO: recheck!
                   }
               }
           }
  
  
  
  1.8       +54 -74    SVGSupport/ksvg2/svg/SVGImageElementImpl.cpp
  
  Index: SVGImageElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGImageElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGImageElementImpl.cpp	5 Oct 2005 05:35:23 -0000	1.7
  +++ SVGImageElementImpl.cpp	21 Nov 2005 08:29:40 -0000	1.8
  @@ -30,25 +30,25 @@
   #include <kdom/cache/KDOMLoader.h>
   #include <kdom/cache/KDOMCachedObject.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
  -#include "Namespace.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGSVGElementImpl.h"
   #include "SVGImageElementImpl.h"
   #include "SVGAnimatedLengthImpl.h"
   #include "SVGAnimatedStringImpl.h"
   #include "KCanvasRenderingStyle.h"
   #include "SVGAnimatedPreserveAspectRatioImpl.h"
  +#ifndef APPLE_CHANGES
   #include "KSVGDocumentBuilder.h"
  +#endif
  +#include "SVGDocumentImpl.h"
   #include <ksvg2/KSVGView.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasView.h>
   #include <kcanvas/KCanvasCreator.h>
   #include <kcanvas/KCanvasContainer.h>
   #include <kcanvas/KCanvasImage.h>
  -#include <kcanvas/device/KRenderingStyle.h>
  +#include "KCanvasRenderingStyle.h"
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingFillPainter.h>
   #include <kcanvas/device/KRenderingPaintServerImage.h>
  @@ -62,12 +62,12 @@
   
   using namespace KSVG;
   
  -SVGImageElementImpl::SVGImageElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl(), SVGURIReferenceImpl(), KDOM::CachedObjectClient()
  +SVGImageElementImpl::SVGImageElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGURIReferenceImpl(), KDOM::CachedObjectClient()
   {
       m_x = m_y = m_width = m_height = 0;
       m_preserveAspectRatio = 0;
  -    m_cachedDocument = 0;
  +    //m_cachedDocument = 0;
       m_cachedImage = 0;
       m_svgDoc = 0;
   }
  @@ -113,59 +113,38 @@
       return lazy_create<SVGAnimatedPreserveAspectRatioImpl>(m_preserveAspectRatio, this);
   }
   
  -void SVGImageElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGImageElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  +    const KDOM::AtomicString& value = attr->value();
  +    if (attr->name() == SVGNames::xAttr)
  +        x()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::yAttr)
  +        y()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::preserveAspectRatioAttr)
  +        preserveAspectRatio()->baseVal()->parsePreserveAspectRatio(value.impl());
  +    else if (attr->name() == SVGNames::widthAttr)
  +        width()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::heightAttr)
  +        height()->baseVal()->setValueAsString(value.impl());
  +    else
       {
  -        case ATTR_X:
  -        {
  -            x()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_Y:
  -        {
  -            y()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_PRESERVEASPECTRATIO:
  -        {
  -            preserveAspectRatio()->baseVal()->parsePreserveAspectRatio(value);
  -            break;
  -        }
  -        case ATTR_WIDTH:
  -        {
  -            width()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_HEIGHT:
  -        {
  -            height()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGTransformableImpl::parseAttribute(attr)) return;
  -            if(SVGURIReferenceImpl::parseAttribute(attr)) return;
  -            
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        if(SVGURIReferenceImpl::parseMappedAttribute(attr)) return;
  +        SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
  -KCanvasItem *SVGImageElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGImageElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    QString fname = KDOM::DOMString(href()->baseVal()).string();
  +    QString fname = KDOM::DOMString(href()->baseVal()).qstring();
   #ifndef APPLE_COMPILE_HACK
       KURL fullUrl(ownerDocument()->documentKURI(), fname);
       KMimeType::Ptr mimeType = KMimeType::findByURL(fullUrl);
       if(mimeType->is(QString::fromLatin1("image/svg+xml"))) // does it have svg content?
       {
  -        KCanvasItem *ret = canvas->renderingDevice()->createContainer(canvas, style);
  +        RenderPath *ret = canvas()->renderingDevice()->createContainer(style, this);
           m_cachedDocument = ownerDocument()->docLoader()->requestDocument(fullUrl, QString());
   
           if(m_cachedDocument)
  @@ -182,19 +161,20 @@
       if(pathData.isEmpty())
           return 0;
   
  -    return KCanvasCreator::self()->createPathItem(canvas, style, pathData);
  +    KCanvasUserData path = KCanvasCreator::self()->createCanvasPathData(canvas()->renderingDevice(), pathData);
  +    return canvas()->renderingDevice()->createItem(arena, style, this, path);
   }
   
   
   void SVGImageElementImpl::notifyFinished(KDOM::CachedObject *finishedObj)
   {
  +#ifndef APPLE_COMPILE_HACK
       if(finishedObj == m_cachedDocument)
       {
  -#ifndef APPLE_COMPILE_HACK
           KSVG::DocumentBuilder *builder = new KSVG::DocumentBuilder(0);
           KDOM::Parser *parser = KDOM::ParserFactory::self()->request(KURL(), builder);
  -        parser->domConfig()->setParameter(KDOM::ENTITIES.handle(), false);
  -        parser->domConfig()->setParameter(KDOM::ELEMENT_CONTENT_WHITESPACE.handle(), false);
  +        parser->domConfig()->setParameter(KDOM::ENTITIES.impl(), false);
  +        parser->domConfig()->setParameter(KDOM::ELEMENT_CONTENT_WHITESPACE.impl(), false);
   
           QBuffer *temp = new QBuffer(&m_cachedDocument->documentBuffer()->buffer());
           m_svgDoc = static_cast<SVGDocumentImpl *>(parser->syncParse(temp));
  @@ -204,28 +184,27 @@
               KDOM::DOMStringImpl *_x = x()->baseVal()->valueAsString(), *_y = y()->baseVal()->valueAsString();
               KDOM::DOMStringImpl *_width = width()->baseVal()->valueAsString(), *_height = height()->baseVal()->valueAsString();
   
  -            root->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("x").handle(), _x);
  -            root->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("y").handle(), _y);
  -            root->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("width").handle(), _width);
  -            root->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("height").handle(), _height);
  +            root->setAttribute(SVGNames::xAttr, _x);
  +            root->setAttribute(SVGNames::yAttr, _y);
  +            root->setAttribute(SVGNames::widthAttr, _width);
  +            root->setAttribute(SVGNames::heightAttr, _height);
   
               // TODO: viewBox handling? animations? ecmascript?
   
               m_svgDoc->setView(getDocument()->view());
               m_svgDoc->setCanvasView(getDocument()->canvasView());
   
  -            m_svgDoc->attach();    
  -            m_canvasItem->appendItem(root->canvasItem());
  +            m_svgDoc->attach();
  +            m_canvasItem->appendItem(root->renderer());
           }
  -#endif
           m_cachedDocument->deref(this);
           m_cachedDocument = 0;
       }
  -    else if(finishedObj == m_cachedImage)
  +    else
  +    if(finishedObj == m_cachedImage)
       {
           if(m_canvasItem && m_canvasItem->style())
           {    
  -#ifndef APPLE_COMPILE_HACK
               KRenderingFillPainter *fillPainter = m_canvasItem->style()->fillPainter();
               if(!fillPainter)
                   return;
  @@ -240,7 +219,6 @@
   			ip.paint(0, 0, &p, 0, 0, pixm.width(), pixm.height());
               KCanvasImageBuffer *imageBuffer = new KCanvasImageBuffer(pixm);
               fillPaintServerImage->setImage(imageBuffer);
  -#endif
   
               m_canvasItem->invalidate();
           }
  @@ -248,30 +226,32 @@
           m_cachedImage->deref(this);
           m_cachedImage = 0;
       }
  +#endif
   }
   
   void SVGImageElementImpl::finalizeStyle(KCanvasRenderingStyle *style, bool /* needFillStrokeUpdate */)
   {
  -    SVGStyledElementImpl *parent = dynamic_cast<SVGStyledElementImpl *>(parentNode());
  -    if(parent && !parent->allowAttachChildren(this))
  +    SVGElementImpl *parentElement = svg_dynamic_cast(parentNode());
  +    if (!parentElement || !parentElement->isStyled())
  +        return;
  +    SVGStyledElementImpl *parent = static_cast<SVGStyledElementImpl *>(parentElement);
  +    if(!parent->allowAttachChildren(this))
           return;
   
       // Set up image paint server
       style->disableFillPainter();
       style->disableStrokePainter();
   
  -    KRenderingPaintServer *fillPaintServer = m_canvasItem->canvas()->renderingDevice()->createPaintServer(KCPaintServerType(PS_IMAGE));
  +    KRenderingPaintServer *fillPaintServer = canvas()->renderingDevice()->createPaintServer(KCPaintServerType(PS_IMAGE));
       style->fillPainter()->setPaintServer(fillPaintServer);
   
  -    if(!m_cachedDocument) // bitmap
  -    {
  -        QString fname = KDOM::DOMString(href()->baseVal()).string();
  -        KURL fullUrl(ownerDocument()->documentKURI(), fname);
  -        m_cachedImage = ownerDocument()->docLoader()->requestImage(fullUrl);
  +//    if(!m_cachedDocument) // bitmap
  +//    {
  +        m_cachedImage = ownerDocument()->docLoader()->requestImage(href()->baseVal());
   
           if(m_cachedImage)
               m_cachedImage->ref(this);
  -    }
  +//    }
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +7 -9      SVGSupport/ksvg2/svg/SVGImageElementImpl.h
  
  Index: SVGImageElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGImageElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGImageElementImpl.h	1 Sep 2005 07:35:43 -0000	1.4
  +++ SVGImageElementImpl.h	21 Nov 2005 08:29:40 -0000	1.5
  @@ -26,8 +26,7 @@
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
   #include "SVGURIReferenceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   #include <kdom/cache/KDOMCachedImage.h>
   #include <kdom/cache/KDOMCachedDocument.h>
  @@ -39,16 +38,15 @@
       class SVGAnimatedLengthImpl;
       class SVGDocumentImpl;
   
  -    class SVGImageElementImpl : public SVGStyledElementImpl,
  +    class SVGImageElementImpl : public SVGStyledTransformableElementImpl,
                                   public SVGTestsImpl,
                                   public SVGLangSpaceImpl,
                                   public SVGExternalResourcesRequiredImpl,
  -                                public SVGTransformableImpl,
                                   public SVGURIReferenceImpl,
                                   public KDOM::CachedObjectClient
       {
       public:
  -        SVGImageElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGImageElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGImageElementImpl();
   
           // 'SVGImageElement' functions
  @@ -60,10 +58,10 @@
   
           SVGAnimatedPreserveAspectRatioImpl *preserveAspectRatio() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
           virtual void notifyFinished(KDOM::CachedObject *finishedObj);
   
  @@ -76,7 +74,7 @@
           mutable SVGAnimatedLengthImpl *m_width;
           mutable SVGAnimatedLengthImpl *m_height;
           mutable SVGAnimatedPreserveAspectRatioImpl *m_preserveAspectRatio;
  -        mutable KDOM::CachedDocument *m_cachedDocument;
  +        //mutable KDOM::CachedDocument *m_cachedDocument;
           KDOM::CachedImage *m_cachedImage;
           SVGDocumentImpl *m_svgDoc;
       };
  
  
  
  1.7       +17 -35    SVGSupport/ksvg2/svg/SVGLangSpaceImpl.cpp
  
  Index: SVGLangSpaceImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLangSpaceImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGLangSpaceImpl.cpp	5 Oct 2005 05:35:23 -0000	1.6
  +++ SVGLangSpaceImpl.cpp	21 Nov 2005 08:29:40 -0000	1.7
  @@ -26,7 +26,7 @@
   #include <kdom/core/DOMStringImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGElementImpl.h"
   #include "SVGLangSpaceImpl.h"
   
  @@ -34,62 +34,44 @@
   
   SVGLangSpaceImpl::SVGLangSpaceImpl()
   {
  -    m_lang = 0;
  -    m_space = 0;
   }
   
   SVGLangSpaceImpl::~SVGLangSpaceImpl()
   {
  -    if(m_lang)
  -        m_lang->deref();
  -    if(m_space)
  -        m_space->deref();
   }
   
  -KDOM::DOMStringImpl *SVGLangSpaceImpl::xmllang() const
  +const KDOM::AtomicString& SVGLangSpaceImpl::xmllang() const
   {
       return m_lang;
   }
   
  -void SVGLangSpaceImpl::setXmllang(KDOM::DOMStringImpl *xmlLang)
  +void SVGLangSpaceImpl::setXmllang(const KDOM::AtomicString& xmlLang)
   {
  -    KDOM_SAFE_SET(m_lang, xmlLang);
  +    m_lang = xmlLang;
   }
   
  -KDOM::DOMStringImpl *SVGLangSpaceImpl::xmlspace() const
  +const KDOM::AtomicString& SVGLangSpaceImpl::xmlspace() const
   {
       return m_space;
   }
   
  -void SVGLangSpaceImpl::setXmlspace(KDOM::DOMStringImpl *xmlSpace)
  +void SVGLangSpaceImpl::setXmlspace(const KDOM::AtomicString& xmlSpace)
   {
  -    KDOM_SAFE_SET(m_space, xmlSpace);
  +    m_space = xmlSpace;
   }
   
  -bool SVGLangSpaceImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +bool SVGLangSpaceImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    switch(id)
  +    if (attr->name() == SVGNames::langAttr)
       {
  -        case ATTR_LANG:
  -        {
  -            if(attr->value())
  -                setXmllang(attr->value()->copy());
  -            else
  -                setXmllang(0);
  -
  -            return true;
  -        }
  -        case ATTR_SPACE:
  -        {
  -            if(attr->value())
  -                setXmlspace(attr->value()->copy());
  -            else
  -                setXmlspace(0);
  -
  -            return true;
  -        }
  -    };
  +        setXmllang(attr->value());
  +        return true;
  +    }
  +    else if (attr->name() == SVGNames::spaceAttr)
  +    {
  +        setXmlspace(attr->value());
  +        return true;
  +    }
   
       return false;
   }
  
  
  
  1.5       +10 -8     SVGSupport/ksvg2/svg/SVGLangSpaceImpl.h
  
  Index: SVGLangSpaceImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLangSpaceImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGLangSpaceImpl.h	1 Sep 2005 07:35:43 -0000	1.4
  +++ SVGLangSpaceImpl.h	21 Nov 2005 08:29:40 -0000	1.5
  @@ -23,10 +23,12 @@
   #ifndef KSVG_SVGLangSpaceImpl_H
   #define KSVG_SVGLangSpaceImpl_H
   
  +#include "dom_atomicstring.h"
  +
   namespace KDOM
   {
       class DOMStringImpl;
  -    class AttributeImpl;
  +    class MappedAttributeImpl;
   };
   
   namespace KSVG
  @@ -41,17 +43,17 @@
           virtual ~SVGLangSpaceImpl();
   
           // 'SVGLangSpace' functions
  -        KDOM::DOMStringImpl *xmllang() const;
  -        void setXmllang(KDOM::DOMStringImpl *xmlLang);
  +        const KDOM::AtomicString& xmllang() const;
  +        void setXmllang(const KDOM::AtomicString& xmlLang);
   
  -        KDOM::DOMStringImpl *xmlspace() const;
  -        void setXmlspace(KDOM::DOMStringImpl *xmlSpace);
  +        const KDOM::AtomicString& xmlspace() const;
  +        void setXmlspace(const KDOM::AtomicString& xmlSpace);
   
  -        bool parseAttribute(KDOM::AttributeImpl *attr);
  +        bool parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       private:
  -        mutable KDOM::DOMStringImpl *m_lang;
  -        mutable KDOM::DOMStringImpl *m_space;
  +        KDOM::AtomicString m_lang;
  +        KDOM::AtomicString m_space;
       };
   };
   
  
  
  
  1.7       +11 -11    SVGSupport/ksvg2/svg/SVGLengthImpl.cpp
  
  Index: SVGLengthImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLengthImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGLengthImpl.cpp	24 Oct 2005 06:31:53 -0000	1.6
  +++ SVGLengthImpl.cpp	21 Nov 2005 08:29:40 -0000	1.7
  @@ -26,14 +26,13 @@
   #include <kdebug.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasItem.h>
  -#include <kcanvas/device/KRenderingStyle.h>
  +#include <kcanvas/RenderPath.h>
  +#include "KCanvasRenderingStyle.h"
   
   #include "ksvg.h"
   #include "svgpathparser.h"
   #include "SVGLengthImpl.h"
   #include "SVGElementImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGSVGElementImpl.h"
   #include "SVGAnimatedRectImpl.h"
   #include "SVGAnimatedLengthImpl.h"
  @@ -95,7 +94,7 @@
       // gradient vector, the pattern tile, the filter region or the masking
       // region, a percentage represents the same value as the corresponding
       // decimal value (e.g., 50% means the same as 0.5). 
  -    KCanvasItem *item = (m_context ? m_context->canvasItem() : 0);
  +    khtml::RenderObject *item = (m_context ? m_context->renderer() : 0);
       if(item)
       {
           QRect bbox = item->bbox();
  @@ -125,12 +124,13 @@
       return m_valueInSpecifiedUnits;
   }                                                
   
  -void SVGLengthImpl::setValueAsString(KDOM::DOMStringImpl *valueAsString)
  +void SVGLengthImpl::setValueAsString(KDOM::DOMStringImpl *valueAsStringImpl)
   {
  -    if(!valueAsString || valueAsString->isEmpty())
  +    KDOM::DOMString valueAsString(valueAsStringImpl);
  +    if(valueAsString.isEmpty())
           return;
   
  -    QString valueAsQString = valueAsString->string();
  +    QString valueAsQString = valueAsString.qstring();
   
       double convertedNumber = 0;
       const char *start = valueAsQString.latin1();
  @@ -231,14 +231,14 @@
               if(m_context)
               {
                   /* FIXME: EMS/EXS handling
  -                KRenderingStyle *style = context->style();
  +                KCanvasRenderingStyle *style = context->style();
                   KCFontProperties *fontProperites = style->fontProperties();
   
                   bool sizeLocal = (style->getFontSize() != -1);
                   bool familyLocal = (style->getFontFamily() && style->getFontFamily()->getFirst());
                   
                   SVGStylableImpl *parentStyle = 0;
  -                if((!sizeLocal || !familyLocal) && context)
  +                if((!sizeLocal || !familyLocal) && context) {
                       parentStyle = dynamic_cast<SVGStylableImpl *>(context->ownerDoc()->getElementFromHandle(context->parentNode().handle()));
                   
                   // Look up font-size in a SAFE way, because at this place
  @@ -253,9 +253,9 @@
                       useSize = parentStyle->getFontSize();
               
                   if(familyLocal)
  -                    useFont = style->getFontFamily()->getFirst()->string();
  +                    useFont = style->getFontFamily()->getFirst()->qstring();
                   else if(parentStyle && parentStyle->getFontFamily() && parentStyle->getFontFamily()->getFirst())
  -                    useFont = parentStyle->getFontFamily()->getFirst()->string();
  +                    useFont = parentStyle->getFontFamily()->getFirst()->qstring();
   
                   if(unitType == SVG_LENGTHTYPE_EMS)
                       value = valueInSpecifiedUnits * useSize;
  
  
  
  1.7       +1 -1      SVGSupport/ksvg2/svg/SVGLengthImpl.h
  
  Index: SVGLengthImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLengthImpl.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGLengthImpl.h	24 Oct 2005 06:31:53 -0000	1.6
  +++ SVGLengthImpl.h	21 Nov 2005 08:29:40 -0000	1.7
  @@ -28,7 +28,7 @@
   
   #include <ksvg2/svg/SVGHelper.h>
   
  -class KCanvasItem;
  +class RenderPath;
   
   namespace KSVG
   {
  
  
  
  1.7       +1 -1      SVGSupport/ksvg2/svg/SVGLengthListImpl.cpp
  
  Index: SVGLengthListImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLengthListImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGLengthListImpl.cpp	5 Oct 2005 05:35:24 -0000	1.6
  +++ SVGLengthListImpl.cpp	21 Nov 2005 08:29:40 -0000	1.7
  @@ -45,7 +45,7 @@
       {
           SVGLengthImpl *length = new SVGLengthImpl(context, mode);
           KDOM::DOMString str(lengths[i]);
  -        length->setValueAsString(str.handle());
  +        length->setValueAsString(str.impl());
           appendItem(length);
       }
   }
  
  
  
  1.7       +19 -37    SVGSupport/ksvg2/svg/SVGLineElementImpl.cpp
  
  Index: SVGLineElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLineElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGLineElementImpl.cpp	5 Oct 2005 05:35:24 -0000	1.6
  +++ SVGLineElementImpl.cpp	21 Nov 2005 08:29:40 -0000	1.7
  @@ -23,7 +23,7 @@
   #include "config.h"
   #include <kdom/core/AttrImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGLineElementImpl.h"
   #include "SVGAnimatedLengthImpl.h"
  @@ -33,8 +33,8 @@
   
   using namespace KSVG;
   
  -SVGLineElementImpl::SVGLineElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl()
  +SVGLineElementImpl::SVGLineElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_x1 = m_y1 = m_x2 = m_y2 = 0;
   }
  @@ -71,42 +71,24 @@
       return lazy_create<SVGAnimatedLengthImpl>(m_y2, this, LM_HEIGHT, viewportElement());
   }
   
  -void SVGLineElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGLineElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  +    const KDOM::AtomicString& value = attr->value();
  +    if (attr->name() == SVGNames::x1Attr)
  +        x1()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::y1Attr)
  +        y1()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::x2Attr)
  +        x2()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::y2Attr)
  +        y2()->baseVal()->setValueAsString(value.impl());
  +    else
       {
  -        case ATTR_X1:
  -        {
  -            x1()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_Y1:
  -        {
  -            y1()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_X2:
  -        {
  -            x2()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_Y2:
  -        {
  -            y2()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGTransformableImpl::parseAttribute(attr)) return;
  -            
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   KCPathDataList SVGLineElementImpl::toPathData() const
  
  
  
  1.5       +6 -8      SVGSupport/ksvg2/svg/SVGLineElementImpl.h
  
  Index: SVGLineElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLineElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGLineElementImpl.h	1 Sep 2005 07:35:44 -0000	1.4
  +++ SVGLineElementImpl.h	21 Nov 2005 08:29:40 -0000	1.5
  @@ -25,21 +25,19 @@
   
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
   namespace KSVG
   {
       class SVGAnimatedLengthImpl;
  -    class SVGLineElementImpl : public SVGStyledElementImpl,
  +    class SVGLineElementImpl : public SVGStyledTransformableElementImpl,
                                  public SVGTestsImpl,
                                  public SVGLangSpaceImpl,
  -                               public SVGExternalResourcesRequiredImpl,
  -                               public SVGTransformableImpl
  +                               public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGLineElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGLineElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGLineElementImpl();
   
           // 'SVGLineElement' functions
  @@ -48,9 +46,9 @@
           SVGAnimatedLengthImpl *x2() const;
           SVGAnimatedLengthImpl *y2() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
           virtual KCPathDataList toPathData() const;
   
           virtual const SVGStyledElementImpl *pushAttributeContext(const SVGStyledElementImpl *context);
  
  
  
  1.8       +27 -64    SVGSupport/ksvg2/svg/SVGLinearGradientElementImpl.cpp
  
  Index: SVGLinearGradientElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLinearGradientElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGLinearGradientElementImpl.cpp	5 Oct 2005 05:35:24 -0000	1.7
  +++ SVGLinearGradientElementImpl.cpp	21 Nov 2005 08:29:40 -0000	1.8
  @@ -24,10 +24,9 @@
   #include <kdom/core/AttrImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGMatrixImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGTransformImpl.h"
   #include "SVGTransformListImpl.h"
   #include "SVGAnimatedStringImpl.h"
  @@ -38,14 +37,13 @@
   
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasMatrix.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasResources.h>
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingPaintServerGradient.h>
   
   using namespace KSVG;
   
  -SVGLinearGradientElementImpl::SVGLinearGradientElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGGradientElementImpl(doc, id, prefix)
  +SVGLinearGradientElementImpl::SVGLinearGradientElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGGradientElementImpl(tagName, doc)
   {
       m_x1 = m_y1 = m_x2 = m_y2 = 0;
   }
  @@ -93,40 +91,25 @@
       return lazy_create<SVGAnimatedLengthImpl>(m_y2, this, LM_HEIGHT, viewportElement());
   }
   
  -void SVGLinearGradientElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGLinearGradientElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  -    {
  -        case ATTR_X1:
  -        {
  -            x1()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_Y1:
  -        {
  -            y1()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_X2:
  -        {
  -            x2()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_Y2:
  -        {
  -            y2()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        default:
  -            SVGGradientElementImpl::parseAttribute(attr);
  -    };
  +    const KDOM::AtomicString& value = attr->value();
  +    if (attr->name() == SVGNames::x1Attr)
  +        x1()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::y1Attr)
  +        y1()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::x2Attr)
  +        x2()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::y2Attr)
  +        y2()->baseVal()->setValueAsString(value.impl());
  +    else
  +        SVGGradientElementImpl::parseMappedAttribute(attr);
   }
   
  -void SVGLinearGradientElementImpl::buildGradient(KRenderingPaintServerGradient *_grad, KCanvas *canvas) const
  +void SVGLinearGradientElementImpl::buildGradient(KRenderingPaintServerGradient *_grad) const
   {
  -    QString ref = KDOM::DOMString(href()->baseVal()).string();
  +    rebuildStops(); // rebuild stops before possibly importing them from any referenced gradient.
  +
       bool bbox = (gradientUnits()->baseVal() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
       
       x1()->baseVal()->setBboxRelative(bbox);
  @@ -142,37 +125,36 @@
       if(gradientTransform()->baseVal()->numberOfItems() > 0)
           mat = KCanvasMatrix(gradientTransform()->baseVal()->consolidate()->matrix()->qmatrix());
   
  -    KRenderingPaintServer *pserver = 0;
  -    if(!ref.isEmpty())
  -        pserver = canvas->registry()->getPaintServerById(ref.mid(1));
  -
  +    QString ref = KDOM::DOMString(href()->baseVal()).qstring();
  +    KRenderingPaintServer *pserver = getPaintServerById(getDocument(), ref.mid(1));
  +    
       if(pserver && (pserver->type() == PS_RADIAL_GRADIENT || pserver->type() == PS_LINEAR_GRADIENT))
       {
           bool isLinear = pserver->type() == PS_LINEAR_GRADIENT;
           KRenderingPaintServerGradient *gradient = static_cast<KRenderingPaintServerGradient *>(pserver);
   
  -        if(!hasAttribute(KDOM::DOMString("gradientUnits").handle()))
  +        if(!hasAttribute(SVGNames::gradientUnitsAttr))
               bbox = gradient->boundingBoxMode();
               
           if(isLinear)
           {
               KRenderingPaintServerLinearGradient *linear = static_cast<KRenderingPaintServerLinearGradient *>(pserver);
  -            if(!hasAttribute(KDOM::DOMString("x1").handle()))
  +            if(!hasAttribute(SVGNames::x1Attr))
                   _x1 = linear->gradientStart().x();
               else if(bbox)
                   _x1 *= 100.;
   
  -            if(!hasAttribute(KDOM::DOMString("y1").handle()))
  +            if(!hasAttribute(SVGNames::y1Attr))
                   _y1 = linear->gradientStart().y();
               else if(bbox)
                   _y1 *= 100.;
   
  -            if(!hasAttribute(KDOM::DOMString("x2").handle()))
  +            if(!hasAttribute(SVGNames::x2Attr))
                   _x2 = linear->gradientEnd().x();
               else if(bbox)
                   _x2 *= 100.;
   
  -            if(!hasAttribute(KDOM::DOMString("y2").handle()))
  +            if(!hasAttribute(SVGNames::y2Attr))
                   _y2 = linear->gradientEnd().y();
               else if(bbox)
                   _y2 *= 100.;
  @@ -185,7 +167,7 @@
               _y2 *= 100.0;
           }
   
  -        if(!hasAttribute(KDOM::DOMString("gradientTransform").handle()))
  +        if(!hasAttribute(SVGNames::gradientTransformAttr))
               mat = gradient->gradientTransform();
   
           // Inherit color stops if empty
  @@ -196,7 +178,7 @@
                   grad->gradientStops().addStop(it.current()->offset, it.current()->color);
           }
   
  -        if(!hasAttribute(KDOM::DOMString("spreadMethod").handle()))
  +        if(!hasAttribute(SVGNames::spreadMethodAttr))
               grad->setGradientSpreadMethod(gradient->spreadMethod());
       }
       else
  @@ -223,23 +205,4 @@
       grad->setGradientEnd(QPoint(qRound(_x2), qRound(_y2)));
   }
   
  -KCanvasItem *SVGLinearGradientElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *) const
  -{
  -    KRenderingPaintServer *temp = canvas->renderingDevice()->createPaintServer(KCPaintServerType(PS_LINEAR_GRADIENT));
  -    KRenderingPaintServerLinearGradient *pserver = static_cast<KRenderingPaintServerLinearGradient *>(temp);
  -
  -    pserver->setListener(const_cast<SVGLinearGradientElementImpl *>(this));
  -
  -    canvas->registry()->addPaintServerById(KDOM::DOMString(getId()).string(), pserver);
  -    return 0;
  -}
  -
  -void SVGLinearGradientElementImpl::resourceNotification() const
  -{
  -    // We're referenced by a "client", build the gradient now...
  -    KRenderingPaintServer *pserver = canvas()->registry()->getPaintServerById(KDOM::DOMString(getId()).string());
  -    KRenderingPaintServerGradient *gradient = static_cast<KRenderingPaintServerGradient *>(pserver);
  -    buildGradient(gradient, canvas());
  -}
  -
   // vim:ts=4:noet
  
  
  
  1.5       +4 -8      SVGSupport/ksvg2/svg/SVGLinearGradientElementImpl.h
  
  Index: SVGLinearGradientElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLinearGradientElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGLinearGradientElementImpl.h	1 Sep 2005 07:35:44 -0000	1.4
  +++ SVGLinearGradientElementImpl.h	21 Nov 2005 08:29:40 -0000	1.5
  @@ -31,7 +31,7 @@
       class SVGLinearGradientElementImpl : public SVGGradientElementImpl
       {
       public:
  -        SVGLinearGradientElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGLinearGradientElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGLinearGradientElementImpl();
   
           // 'SVGLinearGradientElement' functions
  @@ -40,15 +40,11 @@
           SVGAnimatedLengthImpl *x2() const;
           SVGAnimatedLengthImpl *y2() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  -        
  -        virtual bool implementsCanvasItem() const { return true; }
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  -
  -        virtual void resourceNotification() const;
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       protected:
  -        virtual void buildGradient(KRenderingPaintServerGradient *grad, KCanvas *canvas) const;
  +        virtual void buildGradient(KRenderingPaintServerGradient *grad) const;
  +        virtual KCPaintServerType gradientType() const { return PS_LINEAR_GRADIENT; }
   
       private:
           mutable SVGAnimatedLengthImpl *m_x1;
  
  
  
  1.7       +24 -34    SVGSupport/ksvg2/svg/SVGLocatableImpl.cpp
  
  Index: SVGLocatableImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLocatableImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGLocatableImpl.cpp	5 Oct 2005 05:35:24 -0000	1.6
  +++ SVGLocatableImpl.cpp	21 Nov 2005 08:29:41 -0000	1.7
  @@ -28,7 +28,7 @@
   #include "SVGLocatableImpl.h"
   #include "SVGSVGElementImpl.h"
   
  -#include <kcanvas/KCanvasItem.h>
  +#include <kcanvas/RenderPath.h>
   
   using namespace KSVG;
   
  @@ -40,15 +40,14 @@
   {
   }
   
  -SVGElementImpl *SVGLocatableImpl::nearestViewportElement() const
  +SVGElementImpl *SVGLocatableImpl::nearestViewportElement(const SVGStyledElementImpl *e)
   {
  -    const SVGStyledElementImpl *e = dynamic_cast<const SVGStyledElementImpl *>(this);
       KDOM::NodeImpl *n = e->parentNode();
       while(n && n->nodeType() != KDOM::DOCUMENT_NODE)
       {
           if(n->nodeType() == KDOM::ELEMENT_NODE &&
  -            (n->id() == ID_SVG || n->id() == ID_SYMBOL ||
  -             n->id() == ID_FOREIGNOBJECT || n->id() == ID_IMAGE))
  +            (n->hasTagName(SVGNames::svgTag) || n->hasTagName(SVGNames::symbolTag) ||
  +             n->hasTagName(SVGNames::foreignObjectTag) || n->hasTagName(SVGNames::imageTag)))
               return static_cast<SVGElementImpl *>(n);
   
           n = n->parentNode();
  @@ -57,20 +56,19 @@
       return 0;
   }
   
  -SVGElementImpl *SVGLocatableImpl::farthestViewportElement() const
  +SVGElementImpl *SVGLocatableImpl::farthestViewportElement(const SVGStyledElementImpl *e)
   {
       // FIXME : likely this will be always the <svg> farthest away.
       // If we have a different implementation of documentElement(), one
       // that give the documentElement() of the svg fragment, it could be
       // used instead. This depends on cdf demands though(Rob.)
       SVGElementImpl *farthest = 0;
  -    const SVGStyledElementImpl *e = dynamic_cast<const SVGStyledElementImpl *>(this);
       KDOM::NodeImpl *n = e->parentNode();
       while(n && n->nodeType() != KDOM::DOCUMENT_NODE)
       {
           if(n->nodeType() == KDOM::ELEMENT_NODE &&
  -            (n->id() == ID_SVG || n->id() == ID_SYMBOL ||
  -             n->id() == ID_FOREIGNOBJECT || n->id() == ID_IMAGE))
  +            (n->hasTagName(SVGNames::svgTag) || n->hasTagName(SVGNames::symbolTag) ||
  +             n->hasTagName(SVGNames::foreignObjectTag) || n->hasTagName(SVGNames::imageTag)))
               farthest = static_cast<SVGElementImpl *>(n);
   
           n = n->parentNode();
  @@ -79,14 +77,13 @@
       return farthest;
   }
   
  -SVGRectImpl *SVGLocatableImpl::getBBox() const
  +SVGRectImpl *SVGLocatableImpl::getBBox(const SVGStyledElementImpl *e)
   {
       SVGRectImpl *rect = 0;
   
  -    const SVGStyledElementImpl *e = dynamic_cast<const SVGStyledElementImpl *>(this);
  -    if(e && e->canvasItem())
  +    if(e && e->renderer())
       {
  -        QRect bboxRect = e->canvasItem()->bbox(false);
  +        QRect bboxRect = e->renderer()->bbox(false);
           rect = new SVGRectImpl(0);
           rect->setX(bboxRect.x());
           rect->setY(bboxRect.y());
  @@ -97,59 +94,52 @@
       return rect;
   }
   
  -SVGMatrixImpl *SVGLocatableImpl::getCTM() const
  +SVGMatrixImpl *SVGLocatableImpl::getCTM(const SVGElementImpl *element)
   {
  -    const SVGElementImpl *element = dynamic_cast<const SVGElementImpl *>(this);
       if(!element)
           return 0;
   
       SVGMatrixImpl *ctm = SVGSVGElementImpl::createSVGMatrix();
   
  -    SVGElementImpl *parentElement = svg_dynamic_cast(element->parentNode());
  -    if(parentElement)
  +    KDOM::NodeImpl *parent = element->parentNode();
  +    if(parent && parent->nodeType() == KDOM::ELEMENT_NODE)
       {
  -        SVGLocatableImpl *parentLocatable = dynamic_cast<SVGLocatableImpl *>(parentElement);
  -        if(parentLocatable)
  +        SVGElementImpl *parentElement = svg_dynamic_cast(parent);
  +        if(parentElement && parentElement->isStyledLocatable())
           {
  -            SVGMatrixImpl *parentCTM = parentLocatable->getCTM();
  -            parentCTM->ref();
  -            ctm->multiply(parentCTM);
  -            parentCTM->deref();
  +            SharedPtr<SVGMatrixImpl> parentCTM = static_cast<SVGStyledLocatableElementImpl *>(parentElement)->getCTM();
  +            ctm->multiply(parentCTM.get());
           }
       }
   
       return ctm;
   }
   
  -SVGMatrixImpl *SVGLocatableImpl::getScreenCTM() const
  +SVGMatrixImpl *SVGLocatableImpl::getScreenCTM(const SVGElementImpl *element)
   {
  -    const SVGElementImpl *element = dynamic_cast<const SVGElementImpl *>(this);
       if(!element)
           return 0;
   
       SVGMatrixImpl *ctm = SVGSVGElementImpl::createSVGMatrix();
   
       KDOM::NodeImpl *parent = element->parentNode();
  -    if(parent && parent->nodeType() == KDOM::ELEMENT_NODE)
  +    if(parent && parent->isElementNode())
       {
           SVGElementImpl *parentElement = static_cast<SVGElementImpl *>(parent);
  -        SVGLocatableImpl *parentLocatable = dynamic_cast<SVGLocatableImpl *>(parentElement);
  -        if(parentLocatable)
  +        if(parentElement->isStyledLocatable())
           {
  -            SVGMatrixImpl *parentCTM = parentLocatable->getScreenCTM();
  -            parentCTM->ref();
  -            ctm->multiply(parentCTM);
  -            parentCTM->deref();
  +            SharedPtr<SVGMatrixImpl> parentCTM = static_cast<SVGStyledLocatableElementImpl *>(parentElement)->getScreenCTM();
  +            ctm->multiply(parentCTM.get());
           }
       }
   
       return ctm;
   }
  -
  +/*
   SVGMatrixImpl *SVGLocatableImpl::getTransformToElement(SVGElementImpl *) const
   {
       // TODO!
       return 0;
   }
  -
  +*/
   // vim:ts=4:noet
  
  
  
  1.4       +14 -6     SVGSupport/ksvg2/svg/SVGLocatableImpl.h
  
  Index: SVGLocatableImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGLocatableImpl.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SVGLocatableImpl.h	1 Sep 2005 07:35:44 -0000	1.3
  +++ SVGLocatableImpl.h	21 Nov 2005 08:29:41 -0000	1.4
  @@ -28,6 +28,7 @@
       class SVGRectImpl;
       class SVGMatrixImpl;
       class SVGElementImpl;
  +    class SVGStyledElementImpl;
       class SVGLocatableImpl
       {
       public:
  @@ -35,13 +36,20 @@
           virtual ~SVGLocatableImpl();
   
           // 'SVGLocatable' functions
  -        SVGElementImpl *nearestViewportElement() const;
  -        SVGElementImpl *farthestViewportElement() const;
  +        virtual SVGElementImpl *nearestViewportElement() const = 0;
  +        virtual SVGElementImpl *farthestViewportElement() const = 0;
   
  -        virtual SVGRectImpl *getBBox() const;
  -        virtual SVGMatrixImpl *getCTM() const;
  -        virtual SVGMatrixImpl *getScreenCTM() const;
  -        virtual SVGMatrixImpl *getTransformToElement(SVGElementImpl *element) const;
  +        virtual SVGRectImpl *getBBox() const = 0;
  +        virtual SVGMatrixImpl *getCTM() const = 0;
  +        virtual SVGMatrixImpl *getScreenCTM() const = 0;
  +        virtual SVGMatrixImpl *getTransformToElement(SVGElementImpl *element) const = 0;
  +
  +    protected:
  +        static SVGElementImpl *nearestViewportElement(const SVGStyledElementImpl *element);
  +        static SVGElementImpl *farthestViewportElement(const SVGStyledElementImpl *element);
  +        static SVGRectImpl *getBBox(const SVGStyledElementImpl *element);
  +        static SVGMatrixImpl *getCTM(const SVGElementImpl *element);
  +        static SVGMatrixImpl *getScreenCTM(const SVGElementImpl *element);
       };
   };
   
  
  
  
  1.7       +37 -58    SVGSupport/ksvg2/svg/SVGMarkerElementImpl.cpp
  
  Index: SVGMarkerElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGMarkerElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGMarkerElementImpl.cpp	5 Oct 2005 05:35:24 -0000	1.6
  +++ SVGMarkerElementImpl.cpp	21 Nov 2005 08:29:41 -0000	1.7
  @@ -27,16 +27,14 @@
   
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasCreator.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasContainer.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGAngleImpl.h"
   #include "SVGLengthImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGSVGElementImpl.h"
   #include "SVGFitToViewBoxImpl.h"
   #include "SVGMarkerElementImpl.h"
  @@ -46,8 +44,8 @@
   
   using namespace KSVG;
   
  -SVGMarkerElementImpl::SVGMarkerElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGLangSpaceImpl(),
  +SVGMarkerElementImpl::SVGMarkerElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledElementImpl(tagName, doc), SVGLangSpaceImpl(),
     SVGExternalResourcesRequiredImpl(), SVGFitToViewBoxImpl()
   {
       m_refX = m_refY = m_markerWidth = m_markerHeight = 0;
  @@ -74,53 +72,36 @@
           m_orientAngle->deref();
   }
   
  -void SVGMarkerElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGMarkerElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  +    const KDOM::AtomicString& value = attr->value();
  +    if (attr->name() == SVGNames::refXAttr)
  +        refX()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::refYAttr)
  +        refY()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::markerWidthAttr)
  +        markerWidth()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::markerHeightAttr)
  +        markerHeight()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::orientAttr)
       {
  -        case ATTR_REFX:
  -        {
  -            refX()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_REFY:
  -        {
  -            refY()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_MARKERWIDTH:
  -        {
  -            markerWidth()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_MARKERHEIGHT:
  -        {
  -            markerHeight()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_ORIENT:
  -        {
  -            if(KDOM::DOMString(value) == "auto")
  -                setOrientToAuto();
  -            else
  -            {
  -                SVGAngleImpl *angle = SVGSVGElementImpl::createSVGAngle();
  -                angle->setValueAsString(value);
  -                setOrientToAngle(angle);
  -            }
  -            break;
  +        if(KDOM::DOMString(value) == "auto")
  +            setOrientToAuto();
  +        else
  +        {
  +            SVGAngleImpl *angle = SVGSVGElementImpl::createSVGAngle();
  +            angle->setValueAsString(value.impl());
  +            setOrientToAngle(angle);
           }
  -        default:
  -        {
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGFitToViewBoxImpl::parseAttribute(attr)) return;
  +    }
  +    else
  +    {
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        if(SVGFitToViewBoxImpl::parseMappedAttribute(attr)) return;
   
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        SVGStyledElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   SVGAnimatedLengthImpl *SVGMarkerElementImpl::refX() const
  @@ -175,22 +156,19 @@
       orientAngle()->setBaseVal(angle);
   }
   
  -void SVGMarkerElementImpl::close()
  +KCanvasMarker *SVGMarkerElementImpl::canvasResource()
   {
       if(!m_marker)
  -    {
           m_marker = static_cast<KCanvasMarker *>(canvas()->renderingDevice()->createResource(RS_MARKER));
  -        canvas()->registry()->addResourceById(KDOM::DOMString(getId()).string(), m_marker);
  -    }
       
  -    m_marker->setMarker(m_canvasItem);
  +    m_marker->setMarker(renderer());
   
       // Spec: If the attribute is not specified, the effect is as if a
       // value of "0" were specified.
       if(!m_orientType)
       {
           SVGAngleImpl *angle = SVGSVGElementImpl::createSVGAngle();
  -        angle->setValueAsString(KDOM::DOMString("0").handle());
  +        angle->setValueAsString(KDOM::DOMString("0").impl());
           setOrientToAngle(angle);
       }
       
  @@ -201,13 +179,14 @@
   
       m_marker->setRefX(refX()->baseVal()->value());
       m_marker->setRefY(refY()->baseVal()->value());
  +    return m_marker;
   }
   
  -KCanvasItem *SVGMarkerElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGMarkerElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    KCanvasContainer *container = KCanvasCreator::self()->createContainer(canvas, style);
  -    container->setDrawContents(false); // Marker contents will be explicitly drawn.
  -    return container;
  +    KCanvasContainer *markerContainer = canvas()->renderingDevice()->createContainer(arena, style, this);
  +    markerContainer->setDrawContents(false); // Marker contents will be explicitly drawn.
  +    return markerContainer;
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +5 -8      SVGSupport/ksvg2/svg/SVGMarkerElementImpl.h
  
  Index: SVGMarkerElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGMarkerElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGMarkerElementImpl.h	1 Sep 2005 07:35:45 -0000	1.4
  +++ SVGMarkerElementImpl.h	21 Nov 2005 08:29:41 -0000	1.5
  @@ -47,12 +47,9 @@
                                    public SVGFitToViewBoxImpl
       {
       public:
  -        SVGMarkerElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGMarkerElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGMarkerElementImpl();
   
  -        // Derived from: 'ElementImpl'
  -        virtual void close();
  -
           // 'SVGMarkerElement' functions
           SVGAnimatedLengthImpl *refX() const;
           SVGAnimatedLengthImpl *refY() const;
  @@ -65,11 +62,11 @@
           void setOrientToAuto();
           void setOrientToAngle(SVGAngleImpl *angle);
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
       
  -        virtual bool implementsCanvasItem() const { return true; }
  -
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  +        virtual KCanvasMarker *canvasResource();
   
       private:
           mutable SVGAnimatedLengthImpl *m_refX;
  
  
  
  1.6       +5 -5      SVGSupport/ksvg2/svg/SVGPaintImpl.cpp
  
  Index: SVGPaintImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPaintImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGPaintImpl.cpp	5 Oct 2005 05:35:24 -0000	1.5
  +++ SVGPaintImpl.cpp	21 Nov 2005 08:29:41 -0000	1.6
  @@ -66,7 +66,7 @@
   
   void SVGPaintImpl::setUri(KDOM::DOMStringImpl *uri)
   {
  -    KDOM_SAFE_SET(m_uri, uri);
  +    KDOM::KDOM_SAFE_SET(m_uri, uri);
   }
   
   void SVGPaintImpl::setPaint(unsigned short paintType, KDOM::DOMStringImpl *uri, KDOM::DOMStringImpl *rgbPaint, KDOM::DOMStringImpl *)
  @@ -79,14 +79,14 @@
           setRGBColor(rgbPaint);
   }
   
  -KDOM::DOMStringImpl *SVGPaintImpl::cssText() const
  +KDOM::DOMString SVGPaintImpl::cssText() const
   {
       if(m_paintType == SVG_PAINTTYPE_NONE)
  -        return new KDOM::DOMStringImpl("none");
  +        return "none";
       else if(m_paintType == SVG_PAINTTYPE_CURRENTCOLOR)
  -        return new KDOM::DOMStringImpl("currentColor");
  +        return "currentColor";
       else if(m_paintType == SVG_PAINTTYPE_URI)
  -        return new KDOM::DOMStringImpl(QString::fromLatin1("url(") + KDOM::DOMString(m_uri).string() + QString::fromLatin1(")"));
  +        return KDOM::DOMString(QString::fromLatin1("url(") + KDOM::DOMString(m_uri).qstring() + QString::fromLatin1(")"));
   
       return SVGColorImpl::cssText();
   }
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGPaintImpl.h
  
  Index: SVGPaintImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPaintImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGPaintImpl.h	1 Sep 2005 07:35:45 -0000	1.4
  +++ SVGPaintImpl.h	21 Nov 2005 08:29:41 -0000	1.5
  @@ -45,7 +45,7 @@
           void setUri(KDOM::DOMStringImpl *uri);
           void setPaint(unsigned short paintType, KDOM::DOMStringImpl *uri, KDOM::DOMStringImpl *rgbPaint, KDOM::DOMStringImpl *iccPaint);
   
  -        virtual KDOM::DOMStringImpl *cssText() const;
  +        virtual KDOM::DOMString cssText() const;
   
       private:
           unsigned short m_paintType;
  
  
  
  1.7       +15 -23    SVGSupport/ksvg2/svg/SVGPathElementImpl.cpp
  
  Index: SVGPathElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPathElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGPathElementImpl.cpp	5 Oct 2005 05:35:25 -0000	1.6
  +++ SVGPathElementImpl.cpp	21 Nov 2005 08:29:41 -0000	1.7
  @@ -24,11 +24,10 @@
   #include <kdom/core/AttrImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGRectImpl.h"
   #include "SVGPointImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGSVGElementImpl.h"
   #include "SVGPathSegArcImpl.h"
   #include "SVGPathSegListImpl.h"
  @@ -47,10 +46,10 @@
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasCreator.h>
   
  -using namespace KSVG;
  +namespace KSVG {
   
  -SVGPathElementImpl::SVGPathElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl(), SVGPathParser()
  +SVGPathElementImpl::SVGPathElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGPathParser()
   {
       m_pathLength = 0;
       m_pathSegList = 0;
  @@ -350,26 +349,17 @@
       pathSegList()->appendItem(createSVGPathSegClosePath());
   }
   
  -void SVGPathElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGPathElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    switch(id)
  +    if (attr->name() == SVGNames::dAttr)
  +        parseSVG(attr->value().qstring(), true);
  +    else
       {
  -        case ATTR_D:
  -        {
  -            parseSVG(KDOM::DOMString(attr->value()).string(), true);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGTransformableImpl::parseAttribute(attr)) return;
  -
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   SVGPathSegListImpl *SVGPathElementImpl::pathSegList() const
  @@ -438,4 +428,6 @@
       return pathData;
   }
   
  +}
  +
   // vim:ts=4:noet
  
  
  
  1.5       +5 -7      SVGSupport/ksvg2/svg/SVGPathElementImpl.h
  
  Index: SVGPathElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPathElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGPathElementImpl.h	1 Sep 2005 07:35:46 -0000	1.4
  +++ SVGPathElementImpl.h	21 Nov 2005 08:29:41 -0000	1.5
  @@ -26,8 +26,7 @@
   #include "SVGTestsImpl.h"
   #include "svgpathparser.h"
   #include "SVGLangSpaceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGAnimatedPathDataImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
  @@ -55,16 +54,15 @@
       class SVGPathSegCurvetoCubicSmoothRelImpl;
       class SVGPathSegCurvetoQuadraticSmoothAbsImpl;
       class SVGPathSegCurvetoQuadraticSmoothRelImpl;
  -    class SVGPathElementImpl : public SVGStyledElementImpl,
  +    class SVGPathElementImpl : public SVGStyledTransformableElementImpl,
                                  public SVGTestsImpl,
                                  public SVGLangSpaceImpl,
                                  public SVGExternalResourcesRequiredImpl,
  -                               public SVGTransformableImpl,
                                  public SVGAnimatedPathDataImpl,
                                  public SVGPathParser
       {
       public:
  -        SVGPathElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGPathElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGPathElementImpl();
   
           SVGAnimatedNumberImpl *pathLength() const;
  @@ -98,9 +96,9 @@
           virtual SVGPathSegListImpl *animatedPathSegList() const;
           virtual SVGPathSegListImpl *animatedNormalizedPathSegList() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
           virtual KCPathDataList toPathData() const;
   
       private:
  
  
  
  1.9       +86 -113   SVGSupport/ksvg2/svg/SVGPatternElementImpl.cpp
  
  Index: SVGPatternElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPatternElementImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGPatternElementImpl.cpp	5 Oct 2005 05:35:26 -0000	1.8
  +++ SVGPatternElementImpl.cpp	21 Nov 2005 08:29:41 -0000	1.9
  @@ -25,7 +25,6 @@
   
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasMatrix.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasContainer.h>
   #include <kcanvas/KCanvasCreator.h>
   #include <kcanvas/KCanvasImage.h>
  @@ -33,10 +32,9 @@
   #include <kcanvas/device/KRenderingPaintServerPattern.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGMatrixImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGSVGElementImpl.h"
   #include "SVGTransformableImpl.h"
   #include "SVGTransformListImpl.h"
  @@ -50,7 +48,7 @@
   
   using namespace KSVG;
   
  -SVGPatternElementImpl::SVGPatternElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGStyledElementImpl(doc, id, prefix), SVGURIReferenceImpl(), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGFitToViewBoxImpl(), KCanvasResourceListener()
  +SVGPatternElementImpl::SVGPatternElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGStyledLocatableElementImpl(tagName, doc), SVGURIReferenceImpl(), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGFitToViewBoxImpl(), KCanvasResourceListener()
   {
       m_patternUnits = 0;
       m_patternTransform = 0;
  @@ -78,8 +76,6 @@
           m_patternContentUnits->deref();
       if(m_patternTransform)
           m_patternTransform->deref();
  -    if (m_canvasItem)
  -        delete m_canvasItem;
   }
   
   SVGAnimatedEnumerationImpl *SVGPatternElementImpl::patternUnits() const
  @@ -129,65 +125,46 @@
       return lazy_create<SVGAnimatedTransformListImpl>(m_patternTransform, this);
   }
   
  -void SVGPatternElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGPatternElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    if (attr->name() == SVGNames::patternUnitsAttr)
       {
  -        case ATTR_PATTERNUNITS:
  -        {
  -            if(value == "userSpaceOnUse")
  -                patternUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  -            else if(value == "objectBoundingBox")
  -                patternUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  -            break;
  -        }
  -        case ATTR_PATTERNCONTENTUNITS:
  -        {
  -            if(value == "userSpaceOnUse")
  -                patternContentUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  -            else if(value == "objectBoundingBox")
  -                patternContentUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  -            break;
  -        }
  -        case ATTR_PATTERNTRANSFORM:
  -        {
  -            SVGTransformListImpl *patternTransforms = patternTransform()->baseVal();
  -            SVGTransformableImpl::parseTransformAttribute(patternTransforms, attr->value());
  -            break;
  -        }
  -        case ATTR_X:
  -        {
  -            x()->baseVal()->setValueAsString(value.handle());
  -            break;
  -        }
  -        case ATTR_Y:
  -        {
  -            y()->baseVal()->setValueAsString(value.handle());
  -            break;
  -        }
  -        case ATTR_WIDTH:
  -        {
  -            width()->baseVal()->setValueAsString(value.handle());
  -            break;
  -        }
  -        case ATTR_HEIGHT:
  -        {
  -            height()->baseVal()->setValueAsString(value.handle());
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGURIReferenceImpl::parseAttribute(attr)) return;
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGFitToViewBoxImpl::parseAttribute(attr)) return;
  +        if(value == "userSpaceOnUse")
  +            patternUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  +        else if(value == "objectBoundingBox")
  +            patternUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  +    }
  +    else if (attr->name() == SVGNames::patternContentUnitsAttr)
  +    {
  +        if(value == "userSpaceOnUse")
  +            patternContentUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
  +        else if(value == "objectBoundingBox")
  +            patternContentUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  +    }
  +    else if (attr->name() == SVGNames::patternTransformAttr)
  +    {
  +        SVGTransformListImpl *patternTransforms = patternTransform()->baseVal();
  +        SVGTransformableImpl::parseTransformAttribute(patternTransforms, value.impl());
  +    }
  +    else if (attr->name() == SVGNames::xAttr)
  +        x()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::yAttr)
  +        y()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::widthAttr)
  +        width()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::heightAttr)
  +        height()->baseVal()->setValueAsString(value.impl());
  +    else
  +    {
  +        if(SVGURIReferenceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        if(SVGFitToViewBoxImpl::parseMappedAttribute(attr)) return;
   
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        SVGStyledElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   const SVGStyledElementImpl *SVGPatternElementImpl::pushAttributeContext(const SVGStyledElementImpl *context)
  @@ -211,6 +188,8 @@
   
   void SVGPatternElementImpl::notifyAttributeChange() const
   {
  +    KRenderingDevice *device = canvas()->renderingDevice();
  +
       if(!m_paintServer || !m_paintServer->activeClient())
           return;
   
  @@ -232,25 +211,17 @@
       const KDOM::NodeImpl *test = this;
       while(test && !test->hasChildNodes())
       {
  -        QString ref = KDOM::DOMString(href()->baseVal()).string();
  -        test = ownerDocument()->getElementById(KDOM::DOMString(ref.mid(1)).handle());
  -        if(test && test->id() == ID_PATTERN)
  +        QString ref = KDOM::DOMString(href()->baseVal()).qstring();
  +        test = ownerDocument()->getElementById(KDOM::DOMString(ref.mid(1)).impl());
  +        if(test && test->hasTagName(SVGNames::patternTag))
               target = static_cast<const KDOM::ElementImpl *>(test);
       }
   
       unsigned short savedPatternUnits = patternUnits()->baseVal();
       unsigned short savedPatternContentUnits = patternContentUnits()->baseVal();
   
  -    KRenderingPaintServer *refServer = 0;
  -    QString ref = KDOM::DOMString(href()->baseVal()).string();
  -    if(!ref.isEmpty())
  -    {
  -        SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        KCanvas *canvas = (document ? document->canvas() : 0);
  -        Q_ASSERT(canvas != 0);
  -        
  -        refServer = canvas->registry()->getPaintServerById(ref.mid(1));
  -    }
  +    QString ref = KDOM::DOMString(href()->baseVal()).qstring();
  +    KRenderingPaintServer *refServer = getPaintServerById(getDocument(), ref.mid(1));
   
       KCanvasMatrix patternTransformMatrix;
       if(patternTransform()->baseVal()->numberOfItems() > 0)
  @@ -260,29 +231,29 @@
       {
           KRenderingPaintServerPattern *refPattern = static_cast<KRenderingPaintServerPattern *>(refServer);
           
  -        if(!hasAttribute(KDOM::DOMString("patternUnits").handle()))
  +        if(!hasAttribute(SVGNames::patternUnitsAttr))
           {
  -            KDOM::DOMString value(target->getAttribute(KDOM::DOMString("patternUnits").handle()));
  +            const KDOM::AtomicString& value = target->getAttribute(SVGNames::patternUnitsAttr);
               if(value == "userSpaceOnUse")
                   patternUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
               else if(value == "objectBoundingBox")
                   patternUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
           }
           
  -        if(!hasAttribute(KDOM::DOMString("patternContentUnits").handle()))
  +        if(!hasAttribute(SVGNames::patternContentUnitsAttr))
           {
  -            KDOM::DOMString value(target->getAttribute(KDOM::DOMString("patternContentUnits").handle()));
  +            const KDOM::AtomicString& value = target->getAttribute(SVGNames::patternContentUnitsAttr);
               if(value == "userSpaceOnUse")
                   patternContentUnits()->setBaseVal(SVG_UNIT_TYPE_USERSPACEONUSE);
               else if(value == "objectBoundingBox")
                   patternContentUnits()->setBaseVal(SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
           }
   
  -        if(!hasAttribute(KDOM::DOMString("patternTransform").handle()))
  +        if(!hasAttribute(SVGNames::patternTransformAttr))
               patternTransformMatrix = refPattern->patternTransform();
       }
   
  -    SVGStyledElementImpl *activeElement = static_cast<SVGStyledElementImpl *>(m_paintServer->activeClient()->userData());
  +    SVGStyledElementImpl *activeElement = static_cast<SVGStyledElementImpl *>(m_paintServer->activeClient()->element());
   
       bool bbox = (patternUnits()->baseVal() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
   
  @@ -301,11 +272,8 @@
       m_tile = static_cast<KCanvasImage *>(canvas()->renderingDevice()->createResource(RS_IMAGE));
       m_tile->init(newSize);
   
  -    KRenderingDeviceContext *patternContext = canvas()->renderingDevice()->contextForImage(m_tile);
  -    canvas()->renderingDevice()->pushContext(patternContext);
  -//    KCanvasCommonArgs args;
  -//    args.setCanvas(canvas());
  -//    args.setStyle(item->style());
  +    KRenderingDeviceContext *patternContext = device->contextForImage(m_tile);
  +    device->pushContext(patternContext);
       
       KRenderingPaintServerPattern *pattern = static_cast<KRenderingPaintServerPattern *>(m_paintServer);
       pattern->setX(x()->baseVal()->value());
  @@ -315,13 +283,18 @@
       pattern->setPatternTransform(patternTransformMatrix);
       pattern->setTile(m_tile);
   
  +#if !APPLE_COMPILE_HACK
       for(KDOM::NodeImpl *n = target->firstChild(); n != 0; n = n->nextSibling())
       {
  -        SVGStyledElementImpl *e = dynamic_cast<SVGStyledElementImpl *>(n);
  -        KCanvasItem *item = (e ? e->canvasItem() : 0);
  -        if(item && item->style())
  +        SVGElementImpl *elem = svg_dynamic_cast(n);
  +        if (!elem || !elem->isStyled())
  +            return;
  +        SVGStyledElementImpl *e = static_cast<SVGStyledElementImpl *>(elem);
  +        khtml::RenderObject *item = e->renderer();
  +        if(item && item->canvasStyle())
           {
  -            KCanvasMatrix savedMatrix = item->style()->objectMatrix();
  +            KCanvasRenderingStyle *canvasStyle = item->canvasStyle();
  +            KCanvasMatrix savedMatrix = canvasStyle->objectMatrix();
   
               const SVGStyledElementImpl *savedContext = 0;
               if(patternContentUnits()->baseVal() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX)
  @@ -331,24 +304,18 @@
               }
   
               // Take into account viewportElement's viewBox, if existant...
  -            if(viewportElement() && viewportElement()->id() == ID_SVG)
  +            if(viewportElement() && viewportElement()->hasTagName(SVGNames::svgTag))
               {
                   SVGSVGElementImpl *svgElement = static_cast<SVGSVGElementImpl *>(viewportElement());
   
  -                SVGMatrixImpl *svgCTM = svgElement->getCTM();
  -                svgCTM->ref();
  -
  -                SVGMatrixImpl *ctm = SVGLocatableImpl::getCTM();
  -                ctm->ref();
  +                SharedPtr<SVGMatrixImpl> svgCTM = svgElement->getCTM();
  +                SharedPtr<SVGMatrixImpl> ctm = SVGLocatableImpl::getCTM();
   
                   KCanvasMatrix newMatrix(svgCTM->qmatrix());
                   newMatrix.multiply(savedMatrix);
                   newMatrix.scale(1.0 / ctm->a(), 1.0 / ctm->d());
   
  -                item->style()->setObjectMatrix(newMatrix);
  -
  -                ctm->deref();
  -                svgCTM->deref();
  +                canvasStyle->setObjectMatrix(newMatrix);
               }
   
               item->draw(QRect());
  @@ -356,14 +323,15 @@
               if(savedContext)
                   e->pushAttributeContext(savedContext);
   
  -            item->style()->setObjectMatrix(savedMatrix);
  +            canvasStyle->setObjectMatrix(savedMatrix);
           }
       }
  +#endif
   
       if(savedContext)
           const_cast<SVGPatternElementImpl *>(this)->pushAttributeContext(savedContext);
   
  -    canvas()->renderingDevice()->popContext();
  +    device->popContext();
       delete patternContext;
   
       patternUnits()->setBaseVal(savedPatternUnits);
  @@ -377,31 +345,36 @@
   
       for(; it != end; ++it)
       {
  -        const KCanvasItem *current = (*it);
  +        const RenderPath *current = (*it);
   
  -        SVGStyledElementImpl *styled = (current ? static_cast<SVGStyledElementImpl *>(current->userData()) : 0);
  +        SVGStyledElementImpl *styled = (current ? static_cast<SVGStyledElementImpl *>(current->element()) : 0);
           if(styled)
           {
               styled->setChanged(true);
   
  -            if(styled->canvasItem())
  -                styled->canvasItem()->invalidate();
  +            if(styled->renderer())
  +                styled->renderer()->repaint();
           }
       }
   
       m_ignoreAttributeChanges = false;
   }
   
  -KCanvasItem *SVGPatternElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *) const
  +khtml::RenderObject *SVGPatternElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    m_paintServer = canvas->renderingDevice()->createPaintServer(KCPaintServerType(PS_PATTERN));
  -    KRenderingPaintServerPattern *pserver = static_cast<KRenderingPaintServerPattern *>(m_paintServer);
  -
  -    pserver->setListener(const_cast<SVGPatternElementImpl *>(this));
  -
  -    canvas->registry()->addPaintServerById(KDOM::DOMString(getId()).string(), pserver);
  +    KCanvasContainer *patternContainer = canvas()->renderingDevice()->createContainer(arena, style, this);
  +    patternContainer->setDrawContents(false);
  +    return patternContainer;
  +}
   
  -    return 0;
  +KRenderingPaintServerPattern *SVGPatternElementImpl::canvasResource()
  +{
  +    if (!m_paintServer) {
  +        KRenderingPaintServer *pserver = canvas()->renderingDevice()->createPaintServer(KCPaintServerType(PS_PATTERN));
  +        m_paintServer = static_cast<KRenderingPaintServerPattern *>(pserver);
  +        m_paintServer->setListener(const_cast<SVGPatternElementImpl *>(this));
  +    }
  +    return m_paintServer;
   }
   
   SVGMatrixImpl *SVGPatternElementImpl::getCTM() const
  
  
  
  1.5       +10 -12    SVGSupport/ksvg2/svg/SVGPatternElementImpl.h
  
  Index: SVGPatternElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPatternElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGPatternElementImpl.h	1 Sep 2005 07:35:49 -0000	1.4
  +++ SVGPatternElementImpl.h	21 Nov 2005 08:29:41 -0000	1.5
  @@ -25,19 +25,17 @@
   
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
  -#include "SVGLocatableImpl.h"
   #include "SVGURIReferenceImpl.h"
   #include "SVGFitToViewBoxImpl.h"
  -#include "SVGStyledElementImpl.h"
  +#include "SVGStyledLocatableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
   #include <kcanvas/KCanvasTypes.h>
   #include <kcanvas/KCanvasResourceListener.h>
   #include <kcanvas/device/KRenderingPaintServer.h>
  +#include <kcanvas/device/KRenderingPaintServerPattern.h>
   
  -class KCanvas;
   class KCanvasImage;
  -class KRenderingPaintServerPattern;
   
   namespace KSVG
   {
  @@ -45,17 +43,16 @@
       class SVGPatternElementImpl;
       class SVGAnimatedEnumerationImpl;
       class SVGAnimatedTransformListImpl;
  -    class SVGPatternElementImpl : public SVGStyledElementImpl,
  +    class SVGPatternElementImpl : public SVGStyledLocatableElementImpl,
                                     public SVGURIReferenceImpl,
                                     public SVGTestsImpl,
                                     public SVGLangSpaceImpl,
                                     public SVGExternalResourcesRequiredImpl,
                                     public SVGFitToViewBoxImpl,
  -                                  public SVGLocatableImpl, // TODO : really needed?
                                     public KCanvasResourceListener
       {
       public:
  -        SVGPatternElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGPatternElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGPatternElementImpl();
   
           // 'SVGPatternElement' functions
  @@ -69,7 +66,7 @@
           SVGAnimatedLengthImpl *width() const;
           SVGAnimatedLengthImpl *height() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           const SVGStyledElementImpl *pushAttributeContext(const SVGStyledElementImpl *context);
   
  @@ -77,10 +74,11 @@
           virtual void notifyAttributeChange() const;
   
           // Derived from: 'SVGStyledElementImpl'
  -        virtual bool allowAttachChildren(KDOM::ElementImpl *) const { return false; }
  +        virtual bool allowAttachChildren(KDOM::ElementImpl *) const { return true; }
   
  -        virtual bool implementsCanvasItem() const { return true; }
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  +        virtual KRenderingPaintServerPattern *canvasResource();
   
           // 'virtual SVGLocatable' functions
           virtual SVGMatrixImpl *getCTM() const;
  @@ -98,7 +96,7 @@
   
           mutable KCanvasImage *m_tile;
           mutable bool m_ignoreAttributeChanges;
  -        mutable KRenderingPaintServer *m_paintServer;
  +        mutable KRenderingPaintServerPattern *m_paintServer;
       };
   };
   
  
  
  
  1.7       +19 -27    SVGSupport/ksvg2/svg/SVGPolyElementImpl.cpp
  
  Index: SVGPolyElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPolyElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGPolyElementImpl.cpp	5 Oct 2005 05:35:27 -0000	1.6
  +++ SVGPolyElementImpl.cpp	21 Nov 2005 08:29:41 -0000	1.7
  @@ -24,17 +24,16 @@
   #include <kdom/core/AttrImpl.h>
   #include <kdom/Namespace.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGPointListImpl.h"
   #include "SVGPolyElementImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGDOMImplementationImpl.h"
   
   using namespace KSVG;
   
  -SVGPolyElementImpl::SVGPolyElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl(), SVGAnimatedPointsImpl(), SVGPolyParser()
  +SVGPolyElementImpl::SVGPolyElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGAnimatedPointsImpl(), SVGPolyParser()
   {
       m_points = 0;
   }
  @@ -55,26 +54,17 @@
       return 0;
   }
   
  -void SVGPolyElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGPolyElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    switch(id)
  +    if (attr->name() == SVGNames::pointsAttr)
  +        parsePoints(KDOM::DOMString(attr->value()).qstring());
  +    else
       {
  -        case ATTR_POINTS:
  -        {
  -            parsePoints(KDOM::DOMString(attr->value()).string());
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGTransformableImpl::parseAttribute(attr)) return;
  -
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   void SVGPolyElementImpl::svgPolyTo(double x1, double y1, int) const
  @@ -84,7 +74,8 @@
   
   void SVGPolyElementImpl::notifyAttributeChange() const
   {
  -    if(ownerDocument()->parsing())
  +    static bool ignoreNotifications = false;
  +    if (ignoreNotifications || ownerDocument()->parsing())
           return;
   
       SVGStyledElementImpl::notifyAttributeChange();
  @@ -101,12 +92,13 @@
       }
   
       KDOM::DOMString p("points");
  -    KDOM::AttrImpl *attr = const_cast<SVGPolyElementImpl *>(this)->getAttributeNode(p.handle());
  +    KDOM::AttrImpl *attr = const_cast<SVGPolyElementImpl *>(this)->getAttributeNode(p.impl());
       if(attr)
       {
  -        attr->setOwnerElement(0);
  -        attr->setValue(_points.handle());
  -        attr->setOwnerElement(const_cast<SVGPolyElementImpl *>(this));
  +        int exceptionCode;
  +        ignoreNotifications = true; // prevent recursion.
  +        attr->setValue(_points, exceptionCode);
  +        ignoreNotifications = false;
       }
   }
   
  
  
  
  1.5       +5 -7      SVGSupport/ksvg2/svg/SVGPolyElementImpl.h
  
  Index: SVGPolyElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPolyElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGPolyElementImpl.h	1 Sep 2005 07:35:49 -0000	1.4
  +++ SVGPolyElementImpl.h	21 Nov 2005 08:29:41 -0000	1.5
  @@ -26,32 +26,30 @@
   #include "SVGTestsImpl.h"
   #include "svgpathparser.h"
   #include "SVGLangSpaceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGAnimatedPointsImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
   namespace KSVG
   {
  -    class SVGPolyElementImpl :  public SVGStyledElementImpl,
  +    class SVGPolyElementImpl :  public SVGStyledTransformableElementImpl,
                                   public SVGTestsImpl,
                                   public SVGLangSpaceImpl,
                                   public SVGExternalResourcesRequiredImpl,
  -                                   public SVGTransformableImpl,
                                   public SVGAnimatedPointsImpl,
                                   public SVGPolyParser
       {
       public:
  -        SVGPolyElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGPolyElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGPolyElementImpl();
   
           // Derived from: 'SVGAnimatedPoints'
           virtual SVGPointListImpl *points() const;
           virtual SVGPointListImpl *animatedPoints() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
    
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
           virtual void notifyAttributeChange() const;
   
  
  
  
  1.6       +2 -2      SVGSupport/ksvg2/svg/SVGPolygonElementImpl.cpp
  
  Index: SVGPolygonElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPolygonElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGPolygonElementImpl.cpp	5 Oct 2005 05:35:27 -0000	1.5
  +++ SVGPolygonElementImpl.cpp	21 Nov 2005 08:29:41 -0000	1.6
  @@ -29,8 +29,8 @@
   
   using namespace KSVG;
   
  -SVGPolygonElementImpl::SVGPolygonElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGPolyElementImpl(doc, id, prefix)
  +SVGPolygonElementImpl::SVGPolygonElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGPolyElementImpl(tagName, doc)
   {
   }
   
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGPolygonElementImpl.h
  
  Index: SVGPolygonElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPolygonElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGPolygonElementImpl.h	1 Sep 2005 07:35:49 -0000	1.4
  +++ SVGPolygonElementImpl.h	21 Nov 2005 08:29:41 -0000	1.5
  @@ -30,7 +30,7 @@
       class SVGPolygonElementImpl :    public SVGPolyElementImpl
       {
       public:
  -        SVGPolygonElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGPolygonElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGPolygonElementImpl();
   
           virtual KCPathDataList toPathData() const;
  
  
  
  1.6       +2 -2      SVGSupport/ksvg2/svg/SVGPolylineElementImpl.cpp
  
  Index: SVGPolylineElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPolylineElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGPolylineElementImpl.cpp	5 Oct 2005 05:35:27 -0000	1.5
  +++ SVGPolylineElementImpl.cpp	21 Nov 2005 08:29:41 -0000	1.6
  @@ -29,8 +29,8 @@
   
   using namespace KSVG;
   
  -SVGPolylineElementImpl::SVGPolylineElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGPolyElementImpl(doc, id, prefix)
  +SVGPolylineElementImpl::SVGPolylineElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGPolyElementImpl(tagName, doc)
   {
   }
   
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGPolylineElementImpl.h
  
  Index: SVGPolylineElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPolylineElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGPolylineElementImpl.h	1 Sep 2005 07:35:49 -0000	1.4
  +++ SVGPolylineElementImpl.h	21 Nov 2005 08:29:41 -0000	1.5
  @@ -30,7 +30,7 @@
       class SVGPolylineElementImpl :  public SVGPolyElementImpl
       {
       public:
  -        SVGPolylineElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGPolylineElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGPolylineElementImpl();
   
           virtual KCPathDataList toPathData() const;
  
  
  
  1.9       +4 -3      SVGSupport/ksvg2/svg/SVGPreserveAspectRatioImpl.cpp
  
  Index: SVGPreserveAspectRatioImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGPreserveAspectRatioImpl.cpp,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- SVGPreserveAspectRatioImpl.cpp	24 Oct 2005 06:31:54 -0000	1.8
  +++ SVGPreserveAspectRatioImpl.cpp	21 Nov 2005 08:29:41 -0000	1.9
  @@ -64,13 +64,14 @@
       return m_meetOrSlice;
   }
   
  -void SVGPreserveAspectRatioImpl::parsePreserveAspectRatio(KDOM::DOMStringImpl *s)
  +void SVGPreserveAspectRatioImpl::parsePreserveAspectRatio(KDOM::DOMStringImpl *strImpl)
   {
       // Spec: set the defaults
       setAlign(SVG_PRESERVEASPECTRATIO_NONE);
       setMeetOrSlice(SVG_MEETORSLICE_MEET);
  -
  -    QString str(s->unicode(), s->length());
  +    
  +    KDOM::DOMString s(strImpl);
  +    QString str = s.qstring();
       QStringList params = QStringList::split(' ', str.simplifyWhiteSpace());
   
       if(params[0].compare(QString::fromLatin1("none")) == 0)
  
  
  
  1.7       +30 -71    SVGSupport/ksvg2/svg/SVGRadialGradientElementImpl.cpp
  
  Index: SVGRadialGradientElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGRadialGradientElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGRadialGradientElementImpl.cpp	5 Oct 2005 05:35:27 -0000	1.6
  +++ SVGRadialGradientElementImpl.cpp	21 Nov 2005 08:29:41 -0000	1.7
  @@ -24,10 +24,9 @@
   #include <kdom/core/AttrImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGMatrixImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGTransformImpl.h"
   #include "SVGStopElementImpl.h"
   #include "SVGTransformListImpl.h"
  @@ -40,13 +39,12 @@
   
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasMatrix.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingPaintServerGradient.h>
   
   using namespace KSVG;
   
  -SVGRadialGradientElementImpl::SVGRadialGradientElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGGradientElementImpl(doc, id, prefix)
  +SVGRadialGradientElementImpl::SVGRadialGradientElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGGradientElementImpl(tagName, doc)
   {
       m_cx = m_cy = m_fx = m_fy = m_r = 0;
   }
  @@ -111,49 +109,30 @@
       return m_r;
   }
   
  -void SVGRadialGradientElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGRadialGradientElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  -    {
  -        case ATTR_CX:
  -        {
  -            cx()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_CY:
  -        {
  -            cy()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_R:
  -        {
  -            r()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_FX:
  -        {
  -            fx()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_FY:
  -        {
  -            fy()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        default:
  -            SVGGradientElementImpl::parseAttribute(attr);
  -    };
  +    const KDOM::AtomicString& value = attr->value();
  +    if (attr->name() == SVGNames::cxAttr)
  +        cx()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::cyAttr)
  +        cy()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::rAttr)
  +        r()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::fxAttr)
  +        fx()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::fyAttr)
  +        fy()->baseVal()->setValueAsString(value.impl());
  +    else
  +        SVGGradientElementImpl::parseMappedAttribute(attr);
   }
   
  -void SVGRadialGradientElementImpl::buildGradient(KRenderingPaintServerGradient *_grad, KCanvas *canvas) const
  +void SVGRadialGradientElementImpl::buildGradient(KRenderingPaintServerGradient *_grad) const
   {
  -    QString ref = KDOM::DOMString(href()->baseVal()).string();
  +    rebuildStops(); // rebuild stops before possibly importing them from any referenced gradient.
   
       bool bbox = (gradientUnits()->baseVal() == SVG_UNIT_TYPE_OBJECTBOUNDINGBOX);
  -    bool fxSet = hasAttribute(KDOM::DOMString("fx").handle());
  -    bool fySet = hasAttribute(KDOM::DOMString("fy").handle());
  +    bool fxSet = hasAttribute(SVGNames::fxAttr);
  +    bool fySet = hasAttribute(SVGNames::fyAttr);
       cx()->baseVal()->setBboxRelative(bbox);
       cy()->baseVal()->setBboxRelative(bbox);
       r()->baseVal()->setBboxRelative(bbox);
  @@ -169,40 +148,39 @@
       if(gradientTransform()->baseVal()->numberOfItems() > 0)
           mat = KCanvasMatrix(gradientTransform()->baseVal()->consolidate()->matrix()->qmatrix());
   
  -    KRenderingPaintServer *pserver = 0;
  -    if(!ref.isEmpty())
  -        pserver = canvas->registry()->getPaintServerById(ref.mid(1));
  +    QString ref = KDOM::DOMString(href()->baseVal()).qstring();
  +    KRenderingPaintServer *pserver = getPaintServerById(getDocument(), ref.mid(1));
   
       if(pserver && (pserver->type() == PS_RADIAL_GRADIENT || pserver->type() == PS_LINEAR_GRADIENT))
       {
           bool isRadial = pserver->type() == PS_RADIAL_GRADIENT;
           KRenderingPaintServerGradient *gradient = static_cast<KRenderingPaintServerGradient *>(pserver);
   
  -        if(!hasAttribute(KDOM::DOMString("gradientUnits").handle()))
  +        if(!hasAttribute(SVGNames::gradientUnitsAttr))
               bbox = gradient->boundingBoxMode();
   
           if(isRadial)
           {
               KRenderingPaintServerRadialGradient *radial = static_cast<KRenderingPaintServerRadialGradient *>(pserver);
  -            if(!hasAttribute(KDOM::DOMString("cx").handle()))
  +            if(!hasAttribute(SVGNames::cxAttr))
                   _cx = radial->gradientCenter().x();
               else if(bbox)
                   _cx *= 100.;
  -            if(!hasAttribute(KDOM::DOMString("cy").handle()))
  +            if(!hasAttribute(SVGNames::cyAttr))
                   _cy = radial->gradientCenter().y();
               else if(bbox)
                   _cy *= 100.;
   
  -            if(!hasAttribute(KDOM::DOMString("fx").handle()))
  +            if(!fxSet)
                   _fx = radial->gradientFocal().x();
               else if(bbox)
                   _fx *= 100.;
  -            if(!hasAttribute(KDOM::DOMString("fy").handle()))
  +            if(!fySet)
                   _fy = radial->gradientFocal().y();
               else if(bbox)
                   _fy *= 100.;
   
  -            if(!hasAttribute(KDOM::DOMString("r").handle()))
  +            if(!hasAttribute(SVGNames::rAttr))
                   _r = radial->gradientRadius();
               else if(bbox)
                   _r *= 100.;
  @@ -216,7 +194,7 @@
               _r *= 100.0;
           }
   
  -        if(!hasAttribute(KDOM::DOMString("gradientTransform").handle()))
  +        if(!hasAttribute(SVGNames::gradientTransformAttr))
               mat = gradient->gradientTransform();
   
           // Inherit color stops if empty
  @@ -227,7 +205,7 @@
                   grad->gradientStops().addStop(it.current()->offset, it.current()->color);
           }
   
  -        if(!hasAttribute(KDOM::DOMString("spreadMethod").handle()))
  +        if(!hasAttribute(SVGNames::spreadMethodAttr))
               grad->setGradientSpreadMethod(gradient->spreadMethod());
       }
       else
  @@ -256,23 +234,4 @@
       grad->setGradientRadius(_r);
   }
   
  -KCanvasItem *SVGRadialGradientElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *) const
  -{
  -    KRenderingPaintServer *temp = canvas->renderingDevice()->createPaintServer(KCPaintServerType(PS_RADIAL_GRADIENT));
  -    KRenderingPaintServerRadialGradient *pserver = static_cast<KRenderingPaintServerRadialGradient *>(temp);
  -
  -    pserver->setListener(const_cast<SVGRadialGradientElementImpl *>(this));
  -
  -    canvas->registry()->addPaintServerById(KDOM::DOMString(getId()).string(), pserver);
  -    return 0;
  -}
  -
  -void SVGRadialGradientElementImpl::resourceNotification() const
  -{
  -    // We're referenced by a "client", build the gradient now...
  -    KRenderingPaintServer *pserver = canvas()->registry()->getPaintServerById(KDOM::DOMString(getId()).string());
  -    KRenderingPaintServerGradient *gradient = static_cast<KRenderingPaintServerGradient *>(pserver);
  -    buildGradient(gradient, canvas());
  -}
  -
   // vim:ts=4:noet
  
  
  
  1.5       +4 -8      SVGSupport/ksvg2/svg/SVGRadialGradientElementImpl.h
  
  Index: SVGRadialGradientElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGRadialGradientElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGRadialGradientElementImpl.h	1 Sep 2005 07:35:50 -0000	1.4
  +++ SVGRadialGradientElementImpl.h	21 Nov 2005 08:29:41 -0000	1.5
  @@ -31,7 +31,7 @@
       class SVGRadialGradientElementImpl : public SVGGradientElementImpl
       {
       public:
  -        SVGRadialGradientElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGRadialGradientElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGRadialGradientElementImpl();
   
           // 'SVGRadialGradientElement' functions
  @@ -41,15 +41,11 @@
           SVGAnimatedLengthImpl *fy() const;
           SVGAnimatedLengthImpl *r() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  -
  -        virtual bool implementsCanvasItem() const { return true; }
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  -
  -        virtual void resourceNotification() const;
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       protected:
  -        virtual void buildGradient(KRenderingPaintServerGradient *grad, KCanvas *canvas) const;
  +        virtual void buildGradient(KRenderingPaintServerGradient *grad) const;
  +        virtual KCPaintServerType gradientType() const { return PS_RADIAL_GRADIENT; }
   
       private:
           mutable SVGAnimatedLengthImpl *m_cx;
  
  
  
  1.7       +25 -50    SVGSupport/ksvg2/svg/SVGRectElementImpl.cpp
  
  Index: SVGRectElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGRectElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGRectElementImpl.cpp	5 Oct 2005 05:35:27 -0000	1.6
  +++ SVGRectElementImpl.cpp	21 Nov 2005 08:29:41 -0000	1.7
  @@ -23,13 +23,12 @@
   #include "config.h"
   #include <kdom/core/AttrImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGRectElementImpl.h"
   #include "SVGAnimatedLengthImpl.h"
   
  -#include <kcanvas/device/KRenderingStyle.h>
  +#include "KCanvasRenderingStyle.h"
   #include <kcanvas/device/KRenderingDevice.h>
   #include <kcanvas/device/KRenderingFillPainter.h>
   #include <kcanvas/device/KRenderingPaintServerSolid.h>
  @@ -38,8 +37,8 @@
   
   using namespace KSVG;
   
  -SVGRectElementImpl::SVGRectElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl()
  +SVGRectElementImpl::SVGRectElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_x = m_y = m_rx = m_ry = m_width = m_height = 0;
   }
  @@ -90,52 +89,28 @@
       return lazy_create<SVGAnimatedLengthImpl>(m_ry, this, LM_HEIGHT, viewportElement());
   }
   
  -void SVGRectElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGRectElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  +    const KDOM::AtomicString& value = attr->value();
  +    if (attr->name() == SVGNames::xAttr)
  +        x()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::yAttr)
  +        y()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::rxAttr)
  +        rx()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::ryAttr)
  +        ry()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::widthAttr)
  +        width()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::heightAttr)
  +        height()->baseVal()->setValueAsString(value.impl());
  +    else
       {
  -        case ATTR_X:
  -        {
  -            x()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_Y:
  -        {
  -            y()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_RX:
  -        {
  -            rx()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_RY:
  -        {
  -            ry()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_WIDTH:
  -        {
  -            width()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_HEIGHT:
  -        {
  -            height()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGTransformableImpl::parseAttribute(attr)) return;
  -            
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   KCPathDataList SVGRectElementImpl::toPathData() const
  @@ -143,7 +118,7 @@
       float _x = x()->baseVal()->value(), _y = y()->baseVal()->value();
       float _width = width()->baseVal()->value(), _height = height()->baseVal()->value();
   
  -    if(hasAttribute(KDOM::DOMString("rx").handle()) || hasAttribute(KDOM::DOMString("ry").handle()))
  +    if(hasAttribute(KDOM::DOMString("rx").impl()) || hasAttribute(KDOM::DOMString("ry").impl()))
       {
           float _rx = rx()->baseVal()->value(), _ry = rx()->baseVal()->value();
           return KCanvasCreator::self()->createRoundedRectangle(_x, _y, _width, _height, _rx, _ry);
  
  
  
  1.5       +6 -8      SVGSupport/ksvg2/svg/SVGRectElementImpl.h
  
  Index: SVGRectElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGRectElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGRectElementImpl.h	1 Sep 2005 07:35:50 -0000	1.4
  +++ SVGRectElementImpl.h	21 Nov 2005 08:29:41 -0000	1.5
  @@ -25,21 +25,19 @@
   
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
   namespace KSVG
   {
       class SVGAnimatedLengthImpl;
  -    class SVGRectElementImpl : public SVGStyledElementImpl,
  +    class SVGRectElementImpl : public SVGStyledTransformableElementImpl,
                                  public SVGTestsImpl,
                                  public SVGLangSpaceImpl,
  -                               public SVGExternalResourcesRequiredImpl,
  -                               public SVGTransformableImpl
  +                               public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGRectElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGRectElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGRectElementImpl();
   
           // 'SVGRectElement' functions
  @@ -52,9 +50,9 @@
           SVGAnimatedLengthImpl *rx() const;
           SVGAnimatedLengthImpl *ry() const;    
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
           virtual KCPathDataList toPathData() const;
   
           virtual const SVGStyledElementImpl *pushAttributeContext(const SVGStyledElementImpl *context);
  
  
  
  1.10      +77 -176   SVGSupport/ksvg2/svg/SVGSVGElementImpl.cpp
  
  Index: SVGSVGElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGSVGElementImpl.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SVGSVGElementImpl.cpp	13 Oct 2005 08:29:20 -0000	1.9
  +++ SVGSVGElementImpl.cpp	21 Nov 2005 08:29:41 -0000	1.10
  @@ -26,26 +26,22 @@
   #include <kdom/core/NamedAttrMapImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasItem.h>
  -#include <kcanvas/KCanvasView.h>
  +#include <kcanvas/RenderPath.h>
   #include <kcanvas/KCanvasMatrix.h>
   #include <kcanvas/KCanvasCreator.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/KCanvasContainer.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGRectImpl.h"
   #include "SVGAngleImpl.h"
   #include "SVGPointImpl.h"
  -#include "SVGEventImpl.h"
   #include "SVGMatrixImpl.h"
   #include "SVGNumberImpl.h"
   #include "SVGLengthImpl.h"
   #include "SVGRenderStyle.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGZoomEventImpl.h"
   #include "SVGTransformImpl.h"
   #include "SVGSVGElementImpl.h"
  @@ -55,22 +51,22 @@
   #include "SVGAnimatedRectImpl.h"
   #include "SVGAnimatedLengthImpl.h"
   #include "KCanvasRenderingStyle.h"
  +#include "SVGPreserveAspectRatioImpl.h"
  +#include "SVGAnimatedPreserveAspectRatioImpl.h"
   
   #include <q3paintdevicemetrics.h>
   #include <qtextstream.h>
   
   using namespace KSVG;
   
  -SVGSVGElementImpl::SVGSVGElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(),
  -  SVGExternalResourcesRequiredImpl(), SVGLocatableImpl(), SVGFitToViewBoxImpl(),
  -  SVGZoomAndPanImpl(), KDOM::DocumentEventImpl()
  +SVGSVGElementImpl::SVGSVGElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledLocatableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(),
  +  SVGExternalResourcesRequiredImpl(), SVGFitToViewBoxImpl(),
  +  SVGZoomAndPanImpl()
   {
  -    m_clipper = 0;
  -
       m_useCurrentView = false;
  -
       m_x = m_y = m_width = m_height = 0;
  +    m_timeScheduler = new TimeScheduler(getDocument());
   }
   
   SVGSVGElementImpl::~SVGSVGElementImpl()
  @@ -83,6 +79,7 @@
           m_width->deref();
       if(m_height)
           m_height->deref();
  +    delete m_timeScheduler;
   }
   
   SVGAnimatedLengthImpl *SVGSVGElementImpl::x() const
  @@ -101,7 +98,7 @@
       {
           KDOM::DOMString temp("100%");
           lazy_create<SVGAnimatedLengthImpl>(m_width, static_cast<const SVGStyledElementImpl *>(0), LM_WIDTH, ownerDocument()->documentElement() == static_cast<const KDOM::ElementImpl *>(this) ? this : viewportElement());
  -        m_width->baseVal()->setValueAsString(temp.handle());
  +        m_width->baseVal()->setValueAsString(temp.impl());
       }
   
       return m_width;
  @@ -113,31 +110,30 @@
       {
           KDOM::DOMString temp("100%");
           lazy_create<SVGAnimatedLengthImpl>(m_height, static_cast<const SVGStyledElementImpl *>(0), LM_HEIGHT, ownerDocument()->documentElement() == static_cast<const KDOM::ElementImpl *>(this) ? this : viewportElement());
  -        m_height->baseVal()->setValueAsString(temp.handle());
  +        m_height->baseVal()->setValueAsString(temp.impl());
       }
   
       return m_height;
   }
   
  -KDOM::DOMStringImpl *SVGSVGElementImpl::contentScriptType() const
  +KDOM::AtomicString SVGSVGElementImpl::contentScriptType() const
   {
  -    return tryGetAttribute(KDOM::DOMString("contentScriptType").handle(), KDOM::DOMString("text/ecmascript").handle());
  +    return tryGetAttribute("contentScriptType", "text/ecmascript");
   }
   
  -void SVGSVGElementImpl::setContentScriptType(KDOM::DOMStringImpl *type)
  +void SVGSVGElementImpl::setContentScriptType(const KDOM::AtomicString& type)
   {
  -    KDOM::DOMString name("contentScriptType");    
  -    setAttribute(name.handle(), type);
  +    setAttribute(SVGNames::contentScriptTypeAttr, type);
   }
   
  -KDOM::DOMStringImpl *SVGSVGElementImpl::contentStyleType() const
  +KDOM::AtomicString SVGSVGElementImpl::contentStyleType() const
   {
  -    return tryGetAttribute(KDOM::DOMString("contentStyleType").handle(), KDOM::DOMString("text/css").handle());
  +    return tryGetAttribute("contentStyleType", "text/css");
   }
   
  -void SVGSVGElementImpl::setContentStyleType(KDOM::DOMStringImpl *type)
  +void SVGSVGElementImpl::setContentStyleType(const KDOM::AtomicString& type)
   {
  -    setAttribute(KDOM::DOMString("contentStyleType").handle(), type);
  +    setAttribute(SVGNames::contentStyleTypeAttr, type);
   }
   
   SVGRectImpl *SVGSVGElementImpl::viewport() const
  @@ -214,86 +210,52 @@
   
   float SVGSVGElementImpl::currentScale() const
   {
  -    if(!canvasView())
  +    //if(!canvasView())
           return 1.;
   
  -    return canvasView()->zoom();
  +    //return canvasView()->zoom();
   }
   
   void SVGSVGElementImpl::setCurrentScale(float scale)
   {
  -    if(canvasView())
  -    {
  -        float oldzoom = canvasView()->zoom();
  -        canvasView()->setZoom(scale);
  -        getDocument()->dispatchZoomEvent(oldzoom, scale);
  -    }
  +//    if(canvasView())
  +//    {
  +//        float oldzoom = canvasView()->zoom();
  +//        canvasView()->setZoom(scale);
  +//        getDocument()->dispatchZoomEvent(oldzoom, scale);
  +//    }
   }
   
   SVGPointImpl *SVGSVGElementImpl::currentTranslate() const
   {
  -    if(!canvas())
  +    //if(!canvas())
           return 0;
   
  -    return createSVGPoint(canvasView()->pan());
  -}
  -
  -KDOM::EventImpl *SVGSVGElementImpl::createEvent(KDOM::DOMStringImpl *eventTypeImpl)
  -{
  -    QString eventType = (eventTypeImpl ? eventTypeImpl->string() : QString::null);
  -
  -    if(eventType == QString::fromLatin1("SVGEvents"))
  -        return new SVGEventImpl();
  -    else if(eventType == QString::fromLatin1("SVGZoomEvents"))
  -        return new SVGZoomEventImpl();
  -
  -    return DocumentEventImpl::createEvent(eventTypeImpl);
  +    //return createSVGPoint(canvasView()->pan());
   }
   
  -void SVGSVGElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGSVGElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  +//    const KDOM::AtomicString& value = attr->value();
  +// Try letting these fall through to CSS
  +//    if (attr->name() == SVGNames::xAttr)
  +//        x()->baseVal()->setValueAsString(value.impl());
  +//    else if (attr->name() == SVGNames::yAttr)
  +//        y()->baseVal()->setValueAsString(value.impl());
  +//    else if (attr->name() == SVGNames::widthAttr)
  +//        width()->baseVal()->setValueAsString(value.impl());
  +//    else if (attr->name() == SVGNames::heightAttr)
  +//        height()->baseVal()->setValueAsString(value.impl());
  +//    else
       {
  -        case ATTR_X:
  -        {
  -            x()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_Y:
  -        {
  -            y()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_WIDTH:
  -        case ATTR_HEIGHT:
  -        {
  -            if(id == ATTR_WIDTH)
  -                width()->baseVal()->setValueAsString(value);
  -            else
  -                height()->baseVal()->setValueAsString(value);
  -
  -            SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -            if(document->canvas() && canvasItem() == document->canvas()->rootContainer())
  -            {
  -                document->canvas()->setCanvasSize(QSize(qRound(width()->baseVal()->value()),
  -                                                        qRound(height()->baseVal()->value())));
  -            }
  -
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGFitToViewBoxImpl::parseAttribute(attr)) return;
  -            if(SVGZoomAndPanImpl::parseAttribute(attr)) return;
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        if(SVGFitToViewBoxImpl::parseMappedAttribute(attr)) return;
  +        if(SVGZoomAndPanImpl::parseMappedAttribute(attr)) return;
   
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        SVGStyledLocatableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   unsigned long SVGSVGElementImpl::suspendRedraw(unsigned long /* max_wait_milliseconds */)
  @@ -319,25 +281,24 @@
   
   void SVGSVGElementImpl::pauseAnimations()
   {
  -    if(!getDocument()->timeScheduler()->animationsPaused())
  -        getDocument()->timeScheduler()->toggleAnimations();
  +    if(!m_timeScheduler->animationsPaused())
  +        m_timeScheduler->toggleAnimations();
   }
   
   void SVGSVGElementImpl::unpauseAnimations()
   {
  -    if(getDocument()->timeScheduler()->animationsPaused())
  -        getDocument()->timeScheduler()->toggleAnimations();
  +    if(m_timeScheduler->animationsPaused())
  +        m_timeScheduler->toggleAnimations();
   }
   
   bool SVGSVGElementImpl::animationsPaused()
   {
  -    return getDocument()->timeScheduler()->animationsPaused();
  +    return m_timeScheduler->animationsPaused();
   }
   
   float SVGSVGElementImpl::getCurrentTime()
   {
  -    SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -    return document->timeScheduler()->elapsed();
  +    return m_timeScheduler->elapsed();
   }
   
   void SVGSVGElementImpl::setCurrentTime(float /* seconds */)
  @@ -361,34 +322,22 @@
   bool SVGSVGElementImpl::checkIntersection(SVGElementImpl *element, SVGRectImpl *rect)
   {
       // TODO : take into account pointer-events?
  -    SVGLocatableImpl *e = dynamic_cast<SVGLocatableImpl *>(element);
  -    if(!e)
  -        return false;
  -
  -    SVGRectImpl *bbox = e->getBBox();
  -    bbox->ref();
  -
  +    SharedPtr<SVGRectImpl> bbox = getBBox();
  +    
       QRect r(int(rect->x()), int(rect->y()), int(rect->width()), int(rect->height()));
       QRect r2(int(bbox->x()), int(bbox->y()), int(bbox->width()), int(bbox->height()));
  -
  -    bbox->deref();
  +    
       return r.intersects(r2);
   }
   
   bool SVGSVGElementImpl::checkEnclosure(SVGElementImpl *element, SVGRectImpl *rect)
   {
       // TODO : take into account pointer-events?
  -    SVGLocatableImpl *e = dynamic_cast<SVGLocatableImpl *>(element);
  -    if(!e)
  -        return false;
  +    SharedPtr<SVGRectImpl> bbox = getBBox();
       
  -    SVGRectImpl *bbox = e->getBBox();
  -    bbox->ref();
  -        
       QRect r(int(rect->x()), int(rect->y()), int(rect->width()), int(rect->height()));
       QRect r2(int(bbox->x()), int(bbox->y()), int(bbox->width()), int(bbox->height()));
  -        
  -    bbox->deref();
  +    
       return r.contains(r2);
   }
   
  @@ -449,12 +398,10 @@
       {
           mat->translate(x()->baseVal()->value(), y()->baseVal()->value());
   
  -        if(attributes()->getValue(ATTR_VIEWBOX))
  +        if(attributes()->getNamedItem(SVGNames::viewBoxAttr))
           {
  -            SVGMatrixImpl *viewBox = viewBoxToViewTransform(width()->baseVal()->value(), height()->baseVal()->value());
  -            viewBox->ref();
  -            mat->multiply(viewBox);
  -            viewBox->deref();
  +            SharedPtr<SVGMatrixImpl> viewBox = viewBoxToViewTransform(width()->baseVal()->value(), height()->baseVal()->value());
  +            mat->multiply(viewBox.get());
           }
       }
   
  @@ -463,89 +410,43 @@
   
   SVGMatrixImpl *SVGSVGElementImpl::getScreenCTM() const
   {
  -    SVGMatrixImpl *mat = SVGLocatableImpl::getScreenCTM();
  +    SVGMatrixImpl *mat = SVGStyledLocatableElementImpl::getScreenCTM();
       if(mat)
       {
           mat->translate(x()->baseVal()->value(), y()->baseVal()->value());
   
  -        if(attributes()->getValue(ATTR_VIEWBOX))
  +        if(attributes()->getNamedItem(SVGNames::viewBoxAttr))
           {
  -            SVGMatrixImpl *viewBox = viewBoxToViewTransform(width()->baseVal()->value(), height()->baseVal()->value());
  -            viewBox->ref();
  -            mat->multiply(viewBox);
  -            viewBox->deref();
  +            SharedPtr<SVGMatrixImpl> viewBox = viewBoxToViewTransform(width()->baseVal()->value(), height()->baseVal()->value());
  +            mat->multiply(viewBox.get());
           }
       }
   
       return mat;
   }
   
  -QString SVGSVGElementImpl::adjustViewportClipping() const
  +khtml::RenderObject *SVGSVGElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    QString key;
  -    QTextStream keyStream(&key, IO_WriteOnly);
  -    keyStream << ((void *) this);
  -
  -    if(renderStyle()->overflow() == KDOM::OF_VISIBLE)
  -        return QString();
  -
  -    if(!m_clipper)
  -    {
  -        SVGDocumentImpl *doc = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        KCanvas *canvas = (doc ? doc->canvas() : 0);
  -        if(!canvas)
  -            return QString::null;
  -
  -        m_clipper = static_cast<KCanvasClipper *>(canvas->renderingDevice()->createResource(RS_CLIPPER));
  -        m_clipper->setViewportClipper(true);
  -
  -        canvas->registry()->addResourceById(key, m_clipper);
  -    }
  -    else
  -        m_clipper->resetClipData();
  +    KCanvasContainer *rootContainer = canvas()->renderingDevice()->createContainer(arena, style, this);
   
  +    // FIXME: all this setup should be done after attributesChanged, not here.
       float _x = x()->baseVal()->value();
       float _y = y()->baseVal()->value();
       float _width = width()->baseVal()->value();
       float _height = height()->baseVal()->value();
   
  -    // We have to apply the matrix transformation here, as this <svg> may be some
  -    // inner viewport, which has a certain 'ctm matrix', that we have to respect.
  -    SVGMatrixImpl *ctm = SVGLocatableImpl::getScreenCTM();
  -
  -    KCanvasMatrix matrix = ctm->qmatrix();
  -    KCPathDataList pathData = matrix.map(KCanvasCreator::self()->createRectangle(_x, _y, _width, _height));
  -    m_clipper->addClipData(pathData, RULE_NONZERO, false);
  -
  -    ctm->deref();
  -
  -    return key;
  -}
  -
  -KCanvasItem *SVGSVGElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  -{
  -    KCanvasItem *item = KCanvasCreator::self()->createContainer(canvas, style);
  -    if(ownerDocument()->documentElement() == static_cast<const KDOM::ElementImpl *>(this) && !canvas->rootContainer())
  -    {
  -        canvas->setRootContainer(static_cast<KCanvasContainer *>(item));
  -        canvas->setCanvasSize(QSize(qRound(width()->baseVal()->value()),
  -                                qRound(height()->baseVal()->value())));
  -    }
  -
  -    return item;
  -}
  -
  -void SVGSVGElementImpl::finalizeStyle(KCanvasRenderingStyle *style, bool)
  -{
  -    QString reference = adjustViewportClipping();
  -    if(!reference.isEmpty())
  -        style->addClipPath(QString::fromLatin1("#") + reference);
  +    rootContainer->setViewport(QRect((int)_x, (int)_y, (int)_width, (int)_height));
  +    rootContainer->setViewBox(QRect((int)viewBox()->baseVal()->x(), (int)viewBox()->baseVal()->y(), (int)viewBox()->baseVal()->width(), (int)viewBox()->baseVal()->height()));
  +    rootContainer->setAlign(KCAlign(preserveAspectRatio()->baseVal()->align() - 1));
  +    rootContainer->setSlice(preserveAspectRatio()->baseVal()->meetOrSlice() == SVG_MEETORSLICE_SLICE);
  +    
  +    return rootContainer;
   }
   
   void SVGSVGElementImpl::setZoomAndPan(unsigned short zoomAndPan)
   {
       SVGZoomAndPanImpl::setZoomAndPan(zoomAndPan);
  -    canvasView()->enableZoomAndPan(zoomAndPan == SVG_ZOOMANDPAN_MAGNIFY);
  +    //canvasView()->enableZoomAndPan(zoomAndPan == SVG_ZOOMANDPAN_MAGNIFY);
   }
   
   // vim:ts=4:noet
  
  
  
  1.8       +17 -26    SVGSupport/ksvg2/svg/SVGSVGElementImpl.h
  
  Index: SVGSVGElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGSVGElementImpl.h,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGSVGElementImpl.h	28 Sep 2005 05:06:08 -0000	1.7
  +++ SVGSVGElementImpl.h	21 Nov 2005 08:29:41 -0000	1.8
  @@ -25,14 +25,11 @@
   
   #include <qpoint.h>
   
  -#include <kdom/events/DocumentEventImpl.h>
  -
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
  -#include "SVGLocatableImpl.h"
   #include "SVGFitToViewBoxImpl.h"
   #include "SVGZoomAndPanImpl.h"
  -#include "SVGStyledElementImpl.h"
  +#include "SVGStyledLocatableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
   namespace KDOM
  @@ -40,8 +37,6 @@
       class DocumentPtr;
   };
   
  -class KCanvasClipper;
  -
   namespace KSVG
   {
       class SVGRectImpl;
  @@ -52,19 +47,18 @@
       class SVGMatrixImpl;
       class SVGTransformImpl;
       class SVGAnimatedLengthImpl;
  -    class SVGSVGElementImpl : public SVGStyledElementImpl,
  +    class TimeScheduler;
  +    class SVGSVGElementImpl : public SVGStyledLocatableElementImpl,
                                 public SVGTestsImpl,
                                 public SVGLangSpaceImpl,
                                 public SVGExternalResourcesRequiredImpl,
  -                              public SVGLocatableImpl,
                                 public SVGFitToViewBoxImpl,
  -                              public SVGZoomAndPanImpl,
  -                              public KDOM::DocumentEventImpl
  +                              public SVGZoomAndPanImpl
       {
       public:
  -        SVGSVGElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGSVGElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGSVGElementImpl();
  -        
  +
           virtual bool isSVG() const { return true; }
   
           // 'SVGSVGElement' functions
  @@ -73,11 +67,11 @@
           SVGAnimatedLengthImpl *width() const;
           SVGAnimatedLengthImpl *height() const;
   
  -        KDOM::DOMStringImpl *contentScriptType() const;
  -        void setContentScriptType(KDOM::DOMStringImpl *type);
  +        KDOM::AtomicString contentScriptType() const;
  +        void setContentScriptType(const KDOM::AtomicString& type);
   
  -        KDOM::DOMStringImpl *contentStyleType() const;
  -        void setContentStyleType(KDOM::DOMStringImpl *type);
  +        KDOM::AtomicString contentStyleType() const;
  +        void setContentStyleType(const KDOM::AtomicString& type);
   
           SVGRectImpl *viewport() const;
   
  @@ -123,23 +117,20 @@
           static SVGTransformImpl *createSVGTransform();
           static SVGTransformImpl *createSVGTransformFromMatrix(SVGMatrixImpl *matrix);
   
  -        // 'DocumentEvent' functions
  -        virtual KDOM::EventImpl *createEvent(KDOM::DOMStringImpl *eventType);
  -
  -        virtual void parseAttribute(KDOM::AttributeImpl *);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           // 'virtual SVGLocatable' functions
           virtual SVGMatrixImpl *getCTM() const;
           virtual SVGMatrixImpl *getScreenCTM() const;
   
  -        virtual QString adjustViewportClipping() const;
  -
  -        virtual bool implementsCanvasItem() const { return true; }
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  -        virtual void finalizeStyle(KCanvasRenderingStyle *style, bool needFillStrokeUpdate = true);
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
           // 'virtual SVGZoomAndPan functions
           virtual void setZoomAndPan(unsigned short zoomAndPan);
  +        
  +        // Animations
  +        TimeScheduler *timeScheduler() const { return m_timeScheduler; }
   
       private:
           mutable SVGAnimatedLengthImpl *m_x;
  @@ -149,7 +140,7 @@
   
           bool m_useCurrentView;
   
  -        mutable KCanvasClipper *m_clipper;
  +        TimeScheduler *m_timeScheduler;
       };
   };
   
  
  
  
  1.10      +14 -28    SVGSupport/ksvg2/svg/SVGScriptElementImpl.cpp
  
  Index: SVGScriptElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGScriptElementImpl.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SVGScriptElementImpl.cpp	5 Oct 2005 05:35:28 -0000	1.9
  +++ SVGScriptElementImpl.cpp	21 Nov 2005 08:29:41 -0000	1.10
  @@ -27,15 +27,12 @@
   #include <kdom/core/DOMStringImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  -#include "ksvgevents.h"
  -#include "SVGEventImpl.h"
  -#include "SVGDocumentImpl.h"
  +#include "SVGNames.h"
   #include "SVGScriptElementImpl.h"
   
   using namespace KSVG;
   
  -SVGScriptElementImpl::SVGScriptElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGElementImpl(doc, id, prefix), SVGURIReferenceImpl(), SVGExternalResourcesRequiredImpl()
  +SVGScriptElementImpl::SVGScriptElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGElementImpl(tagName, doc), SVGURIReferenceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_type = 0;
   }
  @@ -56,24 +53,17 @@
       KDOM_SAFE_SET(m_type, type);
   }
   
  -void SVGScriptElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGScriptElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    switch(id)
  +    if (attr->name() == SVGNames::typeAttr)
  +            setType(attr->value().impl());
  +    else
       {
  -        case ATTR_TYPE:
  -        {
  -            setType(attr->value());
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGURIReferenceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  +        if(SVGURIReferenceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
   
  -            SVGElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        SVGElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   void SVGScriptElementImpl::executeScript(KDOM::DocumentImpl *document, KDOM::DOMStringImpl *jsCode)
  @@ -90,7 +80,7 @@
   #endif
   
       // Run script
  -    KJS::Completion comp = ecmaEngine->evaluate(jsCode.string(), ecmaEngine->globalObject());
  +    KJS::Completion comp = ecmaEngine->evaluate(jsCode.qstring(), ecmaEngine->globalObject());
       if(comp.complType() == KJS::Throw)
       {
           KJS::ExecState *exec = ecmaEngine->globalExec();
  @@ -108,13 +98,9 @@
           SVGDocumentImpl *svgDocument = static_cast<SVGDocumentImpl *>(document);
           if(svgDocument && document->hasListenerType(KDOM::ERROR_EVENT))
           {
  -            SVGEventImpl *event = static_cast<SVGEventImpl *>(svgDocument->createEvent(KDOM::DOMString("SVGEvents").handle()));
  -            event->ref();
  -
  -            event->initEvent(KDOM::DOMString("error").handle(), false, false);
  -            svgDocument->dispatchRecursiveEvent(event, svgDocument->lastChild());
  -
  -            event->deref();
  +            SharedPtr<KDOM::EventImpl> event = svgDocument->createEvent("SVGEvents");
  +            event->initEvent(KDOM::EventNames::errorEvent, false, false);
  +            svgDocument->dispatchRecursiveEvent(event.get(), svgDocument->lastChild());
           }
   
           kdDebug() << "[SVGScriptElement] Evaluation error, line " << (lineno != -1 ? QString::number(lineno) : QString::fromLatin1("N/A"))  << " " << exVal->toString(exec).qstring() << endl;
  
  
  
  1.6       +2 -2      SVGSupport/ksvg2/svg/SVGScriptElementImpl.h
  
  Index: SVGScriptElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGScriptElementImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGScriptElementImpl.h	8 Sep 2005 08:03:37 -0000	1.5
  +++ SVGScriptElementImpl.h	21 Nov 2005 08:29:42 -0000	1.6
  @@ -34,7 +34,7 @@
                                    public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGScriptElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGScriptElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGScriptElementImpl();
   
           // 'SVGScriptElement' functions
  @@ -42,7 +42,7 @@
           void setType(KDOM::DOMStringImpl *type);
   
           // Internal
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           static void executeScript(KDOM::DocumentImpl *document, KDOM::DOMStringImpl *jsCode);
   
  
  
  
  1.7       +14 -13    SVGSupport/ksvg2/svg/SVGSetElementImpl.cpp
  
  Index: SVGSetElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGSetElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGSetElementImpl.cpp	5 Oct 2005 05:35:28 -0000	1.6
  +++ SVGSetElementImpl.cpp	21 Nov 2005 08:29:42 -0000	1.7
  @@ -22,12 +22,13 @@
   
   #include "config.h"
   #include "SVGSetElementImpl.h"
  -#include "SVGDocumentImpl.h"
  +#include "SVGSVGElementImpl.h"
  +#include "KSVGTimeScheduler.h"
   
   using namespace KSVG;
   
  -SVGSetElementImpl::SVGSetElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGAnimationElementImpl(doc, id, prefix)
  +SVGSetElementImpl::SVGSetElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGAnimationElementImpl(tagName, doc)
   {
   }
   
  @@ -40,10 +41,10 @@
       // Start condition.
       if(!m_connected)
       {    
  -        SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        if(document)
  +        SVGSVGElementImpl *ownerSVG = ownerSVGElement();
  +        if(ownerSVG)
           {
  -            document->timeScheduler()->connectIntervalTimer(this);
  +            ownerSVG->timeScheduler()->connectIntervalTimer(this);
               m_connected = true;
           }
   
  @@ -57,23 +58,23 @@
       // Commit change now...
       if(m_savedTo.isEmpty())
       {
  -        KDOM::DOMStringImpl *attr = targetAttribute();
  -        m_savedTo = (attr ? attr->string() : QString::null);
  -        setTargetAttribute(KDOM::DOMString(m_to).handle());
  +        KDOM::DOMString attr(targetAttribute());
  +        m_savedTo = attr.qstring();
  +        setTargetAttribute(KDOM::DOMString(m_to).impl());
       }
   
       // End condition.
       if(timePercentage == 1.0)
       {
  -        SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        if(document)
  +        SVGSVGElementImpl *ownerSVG = ownerSVGElement();
  +        if(ownerSVG)
           {
  -            document->timeScheduler()->disconnectIntervalTimer(this);
  +            ownerSVG->timeScheduler()->disconnectIntervalTimer(this);
               m_connected = false;
           }
   
           if(!isFrozen())
  -            setTargetAttribute(KDOM::DOMString(m_savedTo).handle());
  +            setTargetAttribute(KDOM::DOMString(m_savedTo).impl());
   
           m_savedTo = QString();
       }
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGSetElementImpl.h
  
  Index: SVGSetElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGSetElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGSetElementImpl.h	1 Sep 2005 07:35:51 -0000	1.4
  +++ SVGSetElementImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -30,7 +30,7 @@
       class SVGSetElementImpl : public SVGAnimationElementImpl
       {
       public:
  -        SVGSetElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGSetElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGSetElementImpl();
   
           virtual void handleTimerEvent(double timePercentage);
  
  
  
  1.8       +15 -62    SVGSupport/ksvg2/svg/SVGStopElementImpl.cpp
  
  Index: SVGStopElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGStopElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGStopElementImpl.cpp	5 Oct 2005 05:35:28 -0000	1.7
  +++ SVGStopElementImpl.cpp	21 Nov 2005 08:29:42 -0000	1.8
  @@ -24,20 +24,18 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasRegistry.h>
   #include <kcanvas/device/KRenderingPaintServerGradient.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGRenderStyle.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGStopElementImpl.h"
   #include "SVGAnimatedNumberImpl.h"
   #include "SVGDOMImplementationImpl.h"
   
   using namespace KSVG;
   
  -SVGStopElementImpl::SVGStopElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGStyledElementImpl(doc, id, prefix)
  +SVGStopElementImpl::SVGStopElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGStyledElementImpl(tagName, doc)
   {
       m_offset = 0;
   }
  @@ -53,70 +51,25 @@
       return lazy_create<SVGAnimatedNumberImpl>(m_offset, this);
   }
   
  -void SVGStopElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGStopElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_OFFSET:
  -        {
  -            if(value.string().endsWith(QString::fromLatin1("%")))
  -                offset()->setBaseVal(value.string().left(value.length() - 1).toDouble() / 100.);
  -            else
  -                offset()->setBaseVal(value.string().toDouble());
  -            break;
  -        }
  -        default:
  -            SVGStyledElementImpl::parseAttribute(attr);
  -    };
  +    if (attr->name() == SVGNames::offsetAttr) {
  +        if(value.qstring().endsWith(QString::fromLatin1("%")))
  +            offset()->setBaseVal(value.qstring().left(value.length() - 1).toDouble() / 100.);
  +        else
  +            offset()->setBaseVal(value.qstring().toDouble());
  +    } else
  +        SVGStyledElementImpl::parseMappedAttribute(attr);
   
  -    if(!ownerDocument()->parsing())
  +    if(!ownerDocument()->parsing() && attached())
       {
  -        SVGDocumentImpl *document = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        KCanvas *canvas = (document ? document->canvas() : 0);
  -        if(canvas)
  -        {
  -            recalcStyle(Force);
  -            createCanvasItem(canvas, 0);
  -            
  -            SVGStyledElementImpl *parentStyled = static_cast<SVGStyledElementImpl *>(parentNode());
  -            if(parentStyled)
  -                parentStyled->notifyAttributeChange();
  -        }
  -    }
  -}
  -
  -KCanvasItem *SVGStopElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *) const
  -{
  -    if(renderStyle())
  -    {
  -        QString gradientId = KDOM::DOMString(static_cast<SVGElementImpl *>(parentNode())->getId()).string();
  -        KRenderingPaintServer *paintServer = canvas->registry()->getPaintServerById(gradientId);
  -        KRenderingPaintServerGradient *paintServerGradient  = static_cast<KRenderingPaintServerGradient *>(paintServer);
  -
  -        float _offset = offset()->baseVal();
  -
  -        QColor c = static_cast<SVGRenderStyle *>(renderStyle())->stopColor();
  -        float opacity = static_cast<SVGRenderStyle *>(renderStyle())->stopOpacity();
  -
  -        KCSortedGradientStopList &stops = paintServerGradient->gradientStops();
  -
  -        if(!ownerDocument()->parsing())
  -        {
  -            KCSortedGradientStopList::Iterator it(stops);
  -            for(; it.current(); ++it)
  -            {
  -                KCGradientOffsetPair *pair = it.current();
  -                if(pair->offset == _offset)
  -                    stops.remove(pair);
  -            }
  -        }
  +        recalcStyle(Force);
           
  -        stops.addStop(_offset, qRgba(c.red(), c.green(), c.blue(), int(opacity * 255.)));
  +        SVGStyledElementImpl *parentStyled = static_cast<SVGStyledElementImpl *>(parentNode());
  +        if(parentStyled)
  +            parentStyled->notifyAttributeChange();
       }
  -
  -    return 0;
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +4 -5      SVGSupport/ksvg2/svg/SVGStopElementImpl.h
  
  Index: SVGStopElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGStopElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGStopElementImpl.h	1 Sep 2005 07:35:51 -0000	1.4
  +++ SVGStopElementImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -31,16 +31,15 @@
       class SVGStopElementImpl : public SVGStyledElementImpl
       {
       public:
  -        SVGStopElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGStopElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGStopElementImpl();
  +        
  +        virtual bool isGradientStop() { return true; }
   
           // 'SVGStoplement' functions
           SVGAnimatedNumberImpl *offset() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  -
  -        virtual bool implementsCanvasItem() const { return true; }
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       private:
           mutable SVGAnimatedNumberImpl *m_offset;
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGStylableImpl.h
  
  Index: SVGStylableImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGStylableImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGStylableImpl.h	1 Sep 2005 07:35:52 -0000	1.4
  +++ SVGStylableImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -45,7 +45,7 @@
           // 'SVGStylable' functions
           virtual SVGAnimatedStringImpl *className() const = 0;
   
  -        virtual KDOM::CSSStyleDeclarationImpl *style() = 0;
  +        virtual DOM::CSSStyleDeclarationImpl *style() = 0;
           virtual KDOM::CSSValueImpl *getPresentationAttribute(KDOM::DOMStringImpl *name) = 0;
       };
   };
  
  
  
  1.8       +26 -40    SVGSupport/ksvg2/svg/SVGStyleElementImpl.cpp
  
  Index: SVGStyleElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGStyleElementImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGStyleElementImpl.cpp	5 Oct 2005 05:35:28 -0000	1.7
  +++ SVGStyleElementImpl.cpp	21 Nov 2005 08:29:42 -0000	1.8
  @@ -23,89 +23,79 @@
   #include "config.h"
   #include <kdom/kdom.h>
   #include <kdom/DOMString.h>
  -#include <ksvg2/css/SVGCSSStyleSheetImpl.h>
   #include <kdom/css/MediaListImpl.h>
   
  -#include "SVGDocumentImpl.h"
   #include "SVGStyleElementImpl.h"
   
   #include <qstring.h>
   
   using namespace KSVG;
   
  -SVGStyleElementImpl::SVGStyleElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGElementImpl(doc, id, prefix)
  +SVGStyleElementImpl::SVGStyleElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGElementImpl(tagName, doc)
   {
  -    m_sheet = 0;
       m_loading = false;
   }
   
   SVGStyleElementImpl::~SVGStyleElementImpl()
   {
  -    if(m_sheet)
  -        m_sheet->deref();
   }
   
  -KDOM::DOMStringImpl *SVGStyleElementImpl::xmlspace() const
  +KDOM::AtomicString SVGStyleElementImpl::xmlspace() const
   {
  -    return tryGetAttribute(KDOM::DOMString("xml:space").handle());
  +    return tryGetAttribute("xml:space");
   }
   
  -void SVGStyleElementImpl::setXmlspace(KDOM::DOMStringImpl *)
  +void SVGStyleElementImpl::setXmlspace(const KDOM::AtomicString&, int &exceptioncode)
   {
  -    throw new KDOM::DOMExceptionImpl(KDOM::NO_MODIFICATION_ALLOWED_ERR);
  +    exceptioncode = KDOM::NO_MODIFICATION_ALLOWED_ERR;
   }
   
  -KDOM::DOMStringImpl *SVGStyleElementImpl::type() const
  +KDOM::AtomicString SVGStyleElementImpl::type() const
   {
  -    return tryGetAttribute(KDOM::DOMString("type").handle(), KDOM::DOMString("text/css").handle());
  +    return tryGetAttribute("type", "text/css");
   }
   
  -void SVGStyleElementImpl::setType(KDOM::DOMStringImpl *)
  +void SVGStyleElementImpl::setType(const KDOM::AtomicString&, int &exceptioncode)
   {
  -    throw new KDOM::DOMExceptionImpl(KDOM::NO_MODIFICATION_ALLOWED_ERR);
  +    exceptioncode = KDOM::NO_MODIFICATION_ALLOWED_ERR;
   }
   
  -KDOM::DOMStringImpl *SVGStyleElementImpl::media() const
  +KDOM::AtomicString SVGStyleElementImpl::media() const
   {
  -    return tryGetAttribute(KDOM::DOMString("media").handle(), KDOM::DOMString("all").handle());
  +    return tryGetAttribute("media", "all");
   }
   
  -void SVGStyleElementImpl::setMedia(KDOM::DOMStringImpl *)
  +void SVGStyleElementImpl::setMedia(const KDOM::AtomicString&, int& exceptioncode)
   {
  -    throw new KDOM::DOMExceptionImpl(KDOM::NO_MODIFICATION_ALLOWED_ERR);
  +    exceptioncode = KDOM::NO_MODIFICATION_ALLOWED_ERR;
   }
   
  -KDOM::DOMStringImpl *SVGStyleElementImpl::title() const
  +KDOM::AtomicString SVGStyleElementImpl::title() const
   {
  -    return tryGetAttribute(KDOM::DOMString("title").handle());
  +    return tryGetAttribute("title");
   }
   
  -void SVGStyleElementImpl::setTitle(KDOM::DOMStringImpl *)
  +void SVGStyleElementImpl::setTitle(const KDOM::AtomicString&, int& exceptioncode)
   {
  -    throw new KDOM::DOMExceptionImpl(KDOM::NO_MODIFICATION_ALLOWED_ERR);
  +    exceptioncode = KDOM::NO_MODIFICATION_ALLOWED_ERR;
   }
   
   KDOM::CSSStyleSheetImpl *SVGStyleElementImpl::sheet()
   {
  -    return m_sheet;
  +    return m_sheet.get();
   }
   
   void SVGStyleElementImpl::childrenChanged()
   {
       SVGElementImpl::childrenChanged();
   
  -    KDOM::DOMString text(textContent());
  -
       if(m_sheet)
  -    {
  -        m_sheet->deref();
           m_sheet = 0;
  -    }
   
       m_loading = false;
  -    KDOM::DOMString mediaDomString(media());
  -    QString _media = mediaDomString.string();
  -    if((KDOM::DOMString(type()).isEmpty() || KDOM::DOMString(type()) == "text/css") && (_media.isNull() ||
  +    const KDOM::AtomicString &mediaDomString = media();
  +    QString _media = mediaDomString.qstring();
  +    if((type().isEmpty() || type() == "text/css") && (_media.isNull() ||
           _media.contains(QString::fromLatin1("screen")) ||
           _media.contains(QString::fromLatin1("all")) |
           _media.contains(QString::fromLatin1("print"))))
  @@ -114,20 +104,16 @@
   
           m_loading = true;
    
  -        m_sheet = new SVGCSSStyleSheetImpl(this);
  -        m_sheet->ref();
  -        m_sheet->parseString(text.handle(), false);//!getDocument()->inCompatMode());
  +        m_sheet = new KDOM::CSSStyleSheetImpl(this);
  +        m_sheet->parseString(textContent(), false);//!getDocument()->inCompatMode());
   
  -        KDOM::MediaListImpl *media = new KDOM::MediaListImpl(m_sheet, mediaDomString.handle());
  -        m_sheet->setMedia(media);
  +        KDOM::MediaListImpl *mediaList = new KDOM::MediaListImpl(m_sheet.get(), mediaDomString);
  +        m_sheet->setMedia(mediaList);
           m_loading = false;
       }
   
       if(!isLoading() && m_sheet)
  -    {
  -        if(getDocument())
  -            getDocument()->styleSheetLoaded();
  -    }
  +        getDocument()->stylesheetLoaded();
   }
   
   bool SVGStyleElementImpl::isLoading() const
  
  
  
  1.5       +10 -10    SVGSupport/ksvg2/svg/SVGStyleElementImpl.h
  
  Index: SVGStyleElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGStyleElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGStyleElementImpl.h	1 Sep 2005 07:35:52 -0000	1.4
  +++ SVGStyleElementImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -35,24 +35,24 @@
       class SVGStyleElementImpl : public SVGElementImpl
       {
       public:
  -        SVGStyleElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGStyleElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGStyleElementImpl();
   
           // Derived from: 'ElementImpl'
           virtual void childrenChanged();
   
           // 'SVGStyleElement' functions
  -        KDOM::DOMStringImpl *xmlspace() const;
  -        void setXmlspace(KDOM::DOMStringImpl *);
  +        KDOM::AtomicString xmlspace() const;
  +        void setXmlspace(const KDOM::AtomicString&, int &exceptioncode);
   
  -        KDOM::DOMStringImpl *type() const;
  -        void setType(KDOM::DOMStringImpl *);
  +        KDOM::AtomicString type() const;
  +        void setType(const KDOM::AtomicString&, int &exceptioncode);
   
  -        KDOM::DOMStringImpl *media() const;
  -        void setMedia(KDOM::DOMStringImpl *);
  +        KDOM::AtomicString media() const;
  +        void setMedia(const KDOM::AtomicString&, int &exceptioncode);
   
  -        KDOM::DOMStringImpl *title() const;
  -        void setTitle(KDOM::DOMStringImpl *);
  +        KDOM::AtomicString title() const;
  +        void setTitle(const KDOM::AtomicString&, int &exceptioncode);
   
           KDOM::CSSStyleSheetImpl *sheet();
   
  @@ -60,7 +60,7 @@
           bool isLoading() const;
   
       protected:
  -        KDOM::CSSStyleSheetImpl *m_sheet;
  +        SharedPtr<KDOM::CSSStyleSheetImpl> m_sheet;
           bool m_loading;
       };
   };
  
  
  
  1.10      +54 -314   SVGSupport/ksvg2/svg/SVGStyledElementImpl.cpp
  
  Index: SVGStyledElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGStyledElementImpl.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SVGStyledElementImpl.cpp	5 Oct 2005 05:35:29 -0000	1.9
  +++ SVGStyledElementImpl.cpp	21 Nov 2005 08:29:42 -0000	1.10
  @@ -27,8 +27,10 @@
   #include <kdom/core/CDFInterface.h>
   #include <kdom/DOMString.h>
   
  +#include <kxmlcore/Assertions.h>
  +
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasItem.h>
  +#include <kcanvas/RenderPath.h>
   #include <kcanvas/KCanvasCreator.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
  @@ -37,26 +39,22 @@
   #include "SVGMatrixImpl.h"
   #include "SVGRenderStyle.h"
   #include "SVGElementImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGSVGElementImpl.h"
  -#include "SVGCSSStyleSelector.h"
  -#include "SVGTransformableImpl.h"
   #include "SVGStyledElementImpl.h"
   #include "SVGAnimatedStringImpl.h"
   #include "KCanvasRenderingStyle.h"
   #include "SVGDOMImplementationImpl.h"
  -#include "SVGCSSStyleDeclarationImpl.h"
  +#include "ksvgcssproperties.h"
  +#include "css_base.h"
   
  -#include "svgattrs.h"
  -#include <ksvg2/css/cssproperties.h>
  +#include "SVGNames.h"
  +#include "HTMLNames.h"
   
   using namespace KSVG;
   
  -SVGStyledElementImpl::SVGStyledElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGElementImpl(doc, id, prefix), SVGStylableImpl(), m_pa(0), m_className(0)
  +SVGStyledElementImpl::SVGStyledElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGElementImpl(tagName, doc), m_pa(0), m_className(0)
   {
  -    m_canvasItem = 0;
  -    m_renderStyle = 0;
       m_updateVectorial = false;
   }
   
  @@ -66,8 +64,6 @@
           m_className->deref();
       if(m_pa)
           m_pa->deref();
  -
  -    delete m_renderStyle;
   }
   
   SVGAnimatedStringImpl *SVGStyledElementImpl::className() const
  @@ -81,102 +77,30 @@
       return m_className;
   }
   
  -KDOM::CSSStyleDeclarationImpl *SVGStyledElementImpl::style()
  -{
  -    return styleRules();
  -}
  -
  -KDOM::CSSStyleDeclarationImpl *SVGStyledElementImpl::pa() const
  -{
  -    if(!m_pa)
  -    {
  -        m_pa = new SVGCSSStyleDeclarationImpl(ownerDocument()->implementation()->cdfInterface(), 0);
  -        m_pa->ref();
  -    }
  -
  -    return m_pa;
  -}
  -
  -KDOM::CSSValueImpl *SVGStyledElementImpl::getPresentationAttribute(KDOM::DOMStringImpl *name)
  -{
  -    return pa()->getPropertyCSSValue(name);
  -}
  -
  -KCanvasItem *SVGStyledElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGStyledElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
       KCPathDataList pathData = toPathData();
  -    if(pathData.isEmpty())
  +    if (pathData.isEmpty())
           return 0;
  -
  -    KCanvasItem *item = KCanvasCreator::self()->createPathItem(canvas, style, pathData);
  -
  -    // Associate 'KCanvasItem' with 'SVGStyledElementImpl'
  -    item->setUserData(const_cast<SVGStyledElementImpl *>(this));
  -
  -    return item;
  -}
  -
  -void SVGStyledElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  -{
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  -    {
  -        case ATTR_CLASS:
  -        {
  -            className()->setBaseVal(value);
  -            break;
  -        }
  -        case ATTR_STYLE:
  -        {
  -            style()->setProperty(value);
  -            break;
  -        }
  -        default:
  -        {
  -            KDOM::CDFInterface *interface = (ownerDocument() ? ownerDocument()->implementation()->cdfInterface() : 0);
  -            if(interface)
  -            {
  -                QString qProp = QString::fromLatin1(interface->getAttrName(id));
  -                int svgPropId = interface->getPropertyID(qProp.ascii(), qProp.length());
  -                if(svgPropId > 0)
  -                {
  -                    if(value)
  -                        pa()->setProperty(svgPropId, value);
  -                    else
  -                        pa()->removeProperty(svgPropId);
  -
  -                    if(!ownerDocument()->parsing())
  -                        setChanged(true);
  -
  -                    return;
  -                }
  -            }
  -
  -            SVGElementImpl::parseAttribute(attr);
  -        }
  -    };
  +    KCanvasUserData path = KCanvasCreator::self()->createCanvasPathData(canvas()->renderingDevice(), pathData);
  +    return canvas()->renderingDevice()->createItem(arena, style, this, path);
   }
   
  -KDOM::RenderStyle *SVGStyledElementImpl::renderStyle() const
  +void SVGStyledElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    if(!m_renderStyle)
  -    {
  -        kdDebug(26002) << "[SVGStyledElementImpl::renderStyle] Updating rendering style of " << KDOM::DOMString(localName()) << " ..." << endl;
  -        SVGDocumentImpl *doc = static_cast<SVGDocumentImpl *>(ownerDocument());
  -        if(!doc)
  -            return 0;
  -
  -        KDOM::CSSStyleSelector *styleSelector = doc->styleSelector();
  -        if(!styleSelector)
  -            return 0;
  -
  -        m_renderStyle = styleSelector->styleForElement(const_cast<SVGStyledElementImpl *>(this));
  +    KDOM::DOMString value(attr->value());
  +    // id and class are handled by StyledElementImpl
  +    QString qProp = attr->name().localName().qstring();
  +    int propId = DOM::getPropertyID(qProp.ascii(), qProp.length());
  +    if (propId == 0)
  +        propId = KSVG::getPropertyID(qProp.ascii(), qProp.length());
  +    if(propId > 0) {
  +        addCSSProperty(attr, propId, value);
  +        setChanged();
  +        return;
       }
  -    else
  -        kdDebug(26002) << "[SVGStyledElementImpl::renderStyle] Getting cached rendering style of " << KDOM::DOMString(localName()) << " ..." << endl;
  -
  -    return m_renderStyle;
  +    
  +    SVGElementImpl::parseMappedAttribute(attr);
   }
   
   void SVGStyledElementImpl::notifyAttributeChange() const
  @@ -192,246 +116,62 @@
   
   void SVGStyledElementImpl::finalizeStyle(KCanvasRenderingStyle *style, bool needFillStrokeUpdate)
   {
  -    if(needFillStrokeUpdate)
  -    {
  -        style->updateFill(m_canvasItem);
  -        style->updateStroke(m_canvasItem);
  +    if(needFillStrokeUpdate && renderer()->isRenderPath()) {
  +        RenderPath *renderPath = static_cast<RenderPath *>(renderer());
  +        style->updateFill(renderPath);
  +        style->updateStroke(renderPath);
       }
   }
   
   void SVGStyledElementImpl::attach()
   {
  -    kdDebug(26002) << "[SVGStyledElementImpl::attach] About to attach canvas item for element " << KDOM::DOMString(localName()) << endl;
  -
  -    SVGDocumentImpl *doc = static_cast<SVGDocumentImpl *>(ownerDocument());
  -    KCanvas *canvas = (doc ? doc->canvas() : 0);    
  -    if(canvas && implementsCanvasItem())
  +    createRendererIfNeeded();
  +    if (m_render && m_render->isRenderPath())
       {
  -        SVGRenderStyle *svgStyle = static_cast<SVGRenderStyle *>(renderStyle());
  -        KCanvasRenderingStyle *renderingStyle = new KCanvasRenderingStyle(canvas, svgStyle);
  -        if (m_canvasItem)
  -            fprintf(stderr, "DOUBLE ATTACH: <%s> %p\n", KDOM::DOMString(nodeName()).string().ascii(), this);
  -
  -        m_canvasItem = createCanvasItem(canvas, renderingStyle);
  -        if(m_canvasItem)
  -        {
  -            finalizeStyle(renderingStyle);
  -
  -            // Apply transformations if possible...
  -            SVGLocatableImpl *locatable = dynamic_cast<SVGLocatableImpl *>(this);
  -            if(locatable)
  -            {
  -                SVGMatrixImpl *ctm = locatable->getScreenCTM();
  -                renderingStyle->setObjectMatrix(KCanvasMatrix(ctm->qmatrix()));
  -                ctm->deref();
  -            }
  -
  -            SVGElementImpl *parentElement = svg_dynamic_cast(parentNode());
  -            SVGStyledElementImpl *styledParent = NULL;
  -            if (parentElement && parentElement->isStyled())
  -                    styledParent = static_cast<SVGStyledElementImpl *>(parentElement);
  -            if(styledParent && styledParent->canvasItem() && styledParent->allowAttachChildren(this))
  -                styledParent->canvasItem()->appendItem(m_canvasItem);
  -            else if (styledParent && (styledParent->id() != ID_PATTERN)) {
  -                // FIXME: This exists until we can find a better way to create root && pattern nodes. -- ecs 8/7/05
  -                delete m_canvasItem;
  -                m_canvasItem = NULL;
  -                //fprintf(stderr, "FAILED CANVAS INSERTION: <%s>\n", KDOM::DOMString(nodeName()).string().ascii())
  -            }
  -
  -#ifndef APPLE_COMPILE_HACK
  -            KSVGSettings settings;
  -            if(settings.progressiveRendering() && m_canvasItem->isVisible())
  -                m_canvasItem->invalidate(); // Causes defered redraw...
  -#endif
  -        }
  -        else
  -        {
  -            delete renderingStyle;
  -            renderingStyle = NULL;
  -        }
  -
  -        kdDebug(26002) << "[SVGStyledElementImpl::attach] Attachted canvas item: " << m_canvasItem << endl;
  +        RenderPath *renderPath = static_cast<RenderPath *>(m_render);
  +        KCanvasRenderingStyle *renderingStyle = static_cast<KCanvasRenderingStyle *>(renderPath->canvasStyle());
  +        finalizeStyle(renderingStyle);
       }
  -    else
  -        kdDebug(26002) << "[SVGStyledElementImpl::attach] Unable to attach canvas item. (not necessarily wrong!)" << endl;
  -
  -    KDOM::NodeBaseImpl::attach();
  -}
  -
  -void SVGStyledElementImpl::detach()
  -{
  -    kdDebug(26002) << "[SVGStyledElementImpl::detach] About to detach canvas item for element " << KDOM::DOMString(localName()) << endl;
  -
  -    if(m_canvasItem)
  -    {
  -        SVGElementImpl *parent = svg_dynamic_cast(parentNode());
  -        SVGStyledElementImpl *styled = NULL;
  -        if (parent && parent->isStyled())
  -            styled = static_cast<SVGStyledElementImpl *>(parent);
  -         
  -        if(styled && styled->canvasItem())
  -            styled->canvasItem()->removeItem(m_canvasItem);
  -    }
  -
  -    kdDebug(26002) << "[SVGStyledElementImpl::detach] Detached canvas item: " << m_canvasItem << endl;
  -    m_canvasItem = 0;
  -
  -    delete m_renderStyle;
  -    m_renderStyle = 0;
  -
  -    KDOM::NodeBaseImpl::detach();
  -}
   
  -KCanvasItem *SVGStyledElementImpl::canvasItem() const
  -{
  -    return m_canvasItem;
  -}
  -
  -KCanvas *SVGStyledElementImpl::canvas() const
  -{
  -    SVGDocumentImpl *doc = static_cast<SVGDocumentImpl *>(ownerDocument());
  -    return doc ? doc->canvas() : 0;
  +    KDOM::NodeImpl::attach();
   }
   
  -KCanvasView *SVGStyledElementImpl::canvasView() const
  +khtml::RenderCanvas *SVGStyledElementImpl::canvas() const
   {
  -    SVGDocumentImpl *doc = static_cast<SVGDocumentImpl *>(ownerDocument());
  -    return doc ? doc->canvasView() : 0;
  +    return static_cast<khtml::RenderCanvas *>(getDocument()->renderer());
   }
   
   void SVGStyledElementImpl::updateCanvasItem()
   {
  -    if(!m_canvasItem || !m_updateVectorial)
  +    if(!m_updateVectorial || !renderer() || !renderer()->isRenderPath())
           return;
  +    
  +    RenderPath *renderPath = static_cast<RenderPath *>(renderer());
  +    bool renderSection = false;
  +    
  +    SVGElementImpl *parentElement = svg_dynamic_cast(parentNode());
  +    if(parentElement && parentElement->renderer() && parentElement->isStyled()
  +        && static_cast<SVGStyledElementImpl *>(parentElement)->allowAttachChildren(this))
  +        renderSection = true;
   
  -    if(canvas())
  -    {
  -        bool renderSection = false;
  -
  -        SVGStyledElementImpl *parent = dynamic_cast<SVGStyledElementImpl *>(parentNode());
  -        if(parent && parent->canvasItem() && parent->allowAttachChildren(this))
  -            renderSection = true;
  -
  -        // Invalidate before the change...
  -        if(renderSection)
  -            m_canvasItem->invalidate();
  -
  -        KCanvasUserData newPath = KCanvasCreator::self()->createCanvasPathData(canvas(), toPathData());
  -        m_canvasItem->changePath(newPath);
  +    KCanvasUserData newPath = KCanvasCreator::self()->createCanvasPathData(canvas()->renderingDevice(), toPathData());
  +    renderPath->changePath(newPath);
   
  -        // Invalidate after the change...
  -        if(renderSection)
  -            m_canvasItem->invalidate();
  -
  -        m_updateVectorial = false;
  -    }
  -}
  -
  -void SVGStyledElementImpl::recalcStyle(StyleChange change)
  -{
  -    KDOM::RenderStyle *_style = m_renderStyle;
  -    bool hasParentRenderer = parentNode() ? parentNode()->attached() : false;
  -
  -    if(hasParentRenderer && (change >= Inherit) || changed())
  -    {
  -        KDOM::EDisplay oldDisplay = _style ? _style->display() : KDOM::DS_NONE;
  -
  -        KDOM::RenderStyle *newStyle = ownerDocument()->styleSelector()->styleForElement(this);
  -        newStyle->ref();
  -        
  -        StyleChange ch = diff(_style, newStyle);
  -        if(ch != NoChange)
  -        {
  -            if(oldDisplay != newStyle->display())
  -            {
  -                if(attached()) detach();
  -                // ### uuhm, suboptimal. style gets calculated again
  -                attach();
  -                // attach recalulates the style for all children. No need to do it twice.
  -                setChanged(false);
  -                setHasChangedChild(false);
  -                newStyle->deref();
  -                return;
  -            }
  -
  -            if(newStyle)
  -                setStyle(newStyle);
  -        }
  -
  -        newStyle->deref();
  -
  -        if(change != Force)
  -        {
  -            if(ownerDocument()->usesDescendantRules())
  -                change = Force;
  -            else
  -                change = ch;
  -        }
  -    }
  +    if(renderSection)
  +        renderPath->setNeedsLayout(true);
   
  -    for(NodeImpl *n = firstChild(); n; n = n->nextSibling())
  -    {
  -        if(change >= Inherit || n->hasChangedChild() || n->changed())
  -            n->recalcStyle(change);
  -    }
  +    m_updateVectorial = false;
   }
   
   const SVGStyledElementImpl *SVGStyledElementImpl::pushAttributeContext(const SVGStyledElementImpl *)
   {
       if(canvas())
       {
  -        KCanvasUserData newPath = KCanvasCreator::self()->createCanvasPathData(canvas(), toPathData());
  -        m_canvasItem->changePath(newPath);
  +        KCanvasUserData newPath = KCanvasCreator::self()->createCanvasPathData(canvas()->renderingDevice(), toPathData());
  +        static_cast<RenderPath *>(renderer())->changePath(newPath);
       }
   
       return 0;
   }
   
  -void SVGStyledElementImpl::setStyle(KDOM::RenderStyle *newStyle)
  -{
  -    KDOM_SAFE_SET(m_renderStyle, newStyle);
  -
  -    KCanvasRenderingStyle *style = (m_canvasItem ? static_cast<KCanvasRenderingStyle *>(m_canvasItem->style()) : 0);
  -    if(style)
  -    {
  -        bool renderSection = false;
  -
  -        SVGStyledElementImpl *parent = dynamic_cast<SVGStyledElementImpl *>(parentNode());
  -        if(parent && parent->canvasItem() && parent->allowAttachChildren(this))
  -            renderSection = true;
  -
  -        // Invalidate before the change...
  -        if(renderSection)
  -            m_canvasItem->invalidate();
  -
  -        style->removeClipPaths();
  -        style->updateStyle(static_cast<SVGRenderStyle *>(m_renderStyle), m_canvasItem);
  -        finalizeStyle(style, false);
  -
  -        // Invalidate after the change...
  -        if(renderSection)
  -            m_canvasItem->invalidate();
  -    }
  -}
  -
  -void SVGStyledElementImpl::updateCTM(const QWMatrix &ctm)
  -{
  -    if(!m_canvasItem)
  -        return;
  -
  -    KCanvas *canvas = (m_canvasItem ? m_canvasItem->canvas() : 0);
  -    if(canvas)
  -    {
  -        // Invalidate before the change...
  -        m_canvasItem->invalidate();
  -
  -        KCanvasRenderingStyle *style = static_cast<KCanvasRenderingStyle *>(m_canvasItem->style());
  -        style->setObjectMatrix(KCanvasMatrix(ctm));
  -
  -        // Invalidate after the change...
  -        m_canvasItem->invalidate();
  -    }
  -}
  -
   // vim:ts=4:noet
  
  
  
  1.7       +17 -32    SVGSupport/ksvg2/svg/SVGStyledElementImpl.h
  
  Index: SVGStyledElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGStyledElementImpl.h,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGStyledElementImpl.h	28 Sep 2005 05:06:08 -0000	1.6
  +++ SVGStyledElementImpl.h	21 Nov 2005 08:29:42 -0000	1.7
  @@ -30,48 +30,42 @@
   #include <kcanvas/KCanvasPath.h>
   #include <kdom/css/RenderStyle.h>
   
  -class KCanvas;
  -class KCanvasView;
  -class KCanvasItem;
  -class KRenderingStyle;
  +class RenderPath;
  +class KRenderingDevice;
  +class KCanvasResource;
  +
  +namespace KDOM {
  +    class CSSStyleDeclarationImpl;
  +}
   
   namespace KSVG
   {
       class KCanvasRenderingStyle;
       class SVGStyledElementImpl;
  -    class SVGCSSStyleDeclarationImpl;
  -    class SVGStyledElementImpl : public SVGElementImpl,
  -                                 public SVGStylableImpl
  +    class SVGStyledElementImpl : public SVGElementImpl
       {
       public:
  -        SVGStyledElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGStyledElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGStyledElementImpl();
           
           virtual bool isStyled() const { return true; }
   
           // 'SVGStylable' functions
           virtual SVGAnimatedStringImpl *className() const;
  -        virtual KDOM::CSSStyleDeclarationImpl *style();
  -        virtual KDOM::CSSStyleDeclarationImpl *pa() const;
  -        virtual KDOM::CSSValueImpl *getPresentationAttribute(KDOM::DOMStringImpl *name);
   
           virtual void attach();
  -        virtual void detach();
  -
           virtual bool allowAttachChildren(KDOM::ElementImpl *) const { return true; }
   
  -        // This needs to be implemented.
  -        virtual bool implementsCanvasItem() const { return false; }
  +        // These need to be implemented.
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return false; }
           virtual KCPathDataList toPathData() const { return KCPathDataList(); }
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  -
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  -
  -        void updateCTM(const QWMatrix &ctm);
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
  +        virtual KCanvasResource *canvasResource() { return 0; }
  +        
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        KCanvasItem *canvasItem() const;
  +        khtml::RenderCanvas *canvas() const;
           virtual void notifyAttributeChange() const;
  -        virtual void recalcStyle(StyleChange = NoChange);
   
           // Imagine we're a <rect> inside of a <pattern> section with patternContentUnits="objectBoundingBox"
           // and our 'width' attribute is set to 50%. When the pattern gets referenced it knows the "bbox"
  @@ -83,23 +77,14 @@
           friend class SVGDocumentImpl; // Needs renderStyle accesss...
           friend class SVGClipPathElementImpl; // Needs renderStyle access..
   
  -        KCanvas *canvas() const;
  -        KCanvasView *canvasView() const;
  -
  -        virtual KDOM::RenderStyle *renderStyle() const;
           virtual void finalizeStyle(KCanvasRenderingStyle *style, bool needFillStrokeUpdate = true);
   
  -        void setStyle(KDOM::RenderStyle *newStyle);
           void updateCanvasItem(); // Handles "path data" object changes... (not for style/transform!)
   
  -        KCanvasItem *m_canvasItem;
  -
       private:
  -        mutable SVGCSSStyleDeclarationImpl *m_pa;
  +        mutable KDOM::CSSStyleDeclarationImpl *m_pa;
           mutable SVGAnimatedStringImpl *m_className;
   
  -        mutable KDOM::RenderStyle *m_renderStyle;
  -
           // Optimized updating logic
           bool m_updateVectorial : 1;
       };
  
  
  
  1.7       +9 -18     SVGSupport/ksvg2/svg/SVGSwitchElementImpl.cpp
  
  Index: SVGSwitchElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGSwitchElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGSwitchElementImpl.cpp	5 Oct 2005 05:35:29 -0000	1.6
  +++ SVGSwitchElementImpl.cpp	21 Nov 2005 08:29:42 -0000	1.7
  @@ -27,17 +27,16 @@
   #include <kcanvas/KCanvasContainer.h>
   #include <kcanvas/device/KRenderingDevice.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGTestsImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGSwitchElementImpl.h"
   #include "SVGAnimatedLengthImpl.h"
   
   using namespace KSVG;
   
  -SVGSwitchElementImpl::SVGSwitchElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl()
  +SVGSwitchElementImpl::SVGSwitchElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
   }
   
  @@ -47,27 +46,19 @@
   
   bool SVGSwitchElementImpl::allowAttachChildren(KDOM::ElementImpl *child) const
   {
  -    for(KDOM::NodeImpl *n = firstChild(); n != 0; n = n->nextSibling())
  +    for (KDOM::NodeImpl *n = firstChild(); n != 0; n = n->nextSibling())
       {
  -        SVGTestsImpl *element = dynamic_cast<SVGTestsImpl *>(n);
  -
  -        // Lookup first valid item...
  -        if(element && element->isValid())
  -        {
  -            // Only render first valid child!
  -            if(n == child)
  -                return true;
  -
  -            return false;
  -        }
  +        SVGElementImpl *element = svg_dynamic_cast(n);
  +        if (element && element->isValid())
  +            return (n == child); // Only allow this child if it's the first valid child
       }
   
       return false;
   }
   
  -KCanvasItem *SVGSwitchElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGSwitchElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    return KCanvasCreator::self()->createContainer(canvas, style);
  +    return canvas()->renderingDevice()->createContainer(arena, style, this);
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +6 -8      SVGSupport/ksvg2/svg/SVGSwitchElementImpl.h
  
  Index: SVGSwitchElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGSwitchElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGSwitchElementImpl.h	1 Sep 2005 07:35:53 -0000	1.4
  +++ SVGSwitchElementImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -25,27 +25,25 @@
   
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
   namespace KSVG
   {
  -    class SVGSwitchElementImpl : public SVGStyledElementImpl,
  +    class SVGSwitchElementImpl : public SVGStyledTransformableElementImpl,
                                    public SVGTestsImpl,
                                    public SVGLangSpaceImpl,
  -                                 public SVGExternalResourcesRequiredImpl,
  -                                 public SVGTransformableImpl
  +                                 public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGSwitchElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGSwitchElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGSwitchElementImpl();
   
           // Derived from: 'SVGStyledElementImpl'
           virtual bool allowAttachChildren(KDOM::ElementImpl *child) const;
  -        virtual bool implementsCanvasItem() const { return true; }
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
   
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
       private:
           mutable bool m_insideRenderSection;
  
  
  
  1.6       +7 -8      SVGSupport/ksvg2/svg/SVGSymbolElementImpl.cpp
  
  Index: SVGSymbolElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGSymbolElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGSymbolElementImpl.cpp	5 Oct 2005 05:35:29 -0000	1.5
  +++ SVGSymbolElementImpl.cpp	21 Nov 2005 08:29:42 -0000	1.6
  @@ -24,14 +24,13 @@
   #include <kdom/DOMString.h>
   
   #include "SVGHelper.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGSymbolElementImpl.h"
   #include "SVGFitToViewBoxImpl.h"
   
   using namespace KSVG;
   
  -SVGSymbolElementImpl::SVGSymbolElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGFitToViewBoxImpl()
  +SVGSymbolElementImpl::SVGSymbolElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledElementImpl(tagName, doc), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGFitToViewBoxImpl()
   {
   }
   
  @@ -39,13 +38,13 @@
   {
   }
   
  -void SVGSymbolElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGSymbolElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -    if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -    if(SVGFitToViewBoxImpl::parseAttribute(attr)) return;
  +    if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +    if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +    if(SVGFitToViewBoxImpl::parseMappedAttribute(attr)) return;
   
  -    SVGStyledElementImpl::parseAttribute(attr);
  +    SVGStyledElementImpl::parseMappedAttribute(attr);
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +2 -2      SVGSupport/ksvg2/svg/SVGSymbolElementImpl.h
  
  Index: SVGSymbolElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGSymbolElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGSymbolElementImpl.h	1 Sep 2005 07:35:53 -0000	1.4
  +++ SVGSymbolElementImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -36,10 +36,10 @@
                                    public SVGFitToViewBoxImpl
       {
       public:
  -        SVGSymbolElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGSymbolElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGSymbolElementImpl();
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           // Derived from: 'SVGStyledElementImpl'
           virtual bool allowAttachChildren(KDOM::ElementImpl *) const { return false; }
  
  
  
  1.6       +2 -2      SVGSupport/ksvg2/svg/SVGTSpanElementImpl.cpp
  
  Index: SVGTSpanElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTSpanElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGTSpanElementImpl.cpp	5 Oct 2005 05:35:29 -0000	1.5
  +++ SVGTSpanElementImpl.cpp	21 Nov 2005 08:29:42 -0000	1.6
  @@ -26,8 +26,8 @@
   
   using namespace KSVG;
   
  -SVGTSpanElementImpl::SVGTSpanElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGTextPositioningElementImpl(doc, id, prefix)
  +SVGTSpanElementImpl::SVGTSpanElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGTextPositioningElementImpl(tagName, doc)
   {
   }
   
  
  
  
  1.5       +1 -1      SVGSupport/ksvg2/svg/SVGTSpanElementImpl.h
  
  Index: SVGTSpanElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTSpanElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGTSpanElementImpl.h	1 Sep 2005 07:35:53 -0000	1.4
  +++ SVGTSpanElementImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -30,7 +30,7 @@
       class SVGTSpanElementImpl : public SVGTextPositioningElementImpl
       {
       public:
  -        SVGTSpanElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGTSpanElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGTSpanElementImpl();
   
           // 'SVGTSpanElement' functions
  
  
  
  1.7       +17 -25    SVGSupport/ksvg2/svg/SVGTestsImpl.cpp
  
  Index: SVGTestsImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTestsImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGTestsImpl.cpp	5 Oct 2005 05:35:29 -0000	1.6
  +++ SVGTestsImpl.cpp	21 Nov 2005 08:29:42 -0000	1.7
  @@ -21,11 +21,12 @@
   */
   
   #include "config.h"
  +#include <kglobal.h>
   #include <klocale.h>
   
   #include <kdom/core/AttrImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGTestsImpl.h"
   #include "SVGElementImpl.h"
  @@ -77,7 +78,7 @@
       for(unsigned long i = 0;i < list->numberOfItems();i++)
       {
           KDOM::DOMString value = KDOM::DOMString(list->getItem(i));
  -        if(value.isEmpty() || !SVGDOMImplementationImpl::self()->hasFeature(value.handle(), 0))
  +        if(value.isEmpty() || !SVGDOMImplementationImpl::self()->hasFeature(value.impl(), 0))
               return false;
       }
   
  @@ -85,7 +86,7 @@
       for(unsigned long i = 0;i < list->numberOfItems();i++)
       {
           KDOM::DOMString value = KDOM::DOMString(list->getItem(i));
  -        if(value.isEmpty() || value.string() != (KGlobal::locale()->language()).left(2))
  +        if(value.isEmpty() || value.qstring() != (KGlobal::locale()->language()).left(2))
               return false;
       }
   
  @@ -96,29 +97,20 @@
       return true;
   }
   
  -bool SVGTestsImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +bool SVGTestsImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_REQUIREDFEATURES:
  -        {
  -            requiredFeatures()->reset(value.string());
  -            return true;
  -        }
  -        case ATTR_REQUIREDEXTENSIONS:
  -        {
  -            requiredExtensions()->reset(value.string());
  -            return true;
  -        }
  -        case ATTR_SYSTEMLANGUAGE:
  -        {
  -            systemLanguage()->reset(value.string());
  -            return true;
  -        }
  -    };
  -
  +//    KDOM::DOMString value(attr->value());
  +//    if (attr->name() == SVGNames::requiredfeaturesAttr) {
  +//        requiredFeatures()->reset(value.qstring());
  +//        return true;
  +//    } else if (attr->name() == SVGNames::requiredextensionsAttr) {
  +//        requiredExtensions()->reset(value.qstring());
  +//        return true;
  +//    } else if (attr->name() == SVGNames::systemlanguageAttr)
  +//        systemLanguage()->reset(value.qstring());
  +//        return true;
  +//    }
  +    
       return false;
   }
   
  
  
  
  1.5       +2 -2      SVGSupport/ksvg2/svg/SVGTestsImpl.h
  
  Index: SVGTestsImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTestsImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGTestsImpl.h	1 Sep 2005 07:35:53 -0000	1.4
  +++ SVGTestsImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -26,7 +26,7 @@
   namespace KDOM
   {
       class DOMStringImpl;
  -    class AttributeImpl;
  +    class MappedAttributeImpl;
   };
   
   namespace KSVG
  @@ -48,7 +48,7 @@
   
           bool isValid();
           
  -        bool parseAttribute(KDOM::AttributeImpl *attr);
  +        bool parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       private:
           mutable SVGStringListImpl *m_features;
  
  
  
  1.7       +14 -20    SVGSupport/ksvg2/svg/SVGTextContentElementImpl.cpp
  
  Index: SVGTextContentElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTextContentElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGTextContentElementImpl.cpp	5 Oct 2005 05:35:29 -0000	1.6
  +++ SVGTextContentElementImpl.cpp	21 Nov 2005 08:29:42 -0000	1.7
  @@ -23,7 +23,7 @@
   #include "config.h"
   #include <kdom/core/AttrImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   //#include "SVGDocument.h"
   #include "SVGTextContentElementImpl.h"
  @@ -32,8 +32,8 @@
   
   using namespace KSVG;
   
  -SVGTextContentElementImpl::SVGTextContentElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
  +SVGTextContentElementImpl::SVGTextContentElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl()
   {
       m_textLength = 0;
       m_lengthAdjust = 0;
  @@ -101,26 +101,20 @@
   {
   }
   
  -void SVGTextContentElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGTextContentElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  +    
  +    //if (attr->name() == SVGNames::lengthAdjustAttr)
  +    //    x()->baseVal()->setValueAsString(value.impl());
  +    //else
       {
  -        case ATTR_LENGTHADJUST:
  -        {
  -            //x()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +
  +        SVGStyledElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +2 -2      SVGSupport/ksvg2/svg/SVGTextContentElementImpl.h
  
  Index: SVGTextContentElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTextContentElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGTextContentElementImpl.h	1 Sep 2005 07:35:54 -0000	1.4
  +++ SVGTextContentElementImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -41,7 +41,7 @@
                                         public SVGExternalResourcesRequiredImpl
       {
       public:
  -        SVGTextContentElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGTextContentElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGTextContentElementImpl();
   
           // 'SVGTextContentElement' functions
  @@ -58,7 +58,7 @@
           long getCharNumAtPosition(SVGPointImpl *point) const;
           void selectSubString(unsigned long charnum, unsigned long nchars) const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       private:
           mutable SVGAnimatedLengthImpl *m_textLength;
  
  
  
  1.6       +43 -3     SVGSupport/ksvg2/svg/SVGTextElementImpl.cpp
  
  Index: SVGTextElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTextElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGTextElementImpl.cpp	5 Oct 2005 05:35:29 -0000	1.5
  +++ SVGTextElementImpl.cpp	21 Nov 2005 08:29:42 -0000	1.6
  @@ -20,14 +20,23 @@
       Boston, MA 02111-1307, USA.
   */
   
  -//#include "SVGDocument.h"
   #include "config.h"
  +#include <kdom/kdom.h>
   #include "SVGTextElementImpl.h"
  +#include "SVGTSpanElementImpl.h"
  +#include "SVGAnimatedLengthListImpl.h"
  +#include "SVGRenderStyle.h"
  +#include "KCanvasRenderingStyle.h"
  +#include <kdom/css/RenderStyle.h>
  +
  +#include <kcanvas/KCanvasCreator.h>
  +
  +#include <qvector.h>
   
   using namespace KSVG;
   
  -SVGTextElementImpl::SVGTextElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGTextPositioningElementImpl(doc, id, prefix), SVGTransformableImpl()
  +SVGTextElementImpl::SVGTextElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGTextPositioningElementImpl(tagName, doc), SVGTransformableImpl()
   {
   }
   
  @@ -35,4 +44,35 @@
   {
   }
   
  +void SVGTextElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
  +{
  +    //if(SVGTransformableImpl::parseMappedAttribute(attr)) return;
  +    SVGTextPositioningElementImpl::parseMappedAttribute(attr);
  +}
  +
  +SVGElementImpl *SVGTextElementImpl::nearestViewportElement() const
  +{
  +    return SVGTransformableImpl::nearestViewportElement(this);
  +}
  +
  +SVGElementImpl *SVGTextElementImpl::farthestViewportElement() const
  +{
  +    return SVGTransformableImpl::farthestViewportElement(this);
  +}
  +
  +SVGRectImpl *SVGTextElementImpl::getBBox() const
  +{
  +    return SVGTransformableImpl::getBBox(this);
  +}
  +
  +SVGMatrixImpl *SVGTextElementImpl::getScreenCTM() const
  +{
  +    return SVGLocatableImpl::getScreenCTM(this);
  +}
  +
  +SVGMatrixImpl *SVGTextElementImpl::getCTM() const
  +{
  +    return SVGLocatableImpl::getScreenCTM(this);
  +}
  +
   // vim:ts=4:noet
  
  
  
  1.5       +17 -2     SVGSupport/ksvg2/svg/SVGTextElementImpl.h
  
  Index: SVGTextElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTextElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGTextElementImpl.h	1 Sep 2005 07:35:54 -0000	1.4
  +++ SVGTextElementImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -32,10 +32,25 @@
                                  public SVGTransformableImpl
       {
       public:
  -        SVGTextElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGTextElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGTextElementImpl();
   
  -        // 'SVGTextElement' functions
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
  +
  +         // 'SVGTextElement' functions
  +        virtual SVGElementImpl *nearestViewportElement() const;
  +        virtual SVGElementImpl *farthestViewportElement() const;
  +
  +        virtual SVGRectImpl *getBBox() const;
  +        virtual SVGMatrixImpl *getCTM() const;
  +        virtual SVGMatrixImpl *getScreenCTM() const;
  +        virtual SVGMatrixImpl *getTransformToElement(SVGElementImpl *element) const { return 0; }
  +
  +        virtual SVGAnimatedTransformListImpl *transform() const { return 0; }
  +        virtual SVGMatrixImpl *localMatrix() const { return 0; }
  +        
  +        // FIXME: HACK
  +        virtual void updateLocalTransform(SVGTransformListImpl *localTransforms) { };
       };
   };
   
  
  
  
  1.7       +17 -37    SVGSupport/ksvg2/svg/SVGTextPositioningElementImpl.cpp
  
  Index: SVGTextPositioningElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTextPositioningElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGTextPositioningElementImpl.cpp	5 Oct 2005 05:35:29 -0000	1.6
  +++ SVGTextPositioningElementImpl.cpp	21 Nov 2005 08:29:42 -0000	1.7
  @@ -23,7 +23,7 @@
   #include "config.h"
   #include <kdom/core/AttrImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   //#include "SVGDocument.h"
   #include "SVGTextPositioningElementImpl.h"
  @@ -32,8 +32,8 @@
   
   using namespace KSVG;
   
  -SVGTextPositioningElementImpl::SVGTextPositioningElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGTextContentElementImpl(doc, id, prefix)
  +SVGTextPositioningElementImpl::SVGTextPositioningElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGTextContentElementImpl(tagName, doc)
   {
       m_x = m_y = m_dx = m_dy = 0;
       m_rotate = 0;
  @@ -78,42 +78,22 @@
       return lazy_create<SVGAnimatedNumberListImpl>(m_rotate, this);
   }
   
  -void SVGTextPositioningElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGTextPositioningElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_X:
  -        {
  -            x()->baseVal()->parse(value.string(), this, LM_WIDTH);
  -            break;
  -        }
  -        case ATTR_Y:
  -        {
  -            y()->baseVal()->parse(value.string(), this, LM_HEIGHT);
  -            break;
  -        }
  -        case ATTR_DX:
  -        {
  -            dx()->baseVal()->parse(value.string(), this, LM_WIDTH);
  -            break;
  -        }
  -        case ATTR_DY:
  -        {
  -            dy()->baseVal()->parse(value.string(), this, LM_HEIGHT);
  -            break;
  -        }
  -        case ATTR_ROTATE:
  -        {
  -            rotate()->baseVal()->parse(value.string(), this);
  -            break;
  -        }
  -        default:
  -        {
  -            SVGTextContentElementImpl::parseAttribute(attr);
  -        }
  -    };
  +    
  +    if (attr->name() == SVGNames::xAttr)
  +        x()->baseVal()->parse(value.qstring(), this, LM_WIDTH);
  +    else if (attr->name() == SVGNames::yAttr)
  +        y()->baseVal()->parse(value.qstring(), this, LM_HEIGHT);
  +    else if (attr->name() == SVGNames::dxAttr)
  +        dx()->baseVal()->parse(value.qstring(), this, LM_WIDTH);
  +    else if (attr->name() == SVGNames::dyAttr)
  +        dy()->baseVal()->parse(value.qstring(), this, LM_HEIGHT);
  +    else if (attr->name() == SVGNames::rotateAttr)
  +        rotate()->baseVal()->parse(value.qstring(), this);
  +    else
  +        SVGTextContentElementImpl::parseMappedAttribute(attr);
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +2 -2      SVGSupport/ksvg2/svg/SVGTextPositioningElementImpl.h
  
  Index: SVGTextPositioningElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTextPositioningElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGTextPositioningElementImpl.h	1 Sep 2005 07:35:54 -0000	1.4
  +++ SVGTextPositioningElementImpl.h	21 Nov 2005 08:29:42 -0000	1.5
  @@ -33,7 +33,7 @@
       class SVGTextPositioningElementImpl : public SVGTextContentElementImpl
       {
       public:
  -        SVGTextPositioningElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGTextPositioningElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGTextPositioningElementImpl();
   
           // 'SVGTextPositioningElement' functions
  @@ -43,7 +43,7 @@
           SVGAnimatedLengthListImpl *dy() const;
           SVGAnimatedNumberListImpl *rotate() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       private:
           mutable SVGAnimatedLengthListImpl *m_x;
  
  
  
  1.6       +2 -2      SVGSupport/ksvg2/svg/SVGTitleElementImpl.cpp
  
  Index: SVGTitleElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTitleElementImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGTitleElementImpl.cpp	5 Oct 2005 05:35:30 -0000	1.5
  +++ SVGTitleElementImpl.cpp	21 Nov 2005 08:29:43 -0000	1.6
  @@ -25,7 +25,7 @@
   
   using namespace KSVG;
   
  -SVGTitleElementImpl::SVGTitleElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix) : SVGStyledElementImpl(doc, id, prefix), SVGLangSpaceImpl()
  +SVGTitleElementImpl::SVGTitleElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc) : SVGStyledElementImpl(tagName, doc), SVGLangSpaceImpl()
   {
   }
   
  @@ -33,7 +33,7 @@
   {
   }
   
  -KDOM::DOMStringImpl *SVGTitleElementImpl::title() const
  +KDOM::DOMString SVGTitleElementImpl::title() const
   {
       return textContent();
   }
  
  
  
  1.5       +2 -2      SVGSupport/ksvg2/svg/SVGTitleElementImpl.h
  
  Index: SVGTitleElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTitleElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGTitleElementImpl.h	1 Sep 2005 07:35:54 -0000	1.4
  +++ SVGTitleElementImpl.h	21 Nov 2005 08:29:43 -0000	1.5
  @@ -32,10 +32,10 @@
                                   public SVGLangSpaceImpl
       {
       public:
  -        SVGTitleElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGTitleElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGTitleElementImpl();
   
  -        KDOM::DOMStringImpl *title() const;
  +        KDOM::DOMString title() const;
       };
   };
   
  
  
  
  1.7       +1 -1      SVGSupport/ksvg2/svg/SVGTransformImpl.cpp
  
  Index: SVGTransformImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTransformImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGTransformImpl.cpp	24 Oct 2005 06:31:54 -0000	1.6
  +++ SVGTransformImpl.cpp	21 Nov 2005 08:29:43 -0000	1.7
  @@ -65,7 +65,7 @@
       m_type = SVG_TRANSFORM_MATRIX;
       m_angle = 0;
       
  -    KDOM_SAFE_SET(m_matrix, matrix);
  +    KDOM::KDOM_SAFE_SET(m_matrix, matrix);
   }
   
   void SVGTransformImpl::setTranslate(double tx, double ty)
  
  
  
  1.8       +3 -111    SVGSupport/ksvg2/svg/SVGTransformableImpl.cpp
  
  Index: SVGTransformableImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTransformableImpl.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- SVGTransformableImpl.cpp	5 Oct 2005 05:35:30 -0000	1.7
  +++ SVGTransformableImpl.cpp	21 Nov 2005 08:29:43 -0000	1.8
  @@ -27,12 +27,11 @@
   #include <kdom/core/AttrImpl.h>
   
   #include <kcanvas/KCanvas.h>
  -#include <kcanvas/KCanvasItem.h>
  +#include <kcanvas/RenderPath.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGMatrixImpl.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGTransformableImpl.h"
   #include "SVGStyledElementImpl.h"
   #include "SVGDOMImplementationImpl.h"
  @@ -42,117 +41,10 @@
   
   SVGTransformableImpl::SVGTransformableImpl() : SVGLocatableImpl()
   {
  -    m_transform = 0;
  -    m_localMatrix = 0;
   }
   
   SVGTransformableImpl::~SVGTransformableImpl()
   {
  -    if(m_transform)
  -        m_transform->deref();
  -    if(m_localMatrix)
  -        m_localMatrix->deref();
  -}
  -
  -SVGAnimatedTransformListImpl *SVGTransformableImpl::transform() const
  -{
  -    const SVGStyledElementImpl *context = dynamic_cast<const SVGStyledElementImpl *>(this);
  -    return lazy_create<SVGAnimatedTransformListImpl>(m_transform, context);
  -}
  -
  -SVGMatrixImpl *SVGTransformableImpl::localMatrix() const
  -{
  -    return lazy_create<SVGMatrixImpl>(m_localMatrix);
  -}
  -
  -SVGMatrixImpl *SVGTransformableImpl::getCTM() const
  -{
  -    SVGMatrixImpl *ctm = SVGLocatableImpl::getCTM();
  -
  -    if(m_localMatrix)
  -        ctm->multiply(m_localMatrix);
  -
  -    return ctm;
  -}
  -
  -SVGMatrixImpl *SVGTransformableImpl::getScreenCTM() const
  -{
  -    SVGMatrixImpl *ctm = SVGLocatableImpl::getScreenCTM();
  -
  -    if(m_localMatrix)
  -        ctm->multiply(m_localMatrix);
  -
  -    return ctm;
  -}
  -
  -void SVGTransformableImpl::updateLocalTransform(SVGTransformListImpl *localTransforms)
  -{
  -    // Update cached local matrix
  -    SVGTransformImpl *localTransform = localTransforms->concatenate();
  -    if(localTransform)
  -    {
  -        localTransform->ref();
  -        
  -        KDOM_SAFE_SET(m_localMatrix, localTransform->matrix());
  -
  -        localTransform->deref();
  -    }
  -}
  -
  -void SVGTransformableImpl::updateSubtreeMatrices(KDOM::NodeImpl *node)
  -{
  -    if(!node)
  -        return;
  -
  -    // First update local matrix...
  -    SVGStyledElementImpl *styled = dynamic_cast<SVGStyledElementImpl *>(node);
  -    SVGTransformableImpl *transform = dynamic_cast<SVGTransformableImpl *>(node);
  -
  -    if(styled && transform && transform->localMatrix())
  -    {
  -        QMatrix useMatrix = transform->localMatrix()->qmatrix();
  -    
  -        KDOM::NodeImpl *parentElement = node->parentNode();
  -        if(parentElement && parentElement->id() == ID_G)
  -        {
  -            SVGMatrixImpl *ctm = transform->getCTM();
  -            ctm->ref();
  -                
  -            useMatrix *= ctm->qmatrix();
  -
  -            ctm->deref();
  -        }
  -
  -        styled->updateCTM(useMatrix);
  -    }
  -
  -    // ... then update the whole subtree, if possible.
  -    for(KDOM::NodeImpl *n = node->firstChild(); n != 0; n = n->nextSibling())
  -        updateSubtreeMatrices(n);
  -}
  -
  -bool SVGTransformableImpl::parseAttribute(KDOM::AttributeImpl *attr)
  -{
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    if(id == ATTR_TRANSFORM)
  -    {
  -        SVGTransformListImpl *localTransforms = transform()->baseVal();
  -        
  -        localTransforms->clear();
  -        SVGTransformableImpl::parseTransformAttribute(localTransforms, attr->value());
  -
  -        // Update cached local matrix
  -        updateLocalTransform(localTransforms);
  -
  -        SVGStyledElementImpl *styledElement = dynamic_cast<SVGStyledElementImpl *>(this);
  -        if(!styledElement)
  -            return false;
  -            
  -        updateSubtreeMatrices(styledElement);
  -        return true;
  -    }
  -
  -    return false;
   }
   
   void SVGTransformableImpl::parseTransformAttribute(SVGTransformListImpl *list, KDOM::DOMStringImpl *transform)
  @@ -161,7 +53,7 @@
           return;
   
       // Split string for handling 1 transform statement at a time
  -    QStringList subtransforms = QStringList::split(')', KDOM::DOMString(transform).string());
  +    QStringList subtransforms = QStringList::split(')', KDOM::DOMString(transform).qstring());
       QStringList::ConstIterator it = subtransforms.begin();
       QStringList::ConstIterator end = subtransforms.end();
       for(; it != end; ++it)
  
  
  
  1.6       +5 -17     SVGSupport/ksvg2/svg/SVGTransformableImpl.h
  
  Index: SVGTransformableImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGTransformableImpl.h,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGTransformableImpl.h	8 Sep 2005 08:03:37 -0000	1.5
  +++ SVGTransformableImpl.h	21 Nov 2005 08:29:43 -0000	1.6
  @@ -46,24 +46,12 @@
           virtual ~SVGTransformableImpl();
   
           // 'SVGTransformable' functions
  -        SVGAnimatedTransformListImpl *transform() const;
  -        SVGMatrixImpl *localMatrix() const;
  -
  -        // Derived from: 'SVGLocatable'
  -        virtual SVGMatrixImpl *getCTM() const;
  -        virtual SVGMatrixImpl *getScreenCTM() const;
  -
  -        // Special parseAttribute function, returning a bool,
  -        // whether it could handle the passed attribute or not.
  -        bool parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual SVGAnimatedTransformListImpl *transform() const = 0;
  +        virtual SVGMatrixImpl *localMatrix() const = 0;
  +        
  +        virtual void updateLocalTransform(SVGTransformListImpl *localTransforms) = 0;
  +        
           static void parseTransformAttribute(SVGTransformListImpl *list, KDOM::DOMStringImpl *transform);
  -
  -        void updateSubtreeMatrices(KDOM::NodeImpl *node);
  -        void updateLocalTransform(SVGTransformListImpl *localTransforms);
  -
  -    protected:
  -        mutable SVGMatrixImpl *m_localMatrix;
  -        mutable SVGAnimatedTransformListImpl *m_transform;
       };
   };
   
  
  
  
  1.7       +6 -8      SVGSupport/ksvg2/svg/SVGURIReferenceImpl.cpp
  
  Index: SVGURIReferenceImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGURIReferenceImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGURIReferenceImpl.cpp	5 Oct 2005 05:35:30 -0000	1.6
  +++ SVGURIReferenceImpl.cpp	21 Nov 2005 08:29:43 -0000	1.7
  @@ -24,7 +24,7 @@
   #include <kdom/core/NodeImpl.h>
   #include <kdom/core/AttrImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGURIReferenceImpl.h"
   #include "SVGStyledElementImpl.h"
  @@ -45,17 +45,15 @@
   
   SVGAnimatedStringImpl *SVGURIReferenceImpl::href() const
   {
  -    const SVGStyledElementImpl *context = dynamic_cast<const SVGStyledElementImpl *>(this);
  -    return lazy_create<SVGAnimatedStringImpl>(m_href, context);
  +    //const SVGStyledElementImpl *context = dynamic_cast<const SVGStyledElementImpl *>(this);
  +    return lazy_create<SVGAnimatedStringImpl>(m_href, (const SVGStyledElementImpl *)0); // FIXME: 0 is a hack
   }
   
  -bool SVGURIReferenceImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +bool SVGURIReferenceImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMString value(attr->value());
  -    if(id == ATTR_HREF || KDOM::DOMString(attr->name()) == "xlink:href")
  +    if (attr->name() == SVGNames::hrefAttr) // || attr->name() == XLinkNames::hrefAttr)
       {
  -        href()->setBaseVal(value.handle());
  +        href()->setBaseVal(attr->value().impl());
           return true;
       }
   
  
  
  
  1.4       +3 -1      SVGSupport/ksvg2/svg/SVGURIReferenceImpl.h
  
  Index: SVGURIReferenceImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGURIReferenceImpl.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SVGURIReferenceImpl.h	1 Sep 2005 07:35:56 -0000	1.3
  +++ SVGURIReferenceImpl.h	21 Nov 2005 08:29:43 -0000	1.4
  @@ -23,6 +23,8 @@
   #ifndef KSVG_SVGURIReferenceImpl_H
   #define KSVG_SVGURIReferenceImpl_H
   
  +#include <qstring.h>
  +
   namespace KDOM
   {
       class AttributeImpl;
  @@ -41,7 +43,7 @@
           // 'SVGURIReference' functions
           virtual SVGAnimatedStringImpl *href() const;
   
  -        bool parseAttribute(KDOM::AttributeImpl *attr);
  +        bool parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           // Helpers
           static QString getTarget(const QString &url);
  
  
  
  1.10      +61 -77    SVGSupport/ksvg2/svg/SVGUseElementImpl.cpp
  
  Index: SVGUseElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGUseElementImpl.cpp,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- SVGUseElementImpl.cpp	11 Oct 2005 09:19:23 -0000	1.9
  +++ SVGUseElementImpl.cpp	21 Nov 2005 08:29:43 -0000	1.10
  @@ -25,9 +25,8 @@
   #include <kdom/core/AttrImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
  -#include "SVGDocumentImpl.h"
   #include "SVGGElementImpl.h"
   #include "SVGSVGElementImpl.h"
   #include "SVGUseElementImpl.h"
  @@ -40,13 +39,13 @@
   #include <kcanvas/KCanvas.h>
   #include <kcanvas/KCanvasCreator.h>
   #include <kcanvas/KCanvasContainer.h>
  -#include <kcanvas/device/KRenderingStyle.h>
  +#include "KCanvasRenderingStyle.h"
   #include <kcanvas/device/KRenderingDevice.h>
   
   using namespace KSVG;
   
  -SVGUseElementImpl::SVGUseElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGTransformableImpl(), SVGURIReferenceImpl()
  +SVGUseElementImpl::SVGUseElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledTransformableElementImpl(tagName, doc), SVGTestsImpl(), SVGLangSpaceImpl(), SVGExternalResourcesRequiredImpl(), SVGURIReferenceImpl()
   {
       m_x = m_y = m_width = m_height = 0;
   }
  @@ -83,110 +82,95 @@
       return lazy_create<SVGAnimatedLengthImpl>(m_height, this, LM_HEIGHT, viewportElement());
   }
   
  -void SVGUseElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGUseElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
  -    KDOM::DOMStringImpl *value = attr->value();
  -    switch(id)
  -    {
  -        case ATTR_X:
  -        {
  -            x()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_Y:
  -        {
  -            y()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_WIDTH:
  -        {
  -            width()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        case ATTR_HEIGHT:
  -        {
  -            height()->baseVal()->setValueAsString(value);
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGTestsImpl::parseAttribute(attr)) return;
  -            if(SVGLangSpaceImpl::parseAttribute(attr)) return;
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGTransformableImpl::parseAttribute(attr)) return;
  -            if(SVGURIReferenceImpl::parseAttribute(attr)) return;
  -
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +    const KDOM::AtomicString& value = attr->value();
  +    
  +    if (attr->name() == SVGNames::xAttr)
  +        x()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::yAttr)
  +        y()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::widthAttr)
  +        width()->baseVal()->setValueAsString(value.impl());
  +    else if (attr->name() == SVGNames::heightAttr)
  +        height()->baseVal()->setValueAsString(value.impl());
  +    else {
  +        if(SVGTestsImpl::parseMappedAttribute(attr)) return;
  +        if(SVGLangSpaceImpl::parseMappedAttribute(attr)) return;
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)) return;
  +        if(SVGURIReferenceImpl::parseMappedAttribute(attr)) return;
  +        SVGStyledTransformableElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
  -void SVGUseElementImpl::close()
  +void SVGUseElementImpl::closeRenderer()
   {
  -    QString ref = KDOM::DOMString(href()->baseVal()).string();
  +    QString ref = KDOM::DOMString(href()->baseVal()).qstring();
       KDOM::DOMString targetId = SVGURIReferenceImpl::getTarget(ref);
  -    KDOM::ElementImpl *targetElement = ownerDocument()->getElementById(targetId.handle());
  +    KDOM::ElementImpl *targetElement = ownerDocument()->getElementById(targetId.impl());
       SVGElementImpl *target = svg_dynamic_cast(targetElement);
       if (!target)
       {
  -        getDocument()->addForwardReference(this);
  +        //getDocument()->addForwardReference(this);
           return;
       }
   
       float _x = x()->baseVal()->value(), _y = y()->baseVal()->value();
       float _w = width()->baseVal()->value(), _h = height()->baseVal()->value();
       
  -    QString w = QString::number(_w);
  -    QString h = QString::number(_h);
  +    KDOM::DOMString wString = QString::number(_w);
  +    KDOM::DOMString hString = QString::number(_h);
       
  -    QString trans = QString::fromLatin1("translate(%1, %2)").arg(_x).arg(_y);    
  -    if(target->id() == ID_SYMBOL)
  +    int exceptioncode;
  +    QString trans = QString::fromLatin1("translate(%1, %2)").arg(_x).arg(_y);
  +    if(target->hasTagName(SVGNames::symbolTag))
       {
  -        SVGElementImpl *dummy = new SVGSVGElementImpl(docPtr(), ID_SVG, 0);
  +        SVGElementImpl *dummy = new SVGSVGElementImpl(SVGNames::svgTag, getDocument());
           if(_w > 0)
  -            dummy->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("width").handle(), KDOM::DOMString(w).handle());
  +            dummy->setAttribute(SVGNames::widthAttr, wString.impl());
           if(_h > 0)
  -            dummy->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("height").handle(), KDOM::DOMString(h).handle());
  +            dummy->setAttribute(SVGNames::heightAttr, hString.impl());
           
           SVGSymbolElementImpl *symbol = static_cast<SVGSymbolElementImpl *>(target);
  -        if(symbol->hasAttribute(new KDOM::DOMStringImpl("viewBox")))
  -            dummy->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("viewBox").handle(), symbol->getAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("viewBox").handle()));
  -        target->cloneChildNodes(dummy, docPtr());
  +        if (symbol->hasAttribute(SVGNames::viewBoxAttr)) {
  +            const KDOM::AtomicString& symbolViewBox = symbol->getAttribute(SVGNames::viewBoxAttr);
  +            dummy->setAttribute(SVGNames::viewBoxAttr, symbolViewBox);
  +        }
  +        target->cloneChildNodes(dummy);
   
  -        SVGElementImpl *dummy2 = new SVGDummyElementImpl(docPtr(), ID_G, 0);
  -        dummy2->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("transform").handle(), KDOM::DOMString(trans).handle());
  +        SVGElementImpl *dummy2 = new SVGDummyElementImpl(SVGNames::gTag, getDocument());
  +        dummy2->setAttribute(SVGNames::transformAttr, KDOM::DOMString(trans));
           
  -        appendChild(dummy2);        
  -        dummy2->appendChild(dummy);
  +        appendChild(dummy2, exceptioncode);
  +        dummy2->appendChild(dummy, exceptioncode);
       }
  -    else if(target->id() == ID_SVG)
  +    else if(target->hasTagName(SVGNames::svgTag))
       {
  -        SVGDummyElementImpl *dummy = new SVGDummyElementImpl(docPtr(), ID_G, 0);
  -        dummy->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("transform").handle(), KDOM::DOMString(trans).handle());
  +        SVGDummyElementImpl *dummy = new SVGDummyElementImpl(SVGNames::gTag, getDocument());
  +        dummy->setAttribute(SVGNames::transformAttr, KDOM::DOMString(trans));
           
  -        SVGElementImpl *root = static_cast<SVGElementImpl *>(target->cloneNode(true, docPtr()));
  -        if(hasAttribute(KDOM::DOMString("width").handle()))
  -            root->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("width").handle(), KDOM::DOMString(w).handle());
  +        SVGElementImpl *root = static_cast<SVGElementImpl *>(target->cloneNode(true));
  +        if(hasAttribute(SVGNames::widthAttr))
  +            root->setAttribute(SVGNames::widthAttr, wString.impl());
               
  -        if(hasAttribute(KDOM::DOMString("height").handle()))
  -            root->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("height").handle(), KDOM::DOMString(h).handle());
  +        if(hasAttribute(SVGNames::heightAttr))
  +            root->setAttribute(SVGNames::heightAttr, hString.impl());
               
  -        appendChild(dummy);
  -        dummy->appendChild(root);
  +        appendChild(dummy, exceptioncode);
  +        dummy->appendChild(root, exceptioncode);
       }
       else
       {
  -        SVGDummyElementImpl *dummy = new SVGDummyElementImpl(docPtr(), ID_G, 0);
  -        dummy->setAttributeNS(KDOM::NS_SVG.handle(), KDOM::DOMString("transform").handle(), KDOM::DOMString(trans).handle());
  +        SVGDummyElementImpl *dummy = new SVGDummyElementImpl(SVGNames::gTag, getDocument());
  +        dummy->setAttribute(SVGNames::transformAttr, trans);
           
  -        KDOM::NodeImpl *root = target->cloneNode(true, docPtr());
  +        KDOM::NodeImpl *root = target->cloneNode(true);
           
  -        appendChild(dummy);
  -        dummy->appendChild(root);
  +        appendChild(dummy, exceptioncode);
  +        dummy->appendChild(root, exceptioncode);
       }
   
  -    SVGElementImpl::close();
  +    SVGElementImpl::closeRenderer();
   }
   
   bool SVGUseElementImpl::hasChildNodes() const
  @@ -194,9 +178,9 @@
       return false;
   }
   
  -KCanvasItem *SVGUseElementImpl::createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const
  +khtml::RenderObject *SVGUseElementImpl::createRenderer(RenderArena *arena, khtml::RenderStyle *style)
   {
  -    return KCanvasCreator::self()->createContainer(canvas, style);
  +    return canvas()->renderingDevice()->createContainer(arena, style, this);
   }
   
   // vim:ts=4:noet
  
  
  
  1.5       +7 -9      SVGSupport/ksvg2/svg/SVGUseElementImpl.h
  
  Index: SVGUseElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGUseElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGUseElementImpl.h	1 Sep 2005 07:35:56 -0000	1.4
  +++ SVGUseElementImpl.h	21 Nov 2005 08:29:43 -0000	1.5
  @@ -26,29 +26,27 @@
   #include "SVGTestsImpl.h"
   #include "SVGLangSpaceImpl.h"
   #include "SVGURIReferenceImpl.h"
  -#include "SVGStyledElementImpl.h"
  -#include "SVGTransformableImpl.h"
  +#include "SVGStyledTransformableElementImpl.h"
   #include "SVGExternalResourcesRequiredImpl.h"
   
   namespace KSVG
   {
       //class SVGElementInstanceImpl;
       class SVGAnimatedLengthImpl;
  -    class SVGUseElementImpl : public SVGStyledElementImpl,
  +    class SVGUseElementImpl : public SVGStyledTransformableElementImpl,
                                 public SVGTestsImpl,
                                 public SVGLangSpaceImpl,
                                 public SVGExternalResourcesRequiredImpl,
  -                              public SVGTransformableImpl,
                                 public SVGURIReferenceImpl
       {
       public:
  -        SVGUseElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id,  KDOM::DOMStringImpl *prefix);
  +        SVGUseElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGUseElementImpl();
   
           // Derived from: 'ElementImpl'
           virtual bool hasChildNodes() const;
   
  -        virtual void close();
  +        virtual void closeRenderer();
   
           // 'SVGUseElement' functions
           SVGAnimatedLengthImpl *x() const;
  @@ -57,10 +55,10 @@
           SVGAnimatedLengthImpl *width() const;
           SVGAnimatedLengthImpl *height() const;
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *attr);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
  -        virtual bool implementsCanvasItem() const { return true; }
  -        virtual KCanvasItem *createCanvasItem(KCanvas *canvas, KRenderingStyle *style) const;
  +        virtual bool rendererIsNeeded(khtml::RenderStyle *) { return true; }
  +        virtual khtml::RenderObject *createRenderer(RenderArena *arena, khtml::RenderStyle *style);
   
           // TODO: not sure about this API yet
           // SVGElementInstanceImpl *instanceRoot() const;
  
  
  
  1.7       +14 -21    SVGSupport/ksvg2/svg/SVGViewElementImpl.cpp
  
  Index: SVGViewElementImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGViewElementImpl.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SVGViewElementImpl.cpp	5 Oct 2005 05:35:30 -0000	1.6
  +++ SVGViewElementImpl.cpp	21 Nov 2005 08:29:43 -0000	1.7
  @@ -25,7 +25,7 @@
   #include <kdom/core/AttrImpl.h>
   #include <kdom/core/NamedAttrMapImpl.h>
   
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGStringListImpl.h"
   #include "SVGViewElementImpl.h"
  @@ -34,8 +34,8 @@
   
   using namespace KSVG;
   
  -SVGViewElementImpl::SVGViewElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix)
  -: SVGStyledElementImpl(doc, id, prefix), SVGExternalResourcesRequiredImpl(),
  +SVGViewElementImpl::SVGViewElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  +: SVGStyledElementImpl(tagName, doc), SVGExternalResourcesRequiredImpl(),
   SVGFitToViewBoxImpl(), SVGZoomAndPanImpl()
   {
       m_viewTarget = 0;
  @@ -52,25 +52,18 @@
       return lazy_create<SVGStringListImpl>(m_viewTarget);
   }
   
  -void SVGViewElementImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +void SVGViewElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_VIEWTARGET:
  -        {
  -            viewTarget()->reset(value.string());
  -            break;
  -        }
  -        default:
  -        {
  -            if(SVGExternalResourcesRequiredImpl::parseAttribute(attr)) return;
  -            if(SVGFitToViewBoxImpl::parseAttribute(attr)) return;
  -            if(SVGZoomAndPanImpl::parseAttribute(attr)) return;
  -
  -            SVGStyledElementImpl::parseAttribute(attr);
  -        }
  -    };
  +    if (attr->name() == SVGNames::viewTargetAttr) {
  +        viewTarget()->reset(value.qstring());
  +    } else {
  +        if(SVGExternalResourcesRequiredImpl::parseMappedAttribute(attr)
  +           || SVGFitToViewBoxImpl::parseMappedAttribute(attr)
  +           || SVGZoomAndPanImpl::parseMappedAttribute(attr))
  +            return;
  +
  +        SVGStyledElementImpl::parseMappedAttribute(attr);
  +    }
   }
   
  
  
  
  1.5       +2 -2      SVGSupport/ksvg2/svg/SVGViewElementImpl.h
  
  Index: SVGViewElementImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGViewElementImpl.h,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- SVGViewElementImpl.h	1 Sep 2005 07:35:56 -0000	1.4
  +++ SVGViewElementImpl.h	21 Nov 2005 08:29:43 -0000	1.5
  @@ -37,10 +37,10 @@
                                  public SVGZoomAndPanImpl
       {
       public:
  -        SVGViewElementImpl(KDOM::DocumentPtr *doc, KDOM::NodeImpl::Id id, KDOM::DOMStringImpl *prefix);
  +        SVGViewElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
           virtual ~SVGViewElementImpl();
   
  -        virtual void parseAttribute(KDOM::AttributeImpl *);
  +        virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
           // 'SVGViewElement' functions
           SVGStringListImpl *viewTarget() const;
  
  
  
  1.6       +8 -13     SVGSupport/ksvg2/svg/SVGZoomAndPanImpl.cpp
  
  Index: SVGZoomAndPanImpl.cpp
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGZoomAndPanImpl.cpp,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SVGZoomAndPanImpl.cpp	5 Oct 2005 05:35:30 -0000	1.5
  +++ SVGZoomAndPanImpl.cpp	21 Nov 2005 08:29:43 -0000	1.6
  @@ -24,7 +24,7 @@
   #include <kdom/core/AttrImpl.h>
   
   #include "ksvg.h"
  -#include "svgattrs.h"
  +#include "SVGNames.h"
   #include "SVGHelper.h"
   #include "SVGZoomAndPanImpl.h"
   
  @@ -49,20 +49,15 @@
       m_zoomAndPan = zoomAndPan;
   }
   
  -bool SVGZoomAndPanImpl::parseAttribute(KDOM::AttributeImpl *attr)
  +bool SVGZoomAndPanImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
   {
  -    int id = (attr->id() & NodeImpl_IdLocalMask);
       KDOM::DOMString value(attr->value());
  -    switch(id)
  -    {
  -        case ATTR_ZOOMANDPAN:
  -        {
  -            if(value == "disable")
  -                setZoomAndPan(SVG_ZOOMANDPAN_DISABLE);
  -            else if(value == "magnify")
  -                setZoomAndPan(SVG_ZOOMANDPAN_MAGNIFY);
  -            return true;
  -        }
  +    if (attr->name() == SVGNames::zoomAndPanAttr) {
  +        if(value == "disable")
  +            setZoomAndPan(SVG_ZOOMANDPAN_DISABLE);
  +        else if(value == "magnify")
  +            setZoomAndPan(SVG_ZOOMANDPAN_MAGNIFY);
  +        return true;
       }
   
       return false;
  
  
  
  1.4       +1 -1      SVGSupport/ksvg2/svg/SVGZoomAndPanImpl.h
  
  Index: SVGZoomAndPanImpl.h
  ===================================================================
  RCS file: /cvs/root/SVGSupport/ksvg2/svg/SVGZoomAndPanImpl.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- SVGZoomAndPanImpl.h	1 Sep 2005 07:35:56 -0000	1.3
  +++ SVGZoomAndPanImpl.h	21 Nov 2005 08:29:43 -0000	1.4
  @@ -40,7 +40,7 @@
           unsigned short zoomAndPan() const;
           virtual void setZoomAndPan(unsigned short zoomAndPan);
   
  -        bool parseAttribute(KDOM::AttributeImpl *attr);
  +        bool parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
   
       private:
           unsigned short m_zoomAndPan;
  
  
  
  1.1                  SVGSupport/ksvg2/svg/SVGStyledLocatableElementImpl.cpp
  
  Index: SVGStyledLocatableElementImpl.cpp
  ===================================================================
  /*
      Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox at kde.org>
                    2004, 2005 Rob Buis <buis at 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.
  */
  
  #include "config.h"
  #include <kdom/kdom.h>
  #include "SVGRectImpl.h"
  #include "SVGMatrixImpl.h"
  #include "SVGElementImpl.h"
  #include "SVGStyledLocatableElementImpl.h"
  #include "SVGSVGElementImpl.h"
  
  #include <kcanvas/KCanvasItem.h>
  
  using namespace KSVG;
  
  SVGStyledLocatableElementImpl::SVGStyledLocatableElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  : SVGStyledElementImpl(tagName, doc), SVGLocatableImpl()
  {
  }
  
  SVGStyledLocatableElementImpl::~SVGStyledLocatableElementImpl()
  {
  }
  
  SVGElementImpl *SVGStyledLocatableElementImpl::nearestViewportElement() const
  {
      return SVGLocatableImpl::nearestViewportElement(this);
  }
  
  SVGElementImpl *SVGStyledLocatableElementImpl::farthestViewportElement() const
  {
      return SVGLocatableImpl::farthestViewportElement(this);
  }
  
  SVGRectImpl *SVGStyledLocatableElementImpl::getBBox() const
  {
      return SVGLocatableImpl::getBBox(this);
  }
  
  SVGMatrixImpl *SVGStyledLocatableElementImpl::getCTM() const
  {
      return SVGLocatableImpl::getCTM(this);
  }
  
  SVGMatrixImpl *SVGStyledLocatableElementImpl::getScreenCTM() const
  {
      return SVGLocatableImpl::getScreenCTM(this);
  }
  
  SVGMatrixImpl *SVGStyledLocatableElementImpl::getTransformToElement(SVGElementImpl *) const
  {
      // TODO!
      return 0;
  }
  
  // vim:ts=4:noet
  
  
  
  1.1                  SVGSupport/ksvg2/svg/SVGStyledLocatableElementImpl.h
  
  Index: SVGStyledLocatableElementImpl.h
  ===================================================================
  /*
      Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox at kde.org>
                    2004, 2005 Rob Buis <buis at 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 KSVG_SVGStyledLocatableElementImpl_H
  #define KSVG_SVGStyledLocatableElementImpl_H
  
  #include "SVGStyledElementImpl.h"
  #include "SVGLocatableImpl.h"
  
  namespace KSVG
  {
      class SVGRectImpl;
      class SVGMatrixImpl;
      class SVGElementImpl;
      class SVGStyledLocatableElementImpl : public SVGStyledElementImpl, public SVGLocatableImpl
      {
      public:
          SVGStyledLocatableElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
          virtual ~SVGStyledLocatableElementImpl();
          
          virtual bool isStyledLocatable() const { return true; }
  
          // 'SVGStyledLocatableElement' functions
          virtual SVGElementImpl *nearestViewportElement() const;
          virtual SVGElementImpl *farthestViewportElement() const;
  
          virtual SVGRectImpl *getBBox() const;
          virtual SVGMatrixImpl *getCTM() const;
          virtual SVGMatrixImpl *getScreenCTM() const;
          virtual SVGMatrixImpl *getTransformToElement(SVGElementImpl *element) const;
      };
  };
  
  #endif
  
  // vim:ts=4:noet
  
  
  
  1.1                  SVGSupport/ksvg2/svg/SVGStyledTransformableElementImpl.cpp
  
  Index: SVGStyledTransformableElementImpl.cpp
  ===================================================================
  /*
      Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox at kde.org>
                    2004, 2005 Rob Buis <buis at 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.
  */
  
  #include "config.h"
  #include <kdebug.h>
  #include <qregexp.h>
  #include <qstringlist.h>
  
  #include <kdom/core/AttrImpl.h>
  
  #include <kcanvas/KCanvas.h>
  #include <kcanvas/KCanvasItem.h>
  
  #include "SVGHelper.h"
  #include "SVGMatrixImpl.h"
  #include "SVGDocumentImpl.h"
  #include "SVGStyledTransformableElementImpl.h"
  #include "SVGStyledElementImpl.h"
  #include "SVGDOMImplementationImpl.h"
  #include "SVGAnimatedTransformListImpl.h"
  
  using namespace KSVG;
  
  SVGStyledTransformableElementImpl::SVGStyledTransformableElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc)
  : SVGStyledLocatableElementImpl(tagName, doc), SVGTransformableImpl()
  {
      m_transform = 0;
      m_localMatrix = 0;
  }
  
  SVGStyledTransformableElementImpl::~SVGStyledTransformableElementImpl()
  {
      if(m_transform)
          m_transform->deref();
      if(m_localMatrix)
          m_localMatrix->deref();
  }
  
  SVGAnimatedTransformListImpl *SVGStyledTransformableElementImpl::transform() const
  {
      return lazy_create<SVGAnimatedTransformListImpl>(m_transform, this);
  }
  
  SVGMatrixImpl *SVGStyledTransformableElementImpl::localMatrix() const
  {
      return lazy_create<SVGMatrixImpl>(m_localMatrix);
  }
  
  SVGMatrixImpl *SVGStyledTransformableElementImpl::getCTM() const
  {
      SVGMatrixImpl *ctm = SVGLocatableImpl::getCTM(this);
  
      if(m_localMatrix)
          ctm->multiply(m_localMatrix);
  
      return ctm;
  }
  
  SVGMatrixImpl *SVGStyledTransformableElementImpl::getScreenCTM() const
  {
      SVGMatrixImpl *ctm = SVGLocatableImpl::getScreenCTM(this);
  
      if(m_localMatrix)
          ctm->multiply(m_localMatrix);
  
      return ctm;
  }
  
  void SVGStyledTransformableElementImpl::updateLocalTransform(SVGTransformListImpl *localTransforms)
  {
      // Update cached local matrix
      SharedPtr<SVGTransformImpl> localTransform = localTransforms->concatenate();
      if(localTransform) {
          KDOM::KDOM_SAFE_SET(m_localMatrix, localTransform->matrix());
          if (renderer()) {
              renderer()->setLocalTransform(m_localMatrix->qmatrix());
              renderer()->setNeedsLayout(true);
          }
      }
  }
  
  void SVGStyledTransformableElementImpl::parseMappedAttribute(KDOM::MappedAttributeImpl *attr)
  {
      if(attr->name() == SVGNames::transformAttr)
      {
          SVGTransformListImpl *localTransforms = transform()->baseVal();
  
          localTransforms->clear();
          SVGTransformableImpl::parseTransformAttribute(localTransforms, attr->value().impl());
  
          // Update cached local matrix
          updateLocalTransform(localTransforms);
      }
      else
          SVGStyledElementImpl::parseMappedAttribute(attr);
  }
  
  SVGElementImpl *SVGStyledTransformableElementImpl::nearestViewportElement() const
  {
      return SVGTransformableImpl::nearestViewportElement(this);
  }
  
  SVGElementImpl *SVGStyledTransformableElementImpl::farthestViewportElement() const
  {
      return SVGTransformableImpl::farthestViewportElement(this);
  }
  
  SVGRectImpl *SVGStyledTransformableElementImpl::getBBox() const
  {
      return SVGTransformableImpl::getBBox(this);
  }
  
  SVGMatrixImpl *SVGStyledTransformableElementImpl::getTransformToElement(SVGElementImpl *) const
  {
      return 0;
  }
  
  void SVGStyledTransformableElementImpl::attach()
  {
      SVGStyledElementImpl::attach();
  
      if (renderer() && m_localMatrix) {
          renderer()->setLocalTransform(m_localMatrix->qmatrix());
          renderer()->setNeedsLayout(true);
      }
  }
  
  
  // vim:ts=4:noet
  
  
  
  1.1                  SVGSupport/ksvg2/svg/SVGStyledTransformableElementImpl.h
  
  Index: SVGStyledTransformableElementImpl.h
  ===================================================================
  /*
      Copyright (C) 2004, 2005 Nikolas Zimmermann <wildfox at kde.org>
                    2004, 2005 Rob Buis <buis at 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 KSVG_SVGStyledTransformableElementImpl_H
  #define KSVG_SVGStyledTransformableElementImpl_H
  
  #include "SVGStyledLocatableElementImpl.h"
  #include "SVGTransformableImpl.h"
  
  class QMatrix;
  
  namespace KDOM
  {
      class NodeImpl;
      class DOMStringImpl;
      class AttributeImpl;
  };
  
  namespace KSVG
  {
      class SVGMatrixImpl;
      class SVGTransformListImpl;
      class SVGAnimatedTransformListImpl;
      class SVGStyledTransformableElementImpl : public SVGStyledLocatableElementImpl, public SVGTransformableImpl
      {
      public:
          SVGStyledTransformableElementImpl(const KDOM::QualifiedName& tagName, KDOM::DocumentImpl *doc);
          virtual ~SVGStyledTransformableElementImpl();
          
          virtual bool isStyledTransformable() const { return true; }
  
          // 'SVGTransformable' functions
          virtual SVGAnimatedTransformListImpl *transform() const;
          virtual SVGMatrixImpl *localMatrix() const;
  
          // Derived from: 'SVGLocatable'
          virtual SVGMatrixImpl *getCTM() const;
          virtual SVGMatrixImpl *getScreenCTM() const;
          virtual SVGElementImpl *nearestViewportElement() const;
          virtual SVGElementImpl *farthestViewportElement() const;
  
          virtual SVGRectImpl *getBBox() const;
          virtual SVGMatrixImpl *getTransformToElement(SVGElementImpl *element) const;
  
          virtual void parseMappedAttribute(KDOM::MappedAttributeImpl *attr);
  
          void updateLocalTransform(SVGTransformListImpl *localTransforms);
          
          virtual void attach();
  
      protected:
          mutable SVGMatrixImpl *m_localMatrix;
          mutable SVGAnimatedTransformListImpl *m_transform;
      };
  };
  
  #endif
  
  // vim:ts=4:noet
  
  
  



More information about the webkit-changes mailing list