summaryrefslogtreecommitdiffstats
path: root/ksvg/impl/SVGEcma.cc
diff options
context:
space:
mode:
Diffstat (limited to 'ksvg/impl/SVGEcma.cc')
-rw-r--r--ksvg/impl/SVGEcma.cc844
1 files changed, 0 insertions, 844 deletions
diff --git a/ksvg/impl/SVGEcma.cc b/ksvg/impl/SVGEcma.cc
deleted file mode 100644
index 87eca6e0..00000000
--- a/ksvg/impl/SVGEcma.cc
+++ /dev/null
@@ -1,844 +0,0 @@
-/*
- Copyright (C) 2002-2003 KSVG Team
- 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., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include <typeinfo>
-
-#include <kdebug.h>
-
-#include <dom/dom_exception.h>
-
-#include "CanvasItem.h"
-#include "KSVGCanvas.h"
-
-#include "SVGEcma.h"
-#include "SVGShapeImpl.h"
-#include "SVGHelperImpl.h"
-#include "SVGDocumentImpl.h"
-#include "SVGSVGElementImpl.h"
-
-using namespace KSVG;
-
-#include "SVGEcma.lut.h"
-#include "ksvg_scriptinterpreter.h"
-#include "ksvg_ecmaeventlistener.h"
-#include "ksvg_window.h"
-#include "ksvg_ecma.h"
-
-// SVGDOMNodeBridge
-
-/*
-@namespace KSVG
-@begin SVGDOMNodeBridge::s_hashTable 17
- nodeName SVGDOMNodeBridge::NodeName DontDelete|ReadOnly
- nodeValue SVGDOMNodeBridge::NodeValue DontDelete
- nodeType SVGDOMNodeBridge::NodeType DontDelete|ReadOnly
- parentNode SVGDOMNodeBridge::ParentNode DontDelete|ReadOnly
- childNodes SVGDOMNodeBridge::ChildNodes DontDelete|ReadOnly
- firstChild SVGDOMNodeBridge::FirstChild DontDelete|ReadOnly
- lastChild SVGDOMNodeBridge::LastChild DontDelete|ReadOnly
- previousSibling SVGDOMNodeBridge::PreviousSibling DontDelete|ReadOnly
- nextSibling SVGDOMNodeBridge::NextSibling DontDelete|ReadOnly
- attributes SVGDOMNodeBridge::Attributes DontDelete|ReadOnly
- namespaceURI SVGDOMNodeBridge::NamespaceURI DontDelete|ReadOnly
- prefix SVGDOMNodeBridge::Prefix DontDelete
- localName SVGDOMNodeBridge::LocalName DontDelete|ReadOnly
- ownerDocument SVGDOMNodeBridge::OwnerDocument DontDelete|ReadOnly
-@end
-@namespace KSVG
-@begin SVGDOMNodeBridgeProto::s_hashTable 29
- insertBefore SVGDOMNodeBridge::InsertBefore DontDelete|Function 2
- replaceChild SVGDOMNodeBridge::ReplaceChild DontDelete|Function 2
- removeChild SVGDOMNodeBridge::RemoveChild DontDelete|Function 1
- appendChild SVGDOMNodeBridge::AppendChild DontDelete|Function 1
- hasAttributes SVGDOMNodeBridge::HasAttributes DontDelete|Function 0
- hasChildNodes SVGDOMNodeBridge::HasChildNodes DontDelete|Function 0
- cloneNode SVGDOMNodeBridge::CloneNode DontDelete|Function 1
- normalize SVGDOMNodeBridge::Normalize DontDelete|Function 0
- isSupported SVGDOMNodeBridge::IsSupported DontDelete|Function 2
- addEventListener SVGDOMNodeBridge::AddEventListener DontDelete|Function 3
- removeEventListener SVGDOMNodeBridge::RemoveEventListener DontDelete|Function 3
- contains SVGDOMNodeBridge::Contains DontDelete|Function 1
- getNodeName SVGDOMNodeBridge::GetNodeName DontDelete|Function 0
- getNodeValue SVGDOMNodeBridge::GetNodeValue DontDelete|Function 0
- getNodeType SVGDOMNodeBridge::GetNodeType DontDelete|Function 0
- getParentNode SVGDOMNodeBridge::GetParentNode DontDelete|Function 0
- getChildNodes SVGDOMNodeBridge::GetChildNodes DontDelete|Function 0
- getFirstChild SVGDOMNodeBridge::GetFirstChild DontDelete|Function 0
- getLastChild SVGDOMNodeBridge::GetLastChild DontDelete|Function 0
- getPreviousSibling SVGDOMNodeBridge::GetPreviousSibling DontDelete|Function 0
- getNextSibling SVGDOMNodeBridge::GetNextSibling DontDelete|Function 0
- getAttributes SVGDOMNodeBridge::GetAttributes DontDelete|Function 0
- getNamespaceURI SVGDOMNodeBridge::GetNamespaceURI DontDelete|Function 0
- getPrefix SVGDOMNodeBridge::GetPrefix DontDelete|Function 0
- getLocalName SVGDOMNodeBridge::GetLocalName DontDelete|Function 0
- getOwnerDocument SVGDOMNodeBridge::GetOwnerDocument DontDelete|Function 0
-@end
-*/
-
-KSVG_IMPLEMENT_PROTOTYPE("DOMNode", SVGDOMNodeBridgeProto, SVGDOMNodeBridgeProtoFunc)
-
-Value SVGDOMNodeBridge::getValueProperty(ExecState *exec, int token) const
-{
- switch(token)
- {
- case NodeName:
- return getString(m_impl.nodeName());
- case NodeValue:
- return getString(m_impl.nodeValue());
- case NodeType:
- return Number(m_impl.nodeType());
- case ParentNode:
- return getDOMNode(exec, m_impl.parentNode());
- case ChildNodes:
- return (new SVGDOMNodeListBridge(m_impl.childNodes()))->cache(exec);
- case FirstChild:
- return getDOMNode(exec, m_impl.firstChild());
- case LastChild:
- return getDOMNode(exec, m_impl.lastChild());
- case PreviousSibling:
- return getDOMNode(exec, m_impl.previousSibling());
- case NextSibling:
- return getDOMNode(exec, m_impl.nextSibling());
-// case Attributes: // TODO
- case NamespaceURI:
- return getString(m_impl.namespaceURI());
- case Prefix:
- return getString(m_impl.prefix());
- case LocalName:
- return getString(m_impl.localName());
- case OwnerDocument:
- return getDOMNode(exec, m_impl.ownerDocument());
- default:
- kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
- return Undefined();
- }
-}
-
-void SVGDOMNodeBridge::putValueProperty(ExecState *exec, int token, const Value &value, int)
-{
- switch(token)
- {
- case NodeValue:
- m_impl.setNodeValue(value.toString(exec).string());
- break;
- case Prefix:
- m_impl.setPrefix(value.toString(exec).string());
- break;
- default:
- kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
- }
-}
-
-// Special variantion to update the <text> element,
-// triggered by one of the child nodes
-void updateTextItem(ExecState *exec, const DOM::Node node)
-{
- DOM::Node parent;
- while(!(parent = node.parentNode()).isNull())
- {
- DOM::DOMString name = parent.nodeName();
- if(name == "text" || name == "tspan" || name == "tref")
- {
- SVGHelperImpl::updateItem(exec, parent);
- break;
- }
- }
-}
-
-// Remove item from canvas
-void removeItem(ExecState *exec, DOM::Node &node)
-{
- // Get document
- SVGDocumentImpl *doc = KSVG::Window::retrieveActive(exec)->doc();
-
- // Update canvas
- SVGShapeImpl *shape = dynamic_cast<SVGShapeImpl *>(doc->getElementFromHandle(node.handle()));
- if(shape && shape->item())
- doc->canvas()->removeItem(shape->item());
-}
-
-// parseXML + getURL() need all these 5 functions to work properly
-void correctHandles(SVGElementImpl *main, DOM::Node &node)
-{
- DOM::Element old(node.handle());
- DOM::Element *replace = static_cast<DOM::Element *>(main->ownerDoc()->getElementFromHandle(node.handle()));
-
- if(replace && node.nodeType() == DOM::Node::ELEMENT_NODE)
- *replace = old;
-
- if(node.hasChildNodes())
- {
- for(DOM::Node iterate = node.firstChild(); !iterate.isNull(); iterate = iterate.nextSibling())
- correctHandles(main, iterate);
- }
-}
-
-void integrateTree(SVGElementImpl *main, DOM::Node &node, DOM::Node &newNode, SVGElementImpl *obj, SVGDocumentImpl *doc)
-{
- if(!obj)
- return;
-
- // Add to global element dicts
- doc->addToElemDict(newNode.handle(), obj);
- doc->addToElemDict(node.handle(), obj);
-
- if(node.hasChildNodes())
- {
- DOM::Node iterate2 = newNode.firstChild();
- for(DOM::Node iterate = node.firstChild(); !iterate.isNull(); iterate = iterate.nextSibling())
- {
- integrateTree(main, iterate, iterate2, obj->ownerDoc()->getElementFromHandle(iterate2.handle()), doc);
- iterate2 = iterate2.nextSibling();
- }
- }
-}
-
-void correctDocument(SVGElementImpl *main, DOM::Node &node, SVGElementImpl *obj, SVGDocumentImpl *doc)
-{
- if(!obj)
- return;
-
- // Correct document
- obj->setOwnerDoc(main->ownerDoc());
-
- // Correct rootElement
- if(!obj->ownerSVGElement())
- obj->setOwnerSVGElement(main->ownerSVGElement());
-
- // Correct viewportElement
- if(!obj->viewportElement())
- obj->setViewportElement(main->viewportElement());
-
- // Properly (re-)register events in the current active document
- obj->setupEventListeners(main->ownerDoc(), doc);
-
- if(node.hasChildNodes())
- {
- for(DOM::Node iterate = node.firstChild(); !iterate.isNull(); iterate = iterate.nextSibling())
- correctDocument(main, iterate, doc->getElementFromHandle(iterate.handle()), doc);
- }
-}
-
-void registerAdditional(ExecState *exec, SVGDocumentImpl *doc, DOM::Node node)
-{
- // Register ID in rootElement!
- SVGElementImpl *resultElement = doc->getElementFromHandle(node.handle());
- if(resultElement && resultElement->hasAttribute("id"))
- doc->rootElement()->addToIdMap(resultElement->getAttribute("id").string(), resultElement);
-
- if(node.hasChildNodes())
- {
- for(DOM::Node iterate = node.firstChild(); !iterate.isNull(); iterate = iterate.nextSibling())
- registerAdditional(exec, doc, iterate);
- }
-}
-
-Value appendHelper(ExecState *exec, DOM::Node node, DOM::Node newNode)
-{
- // This is quite tricky code by me (Niko)
- // Don't even try to modify it.
- if(!(node.ownerDocument() == newNode.ownerDocument()))
- {
- // Get document
- SVGDocumentImpl *doc = KSVG::Window::retrieveActive(exec)->doc();
-
- // Detect ownerDoc() of newNode
- SVGDocumentImpl *newDoc = doc->getDocumentFromHandle(newNode.ownerDocument().handle());
-
- // Get some SVGElementImpl's
- SVGElementImpl *nodeElement = doc->getElementFromHandle(node.handle());
- SVGElementImpl *newNodeElement = newDoc->getElementFromHandle(newNode.handle());
-
- // Import node into document
- DOM::Node result = doc->importNode(newNode, true);
-
- // Associate the imported node 'result' with the
- // 'newNodeElement' which belongs to 'newDoc'
- integrateTree(nodeElement, result, newNode, newNodeElement, doc);
-
- // Correct handles in SVG* elements
- correctHandles(nodeElement, result);
-
- // Correct ownerDoc() etc..
- correctDocument(nodeElement, newNode, newNodeElement, newDoc);
-
- // Register ID in global map
- registerAdditional(exec, doc, result);
-
- // Recalc style
- newNodeElement->setAttributes();
-
- // Append + create + update element
- Value retVal = getDOMNode(exec, node.appendChild(result));
-
- doc->syncCachedMatrices();
- newNodeElement->createItem(doc->canvas());
- SVGHelperImpl::updateItem(exec, *newNodeElement);
-
- return retVal;
- }
- else
- {
- Value retVal = getDOMNode(exec, node.appendChild(newNode));
-
- // Get document
- SVGDocumentImpl *doc = KSVG::Window::retrieveActive(exec)->doc();
- doc->syncCachedMatrices();
-
- // Get some SVGElementImpl's
- SVGElementImpl *nodeElement = doc->getElementFromHandle(newNode.handle());
- // TODO : extra check needed to see if the new elements parent is already appended
- // in the doc. Not really nice, should be some other way? (Rob)
- if(nodeElement && !nodeElement->parentNode().parentNode().isNull())
- {
- nodeElement->setAttributes(true);
- nodeElement->createItem();
- SVGHelperImpl::updateItem(exec, newNode);
- }
-
- return retVal;
- }
-}
-
-Value SVGDOMNodeBridgeProtoFunc::call(ExecState *exec, Object &thisObj, const List &args)
-{
- KSVG_CHECK_THIS(SVGDOMNodeBridge)
- DOM::Node node = obj->impl();
-
- switch(id)
- {
- case SVGDOMNodeBridge::InsertBefore:
- {
- DOM::Node newChild = toNode(args[0]);
- DOM::Node beforeChild = toNode(args[1]);
- Value retVal = getDOMNode(exec, node.insertBefore(newChild, beforeChild));
-
- // Get document
- SVGDocumentImpl *doc = Window::retrieveActive(exec)->doc();
-
- // Get some SVGElementImpl's
- SVGShapeImpl *newShape = dynamic_cast<SVGShapeImpl *>(doc->getElementFromHandle(newChild.handle()));
- SVGElementImpl *newElement = doc->getElementFromHandle(newChild.handle());
- SVGShapeImpl *beforeElement = dynamic_cast<SVGShapeImpl *>(doc->getElementFromHandle(beforeChild.handle()));
- if(newShape && beforeElement && beforeElement->item())
- {
- int z = beforeElement->item()->zIndex();
- newElement->createItem();
- doc->canvas()->insert(newShape->item(), z);
- }
- SVGHelperImpl::updateItem(exec, newChild);
-
- return retVal;
- }
- case SVGDOMNodeBridge::ReplaceChild:
- {
- DOM::Node newChild = toNode(args[0]);
- Value retVal = getDOMNode(exec, node.replaceChild(newChild, toNode(args[1])));
- SVGHelperImpl::updateItem(exec, newChild);
- return retVal;
- }
- case SVGDOMNodeBridge::RemoveChild:
- {
- DOM::Node remove = toNode(args[0]);
- if(remove.isNull())
- return Undefined();
-
- // New removeChild logic:
- // - remove from DOM tree
- // - delete element (also deletes it's child element's)
- removeItem(exec, remove);
- Value retVal = getDOMNode(exec, node.removeChild(remove));
- return retVal;
- }
- case SVGDOMNodeBridge::AppendChild:
- return appendHelper(exec, node, toNode(args[0]));
- case SVGDOMNodeBridge::HasAttributes:
- {
- SVGDocumentImpl *doc = Window::retrieveActive(exec)->doc();
- SVGElementImpl *element = doc->getElementFromHandle(node.handle());
-
- if(!element)
- return Undefined();
-
- return Boolean(element->hasAttributes());
- }
- case SVGDOMNodeBridge::HasChildNodes:
- return Boolean(node.hasChildNodes());
- case SVGDOMNodeBridge::CloneNode:
- {
- SVGDocumentImpl *doc = Window::retrieveActive(exec)->doc();
- SVGElementImpl *element = doc->getElementFromHandle(node.handle());
- SVGElementImpl *newElement = element->cloneNode(args[0].toBoolean(exec));
-
- return getDOMNode(exec, *newElement);
- }
- case SVGDOMNodeBridge::Normalize:
- {
- node.normalize();
- return Undefined();
- }
- case SVGDOMNodeBridge::IsSupported:
- return Boolean(node.isSupported(args[0].toString(exec).string(), args[1].toString(exec).string()));
- case SVGDOMNodeBridge::AddEventListener:
- {
- SVGDocumentImpl *doc = Window::retrieveActive(exec)->doc();
- SVGElementImpl *element = doc->getElementFromHandle(node.handle());
-
- if(element)
- {
- SVGEvent::EventId eventId = SVGEvent::typeToId(args[0].toString(exec).string());
- if(eventId != SVGEvent::UNKNOWN_EVENT)
- element->setEventListener(eventId, new KSVGEcmaEventListener(Object::dynamicCast(args[1]), TQString(), doc->ecmaEngine()));
- }
- return Undefined();
- }
- case SVGDOMNodeBridge::RemoveEventListener:
- {
- SVGDocumentImpl *doc = Window::retrieveActive(exec)->doc();
- SVGElementImpl *element = doc->getElementFromHandle(node.handle());
-
- if(element)
- {
- SVGEvent::EventId eventId = SVGEvent::typeToId(args[0].toString(exec).string());
- if(eventId != SVGEvent::UNKNOWN_EVENT)
- element->removeEventListener((int) eventId);
- }
- return Undefined();
- }
-// case SVGDOMNodeBridge::Contains: // TODO
- case SVGDOMNodeBridge::GetNodeName:
- return getString(node.nodeName());
- case SVGDOMNodeBridge::GetNodeValue:
- return getString(node.nodeValue());
- case SVGDOMNodeBridge::GetNodeType:
- return Number(node.nodeType());
- case SVGDOMNodeBridge::GetParentNode:
- return getDOMNode(exec, node.parentNode());
- case SVGDOMNodeBridge::GetChildNodes:
- return (new SVGDOMNodeListBridge(node.childNodes()))->cache(exec);
- case SVGDOMNodeBridge::GetFirstChild:
- return getDOMNode(exec, node.firstChild());
- case SVGDOMNodeBridge::GetLastChild:
- return getDOMNode(exec, node.lastChild());
- case SVGDOMNodeBridge::GetPreviousSibling:
- return getDOMNode(exec, node.previousSibling());
- case SVGDOMNodeBridge::GetNextSibling:
- return getDOMNode(exec, node.nextSibling());
-// case SVGDOMNodeBridge::GetAttributes: // TODO
- case SVGDOMNodeBridge::GetNamespaceURI:
- return getString(node.namespaceURI());
- case SVGDOMNodeBridge::GetPrefix:
- return getString(node.prefix());
- case SVGDOMNodeBridge::GetLocalName:
- return getString(node.localName());
- case SVGDOMNodeBridge::GetOwnerDocument:
- return getDOMNode(exec, node.ownerDocument());
- default:
- kdWarning() << "Unhandled function id in " << k_funcinfo << " : " << id << endl;
- break;
- }
-
- return Undefined();
-}
-
-// SVGDOMElementBridge
-
-/*
-@namespace KSVG
-@begin SVGDOMElementBridge::s_hashTable 2
- tagName SVGDOMElementBridge::TagName DontDelete|ReadOnly
-@end
-@namespace KSVG
-@begin SVGDOMElementBridgeProto::s_hashTable 17
- getAttribute SVGDOMElementBridge::GetAttribute DontDelete|Function 1
- setAttribute SVGDOMElementBridge::SetAttribute DontDelete|Function 2
- removeAttribute SVGDOMElementBridge::RemoveAttribute DontDelete|Function 1
- getAttributeNode SVGDOMElementBridge::GetAttributeNode DontDelete|Function 1
- setAttributeNode SVGDOMElementBridge::SetAttributeNode DontDelete|Function 2
- removeAttributeNode SVGDOMElementBridge::RemoveAttributeNode DontDelete|Function 1
- getElementsByTagName SVGDOMElementBridge::GetElementsByTagName DontDelete|Function 1
- hasAttribute SVGDOMElementBridge::HasAttribute DontDelete|Function 1
- getAttributeNS SVGDOMElementBridge::GetAttributeNS DontDelete|Function 2
- setAttributeNS SVGDOMElementBridge::SetAttributeNS DontDelete|Function 3
- removeAttributeNS SVGDOMElementBridge::RemoveAttributeNS DontDelete|Function 2
- getAttributeNodeNS SVGDOMElementBridge::GetAttributeNodeNS DontDelete|Function 2
- setAttributeNodeNS SVGDOMElementBridge::SetAttributeNodeNS DontDelete|Function 1
- getElementByTagNameNS SVGDOMElementBridge::GetElementsByTagNameNS DontDelete|Function 2
- hasAttributeNS SVGDOMElementBridge::HasAttributeNS DontDelete|Function 2
-@end
-*/
-
-KSVG_IMPLEMENT_PROTOTYPE("DOMElement", SVGDOMElementBridgeProto, SVGDOMElementBridgeProtoFunc)
-
-Value SVGDOMElementBridge::getValueProperty(ExecState *, int token) const
-{
- switch(token)
- {
- case TagName:
- return getString(m_impl.tagName());
- default:
- kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
- return Undefined();
- }
-}
-
-Value SVGDOMElementBridgeProtoFunc::call(ExecState *exec, Object &thisObj, const List &args)
-{
- KSVG_CHECK_THIS(SVGDOMElementBridge)
- DOM::Element elem = obj->impl();
-
- switch(id)
- {
- case SVGDOMElementBridge::GetAttribute:
- {
- SVGDocumentImpl *doc = Window::retrieveActive(exec)->doc();
- SVGElementImpl *element = doc->getElementFromHandle(elem.handle());
- if(element)
- return String(element->getAttribute(args[0].toString(exec).string()));
- else
- return Undefined();
- }
- case SVGDOMElementBridge::SetAttribute:
- {
- SVGDocumentImpl *doc = Window::retrieveActive(exec)->doc();
- SVGElementImpl *element = doc->getElementFromHandle(elem.handle());
- if(element)
- {
- element->setAttribute(args[0].toString(exec).string(), args[1].toString(exec).string());
- element->setAttributeInternal(args[0].toString(exec).string(), args[1].toString(exec).string());
-
- SVGHelperImpl::updateItem(exec, elem);
- }
-
- return Undefined();
- }
- case SVGDOMElementBridge::RemoveAttribute:
- {
- elem.removeAttribute(args[0].toString(exec).string());
- return Undefined();
- }
- case SVGDOMElementBridge::GetAttributeNode:
- return getDOMNode(exec, elem.getAttributeNode(args[0].toString(exec).string()));
- case SVGDOMElementBridge::SetAttributeNode: // TODO: Correct?
- return getDOMNode(exec, elem.setAttributeNode(toNode(args[0])));
- case SVGDOMElementBridge::RemoveAttributeNode: // TODO: Correct?
- return getDOMNode(exec, elem.removeAttributeNode(toNode(args[0])));
- case SVGDOMElementBridge::GetElementsByTagName:
- return (new SVGDOMNodeListBridge(elem.getElementsByTagName(args[0].toString(exec).string())))->cache(exec);
- case SVGDOMElementBridge::GetAttributeNS:
- {
- // This just skips NS! (Rob)
- SVGDocumentImpl *doc = Window::retrieveActive(exec)->doc();
- SVGElementImpl *element = doc->getElementFromHandle(elem.handle());
- if(element)
- return String(element->getAttribute(args[1].toString(exec).string()));
- else
- return Undefined();
- }
- case SVGDOMElementBridge::SetAttributeNS:
- {
- // For now, we strip the NS part (Rob)
- DOM::DOMString attr = args[1].toString(exec).string();
- int pos = attr.string().find(':');
- if(pos > -1)
- attr = attr.string().mid(pos + 1);
-
- SVGDocumentImpl *doc = Window::retrieveActive(exec)->doc();
- SVGElementImpl *element = doc->getElementFromHandle(elem.handle());
- if(element)
- {
- element->setAttribute(attr.string(), args[2].toString(exec).string());
- element->setAttributeInternal(attr.string(), args[2].toString(exec).string());
-
- SVGHelperImpl::updateItem(exec, *element);
- }
-
- return Undefined();
- }
- case SVGDOMElementBridge::RemoveAttributeNS:
- {
- elem.removeAttributeNS(args[0].toString(exec).string(), args[1].toString(exec).string());
- return Undefined();
- }
- case SVGDOMElementBridge::GetAttributeNodeNS:
- return getDOMNode(exec, elem.getAttributeNodeNS(args[0].toString(exec).string(), args[1].toString(exec).string()));
- case SVGDOMElementBridge::SetAttributeNodeNS: // TODO: Correct?
- return getDOMNode(exec, elem.setAttributeNodeNS(toNode(args[0])));
- case SVGDOMElementBridge::GetElementsByTagNameNS:
- return (new SVGDOMNodeListBridge(elem.getElementsByTagNameNS(args[0].toString(exec).string(), args[1].toString(exec).string())))->cache(exec);
- case SVGDOMElementBridge::HasAttribute:
- return Boolean(elem.hasAttribute(args[0].toString(exec).string()));
- case SVGDOMElementBridge::HasAttributeNS:
- return Boolean(elem.hasAttributeNS(args[0].toString(exec).string(), args[1].toString(exec).string()));
- default:
- kdWarning() << "Unhandled function id in " << k_funcinfo << " : " << id << endl;
- break;
- }
-
- return Undefined();
-}
-
-
-// SVGDOMNodeListBridge
-
-/*
-@namespace KSVG
-@begin SVGDOMNodeListBridge::s_hashTable 2
- length SVGDOMNodeListBridge::Length DontDelete
-@end
-@namespace KSVG
-@begin SVGDOMNodeListBridgeProto::s_hashTable 3
- getLength SVGDOMNodeListBridge::GetLength DontDelete|Function 0
- item SVGDOMNodeListBridge::Item DontDelete|Function 1
-@end
-*/
-
-KSVG_IMPLEMENT_PROTOTYPE("DOMNodeList", SVGDOMNodeListBridgeProto, SVGDOMNodeListBridgeProtoFunc)
-
-Value SVGDOMNodeListBridge::getValueProperty(ExecState *, int token) const
-{
- switch(token)
- {
- case Length:
- return Number(m_impl.length());
- default:
- kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
- return Undefined();
- }
-}
-
-Value SVGDOMNodeListBridgeProtoFunc::call(ExecState *exec, Object &thisObj, const List &args)
-{
- KSVG_CHECK_THIS(SVGDOMNodeListBridge)
- DOM::NodeList nodeList = obj->impl();
-
- switch(id)
- {
- case SVGDOMNodeListBridge::GetLength:
- return Number(nodeList.length());
- case SVGDOMNodeListBridge::Item:
- return getDOMNode(exec, nodeList.item((unsigned long)args[0].toNumber(exec)));
- default:
- kdWarning() << "Unhandled function id in " << k_funcinfo << " : " << id << endl;
- break;
- }
-
- return Undefined();
-}
-
-// SVGDOMCharacterDataBridge
-
-/*
-@namespace KSVG
-@begin SVGDOMCharacterDataBridge::s_hashTable 3
- data SVGDOMCharacterDataBridge::Data DontDelete
- length SVGDOMCharacterDataBridge::Length DontDelete|ReadOnly
-@end
-@namespace KSVG
-@begin SVGDOMCharacterDataBridgeProto::s_hashTable 11
- getData SVGDOMCharacterDataBridge::GetData DontDelete|Function 0
- setData SVGDOMCharacterDataBridge::SetData DontDelete|Function 1
- getLength SVGDOMCharacterDataBridge::GetLength DontDelete|Function 0
- substringData SVGDOMCharacterDataBridge::SubstringData DontDelete|Function 2
- appendData SVGDOMCharacterDataBridge::AppendData DontDelete|Function 1
- insertData SVGDOMCharacterDataBridge::InsertData DontDelete|Function 2
- deleteData SVGDOMCharacterDataBridge::DeleteData DontDelete|Function 2
- replaceData SVGDOMCharacterDataBridge::ReplaceData DontDelete|Function 2
-@end
-*/
-
-KSVG_IMPLEMENT_PROTOTYPE("DOMCharacterData", SVGDOMCharacterDataBridgeProto, SVGDOMCharacterDataBridgeProtoFunc)
-
-Value SVGDOMCharacterDataBridge::getValueProperty(ExecState *, int token) const
-{
- switch(token)
- {
- case Data:
- return String(m_impl.data());
- case Length:
- return Number(m_impl.length());
- default:
- kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
- return Undefined();
- }
-}
-
-void SVGDOMCharacterDataBridge::putValueProperty(ExecState *exec, int token, const Value &value, int)
-{
- switch(token)
- {
- case Data:
- m_impl.setData(value.toString(exec).string());
- updateTextItem(exec, m_impl);
- break;
- default:
- kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
- }
-}
-
-Value SVGDOMCharacterDataBridgeProtoFunc::call(ExecState *exec, Object &thisObj, const List &args)
-{
- KSVG_CHECK_THIS(SVGDOMCharacterDataBridge)
- DOM::CharacterData node = obj->impl();
-
- switch(id)
- {
- case SVGDOMCharacterDataBridge::GetData:
- return String(node.data());
- case SVGDOMCharacterDataBridge::SetData:
- node.setData(args[0].toString(exec).string());
- updateTextItem(exec, node);
- return Undefined();
- case SVGDOMCharacterDataBridge::GetLength:
- return Number(node.length());
- case SVGDOMCharacterDataBridge::SubstringData:
- {
- DOM::DOMString ret = node.substringData(args[0].toInteger(exec), args[1].toInteger(exec));
- updateTextItem(exec, node);
- return String(ret);
- }
- case SVGDOMCharacterDataBridge::AppendData:
- node.appendData(args[0].toString(exec).string());
- updateTextItem(exec, node);
- return Undefined();
- case SVGDOMCharacterDataBridge::InsertData:
- node.insertData(args[0].toInteger(exec), args[1].toString(exec).string());
- updateTextItem(exec, node);
- return Undefined();
- case SVGDOMCharacterDataBridge::DeleteData:
- node.deleteData(args[0].toInteger(exec), args[1].toInteger(exec));
- updateTextItem(exec, node);
- return Undefined();
- case SVGDOMCharacterDataBridge::ReplaceData:
- node.replaceData(args[0].toInteger(exec), args[1].toInteger(exec), args[2].toString(exec).string());
- updateTextItem(exec, node);
- return Undefined();
- default:
- kdWarning() << "Unhandled function id in " << k_funcinfo << " : " << id << endl;
- break;
- }
-
- return Undefined();
-}
-
-// SVGDOMTextBridge
-
-/*
-@namespace KSVG
-@begin SVGDOMTextBridge::s_hashTable 2
- dummy SVGDOMTextBridge::Dummy DontDelete|ReadOnly
-@end
-@namespace KSVG
-@begin SVGDOMTextBridgeProto::s_hashTable 2
- splitText SVGDOMTextBridge::SplitText DontDelete|Function 1
-@end
-*/
-
-KSVG_IMPLEMENT_PROTOTYPE("DOMText", SVGDOMTextBridgeProto, SVGDOMTextBridgeProtoFunc)
-
-Value SVGDOMTextBridge::getValueProperty(ExecState *, int token) const
-{
- switch(token)
- {
- default:
- kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
- return Undefined();
- }
-}
-
-Value SVGDOMTextBridgeProtoFunc::call(ExecState *exec, Object &thisObj, const List &args)
-{
- KSVG_CHECK_THIS(SVGDOMTextBridge)
- DOM::Text node = obj->impl();
-
- switch(id)
- {
- case SVGDOMTextBridge::SplitText:
- return getDOMNode(exec, node.splitText(args[0].toInteger(exec)));
- default:
- kdWarning() << "Unhandled function id in " << k_funcinfo << " : " << id << endl;
- break;
- }
-
- return Undefined();
-}
-
-// SVGDOMDOMImplementationBridge
-
-/*
-@namespace KSVG
-@begin SVGDOMDOMImplementationBridge::s_hashTable 2
- dummy SVGDOMDOMImplementationBridge::Dummy DontDelete|ReadOnly
-@end
-@namespace KSVG
-@begin SVGDOMDOMImplementationBridgeProto::s_hashTable 2
- hasFeature SVGDOMDOMImplementationBridge::HasFeature DontDelete|Function 2
-@end
-*/
-
-KSVG_IMPLEMENT_PROTOTYPE("DOMDOMImplementation", SVGDOMDOMImplementationBridgeProto, SVGDOMDOMImplementationBridgeProtoFunc)
-
-Value SVGDOMDOMImplementationBridge::getValueProperty(ExecState *, int token) const
-{
- switch(token)
- {
- default:
- kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
- return Undefined();
- }
-}
-
-Value SVGDOMDOMImplementationBridgeProtoFunc::call(ExecState *exec, Object &thisObj, const List &args)
-{
- KSVG_CHECK_THIS(SVGDOMDOMImplementationBridge)
- DOM::DOMImplementation node = obj->impl();
-
- switch(id)
- {
- case SVGDOMDOMImplementationBridge::HasFeature:
- return Boolean(node.hasFeature(args[0].toString(exec).string(), args[1].toString(exec).string()));
- default:
- kdWarning() << "Unhandled function id in " << k_funcinfo << " : " << id << endl;
- break;
- }
-
- return Undefined();
-}
-
-// SVGDOMDocumentFragmentBridge
-
-/*
-@namespace KSVG
-@begin SVGDOMDocumentFragmentBridge::s_hashTable 2
- dummy SVGDOMDocumentFragmentBridge::Dummy DontDelete|ReadOnly
-@end
-*/
-
-Value SVGDOMDocumentFragmentBridge::getValueProperty(ExecState *, int token) const
-{
- switch(token)
- {
- default:
- kdWarning() << "Unhandled token in " << k_funcinfo << " : " << token << endl;
- return Undefined();
- }
-}
-
-// vim:ts=4:noet