summaryrefslogtreecommitdiffstats
path: root/src/dom/svgimpl.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/dom/svgimpl.cpp')
-rw-r--r--src/dom/svgimpl.cpp53
1 files changed, 53 insertions, 0 deletions
diff --git a/src/dom/svgimpl.cpp b/src/dom/svgimpl.cpp
index d2a7e2794..6b2a7fe70 100644
--- a/src/dom/svgimpl.cpp
+++ b/src/dom/svgimpl.cpp
@@ -46,6 +46,29 @@ namespace svg
/*#########################################################################
+## U T I L I T Y
+#########################################################################*/
+
+static DOMString d2s(double d)
+{
+ char buf[40];
+ snprintf(buf, 40, "%f", d);
+ DOMString s(buf);
+ return s;
+}
+
+static double s2d(const DOMString &s)
+{
+ const char *begin = s.c_str();
+ char *end;
+ double val = strtod(begin, &end);
+ if (end <= begin)
+ return 0.0;
+ return val;
+}
+
+
+/*#########################################################################
## Element type lookup table
#########################################################################*/
@@ -668,6 +691,36 @@ void SVGDocumentImpl::init()
/**
+ * Retrieves an attribute value by name.
+ */
+DOMString SVGSVGElementImpl::getAttribute(const DOMString& name)
+{
+ DOMString s;
+ if (name == "x")
+ s = d2s(x.getAnimVal().getValue());
+ else if (name == "y")
+ s = d2s(y.getAnimVal().getValue());
+ else
+ s = SVGElement::getAttribute(name);
+ return s;
+}
+
+/**
+ * Sets an attribute value
+ */
+void SVGSVGElementImpl::setAttribute(const DOMString& name,
+ const DOMString& value)
+ throw(DOMException)
+{
+ if (name == "x")
+ x.getAnimVal().setValue(s2d(value));
+ else if (name == "y")
+ y.getAnimVal().setValue(s2d(value));
+ SVGElement::setAttribute(name, value);
+}
+
+
+/**
*
*/
unsigned long SVGSVGElementImpl::suspendRedraw(unsigned long /*max_wait_milliseconds*/ )