[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: branches/work/khtml-svg
From: Rob Buis <buis () kde ! org>
Date: 2006-03-31 21:59:36
Message-ID: 1143842376.153290.27999.nullmailer () svn ! kde ! org
[Download RAW message or body]
SVN commit 525132 by buis:
Support for <title> and <style>, however the latter does not seem to work yet.
M +11 -0 misc/hashes.cpp
M +4 -0 misc/hashes.h
M +0 -6 svg/CONVERSION-TODO-LIST
M +1 -0 svg/Makefile.am
A svg/SVGStyleElementImpl.cpp [License: LGPL (v2+) (wrong address)]
A svg/SVGStyleElementImpl.h [License: LGPL (v2+) (wrong address)]
A svg/SVGTitleElementImpl.cpp [License: LGPL (v2+) (wrong address)]
A svg/SVGTitleElementImpl.h [License: LGPL (v2+) (wrong address)]
M +38 -1 xml/dom_docimpl.cpp
--- branches/work/khtml-svg/misc/hashes.cpp #525131:525132
@@ -52,6 +52,17 @@
}
}
+#if SVG_SUPPORT
+int khtml::getTagIDSVG(const char *tagStr, int len)
+{
+ const struct tags_svg *tagPtr = findTagSVG(tagStr, len);
+ if (!tagPtr)
+ return 0;
+
+ return tagPtr->id;
+}
+#endif
+
const char *khtml::getTagName(unsigned short id)
{
{ // HTML Tags
--- branches/work/khtml-svg/misc/hashes.h #525131:525132
@@ -38,6 +38,10 @@
int getTagID(const char *tagStr, int len);
const char *getTagName(unsigned short id);
+#if SVG_SUPPORT
+ int getTagIDSVG(const char *tagStr, int len);
+#endif
+
// Attrs name <-> id resolution
int getAttrID(const char *tagStr, int len);
const char *getAttrName(unsigned short id);
--- branches/work/khtml-svg/svg/CONVERSION-TODO-LIST #525131:525132
@@ -33,18 +33,12 @@
SVGScriptElementImpl.cpp
SVGScriptElementImpl.h
-SVGTitleElementImpl.cpp
-SVGTitleElementImpl.h
-
SVGUseElementImpl.cpp
SVGUseElementImpl.h
SVGSolidColorElementImpl.cpp
SVGSolidColorElementImpl.h
-SVGStyleElementImpl.cpp
-SVGStyleElementImpl.h
-
LATER - Animations
------------------
SVGAnimateColorElementImpl.cpp
--- branches/work/khtml-svg/svg/Makefile.am #525131:525132
@@ -31,4 +31,5 @@
SVGGradientElementImpl.cpp SVGLinearGradientElementImpl.cpp \
SVGRadialGradientElementImpl.cpp SVGDOMImplementationImpl.cpp \
SVGAElementImpl.cpp SVGClipPathElementImpl.cpp \
+ SVGTitleElementImpl.cpp SVGStyleElementImpl.cpp \
svgpathparser.cpp KSVGPainterFactory.cpp
--- branches/work/khtml-svg/xml/dom_docimpl.cpp #525131:525132
@@ -96,6 +96,8 @@
#include "svg/SVGPathElementImpl.h"
#include "svg/SVGLineElementImpl.h"
#include "svg/SVGViewElementImpl.h"
+#include "svg/SVGTitleElementImpl.h"
+#include "svg/SVGStyleElementImpl.h"
#include "svg/SVGSwitchElementImpl.h"
#include "svg/SVGCircleElementImpl.h"
#include "svg/SVGSymbolElementImpl.h"
@@ -1016,7 +1018,7 @@
#if SVG_SUPPORT
ElementImpl *DocumentImpl::createSVGElement( const DOMString &name )
{
- uint id = khtml::getTagID( name.string().toLatin1().constData(), name.string().length() );
+ uint id = khtml::getTagIDSVG( name.string().toLatin1().constData(), name.string().length() );
ElementImpl *n = 0;
switch(id)
@@ -1116,6 +1118,16 @@
n = new KSVG::SVGRadialGradientElementImpl(docPtr());
break;
}
+ case SVGID_TITLE:
+ {
+ n = new KSVG::SVGTitleElementImpl(docPtr());
+ break;
+ }
+ case SVGID_STYLE:
+ {
+ n = new KSVG::SVGStyleElementImpl(docPtr());
+ break;
+ }
default:
break;
}
@@ -2208,6 +2220,31 @@
}
}
}
+#if SVG_SUPPORT
+ else if (n->isSVGElement() && n->id() == SVGID_STYLE) {
+ QString title;
+ // <STYLE> element
+ KSVG::SVGStyleElementImpl *s = static_cast<KSVG::SVGStyleElementImpl*>(n);
+ if (!s->isLoading()) {
+ sheet = s->sheet();
+ if(sheet)
+ title = s->getAttribute(SVGID_TITLE).string();
+ }
+
+ if (!title.isEmpty() && m_preferredStylesheetSet.isEmpty())
+ m_preferredStylesheetSet = title;
+
+ if (!title.isEmpty()) {
+ if (title != m_preferredStylesheetSet)
+ sheet = 0; // don't use it
+
+ title = title.replace('&', "&&");
+
+ if (!m_availableSheets.contains(title))
+ m_availableSheets.append(title);
+ }
+ }
+#endif
else {
// <STYLE> element
HTMLStyleElementImpl* s = static_cast<HTMLStyleElementImpl*>(n);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic