diff options
| author | Martin Owens <doctormo@gmail.com> | 2014-03-03 22:38:47 +0000 |
|---|---|---|
| committer | Martin Owens <doctormo@gmail.com> | 2014-03-03 22:38:47 +0000 |
| commit | bd7a0a3d7793afd623480010cfc5ae6331b73087 (patch) | |
| tree | 8d8779f7a373b00cfeee8b75a461d3b471f5630d | |
| parent | Remove massive list of inx and py files for extensions Makefile, use magic in... (diff) | |
| parent | Merge to trunk (diff) | |
| download | inkscape-bd7a0a3d7793afd623480010cfc5ae6331b73087.tar.gz inkscape-bd7a0a3d7793afd623480010cfc5ae6331b73087.zip | |
Remove dom/* code and replace two uses of dom/uri with uri.
(bzr r13107)
63 files changed, 28 insertions, 64090 deletions
diff --git a/build-lx.xml b/build-lx.xml index f5b448439..03b881cea 100644 --- a/build-lx.xml +++ b/build-lx.xml @@ -220,8 +220,6 @@ <exclude name="test-all.cpp"/> <exclude name="display/testnr.cpp"/> <exclude name="display/bezier-utils-test.cpp"/> - <exclude name="dom/work/.*"/> - <exclude name="dom/odf/SvgOdg.cpp"/> <exclude name="extension/api.cpp"/> <exclude name="extension/dxf2svg/.*"/> <exclude name="extension/implementation/plugin.cpp"/> @@ -315,8 +315,6 @@ <!--<exclude name="test-src.cpp"/>--> <exclude name="display/test-display.cpp"/> <exclude name="display/testnr.cpp"/> - <exclude name="dom/work/.*"/> - <exclude name="dom/odf/SvgOdg.cpp"/> <exclude name="extension/api.cpp"/> <exclude name="extension/dbus/.*"/> <exclude name="extension/dxf2svg/.*"/> @@ -444,9 +442,6 @@ </flags> <fileset dir="${build}/obj"> <exclude name="winconsole.o"/> - <exclude name="dom/prop-css.o"/> - <exclude name="dom/prop-css2.o"/> - <exclude name="dom/prop-svg.o"/> <exclude name="inkview.o"/> <exclude name="inkviewres.o"/> <!-- CxxTest --> @@ -532,10 +527,6 @@ <exclude name="winmain.o"/> <exclude name="winconsole.o"/> <exclude name="inkres.o"/> - <!-- broken files --> - <exclude name="dom/prop-css.o"/> - <exclude name="dom/prop-css2.o"/> - <exclude name="dom/prop-svg.o"/> <!-- CxxTest --> <exclude name="test-main.o"/> <exclude name="test-src.o"/> @@ -594,10 +585,6 @@ <exclude name="inkres.o"/> <exclude name="inkviewres.o"/> <exclude name="inkview.o"/> - <!-- broken files --> - <exclude name="dom/prop-css.o"/> - <exclude name="dom/prop-css2.o"/> - <exclude name="dom/prop-svg.o"/> </fileset> <libs> -L${devlibs}/lib diff --git a/src/Makefile.am b/src/Makefile.am index 7fbc135c5..d3f8794ee 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -23,7 +23,6 @@ endif noinst_LIBRARIES = \ - dom/libdom.a \ libcroco/libcroco.a \ libavoid/libavoid.a \ $(internal_GDL) \ @@ -108,7 +107,6 @@ endif include Makefile_insert include dialogs/Makefile_insert include display/Makefile_insert -include dom/Makefile_insert include extension/Makefile_insert include extension/dbus/Makefile_insert include extension/implementation/Makefile_insert @@ -148,7 +146,6 @@ EXTRA_DIST += \ debug/makefile.in \ dialogs/makefile.in \ display/makefile.in \ - dom/makefile.in \ extension/implementation/makefile.in \ extension/internal/makefile.in \ extension/makefile.in \ diff --git a/src/color-profile.cpp b/src/color-profile.cpp index 2736b9a3b..09eaa36e5 100644 --- a/src/color-profile.cpp +++ b/src/color-profile.cpp @@ -46,7 +46,7 @@ #include "document.h" #include "preferences.h" -#include "dom/uri.h" +#include "uri.h" #ifdef WIN32 #include <icm.h> @@ -331,13 +331,17 @@ void ColorProfile::set(unsigned key, gchar const *value) { gchar* escaped = g_uri_escape_string(this->href, "!*'();:@=+$,/?#[]", TRUE); //g_message("docbase:%s\n", docbase); - org::w3c::dom::URI docUri(docbase); + //org::w3c::dom::URI docUri(docbase); + Inkscape::URI docUri(docbase); + //# 2. Get href of icc file. we don't care if it's rel or abs - org::w3c::dom::URI hrefUri(escaped); + //org::w3c::dom::URI hrefUri(escaped); + Inkscape::URI hrefUri(escaped); //# 3. Resolve the href according the docBase. This follows // the w3c specs. All absolute and relative issues are considered - org::w3c::dom::URI cprofUri = docUri.resolve(hrefUri); - gchar* fullname = g_uri_unescape_string(cprofUri.getNativePath().c_str(), ""); + std::string fullpath = docUri.getFullPath(hrefUri.getFullPath("")); + + gchar* fullname = g_uri_unescape_string(fullpath.c_str(), ""); this->impl->_clearProfile(); this->impl->_profHandle = cmsOpenProfileFromFile( fullname, "r" ); if ( this->impl->_profHandle ) { diff --git a/src/dom/CMakeLists.txt b/src/dom/CMakeLists.txt deleted file mode 100644 index c3078a8e3..000000000 --- a/src/dom/CMakeLists.txt +++ /dev/null @@ -1,61 +0,0 @@ - -set(dom_SRC - cssreader.cpp - domimpl.cpp - domptr.cpp - domstring.cpp - lsimpl.cpp - prop-css2.cpp - prop-css.cpp - prop-svg.cpp - smilimpl.cpp - svgimpl.cpp - svgreader.cpp - ucd.cpp - uri.cpp - xmlreader.cpp - xpathimpl.cpp - xpathparser.cpp - xpathtoken.cpp - - io/domstream.cpp - - util/ziptool.cpp - - - # ------- - # Headers - css.h - cssreader.h - dom.h - domimpl.h - domptr.h - domstring.h - events.h - ls.h - lsimpl.h - smil.h - smilimpl.h - stylesheets.h - svg.h - svgimpl.h - svgreader.h - svgtypes.h - traversal.h - ucd.h - uri.h - views-level3.h - views.h - xmlreader.h - xmlwriter.h - xpath.h - xpathimpl.h - xpathparser.h - xpathtoken.h - - io/domstream.h - - util/ziptool.h -) - -add_inkscape_lib(dom_LIB "${dom_SRC}") diff --git a/src/dom/Makefile.mingw b/src/dom/Makefile.mingw deleted file mode 100644 index 9f75b2dbb..000000000 --- a/src/dom/Makefile.mingw +++ /dev/null @@ -1,234 +0,0 @@ -########################################################################### -# -# Makefile for testing DOM code -# -########################################################################### - -####### Sense whether we are on a DOS box or cross-compiling -ifdef ComSpec -BUILD=native -DOSSHELL=CMD_EXE -else -ifdef COMSPEC -BUILD=native -DOSSHELL=COMMAND_COM -else -BUILD=cross -endif -endif - - - - -########################################################################## -# FILE SEPARATORS -# $(S) will be set to one of these -########################################################################## -BSLASH := \\# -FSLASH := / - - - -########################################################################## -# CROSS / NATIVE SWITCHES -########################################################################## -ifeq ($(BUILD),cross) - - - -########################################################################## -# CROSS COMPILER SETTINGS -########################################################################## - -CC = i686-pc-mingw32-gcc -CXX = i686-pc-mingw32-g++ -AS = i686-pc-mingw32-as -AR = i686-pc-mingw32-ar -RANLIB = i686-pc-mingw32-ranlib -WINDRES = i686-pc-mingw32-windres -LD = i686-pc-mingw32-ld -DLLWRAP = i686-pc-mingw32-dllwrap -DLLTOOL = i686-pc-mingw32-dlltool - -####### file separator -S = $(FSLASH) - -####### escape character for echo -E = / - -####### file manipulation programs -CP = cp -RMDIR = rm -rf -MKDIR = mkdir -CPDIR = cp -rf -MSGFMT = msgfmt -RMREC = find ./inkscape -type f -name -RMREC1 = |xargs $(RM) -RMDIRREC = find ./inkscape -type d -name -RMDIRREC1 = |xargs $(RMDIR) - -####### Where is your GTK directory? -GTK=/target - -####### Same thing, file system style -GTKDOS=$(GTK) - -DTG := $(shell date +%y%m%d.%H%M) - -else - -########################################################################## -# NATIVE COMPILER SETTINGS -########################################################################## - -CC = mingw32-gcc -CXX = mingw32-g++ -AS = as -AR = mingw32-ar -RANLIB = ranlib -WINDRES = windres -DLLWRAP = dllwrap -DLLTOOL = dlltool - -####### file separator -S = $(BSLASH) - -####### escape character for echo -E = - -####### file manipulation programs -CP = copy - -####### are we on WinNt and beyond? -ifeq ($(DOSSHELL),CMD_EXE) -RMDIR = rmdir /s /q -RM = del -else -RMDIR = deltree /y -RM = del -endif -MKDIR = mkdir -CPDIR = xcopy /e /i -RMREC = cd inkscape & $(RM) /s /q -RMREC1 = & cd .. -RMDIRREC = cd inkscape & $(RMDIR) /s -RMDIRREC1 = & cd .. - -####### Where is your GTK directory? -GTK=c:/devlibs - -####### Same thing, DOS style -GTKDOS=c:\devlibs - -####### Command to process .po files --> .mo -MSGFMT = $(GTKDOS)$(S)bin$(S)msgfmt - -####### change me!! -DTG := 20080515 - -endif -########################################################################## -# END CROSS / NATIVE SWITCHES -########################################################################## - - - - -INC = -I. -I.. -CFLAGS = -Wall -g -DDOM_STANDALONE -LIBS = -lws2_32 - -DOMOBJ = \ -cssreader.o \ -domimpl.o \ -domptr.o \ -domstring.o \ -lsimpl.o \ -smilimpl.o \ -uri.o \ -xmlreader.o \ -xpathimpl.o \ -xpathparser.o \ -xpathtoken.o \ -io/base64stream.o \ -io/domstream.o \ -io/bufferstream.o \ -io/gzipstream.o \ -io/httpclient.o \ -io/stringstream.o \ -io/uristream.o \ -io/socket.o \ -odf/odfdocument.o \ -svgimpl.o \ -svgreader.o \ -ucd.o \ -util/thread.o \ -util/ziptool.o - - - -TESTOBJ = \ -work/testdom.o \ -work/testodf.o \ -work/testsvg.o \ -work/testuri.o \ -work/testxpath.o \ -work/testzip.o - -OBJ = $(DOMOBJ) - -all: testsvg.exe - -tests: testdom.exe testhttp.exe \ -testsvg.exe testuri.exe testxpath.exe testzip.exe - -testdom.exe: libdom.a work/testdom.o - $(CXX) -o $@ work/testdom.o libdom.a $(LIBS) - -testhttp.exe: libdom.a work/testhttp.o - $(CXX) -o $@ work/testhttp.o libdom.a $(LIBS) - -testodf.exe: libdom.a work/testodf.o - $(CXX) -o $@ work/testodf.o libdom.a $(LIBS) - -testsvg.exe: libdom.a work/testsvg.o - $(CXX) -o $@ work/testsvg.o libdom.a $(LIBS) - -testuri.exe: libdom.a work/testuri.o - $(CXX) -o $@ work/testuri.o libdom.a $(LIBS) - -testxpath.exe: libdom.a work/testxpath.o - $(CXX) -o $@ work/testxpath.o libdom.a $(LIBS) - -testzip.exe: libdom.a work/testzip.o - $(CXX) -o $@ work/testzip.o libdom.a $(LIBS) - - -libdom.a: $(OBJ) - ar crv $@ $(OBJ) - - -.cpp.o: - $(CXX) $(CFLAGS) $(INC) -c -o $@ $< - -clean: - $(foreach a, $(OBJ), $(shell $(RM) $(subst /,$(S), $(a)))) - $(foreach a, $(TESTOBJ), $(shell $(RM) $(subst /,$(S), $(a)))) - -$(RM) *.a - -$(RM) *.gch - -$(RM) testdom - -$(RM) testdom.exe - -$(RM) testsvg - -$(RM) testsvg.exe - -$(RM) testuri - -$(RM) testuri.exe - -$(RM) testxpath - -$(RM) testxpath.exe - -$(RM) testzip - -$(RM) testzip.exe - -$(RM) core.* - -########################################################################### -# E N D O F F I L E -########################################################################### - diff --git a/src/dom/Makefile_insert b/src/dom/Makefile_insert deleted file mode 100644 index 6d222987e..000000000 --- a/src/dom/Makefile_insert +++ /dev/null @@ -1,56 +0,0 @@ -## Makefile.am fragment sourced by src/Makefile.am. - -dom/all: dom/libdom.a - -dom/clean: - rm -f dom/libdom.a $(dom_libdom_a_OBJECTS) - -dom_libdom_a_SOURCES = \ - dom/css.h \ - dom/cssreader.cpp \ - dom/cssreader.h \ - dom/dom.h \ - dom/domimpl.cpp \ - dom/domimpl.h \ - dom/domptr.cpp \ - dom/domptr.h \ - dom/domstring.cpp \ - dom/domstring.h \ - dom/events.h \ - dom/ls.h \ - dom/lsimpl.cpp \ - dom/lsimpl.h \ - dom/prop-css2.cpp \ - dom/prop-css.cpp \ - dom/prop-svg.cpp \ - dom/smil.h \ - dom/smilimpl.cpp \ - dom/smilimpl.h \ - dom/stylesheets.h \ - dom/svg.h \ - dom/svgimpl.cpp \ - dom/svgimpl.h \ - dom/svgreader.cpp \ - dom/svgreader.h \ - dom/svgtypes.h \ - dom/traversal.h \ - dom/ucd.cpp \ - dom/ucd.h \ - dom/uri.cpp \ - dom/uri.h \ - dom/views.h \ - dom/views-level3.h \ - dom/xmlreader.cpp \ - dom/xmlreader.h \ - dom/xpath.h \ - dom/xpathimpl.cpp \ - dom/xpathimpl.h \ - dom/xpathparser.cpp \ - dom/xpathparser.h \ - dom/xpathtoken.h \ - dom/xpathtoken.cpp \ - dom/io/domstream.cpp \ - dom/io/domstream.h \ - dom/util/ziptool.h \ - dom/util/ziptool.cpp - diff --git a/src/dom/css.h b/src/dom/css.h deleted file mode 100644 index f270b99eb..000000000 --- a/src/dom/css.h +++ /dev/null @@ -1,4693 +0,0 @@ -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES - * - * Views, Stylesheets and CSS are DOM Level 2 for the purposes of supporting - * SVG. Be prepared in the future when they make Level 3 and SVG is likewise - * updated. The API here and many of the comments come from this document: - * http://www.w3.org/TR/DOM-Level-2-Style/css.html - - */ - -#ifndef SEEN_CSS_H -#define SEEN_CSS_H - -#include "dom.h" -#include "stylesheets.h" -#include "views.h" - -#include <vector> -#include <map> - - -namespace org { -namespace w3c { -namespace dom { -namespace css { - - - - -//Make local definitions -typedef dom::DOMString DOMString; -typedef dom::Element Element; -typedef dom::DOMImplementation DOMImplementation; - -//forward declarations -class CSSRule; -class CSSStyleSheet; -class CSSStyleDeclaration; -class CSSValue; -class Counter; -class Rect; -class RGBColor; - - - - - -/*######################################################################### -## CSSRule -#########################################################################*/ - -/** - * The CSSRule interface is the abstract base interface for any type of CSS - * statement. This includes both rule sets and at-rules. An implementation is - * expected to preserve all rules specified in a CSS style sheet, even if the - * rule is not recognized by the parser. Unrecognized rules are represented using - * the CSSUnknownRule interface. - */ -class CSSRule -{ -public: - - /** - * An integer indicating which type of rule this is. - */ - typedef enum - { - UNKNOWN_RULE = 0, - STYLE_RULE = 1, - CHARSET_RULE = 2, - IMPORT_RULE = 3, - MEDIA_RULE = 4, - FONT_FACE_RULE = 5, - PAGE_RULE = 6 - } RuleType; - - - /** - * The type of the rule, as defined above. The expectation is that - * binding-specific casting methods can be used to cast down from an instance of - * the CSSRule interface to the specific derived interface implied by the type. - */ - virtual unsigned short getType() - { - return type; - } - - /** - * The parsable textual representation of the rule. This reflects the current - * state of the rule and not its initial value. - */ - virtual DOMString getCssText() - { - return cssText; - } - - /** - * The parsable textual representation of the rule. This reflects the current - * state of the rule and not its initial value. - * Note that setting involves reparsing. - */ - virtual void setCssText(const DOMString &val) throw (dom::DOMException) - { - cssText = val; - } - - /** - * The style sheet that contains this rule. - */ - virtual CSSStyleSheet *getParentStyleSheet() - { - return parentStyleSheet; - } - - /** - * If this rule is contained inside another rule (e.g. a style rule inside an - * @media block), this is the containing rule. If this rule is not nested inside - * any other rules, this returns null. - */ - virtual CSSRule *getParentRule() - { - return parentRule; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSRule() - { - type = UNKNOWN_RULE; - cssText = ""; - parentStyleSheet = NULL; - parentRule = NULL; - } - - /** - * - */ - CSSRule(const CSSRule &other) - { - assign(other); - } - - /** - * - */ - CSSRule &operator=(const CSSRule &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const CSSRule &other) - { - type = other.type; - cssText = other.cssText; - parentStyleSheet = other.parentStyleSheet; - parentRule = other.parentRule; - } - - /** - * - */ - virtual ~CSSRule() {} - -protected: - - int type; - - DOMString cssText; - - CSSStyleSheet *parentStyleSheet; - - CSSRule *parentRule; -}; - - - -/*######################################################################### -## CSSRuleList -#########################################################################*/ - -/** - * The CSSRuleList interface provides the abstraction of an ordered collection of - * CSS rules. - * - * The items in the CSSRuleList are accessible via an integral index, starting - * from 0. - */ -class CSSRuleList -{ -public: - - /** - * The number of CSSRules in the list. The range of valid child rule indices is 0 - * to length-1 inclusive. - */ - virtual unsigned long getLength() - { - return rules.size(); - } - - /** - * Used to retrieve a CSS rule by ordinal index. The order in this collection - * represents the order of the rules in the CSS style sheet. If index is greater - * than or equal to the number of rules in the list, this returns null. - */ - virtual CSSRule item(unsigned long index) - { - if (index>=rules.size()) - { - CSSRule rule; - return rule; - } - return rules[index]; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSRuleList() {} - - - /** - * - */ - CSSRuleList(const CSSRuleList &other) - : rules (other.rules) - { - } - - /** - * - */ - CSSRuleList &operator=(const CSSRuleList &other) - { - rules = other.rules; - return *this; - } - - /** - * - */ - virtual ~CSSRuleList() {} - -protected: - -friend class CSSMediaRule; -friend class CSSStyleSheet; - - /** - * - */ - virtual void addRule(const CSSRule &rule) - { - rules.push_back(rule); - } - - - /** - * - */ - virtual void deleteRule(unsigned long index) - { - if (index>=rules.size()) - return; - std::vector<CSSRule>::iterator iter = rules.begin() + index; - rules.erase(iter); - } - - - /** - * - */ - virtual long insertRule(const CSSRule &rule, unsigned long index) - { - if (index>=rules.size()) - return -1; - std::vector<CSSRule>::iterator iter = rules.begin() + index; - rules.insert(iter, rule); - return index; - } - - std::vector<CSSRule>rules; -}; - - -/*######################################################################### -## CSSStyleSheet -#########################################################################*/ - -/** - * The CSSStyleSheet interface is a concrete interface used to represent a CSS - * style sheet i.e., a style sheet whose content type is "text/css". - */ -class CSSStyleSheet : virtual public stylesheets::StyleSheet -{ -public: - - /** - * If this style sheet comes from an @import rule, the ownerRule attribute will - * contain the CSSImportRule. In that case, the ownerNode attribute in the - * StyleSheet interface will be null. If the style sheet comes from an element or - * a processing instruction, the ownerRule attribute will be null and the - * ownerNode attribute will contain the Node. - */ - virtual CSSRule *getOwnerRule() - { - return ownerRule; - } - - /** - * The list of all CSS rules contained within the style sheet. This - * includes both rule sets and at-rules. - */ - virtual CSSRuleList getCssRules() - { - return rules; - } - - /** - * Used to insert a new rule into the style sheet. The new rule now - * becomes part of the cascade. - */ - virtual unsigned long insertRule(const DOMString &/*ruleStr*/, - unsigned long index) - throw (dom::DOMException) - { - CSSRule rule; - return rules.insertRule(rule, index); - } - - /** - * Used to delete a rule from the style sheet. - */ - virtual void deleteRule(unsigned long index) - throw (dom::DOMException) - { - rules.deleteRule(index); - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSStyleSheet() : stylesheets::StyleSheet(), ownerRule(0) - { - } - - /** - * - */ - CSSStyleSheet(const CSSStyleSheet &other) : - stylesheets::StyleSheet(other) - { - assign(other); - } - - /** - * - */ - CSSStyleSheet &operator=(const CSSStyleSheet &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const CSSStyleSheet &other) - { - ownerRule = other.ownerRule; - rules = other.rules; - } - - /** - * - */ - virtual ~CSSStyleSheet() {} - -protected: - - CSSRule *ownerRule; - - CSSRuleList rules; -}; - - -/*######################################################################### -## CSSValue -#########################################################################*/ - -/** - * The CSSValue interface represents a simple or a complex value. A CSSValue - * object only occurs in a context of a CSS property. - */ -class CSSValue -{ -public: - - /** - * An integer indicating which type of unit applies to the value. - */ - typedef enum - { - CSS_INHERIT = 0, - CSS_PRIMITIVE_VALUE = 1, - CSS_VALUE_LIST = 2, - CSS_CUSTOM = 3 - } UnitTypes; - - /** - * A code defining the type of the value as defined above. - */ - virtual unsigned short getCssValueType() - { - return valueType; - } - - /** - * A string representation of the current value. - */ - virtual DOMString getCssText() - { - return cssText; - } - - /** - * A string representation of the current value. - * Note that setting implies parsing. - */ - virtual void setCssText(const DOMString &val) - throw (dom::DOMException) - { - cssText = val; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSValue() - { - valueType = CSS_INHERIT; - } - - /** - * - */ - CSSValue(const CSSValue &other) - { - assign(other); - } - - /** - * - */ - CSSValue &operator=(const CSSValue &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const CSSValue &other) - { - cssText = other.cssText; - valueType = other.valueType; - } - - /** - * - */ - virtual ~CSSValue() {} - -protected: - - DOMString cssText; - int valueType; -}; - - - - - -/*######################################################################### -## CSSStyleDeclaration -#########################################################################*/ - -/** - * The CSSStyleDeclaration interface represents a single CSS declaration block. - * This interface may be used to determine the style properties currently set in - * a block or to set style properties explicitly within the block. - * - * While an implementation may not recognize all CSS properties within a CSS - * declaration block, it is expected to provide access to all specified - * properties in the style sheet through the CSSStyleDeclaration interface. - * Furthermore, implementations that support a specific level of CSS should - * correctly handle CSS shorthand properties for that level. For a further - * discussion of shorthand properties, see the CSS2Properties interface. - * - * This interface is also used to provide a read-only access to the computed - * values of an element. See also the ViewCSS interface. - * - * Note: The CSS Object Model doesn't provide an access to the specified or - * actual values of the CSS cascade. - */ -class CSSStyleDeclaration -{ -private: - - class CSSStyleDeclarationEntry - { - public: - CSSStyleDeclarationEntry(const DOMString &nameArg, - const DOMString &valueArg, - const DOMString &prioArg) - { - name = nameArg; - value = valueArg; - prio = prioArg; - } - virtual ~CSSStyleDeclarationEntry(){} - DOMString name; - DOMString value; - DOMString prio; - }; - - -public: - - /** - * The parsable textual representation of the declaration block (excluding the - * surrounding curly braces). - */ - virtual DOMString getCssText() - { - return cssText; - } - - /** - * The parsable textual representation of the declaration block (excluding the - * surrounding curly braces). Setting this attribute will result in the parsing - * of the new value and resetting of all the properties in the declaration block - * including the removal or addition of properties. - */ - virtual void setCssText(const DOMString &val) - throw (dom::DOMException) - { - cssText = val; - } - - /** - * Used to retrieve the value of a CSS property if it has been explicitly - * set within this declaration block. - */ - virtual DOMString getPropertyValue(const DOMString &propertyName) - { - std::vector<CSSStyleDeclarationEntry>::iterator iter; - for (iter=items.begin() ; iter!=items.end() ; ++iter) - { - if (iter->name == propertyName) - return iter->value; - } - return ""; - } - - /** - * Used to retrieve the object representation of the value of a CSS property if - * it has been explicitly set within this declaration block. This method returns - * null if the property is a shorthand property. Shorthand property values can - * only be accessed and modified as strings, using the getPropertyValue and - * setProperty methods. - */ - virtual CSSValue getPropertyCSSValue(const DOMString &/*propertyName*/) - { - CSSValue value; - return value; - } - - /** - * Used to remove a CSS property if it has been explicitly set within - * this declaration block. - */ - virtual DOMString removeProperty(const DOMString &propertyName) - throw (dom::DOMException) - { - std::vector<CSSStyleDeclarationEntry>::iterator iter; - for (iter=items.begin() ; iter!=items.end() ; ){ - if (iter->name == propertyName){ - iter = items.erase(iter); - } - else{ - ++iter; - } - } - return propertyName; - } - - /** - * Used to retrieve the priority of a CSS property (e.g. the "important" - * qualifier) if the property has been explicitly set in this declaration block. - */ - virtual DOMString getPropertyPriority(const DOMString &propertyName) - { - std::vector<CSSStyleDeclarationEntry>::iterator iter; - for (iter=items.begin() ; iter!=items.end() ; ++iter) - { - if (iter->name == propertyName) - return iter->prio; - } - return ""; - } - - /** - * Used to set a property value and priority within this declaration block. - */ - virtual void setProperty(const DOMString &propertyName, - const DOMString &value, - const DOMString &priority) - throw (dom::DOMException) - { - std::vector<CSSStyleDeclarationEntry>::iterator iter; - for (iter=items.begin() ; iter!=items.end() ; ++iter) - { - if (iter->name == propertyName) - { - iter->name = propertyName; - iter->value = value; - iter->prio = priority; - return; - } - } - CSSStyleDeclarationEntry entry(propertyName, value, priority); - items.push_back(entry); - } - - /** - * The number of properties that have been explicitly set in this declaration - * block. The range of valid indices is 0 to length-1 inclusive. - */ - virtual unsigned long getLength() - { - return items.size(); - } - - /** - * Used to retrieve the properties that have been explicitly set in this - * declaration block. The order of the properties retrieved using this method - * does not have to be the order in which they were set. This method can be used - * to iterate over all properties in this declaration block. - */ - virtual DOMString item(unsigned long index) - { - if (index>=items.size()) - return ""; - DOMString ret = items[index].name; - ret.append(":"); - ret.append(items[index].value); - return ret; - } - - /** - * The CSS rule that contains this declaration block or null if this - * CSSStyleDeclaration is not attached to a CSSRule. - */ - virtual CSSRule *getParentRule() - { - return parentRule; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSStyleDeclaration() - { - parentRule = NULL; - } - - /** - * - */ - CSSStyleDeclaration(const CSSStyleDeclaration &other) - { - assign(other); - } - - /** - * - */ - CSSStyleDeclaration &operator=(const CSSStyleDeclaration &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const CSSStyleDeclaration &other) - { - parentRule = other.parentRule; - cssText = other.cssText; - items = other.items; - } - - /** - * - */ - virtual ~CSSStyleDeclaration() {} - -protected: - - DOMString cssText; - - CSSRule *parentRule; - - std::vector<CSSStyleDeclarationEntry> items; -}; - - - - -/*######################################################################### -## CSSStyleRule -#########################################################################*/ - -/** - * The CSSStyleRule interface represents a single rule set in a CSS style sheet. - */ -class CSSStyleRule : virtual public CSSRule -{ -public: - - /** - * The textual representation of the selector for the rule set. The - * implementation may have stripped out insignificant whitespace while parsing - * the selector. - */ - virtual DOMString getSelectorText() - { - return selectorText; - } - - /** - * The textual representation of the selector for the rule set. The - * implementation may have stripped out insignificant whitespace while parsing - * the selector. Setting implies reparsing. - */ - virtual void setSelectorText(const DOMString &val) - throw (dom::DOMException) - { - selectorText = val; - } - - - /** - * The declaration-block of this rule set. - */ - virtual CSSStyleDeclaration &getStyle() - { - return style; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSStyleRule() : CSSRule() - { - type = STYLE_RULE; - selectorText = ""; - } - - - /** - * - */ - CSSStyleRule(const CSSStyleRule &other) : CSSRule(other) - { - assign(other); - } - - /** - * - */ - CSSStyleRule &operator=(const CSSStyleRule &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const CSSStyleRule &other) - { - selectorText = other.selectorText; - style = other.style; - } - - /** - * - */ - virtual ~CSSStyleRule() {} - -protected: - - DOMString selectorText; - - CSSStyleDeclaration style; - -}; - -/*######################################################################### -## CSSMediaRule -#########################################################################*/ - -/** - * The CSSMediaRule interface represents a @media rule in a CSS style sheet. A - * @media rule can be used to delimit style rules for specific media types. - */ -class CSSMediaRule : virtual public CSSRule -{ -public: - - /** - * A list of media types for this rule. - */ - virtual stylesheets::MediaList getMedia() - { - return mediaList; - } - - /** - * A list of all CSS rules contained within the media block. - */ - virtual CSSRuleList getCssRules() - { - return cssRules; - } - - /** - * Used to insert a new rule into the media block. - */ - virtual unsigned long insertRule(const DOMString &/*ruleStr*/, - unsigned long index) - throw (dom::DOMException) - { - if (index>cssRules.getLength()) - return 0; - CSSRule rule; - cssRules.insertRule(rule, index); - return index; - } - - /** - * Used to delete a rule from the media block. - */ - virtual void deleteRule(unsigned long index) - throw(dom::DOMException) - { - cssRules.deleteRule(index); - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSMediaRule() : CSSRule() - { - type = MEDIA_RULE; - } - - /** - * - */ - CSSMediaRule(const CSSMediaRule &other) : CSSRule(other) - { - assign(other); - } - - /** - * - */ - CSSMediaRule &operator=(const CSSMediaRule &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const CSSMediaRule &other) - { - mediaList = other.mediaList; - cssRules = other.cssRules; - } - - /** - * - */ - virtual ~CSSMediaRule() {} - -protected: - - stylesheets::MediaList mediaList; - - CSSRuleList cssRules; -}; - - - - -/*######################################################################### -## CSSFontFaceRule -#########################################################################*/ - -/** - * The CSSFontFaceRule interface represents a @font-face rule in a CSS style - * sheet. The @font-face rule is used to hold a set of font descriptions. - */ -class CSSFontFaceRule : virtual public CSSRule -{ -public: - - /** - * The declaration-block of this rule. - */ - virtual CSSStyleDeclaration getStyle() - { - return style; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSFontFaceRule() : CSSRule() - { - type = FONT_FACE_RULE; - } - - /** - * - */ - CSSFontFaceRule(const CSSFontFaceRule &other) - : CSSRule(other), - style (other.style) - { - } - - /** - * - */ - CSSFontFaceRule &operator=(const CSSFontFaceRule &other) - { - style = other.style; - return *this; - } - - /** - * - */ - void assign(const CSSFontFaceRule &other) - { - style = other.style; - } - - /** - * - */ - virtual ~CSSFontFaceRule() {} - -protected: - - CSSStyleDeclaration style; -}; - - - - -/*######################################################################### -## CSSPageRule -#########################################################################*/ - -/** - * The CSSPageRule interface represents a @page rule within a CSS style sheet. - * The @page rule is used to specify the dimensions, orientation, margins, etc. - * of a page box for paged media. - */ -class CSSPageRule : virtual public CSSRule -{ -public: - - /** - * The parsable textual representation of the page selector for the rule. - */ - virtual DOMString getSelectorText() - { - return selectorText; - } - - /** - * The parsable textual representation of the page selector for the rule. - * Setting implies parsing. - */ - virtual void setSelectorText(const DOMString &val) - throw(dom::DOMException) - { - selectorText = val; - } - - - /** - * The declaration-block of this rule. - */ - virtual CSSStyleDeclaration getStyle() - { - return style; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSPageRule() : CSSRule() - { - type = PAGE_RULE; - } - - /** - * - */ - CSSPageRule(const CSSPageRule &other) : CSSRule(other) - { - assign(other); - } - - /** - * - */ - CSSPageRule &operator=(const CSSPageRule &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const CSSPageRule &other) - { - selectorText = other.selectorText; - style = other.style; - } - - /** - * - */ - virtual ~CSSPageRule() {} - -protected: - - DOMString selectorText; - - CSSStyleDeclaration style; -}; - - - - - -/*######################################################################### -## CSSImportRule -#########################################################################*/ - -/** - * The CSSImportRule interface represents a @import rule within a CSS style - * sheet. The @import rule is used to import style rules from other style sheets. - */ -class CSSImportRule : virtual public CSSRule -{ -public: - - /** - * The location of the style sheet to be imported. The attribute will not contain - * the "url(...)" specifier around the URI. - */ - virtual DOMString getHref() - { - return href; - } - - /** - * A list of media types for which this style sheet may be used. - */ - virtual stylesheets::MediaList getMedia() - { - return mediaList; - } - - /** - * The style sheet referred to by this rule, if it has been loaded. The value of - * this attribute is null if the style sheet has not yet been loaded or if it - * will not be loaded (e.g. if the style sheet is for a media type not supported - * by the user agent). - */ - virtual CSSStyleSheet getStyleSheet() - { - return styleSheet; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSImportRule() : CSSRule() - { - type = IMPORT_RULE; - } - - /** - * - */ - CSSImportRule(const CSSImportRule &other) : CSSRule(other) - { - assign(other); - } - - /** - * - */ - CSSImportRule &operator=(const CSSImportRule &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const CSSImportRule &other) - { - href = other.href; - mediaList = other.mediaList; - styleSheet = other.styleSheet; - } - - /** - * - */ - virtual ~CSSImportRule() {} - -protected: - - DOMString href; - - stylesheets::MediaList mediaList; - - CSSStyleSheet styleSheet; -}; - - - - - - -/*######################################################################### -## CSSCharsetRule -#########################################################################*/ - -/** - * The CSSCharsetRule interface represents a @charset rule in a CSS style sheet. - * The value of the encoding attribute does not affect the encoding of text data - * in the DOM objects; this encoding is always UTF-16. After a stylesheet is - * loaded, the value of the encoding attribute is the value found in the @charset - * rule. If there was no @charset in the original document, then no - * CSSCharsetRule is created. The value of the encoding attribute may also be - * used as a hint for the encoding used on serialization of the style sheet. - * - * The value of the @charset rule (and therefore of the CSSCharsetRule) may not - * correspond to the encoding the document actually came in; character encoding - * information e.g. in an HTTP header, has priority (see CSS document - * representation) but this is not reflected in the CSSCharsetRule. - */ -class CSSCharsetRule : virtual public CSSRule -{ -public: - - /** - * The encoding information used in this @charset rule. - */ - virtual DOMString getEncoding() - { - return encoding; - } - - /** - * The encoding information used in this @charset rule. - * Setting implies parsing. - */ - virtual void setEncoding(const DOMString &val) throw (dom::DOMException) - { - encoding = val; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSCharsetRule() : CSSRule() - { - type = CHARSET_RULE; - } - - /** - * - */ - CSSCharsetRule(const CSSCharsetRule &other) : CSSRule(other) - { - encoding = other.encoding; - } - - /** - * - */ - CSSCharsetRule &operator=(const CSSCharsetRule &other) - { - encoding = other.encoding; - return *this; - } - - /** - * - */ - virtual ~CSSCharsetRule() {} - -protected: - - DOMString encoding; - -}; - - - - - -/*######################################################################### -## CSSUnknownRule -#########################################################################*/ - -/** - * The CSSUnknownRule interface represents an at-rule not supported by - * this user agent. - */ -class CSSUnknownRule : virtual public CSSRule -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSUnknownRule() : CSSRule() - { - type = UNKNOWN_RULE; - } - - /** - * - */ - CSSUnknownRule(const CSSUnknownRule &other) : CSSRule(other) - { - } - - /** - * - */ - CSSUnknownRule &operator=(const CSSUnknownRule &/*other*/) - { - return *this; - } - - /** - * - */ - virtual ~CSSUnknownRule() {} -}; - - - - - - - -/*######################################################################### -## CSSValueList -#########################################################################*/ - -/** - * The CSSValueList interface provides the abstraction of an ordered collection - * of CSS values. - * - * Some properties allow an empty list into their syntax. In that case, these - * properties take the none identifier. So, an empty list means that the property - * has the value none. - * - * The items in the CSSValueList are accessible via an integral index, starting - * from 0. - */ -class CSSValueList : virtual public CSSValue -{ -public: - - /** - * The number of CSSValues in the list. The range of valid values of the indices - * is 0 to length-1 inclusive. - */ - virtual unsigned long getLength() - { - return items.size(); - } - - /** - * Used to retrieve a CSSValue by ordinal index. The order in this collection - * represents the order of the values in the CSS style property. If index is - * greater than or equal to the number of values in the list, this returns null. - */ - virtual CSSValue item(unsigned long index) - { - if (index>=items.size()) - { - CSSValue dummy; - return dummy; - } - return items[index]; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSValueList() - { - } - - /** - * - */ - CSSValueList(const CSSValueList &other) - : CSSValue(other), - items (other.items) - { - } - - /** - * - */ - CSSValueList &operator=(const CSSValueList &other) - { - items = other.items; - return *this; - } - - /** - * - */ - virtual ~CSSValueList() {} - -protected: - - std::vector<CSSValue> items; -}; - - - - -/*######################################################################### -## CSSPrimitiveValue -#########################################################################*/ - -/** - * The CSSPrimitiveValue interface represents a single CSS value. This interface - * may be used to determine the value of a specific style property currently set - * in a block or to set a specific style property explicitly within the block. An - * instance of this interface might be obtained from the getPropertyCSSValue - * method of the CSSStyleDeclaration interface. A CSSPrimitiveValue object only - * occurs in a context of a CSS property. - * - * Conversions are allowed between absolute values (from millimeters to - * centimeters, from degrees to radians, and so on) but not between relative - * values. (For example, a pixel value cannot be converted to a centimeter value.) - * Percentage values can't be converted since they are relative to the parent - * value (or another property value). There is one exception for color percentage - * values: since a color percentage value is relative to the range 0-255, a color - * percentage value can be converted to a number; (see also the RGBColor - * interface). - */ -class CSSPrimitiveValue : virtual public CSSValue -{ -public: - - /** - *An integer indicating which type of unit applies to the value. - */ - typedef enum - { - CSS_UNKNOWN = 0, - CSS_NUMBER = 1, - CSS_PERCENTAGE = 2, - CSS_EMS = 3, - CSS_EXS = 4, - CSS_PX = 5, - CSS_CM = 6, - CSS_MM = 7, - CSS_IN = 8, - CSS_PT = 9, - CSS_PC = 10, - CSS_DEG = 11, - CSS_RAD = 12, - CSS_GRAD = 13, - CSS_MS = 14, - CSS_S = 15, - CSS_HZ = 16, - CSS_KHZ = 17, - CSS_DIMENSION = 18, - CSS_STRING = 19, - CSS_URI = 20, - CSS_IDENT = 21, - CSS_ATTR = 22, - CSS_COUNTER = 23, - CSS_RECT = 24, - CSS_RGBCOLOR = 25 - } UnitTypes; - - - /** - * The type of the value as defined by the constants specified above. - */ - virtual unsigned short getPrimitiveType() - { - return primitiveType; - } - - /** - * A method to set the float value with a specified unit. If the property - * attached with this value can not accept the specified unit or the float value, - * the value will be unchanged and a DOMException will be raised. - */ - virtual void setFloatValue(unsigned short unitType, - double doubleValueArg) - throw (dom::DOMException) - { - primitiveType = unitType; - doubleValue = doubleValueArg; - } - - /** - * This method is used to get a float value in a specified unit. If this CSS - * value doesn't contain a float value or can't be converted into the specified - * unit, a DOMException is raised. - */ - virtual double getFloatValue(unsigned short /*unitType*/) - throw (dom::DOMException) - { - return doubleValue; - } - - /** - * A method to set the string value with the specified unit. If the property - * attached to this value can't accept the specified unit or the string value, - * the value will be unchanged and a DOMException will be raised. - */ - virtual void setStringValue(unsigned short /*stringType*/, - const DOMString &stringValueArg) - throw (dom::DOMException) - { - stringValue = stringValueArg; - } - - /** - * This method is used to get the string value. If the CSS value doesn't contain - * a string value, a DOMException is raised. - * - * Note: Some properties (like 'font-family' or 'voice-family') convert a - * whitespace separated list of idents to a string. - */ - virtual DOMString getStringValue() throw (dom::DOMException) - { - return stringValue; - } - - /** - * This method is used to get the Counter value. If this CSS value doesn't - * contain a counter value, a DOMException is raised. Modification to the - * corresponding style property can be achieved using the Counter interface. - */ - virtual Counter *getCounterValue() throw (dom::DOMException) - { - return NULL; - } - - /** - * This method is used to get the Rect value. If this CSS value doesn't contain a - * rect value, a DOMException is raised. Modification to the corresponding style - * property can be achieved using the Rect interface. - */ - virtual Rect *getRectValue() throw (dom::DOMException) - { - return NULL; - } - - /** - * This method is used to get the RGB color. If this CSS value doesn't contain a - * RGB color value, a DOMException is raised. Modification to the corresponding - * style property can be achieved using the RGBColor interface. - */ - virtual RGBColor *getRGBColorValue() throw (dom::DOMException) - { - return NULL; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSSPrimitiveValue() : - CSSValue(), - primitiveType(0), - doubleValue(0), - stringValue() - { - } - - /** - * - */ - CSSPrimitiveValue(const CSSPrimitiveValue &other) : - CSSValue() - { - primitiveType = other.primitiveType; - doubleValue = other.doubleValue; - stringValue = other.stringValue; - } - - /** - * - */ - CSSPrimitiveValue &operator=(const CSSPrimitiveValue &other) - { - if(this == &other) - { - return *this; - } - primitiveType = other.primitiveType; - doubleValue = other.doubleValue; - stringValue = other.stringValue; - return *this; - } - - /** - * - */ - virtual ~CSSPrimitiveValue() {} - -protected: - - int primitiveType; - - double doubleValue; - - DOMString stringValue; - - -}; - - - -/*######################################################################### -## RGBColor -#########################################################################*/ - -/** - * The RGBColor interface is used to represent any RGB color value. This - * interface reflects the values in the underlying style property. Hence, - * modifications made to the CSSPrimitiveValue objects modify the style property. - * - * A specified RGB color is not clipped (even if the number is outside the range - * 0-255 or 0%-100%). A computed RGB color is clipped depending on the device. - * - * Even if a style sheet can only contain an integer for a color value, the - * internal storage of this integer is a float, and this can be used as a float - * in the specified or the computed style. - * - * A color percentage value can always be converted to a number and vice versa. - */ -class RGBColor -{ -public: - - /** - * This attribute is used for the red value of the RGB color. - */ - virtual CSSPrimitiveValue getRed() - { - return red; - } - - /** - * This attribute is used for the green value of the RGB color. - */ - virtual CSSPrimitiveValue getGreen() - { - return green; - } - - /** - * This attribute is used for the blue value of the RGB color. - */ - virtual CSSPrimitiveValue getBlue() - { - return blue; - } - - /** - * REPLACES: RGBColor CSSPrimitiveValue::getRGBColorValue() throw (dom::DOMException) - */ - static RGBColor getRGBColorValue(const CSSPrimitiveValue &/*val*/) - { - RGBColor col; - return col; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - RGBColor() {} - - /** - * - */ - RGBColor(const RGBColor &other) - { - assign(other); - } - - /** - * - */ - RGBColor &operator=(const RGBColor &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const RGBColor &other) - { - red = other.red; - green = other.green; - blue = other.blue; - } - - /** - * - */ - virtual ~RGBColor() {} - -protected: - - CSSPrimitiveValue red; - CSSPrimitiveValue green; - CSSPrimitiveValue blue; -}; - - - - -/*######################################################################### -## Rect -#########################################################################*/ - -/** - * The Rect interface is used to represent any rect value. This interface - * reflects the values in the underlying style property. Hence, modifications - * made to the CSSPrimitiveValue objects modify the style property. - */ -class Rect -{ -public: - - /** - * This attribute is used for the top of the rect. - */ - virtual CSSPrimitiveValue getTop() - { - return top; - } - - /** - * This attribute is used for the right of the rect. - */ - virtual CSSPrimitiveValue getRight() - { - return right; - } - - /** - * This attribute is used for the bottom of the rect. - */ - virtual CSSPrimitiveValue getBottom() - { - return bottom; - } - - /** - * This attribute is used for the left of the rect. - */ - virtual CSSPrimitiveValue getLeft() - { - return left; - } - - /** - * REPLACES: Rect CSSPrimitiveValue::getRectValue() throw (dom::DOMException) - */ - static Rect getRectValue(const CSSPrimitiveValue &/*val*/) - { - Rect rect; - return rect; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - Rect() {} - - /** - * - */ - Rect(const Rect &other) - { - assign(other); - } - - /** - * - */ - Rect &operator=(const Rect &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const Rect &other) - { - top = other.top; - right = other.right; - bottom = other.bottom; - left = other.left; - } - - /** - * - */ - virtual ~Rect() {} - -protected: - - CSSPrimitiveValue top; - CSSPrimitiveValue right; - CSSPrimitiveValue bottom; - CSSPrimitiveValue left; -}; - - - - - - -/*######################################################################### -## Counter -#########################################################################*/ - -/** - * The Counter interface is used to represent any counter or counters function - * value. This interface reflects the values in the underlying style property. - */ -class Counter -{ -public: - - /** - * This attribute is used for the identifier of the counter. - */ - virtual DOMString getIdentifier() - { - return identifier; - } - - /** - * This attribute is used for the style of the list. - */ - virtual DOMString getListStyle() - { - return listStyle; - } - - /** - * This attribute is used for the separator of the nested counters. - */ - virtual DOMString getSeparator() - { - return separator; - } - - /** - * REPLACES: Counter CSSPrimitiveValue::getCounterValue() throw (dom::DOMException) - */ - static Counter getCounterValue(const CSSPrimitiveValue &/*val*/) - { - Counter counter; - return counter; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - Counter() {} - - /** - * - */ - Counter(const Counter &other) - { - assign(other); - } - - /** - * - */ - Counter &operator=(const Counter &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const Counter &other) - { - identifier = other.identifier; - listStyle = other.listStyle; - separator = other.separator; - } - - /** - * - */ - virtual ~Counter() {} - -protected: - - DOMString identifier; - DOMString listStyle; - DOMString separator; - -}; - - - - -/*######################################################################### -## ElementCSSInlineStyle -#########################################################################*/ - -/** - * Inline style information attached to elements is exposed through the style - * attribute. This represents the contents of the STYLE attribute for HTML - * elements (or elements in other schemas or DTDs which use the STYLE attribute - * in the same way). The expectation is that an instance of the - * ElementCSSInlineStyle interface can be obtained by using binding-specific - * casting methods on an instance of the Element interface when the element - * supports inline CSS style informations. - */ -class ElementCSSInlineStyle -{ -public: - - /** - * The style attribute. - */ - virtual CSSStyleDeclaration getStyle() - { - return style; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementCSSInlineStyle() {} - - /** - * - */ - ElementCSSInlineStyle(const ElementCSSInlineStyle &other) - : style (other.style) - { - } - - /** - * - */ - ElementCSSInlineStyle &operator=(const ElementCSSInlineStyle &other) - { - style = other.style; - return *this; - } - - /** - * - */ - virtual ~ElementCSSInlineStyle() {} - -protected: - - CSSStyleDeclaration style; -}; - - - - - - -/*######################################################################### -## CSS2Properties -#########################################################################*/ - -/** - * The CSS2Properties interface represents a convenience mechanism for retrieving - * and setting properties within a CSSStyleDeclaration. The attributes of this - * interface correspond to all the properties specified in CSS2. Getting an - * attribute of this interface is equivalent to calling the getPropertyValue - * method of the CSSStyleDeclaration interface. Setting an attribute of this - * interface is equivalent to calling the setProperty method of the - * CSSStyleDeclaration interface. - * - * A conformant implementation of the CSS module is not required to implement the - * CSS2Properties interface. If an implementation does implement this interface, - * the expectation is that language-specific methods can be used to cast from an - * instance of the CSSStyleDeclaration interface to the CSS2Properties interface. - * - * If an implementation does implement this interface, it is expected to - * understand the specific syntax of the shorthand properties, and apply their - * semantics; when the margin property is set, for example, the marginTop, - * marginRight, marginBottom and marginLeft properties are actually being set by - * the underlying implementation. - * - * When dealing with CSS "shorthand" properties, the shorthand properties should - * be decomposed into their component longhand properties as appropriate, and - * when querying for their value, the form returned should be the shortest form - * exactly equivalent to the declarations made in the ruleset. However, if there - * is no shorthand declaration that could be added to the ruleset without - * changing in any way the rules already declared in the ruleset (i.e., by adding - * longhand rules that were previously not declared in the ruleset), then the - * empty string should be returned for the shorthand property. - * - * For example, querying for the font property should not return "normal normal - * normal 14pt/normal Arial, sans-serif", when "14pt Arial, sans-serif" suffices. - * (The normals are initial values, and are implied by use of the longhand - * property.) - * - * If the values for all the longhand properties that compose a particular string - * are the initial values, then a string consisting of all the initial values - * should be returned (e.g. a border-width value of "medium" should be returned - * as such, not as ""). - * - * For some shorthand properties that take missing values from other sides, such - * as the margin, padding, and border-[width|style|color] properties, the minimum - * number of sides possible should be used; i.e., "0px 10px" will be returned - * instead of "0px 10px 0px 10px". - * - * If the value of a shorthand property can not be decomposed into its component - * longhand properties, as is the case for the font property with a value of - * "menu", querying for the values of the component longhand properties should - * return the empty string. - * */ -class CSS2Properties -{ -public: - - - /** - * return the 'azimuth' property - */ - virtual DOMString getAzimuth() - { - return azimuth; - } - - /** - * set the 'azimuth' property - */ - virtual void setAzimuth(const DOMString &val) - throw (dom::DOMException) - { - azimuth = val; - } - - /** - * return the 'background' property - */ - virtual DOMString getBackground() - { - return background; - } - - /** - * set the 'background' property - */ - virtual void setBackground(const DOMString &val) - throw (dom::DOMException) - { - background = val; - } - - /** - * return the 'backgroundAttachment' property - */ - virtual DOMString getBackgroundAttachment() - { - return backgroundAttachment; - } - - /** - * set the 'backgroundAttachment' property - */ - virtual void setBackgroundAttachment(const DOMString &val) - throw (dom::DOMException) - { - backgroundAttachment = val; - } - - /** - * return the 'backgroundColor' property - */ - virtual DOMString getBackgroundColor() - { - return backgroundColor; - } - - /** - * set the 'backgroundColor' property - */ - virtual void setBackgroundColor(const DOMString &val) - throw (dom::DOMException) - { - backgroundColor = val; - } - - /** - * return the 'backgroundImage' property - */ - virtual DOMString getBackgroundImage() - { - return backgroundImage; - } - - /** - * set the 'backgroundImage' property - */ - virtual void setBackgroundImage(const DOMString &val) - throw (dom::DOMException) - { - backgroundImage = val; - } - - /** - * return the 'backgroundPosition' property - */ - virtual DOMString getBackgroundPosition() - { - return backgroundPosition; - } - - /** - * set the 'backgroundPosition' property - */ - virtual void setBackgroundPosition(const DOMString &val) - throw (dom::DOMException) - { - backgroundPosition = val; - } - - /** - * return the 'backgroundRepeat' property - */ - virtual DOMString getBackgroundRepeat() - { - return backgroundRepeat; - } - - /** - * set the 'backgroundRepeat' property - */ - virtual void setBackgroundRepeat(const DOMString &val) - throw (dom::DOMException) - { - backgroundRepeat = val; - } - - /** - * return the 'border' property - */ - virtual DOMString getBorder() - { - return border; - } - - /** - * set the 'border' property - */ - virtual void setBorder(const DOMString &val) - throw (dom::DOMException) - { - border = val; - } - - /** - * return the 'borderCollapse' property - */ - virtual DOMString getBorderCollapse() - { - return borderCollapse; - } - - /** - * set the 'borderCollapse' property - */ - virtual void setBorderCollapse(const DOMString &val) - throw (dom::DOMException) - { - borderCollapse = val; - } - - /** - * return the 'borderColor' property - */ - virtual DOMString getBorderColor() - { - return borderColor; - } - - /** - * set the 'borderColor' property - */ - virtual void setBorderColor(const DOMString &val) - throw (dom::DOMException) - { - borderColor = val; - } - - /** - * return the 'borderSpacing' property - */ - virtual DOMString getBorderSpacing() - { - return borderSpacing; - } - - /** - * set the 'borderSpacing' property - */ - virtual void setBorderSpacing(const DOMString &val) - throw (dom::DOMException) - { - borderSpacing = val; - } - - /** - * return the 'borderStyle' property - */ - virtual DOMString getBorderStyle() - { - return borderStyle; - } - - /** - * set the 'borderStyle' property - */ - virtual void setBorderStyle(const DOMString &val) - throw (dom::DOMException) - { - borderStyle = val; - } - - /** - * return the 'borderTop' property - */ - virtual DOMString getBorderTop() - { - return borderTop; - } - - /** - * set the 'borderTop' property - */ - virtual void setBorderTop(const DOMString &val) - throw (dom::DOMException) - { - borderTop = val; - } - - /** - * return the 'borderRight' property - */ - virtual DOMString getBorderRight() - { - return borderRight; - } - - /** - * set the 'borderRight' property - */ - virtual void setBorderRight(const DOMString &val) - throw (dom::DOMException) - { - borderRight = val; - } - - /** - * return the 'borderBottom' property - */ - virtual DOMString getBorderBottom() - { - return borderBottom; - } - - /** - * set the 'borderBottom' property - */ - virtual void setBorderBottom(const DOMString &val) - throw (dom::DOMException) - { - borderBottom = val; - } - - /** - * return the 'borderLeft' property - */ - virtual DOMString getBorderLeft() - { - return borderLeft; - } - - /** - * set the 'borderLeft' property - */ - virtual void setBorderLeft(const DOMString &val) - throw (dom::DOMException) - { - borderLeft = val; - } - - /** - * return the 'borderTopColor' property - */ - virtual DOMString getBorderTopColor() - { - return borderTopColor; - } - - /** - * set the 'borderTopColor' property - */ - virtual void setBorderTopColor(const DOMString &val) - throw (dom::DOMException) - { - borderTopColor = val; - } - - /** - * return the 'borderRightColor' property - */ - virtual DOMString getBorderRightColor() - { - return borderRightColor; - } - - /** - * set the 'borderRightColor' property - */ - virtual void setBorderRightColor(const DOMString &val) - throw (dom::DOMException) - { - borderRightColor = val; - } - - /** - * return the 'borderBottomColor' property - */ - virtual DOMString getBorderBottomColor() - { - return borderBottomColor; - } - - /** - * set the 'borderBottomColor' property - */ - virtual void setBorderBottomColor(const DOMString &val) - throw (dom::DOMException) - { - borderBottomColor = val; - } - - /** - * return the 'borderLeftColor' property - */ - virtual DOMString getBorderLeftColor() - { - return borderLeftColor; - } - - /** - * set the 'borderLeftColor' property - */ - virtual void setBorderLeftColor(const DOMString &val) - throw (dom::DOMException) - { - borderLeftColor = val; - } - - /** - * return the 'borderTopStyle' property - */ - virtual DOMString getBorderTopStyle() - { - return borderTopStyle; - } - - /** - * set the 'borderTopStyle' property - */ - virtual void setBorderTopStyle(const DOMString &val) - throw (dom::DOMException) - { - borderTopStyle = val; - } - - /** - * return the 'borderRightStyle' property - */ - virtual DOMString getBorderRightStyle() - { - return borderRightStyle; - } - - /** - * set the 'borderRightStyle' property - */ - virtual void setBorderRightStyle(const DOMString &val) - throw (dom::DOMException) - { - borderRightStyle = val; - } - - /** - * return the 'borderBottomStyle' property - */ - virtual DOMString getBorderBottomStyle() - { - return borderBottomStyle; - } - - /** - * set the 'borderBottomStyle' property - */ - virtual void setBorderBottomStyle(const DOMString &val) - throw (dom::DOMException) - { - borderBottomStyle = val; - } - - /** - * return the 'borderLeftStyle' property - */ - virtual DOMString getBorderLeftStyle() - { - return borderLeftStyle; - } - - /** - * set the 'borderLeftStyle' property - */ - virtual void setBorderLeftStyle(const DOMString &val) - throw (dom::DOMException) - { - borderLeftStyle = val; - } - - /** - * return the 'borderTopWidth' property - */ - virtual DOMString getBorderTopWidth() - { - return borderTopWidth; - } - - /** - * set the 'borderTopWidth' property - */ - virtual void setBorderTopWidth(const DOMString &val) - throw (dom::DOMException) - { - borderTopWidth = val; - } - - /** - * return the 'borderRightWidth' property - */ - virtual DOMString getBorderRightWidth() - { - return borderRightWidth; - } - - /** - * set the 'borderRightWidth' property - */ - virtual void setBorderRightWidth(const DOMString &val) - throw (dom::DOMException) - { - borderRightWidth = val; - } - - /** - * return the 'borderBottomWidth' property - */ - virtual DOMString getBorderBottomWidth() - { - return borderBottomWidth; - } - - /** - * set the 'borderBottomWidth' property - */ - virtual void setBorderBottomWidth(const DOMString &val) - throw (dom::DOMException) - { - borderBottomWidth = val; - } - - /** - * return the 'borderLeftWidth' property - */ - virtual DOMString getBorderLeftWidth() - { - return borderLeftWidth; - } - - /** - * set the 'borderLeftWidth' property - */ - virtual void setBorderLeftWidth(const DOMString &val) - throw (dom::DOMException) - { - borderLeftWidth = val; - } - - /** - * return the 'borderWidth' property - */ - virtual DOMString getBorderWidth() - { - return borderWidth; - } - - /** - * set the 'borderWidth' property - */ - virtual void setBorderWidth(const DOMString &val) - throw (dom::DOMException) - { - borderWidth = val; - } - - /** - * return the 'bottom' property - */ - virtual DOMString getBottom() - { - return bottom; - } - - /** - * set the 'bottom' property - */ - virtual void setBottom(const DOMString &val) - throw (dom::DOMException) - { - bottom = val; - } - - /** - * return the 'captionSide' property - */ - virtual DOMString getCaptionSide() - { - return captionSide; - } - - /** - * set the 'captionSide' property - */ - virtual void setCaptionSide(const DOMString &val) - throw (dom::DOMException) - { - captionSide = val; - } - - /** - * return the 'clear' property - */ - virtual DOMString getClear() - { - return clear; - } - - /** - * set the 'clear' property - */ - virtual void setClear(const DOMString &val) - throw (dom::DOMException) - { - clear = val; - } - - /** - * return the 'clip' property - */ - virtual DOMString getClip() - { - return clip; - } - - /** - * set the 'clip' property - */ - virtual void setClip(const DOMString &val) - throw (dom::DOMException) - { - clip = val; - } - - /** - * return the 'color' property - */ - virtual DOMString getColor() - { - return color; - } - - /** - * set the 'color' property - */ - virtual void setColor(const DOMString &val) - throw (dom::DOMException) - { - color = val; - } - - /** - * return the 'content' property - */ - virtual DOMString getContent() - { - return content; - } - - /** - * set the 'content' property - */ - virtual void setContent(const DOMString &val) - throw (dom::DOMException) - { - content = val; - } - - /** - * return the 'counterIncrement' property - */ - virtual DOMString getCounterIncrement() - { - return counterIncrement; - } - - /** - * set the 'counterIncrement' property - */ - virtual void setCounterIncrement(const DOMString &val) - throw (dom::DOMException) - { - counterIncrement = val; - } - - /** - * return the 'counterReset' property - */ - virtual DOMString getCounterReset() - { - return counterReset; - } - - /** - * set the 'counterReset' property - */ - virtual void setCounterReset(const DOMString &val) - throw (dom::DOMException) - { - counterReset = val; - } - - /** - * return the 'cue' property - */ - virtual DOMString getCue() - { - return cue; - } - - /** - * set the 'cue' property - */ - virtual void setCue(const DOMString &val) - throw (dom::DOMException) - { - cue = val; - } - - /** - * return the 'cueAfter' property - */ - virtual DOMString getCueAfter() - { - return cueAfter; - } - - /** - * set the 'cueAfter' property - */ - virtual void setCueAfter(const DOMString &val) - throw (dom::DOMException) - { - cueAfter = val; - } - - /** - * return the 'cueBefore' property - */ - virtual DOMString getCueBefore() - { - return cueBefore; - } - - /** - * set the 'cueBefore' property - */ - virtual void setCueBefore(const DOMString &val) - throw (dom::DOMException) - { - cueBefore = val; - } - - /** - * return the 'cursor' property - */ - virtual DOMString getCursor() - { - return cursor; - } - - /** - * set the 'cursor' property - */ - virtual void setCursor(const DOMString &val) - throw (dom::DOMException) - { - cursor = val; - } - - /** - * return the 'direction' property - */ - virtual DOMString getDirection() - { - return direction; - } - - /** - * set the 'direction' property - */ - virtual void setDirection(const DOMString &val) - throw (dom::DOMException) - { - direction = val; - } - - /** - * return the 'display' property - */ - virtual DOMString getDisplay() - { - return display; - } - - /** - * set the 'display' property - */ - virtual void setDisplay(const DOMString &val) - throw (dom::DOMException) - { - display = val; - } - - /** - * return the 'elevation' property - */ - virtual DOMString getElevation() - { - return elevation; - } - - /** - * set the 'elevation' property - */ - virtual void setElevation(const DOMString &val) - throw (dom::DOMException) - { - elevation = val; - } - - /** - * return the 'emptyCells' property - */ - virtual DOMString getEmptyCells() - { - return emptyCells; - } - - /** - * set the 'emptyCells' property - */ - virtual void setEmptyCells(const DOMString &val) - throw (dom::DOMException) - { - emptyCells = val; - } - - /** - * return the 'cssFloat' property - */ - virtual DOMString getCssFloat() - { - return cssFloat; - } - - /** - * set the 'cssFloat' property - */ - virtual void setCssFloat(const DOMString &val) - throw (dom::DOMException) - { - cssFloat = val; - } - - /** - * return the 'font' property - */ - virtual DOMString getFont() - { - return font; - } - - /** - * set the 'font' property - */ - virtual void setFont(const DOMString &val) - throw (dom::DOMException) - { - font = val; - } - - /** - * return the 'fontFamily' property - */ - virtual DOMString getFontFamily() - { - return fontFamily; - } - - /** - * set the 'fontFamily' property - */ - virtual void setFontFamily(const DOMString &val) - throw (dom::DOMException) - { - fontFamily = val; - } - - /** - * return the 'fontSize' property - */ - virtual DOMString getFontSize() - { - return fontSize; - } - - /** - * set the 'fontSize' property - */ - virtual void setFontSize(const DOMString &val) - throw (dom::DOMException) - { - fontSize = val; - } - - /** - * return the 'fontSizeAdjust' property - */ - virtual DOMString getFontSizeAdjust() - { - return fontSizeAdjust; - } - - /** - * set the 'fontSizeAdjust' property - */ - virtual void setFontSizeAdjust(const DOMString &val) - throw (dom::DOMException) - { - fontSizeAdjust = val; - } - - /** - * return the 'fontStretch' property - */ - virtual DOMString getFontStretch() - { - return fontStretch; - } - - /** - * set the 'fontStretch' property - */ - virtual void setFontStretch(const DOMString &val) - throw (dom::DOMException) - { - fontStretch = val; - } - - /** - * return the 'fontStyle' property - */ - virtual DOMString getFontStyle() - { - return fontStyle; - } - - /** - * set the 'fontStyle' property - */ - virtual void setFontStyle(const DOMString &val) - throw (dom::DOMException) - { - fontStyle = val; - } - - /** - * return the 'fontVariant' property - */ - virtual DOMString getFontVariant() - { - return fontVariant; - } - - /** - * set the 'fontVariant' property - */ - virtual void setFontVariant(const DOMString &val) - throw (dom::DOMException) - { - fontVariant = val; - } - - /** - * return the 'fontWeight' property - */ - virtual DOMString getFontWeight() - { - return fontWeight; - } - - /** - * set the 'fontWeight' property - */ - virtual void setFontWeight(const DOMString &val) - throw (dom::DOMException) - { - fontWeight = val; - } - - /** - * return the 'height' property - */ - virtual DOMString getHeight() - { - return height; - } - - /** - * set the 'height' property - */ - virtual void setHeight(const DOMString &val) - throw (dom::DOMException) - { - height = val; - } - - /** - * return the 'left' property - */ - virtual DOMString getLeft() - { - return left; - } - - /** - * set the 'left' property - */ - virtual void setLeft(const DOMString &val) - throw (dom::DOMException) - { - left = val; - } - - /** - * return the 'letterSpacing' property - */ - virtual DOMString getLetterSpacing() - { - return letterSpacing; - } - - /** - * set the 'letterSpacing' property - */ - virtual void setLetterSpacing(const DOMString &val) - throw (dom::DOMException) - { - letterSpacing = val; - } - - /** - * return the 'lineHeight' property - */ - virtual DOMString getLineHeight() - { - return lineHeight; - } - - /** - * set the 'lineHeight' property - */ - virtual void setLineHeight(const DOMString &val) - throw (dom::DOMException) - { - lineHeight = val; - } - - /** - * return the 'listStyle' property - */ - virtual DOMString getListStyle() - { - return listStyle; - } - - /** - * set the 'listStyle' property - */ - virtual void setListStyle(const DOMString &val) - throw (dom::DOMException) - { - listStyle = val; - } - - /** - * return the 'listStyleImage' property - */ - virtual DOMString getListStyleImage() - { - return listStyleImage; - } - - /** - * set the 'listStyleImage' property - */ - virtual void setListStyleImage(const DOMString &val) - throw (dom::DOMException) - { - listStyleImage = val; - } - - /** - * return the 'listStylePosition' property - */ - virtual DOMString getListStylePosition() - { - return listStylePosition; - } - - /** - * set the 'listStylePosition' property - */ - virtual void setListStylePosition(const DOMString &val) - throw (dom::DOMException) - { - listStylePosition = val; - } - - /** - * return the 'listStyleType' property - */ - virtual DOMString getListStyleType() - { - return listStyleType; - } - - /** - * set the 'listStyleType' property - */ - virtual void setListStyleType(const DOMString &val) - throw (dom::DOMException) - { - listStyleType = val; - } - - /** - * return the 'margin' property - */ - virtual DOMString getMargin() - { - return margin; - } - - /** - * set the 'margin' property - */ - virtual void setMargin(const DOMString &val) - throw (dom::DOMException) - { - margin = val; - } - - /** - * return the 'marginTop' property - */ - virtual DOMString getMarginTop() - { - return marginTop; - } - - /** - * set the 'marginTop' property - */ - virtual void setMarginTop(const DOMString &val) - throw (dom::DOMException) - { - marginTop = val; - } - - /** - * return the 'marginRight' property - */ - virtual DOMString getMarginRight() - { - return marginRight; - } - - /** - * set the 'marginRight' property - */ - virtual void setMarginRight(const DOMString &val) - throw (dom::DOMException) - { - marginRight = val; - } - - /** - * return the 'marginBottom' property - */ - virtual DOMString getMarginBottom() - { - return marginBottom; - } - - /** - * set the 'marginBottom' property - */ - virtual void setMarginBottom(const DOMString &val) - throw (dom::DOMException) - { - marginBottom = val; - } - - /** - * return the 'marginLeft' property - */ - virtual DOMString getMarginLeft() - { - return marginLeft; - } - - /** - * set the 'marginLeft' property - */ - virtual void setMarginLeft(const DOMString &val) - throw (dom::DOMException) - { - marginLeft = val; - } - - /** - * return the 'markerOffset' property - */ - virtual DOMString getMarkerOffset() - { - return markerOffset; - } - - /** - * set the 'markerOffset' property - */ - virtual void setMarkerOffset(const DOMString &val) - throw (dom::DOMException) - { - markerOffset = val; - } - - /** - * return the 'marks' property - */ - virtual DOMString getMarks() - { - return marks; - } - - /** - * set the 'marks' property - */ - virtual void setMarks(const DOMString &val) - throw (dom::DOMException) - { - marks = val; - } - - /** - * return the 'maxHeight' property - */ - virtual DOMString getMaxHeight() - { - return maxHeight; - } - - /** - * set the 'maxHeight' property - */ - virtual void setMaxHeight(const DOMString &val) - throw (dom::DOMException) - { - maxHeight = val; - } - - /** - * return the 'maxWidth' property - */ - virtual DOMString getMaxWidth() - { - return maxWidth; - } - - /** - * set the 'maxWidth' property - */ - virtual void setMaxWidth(const DOMString &val) - throw (dom::DOMException) - { - maxWidth = val; - } - - /** - * return the 'minHeight' property - */ - virtual DOMString getMinHeight() - { - return minHeight; - } - - /** - * set the 'minHeight' property - */ - virtual void setMinHeight(const DOMString &val) - throw (dom::DOMException) - { - minHeight = val; - } - - /** - * return the 'minWidth' property - */ - virtual DOMString getMinWidth() - { - return minWidth; - } - - /** - * set the 'minWidth' property - */ - virtual void setMinWidth(const DOMString &val) - throw (dom::DOMException) - { - minWidth = val; - } - - /** - * return the 'orphans' property - */ - virtual DOMString getOrphans() - { - return orphans; - } - - /** - * set the 'orphans' property - */ - virtual void setOrphans(const DOMString &val) - throw (dom::DOMException) - { - orphans = val; - } - - /** - * return the 'outline' property - */ - virtual DOMString getOutline() - { - return outline; - } - - /** - * set the 'outline' property - */ - virtual void setOutline(const DOMString &val) - throw (dom::DOMException) - { - outline = val; - } - - /** - * return the 'outlineColor' property - */ - virtual DOMString getOutlineColor() - { - return outlineColor; - } - - /** - * set the 'outlineColor' property - */ - virtual void setOutlineColor(const DOMString &val) - throw (dom::DOMException) - { - outlineColor = val; - } - - /** - * return the 'outlineStyle' property - */ - virtual DOMString getOutlineStyle() - { - return outlineStyle; - } - - /** - * set the 'outlineStyle' property - */ - virtual void setOutlineStyle(const DOMString &val) - throw (dom::DOMException) - { - outlineStyle = val; - } - - /** - * return the 'outlineWidth' property - */ - virtual DOMString getOutlineWidth() - { - return outlineWidth; - } - - /** - * set the 'outlineWidth' property - */ - virtual void setOutlineWidth(const DOMString &val) - throw (dom::DOMException) - { - outlineWidth = val; - } - - /** - * return the 'overflow' property - */ - virtual DOMString getOverflow() - { - return overflow; - } - - /** - * set the 'overflow' property - */ - virtual void setOverflow(const DOMString &val) - throw (dom::DOMException) - { - overflow = val; - } - - /** - * return the 'padding' property - */ - virtual DOMString getPadding() - { - return padding; - } - - /** - * set the 'padding' property - */ - virtual void setPadding(const DOMString &val) - throw (dom::DOMException) - { - padding = val; - } - - /** - * return the 'paddingTop' property - */ - virtual DOMString getPaddingTop() - { - return paddingTop; - } - - /** - * set the 'paddingTop' property - */ - virtual void setPaddingTop(const DOMString &val) - throw (dom::DOMException) - { - paddingTop = val; - } - - /** - * return the 'paddingRight' property - */ - virtual DOMString getPaddingRight() - { - return paddingRight; - } - - /** - * set the 'paddingRight' property - */ - virtual void setPaddingRight(const DOMString &val) - throw (dom::DOMException) - { - paddingRight = val; - } - - /** - * return the 'paddingBottom' property - */ - virtual DOMString getPaddingBottom() - { - return paddingBottom; - } - - /** - * set the 'paddingBottom' property - */ - virtual void setPaddingBottom(const DOMString &val) - throw (dom::DOMException) - { - paddingBottom = val; - } - - /** - * return the 'paddingLeft' property - */ - virtual DOMString getPaddingLeft() - { - return paddingLeft; - } - - /** - * set the 'paddingLeft' property - */ - virtual void setPaddingLeft(const DOMString &val) - throw (dom::DOMException) - { - paddingLeft = val; - } - - /** - * return the 'page' property - */ - virtual DOMString getPage() - { - return page; - } - - /** - * set the 'page' property - */ - virtual void setPage(const DOMString &val) - throw (dom::DOMException) - { - page = val; - } - - /** - * return the 'pageBreakAfter' property - */ - virtual DOMString getPageBreakAfter() - { - return pageBreakAfter; - } - - /** - * set the 'pageBreakAfter' property - */ - virtual void setPageBreakAfter(const DOMString &val) - throw (dom::DOMException) - { - pageBreakAfter = val; - } - - /** - * return the 'pageBreakBefore' property - */ - virtual DOMString getPageBreakBefore() - { - return pageBreakBefore; - } - - /** - * set the 'pageBreakBefore' property - */ - virtual void setPageBreakBefore(const DOMString &val) - throw (dom::DOMException) - { - pageBreakBefore = val; - } - - /** - * return the 'pageBreakInside' property - */ - virtual DOMString getPageBreakInside() - { - return pageBreakInside; - } - - /** - * set the 'pageBreakInside' property - */ - virtual void setPageBreakInside(const DOMString &val) - throw (dom::DOMException) - { - pageBreakInside = val; - } - - /** - * return the 'pause' property - */ - virtual DOMString getPause() - { - return pause; - } - - /** - * set the 'pause' property - */ - virtual void setPause(const DOMString &val) - throw (dom::DOMException) - { - pause = val; - } - - /** - * return the 'pauseAfter' property - */ - virtual DOMString getPauseAfter() - { - return pauseAfter; - } - - /** - * set the 'pauseAfter' property - */ - virtual void setPauseAfter(const DOMString &val) - throw (dom::DOMException) - { - pauseAfter = val; - } - - /** - * return the 'pauseBefore' property - */ - virtual DOMString getPauseBefore() - { - return pauseBefore; - } - - /** - * set the 'pauseBefore' property - */ - virtual void setPauseBefore(const DOMString &val) - throw (dom::DOMException) - { - pauseBefore = val; - } - - /** - * return the 'pitch' property - */ - virtual DOMString getPitch() - { - return pitch; - } - - /** - * set the 'pitch' property - */ - virtual void setPitch(const DOMString &val) - throw (dom::DOMException) - { - pitch = val; - } - - /** - * return the 'pitchRange' property - */ - virtual DOMString getPitchRange() - { - return pitchRange; - } - - /** - * set the 'pitchRange' property - */ - virtual void setPitchRange(const DOMString &val) - throw (dom::DOMException) - { - pitchRange = val; - } - - /** - * return the 'playDuring' property - */ - virtual DOMString getPlayDuring() - { - return playDuring; - } - - /** - * set the 'playDuring' property - */ - virtual void setPlayDuring(const DOMString &val) - throw (dom::DOMException) - { - playDuring = val; - } - - /** - * return the 'position' property - */ - virtual DOMString getPosition() - { - return position; - } - - /** - * set the 'position' property - */ - virtual void setPosition(const DOMString &val) - throw (dom::DOMException) - { - position = val; - } - - /** - * return the 'quotes' property - */ - virtual DOMString getQuotes() - { - return quotes; - } - - /** - * set the 'quotes' property - */ - virtual void setQuotes(const DOMString &val) - throw (dom::DOMException) - { - quotes = val; - } - - /** - * return the 'richness' property - */ - virtual DOMString getRichness() - { - return richness; - } - - /** - * set the 'richness' property - */ - virtual void setRichness(const DOMString &val) - throw (dom::DOMException) - { - richness = val; - } - - /** - * return the 'right' property - */ - virtual DOMString getRight() - { - return right; - } - - /** - * set the 'right' property - */ - virtual void setRight(const DOMString &val) - throw (dom::DOMException) - { - right = val; - } - - /** - * return the 'size' property - */ - virtual DOMString getSize() - { - return size; - } - - /** - * set the 'size' property - */ - virtual void setSize(const DOMString &val) - throw (dom::DOMException) - { - size = val; - } - - /** - * return the 'speak' property - */ - virtual DOMString getSpeak() - { - return speak; - } - - /** - * set the 'speak' property - */ - virtual void setSpeak(const DOMString &val) - throw (dom::DOMException) - { - speak = val; - } - - /** - * return the 'speakHeader' property - */ - virtual DOMString getSpeakHeader() - { - return speakHeader; - } - - /** - * set the 'speakHeader' property - */ - virtual void setSpeakHeader(const DOMString &val) - throw (dom::DOMException) - { - speakHeader = val; - } - - /** - * return the 'speakNumeral' property - */ - virtual DOMString getSpeakNumeral() - { - return speakNumeral; - } - - /** - * set the 'speakNumeral' property - */ - virtual void setSpeakNumeral(const DOMString &val) - throw (dom::DOMException) - { - speakNumeral = val; - } - - /** - * return the 'speakPunctuation' property - */ - virtual DOMString getSpeakPunctuation() - { - return speakPunctuation; - } - - /** - * set the 'speakPunctuation' property - */ - virtual void setSpeakPunctuation(const DOMString &val) - throw (dom::DOMException) - { - speakPunctuation = val; - } - - /** - * return the 'speechRate' property - */ - virtual DOMString getSpeechRate() - { - return speechRate; - } - - /** - * set the 'speechRate' property - */ - virtual void setSpeechRate(const DOMString &val) - throw (dom::DOMException) - { - speechRate = val; - } - - /** - * return the 'stress' property - */ - virtual DOMString getStress() - { - return stress; - } - - /** - * set the 'stress' property - */ - virtual void setStress(const DOMString &val) - throw (dom::DOMException) - { - stress = val; - } - - /** - * return the 'tableLayout' property - */ - virtual DOMString getTableLayout() - { - return tableLayout; - } - - /** - * set the 'tableLayout' property - */ - virtual void setTableLayout(const DOMString &val) - throw (dom::DOMException) - { - tableLayout = val; - } - - /** - * return the 'textAlign' property - */ - virtual DOMString getTextAlign() - { - return textAlign; - } - - /** - * set the 'textAlign' property - */ - virtual void setTextAlign(const DOMString &val) - throw (dom::DOMException) - { - textAlign = val; - } - - /** - * return the 'textDecoration' property - */ - virtual DOMString getTextDecoration() - { - return textDecoration; - } - - /** - * set the 'textDecoration' property - */ - virtual void setTextDecoration(const DOMString &val) - throw (dom::DOMException) - { - textDecoration = val; - } - - /** - * return the 'textIndent' property - */ - virtual DOMString getTextIndent() - { - return textIndent; - } - - /** - * set the 'textIndent' property - */ - virtual void setTextIndent(const DOMString &val) - throw (dom::DOMException) - { - textIndent = val; - } - - /** - * return the 'textShadow' property - */ - virtual DOMString getTextShadow() - { - return textShadow; - } - - /** - * set the 'textShadow' property - */ - virtual void setTextShadow(const DOMString &val) - throw (dom::DOMException) - { - textShadow = val; - } - - /** - * return the 'textTransform' property - */ - virtual DOMString getTextTransform() - { - return textTransform; - } - - /** - * set the 'textTransform' property - */ - virtual void setTextTransform(const DOMString &val) - throw (dom::DOMException) - { - textTransform = val; - } - - /** - * return the 'top' property - */ - virtual DOMString getTop() - { - return top; - } - - /** - * set the 'top' property - */ - virtual void setTop(const DOMString &val) - throw (dom::DOMException) - { - top = val; - } - - /** - * return the 'unicodeBidi' property - */ - virtual DOMString getUnicodeBidi() - { - return unicodeBidi; - } - - /** - * set the 'unicodeBidi' property - */ - virtual void setUnicodeBidi(const DOMString &val) - throw (dom::DOMException) - { - unicodeBidi = val; - } - - /** - * return the 'verticalAlign' property - */ - virtual DOMString getVerticalAlign() - { - return verticalAlign; - } - - /** - * set the 'verticalAlign' property - */ - virtual void setVerticalAlign(const DOMString &val) - throw (dom::DOMException) - { - verticalAlign = val; - } - - /** - * return the 'visibility' property - */ - virtual DOMString getVisibility() - { - return visibility; - } - - /** - * set the 'visibility' property - */ - virtual void setVisibility(const DOMString &val) - throw (dom::DOMException) - { - visibility = val; - } - - /** - * return the 'voiceFamily' property - */ - virtual DOMString getVoiceFamily() - { - return voiceFamily; - } - - /** - * set the 'voiceFamily' property - */ - virtual void setVoiceFamily(const DOMString &val) - throw (dom::DOMException) - { - voiceFamily = val; - } - - /** - * return the 'volume' property - */ - virtual DOMString getVolume() - { - return volume; - } - - /** - * set the 'volume' property - */ - virtual void setVolume(const DOMString &val) - throw (dom::DOMException) - { - volume = val; - } - - /** - * return the 'whiteSpace' property - */ - virtual DOMString getWhiteSpace() - { - return whiteSpace; - } - - /** - * set the 'whiteSpace' property - */ - virtual void setWhiteSpace(const DOMString &val) - throw (dom::DOMException) - { - whiteSpace = val; - } - - /** - * return the 'widows' property - */ - virtual DOMString getWidows() - { - return widows; - } - - /** - * set the 'widows' property - */ - virtual void setWidows(const DOMString &val) - throw (dom::DOMException) - { - widows = val; - } - - /** - * return the 'width' property - */ - virtual DOMString getWidth() - { - return width; - } - - /** - * set the 'width' property - */ - virtual void setWidth(const DOMString &val) - throw (dom::DOMException) - { - width = val; - } - - /** - * return the 'wordSpacing' property - */ - virtual DOMString getWordSpacing() - { - return wordSpacing; - } - - /** - * set the 'wordSpacing' property - */ - virtual void setWordSpacing(const DOMString &val) - throw (dom::DOMException) - { - wordSpacing = val; - } - - /** - * return the 'zIndex' property - */ - virtual DOMString getZIndex() - { - return zIndex; - } - - /** - * set the 'zIndex' property - */ - virtual void setZIndex(const DOMString &val) - throw (dom::DOMException) - { - zIndex = val; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - CSS2Properties() - { - } - - /** - * - */ - CSS2Properties(const CSS2Properties &other) - { - assign(other); - } - - /** - * - */ - CSS2Properties &operator=(const CSS2Properties &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const CSS2Properties &other) - { - azimuth = other.azimuth; - background = other.background; - backgroundAttachment = other.backgroundAttachment; - backgroundColor = other.backgroundColor; - backgroundImage = other.backgroundImage; - backgroundPosition = other.backgroundPosition; - backgroundRepeat = other.backgroundRepeat; - border = other.border; - borderCollapse = other.borderCollapse; - borderColor = other.borderColor; - borderSpacing = other.borderSpacing; - borderStyle = other.borderStyle; - borderTop = other.borderTop; - borderRight = other.borderRight; - borderBottom = other.borderBottom; - borderLeft = other.borderLeft; - borderTopColor = other.borderTopColor; - borderRightColor = other.borderRightColor; - borderBottomColor = other.borderBottomColor; - borderLeftColor = other.borderLeftColor; - borderTopStyle = other.borderTopStyle; - borderRightStyle = other.borderRightStyle; - borderBottomStyle = other.borderBottomStyle; - borderLeftStyle = other.borderLeftStyle; - borderTopWidth = other.borderTopWidth; - borderRightWidth = other.borderRightWidth; - borderBottomWidth = other.borderBottomWidth; - borderLeftWidth = other.borderLeftWidth; - borderWidth = other.borderWidth; - bottom = other.bottom; - captionSide = other.captionSide; - clear = other.clear; - clip = other.clip; - color = other.color; - content = other.content; - counterIncrement = other.counterIncrement; - counterReset = other.counterReset; - cue = other.cue; - cueAfter = other.cueAfter; - cueBefore = other.cueBefore; - cursor = other.cursor; - direction = other.direction; - display = other.display; - elevation = other.elevation; - emptyCells = other.emptyCells; - cssFloat = other.cssFloat; - font = other.font; - fontFamily = other.fontFamily; - fontSize = other.fontSize; - fontSizeAdjust = other.fontSizeAdjust; - fontStretch = other.fontStretch; - fontStyle = other.fontStyle; - fontVariant = other.fontVariant; - fontWeight = other.fontWeight; - height = other.height; - left = other.left; - letterSpacing = other.letterSpacing; - lineHeight = other.lineHeight; - listStyle = other.listStyle; - listStyleImage = other.listStyleImage; - listStylePosition = other.listStylePosition; - listStyleType = other.listStyleType; - margin = other.margin; - marginTop = other.marginTop; - marginRight = other.marginRight; - marginBottom = other.marginBottom; - marginLeft = other.marginLeft; - markerOffset = other.markerOffset; - marks = other.marks; - maxHeight = other.maxHeight; - maxWidth = other.maxWidth; - minHeight = other.minHeight; - minWidth = other.minWidth; - orphans = other.orphans; - outline = other.outline; - outlineColor = other.outlineColor; - outlineStyle = other.outlineStyle; - outlineWidth = other.outlineWidth; - overflow = other.overflow; - padding = other.padding; - paddingTop = other.paddingTop; - paddingRight = other.paddingRight; - paddingBottom = other.paddingBottom; - paddingLeft = other.paddingLeft; - page = other.page; - pageBreakAfter = other.pageBreakAfter; - pageBreakBefore = other.pageBreakBefore; - pageBreakInside = other.pageBreakInside; - pause = other.pause; - pauseAfter = other.pauseAfter; - pauseBefore = other.pauseBefore; - pitch = other.pitch; - pitchRange = other.pitchRange; - playDuring = other.playDuring; - position = other.position; - quotes = other.quotes; - richness = other.richness; - right = other.right; - size = other.size; - speak = other.speak; - speakHeader = other.speakHeader; - speakNumeral = other.speakNumeral; - speakPunctuation = other.speakPunctuation; - speechRate = other.speechRate; - stress = other.stress; - tableLayout = other.tableLayout; - textAlign = other.textAlign; - textDecoration = other.textDecoration; - textIndent = other.textIndent; - textShadow = other.textShadow; - textTransform = other.textTransform; - top = other.top; - unicodeBidi = other.unicodeBidi; - verticalAlign = other.verticalAlign; - visibility = other.visibility; - voiceFamily = other.voiceFamily; - volume = other.volume; - whiteSpace = other.whiteSpace; - widows = other.widows; - width = other.width; - wordSpacing = other.wordSpacing; - zIndex = other.zIndex; - } - - /** - * - */ - virtual ~CSS2Properties() {} - -protected: - - //###################### - //# P R O P E R T I E S - //###################### - DOMString azimuth; - DOMString background; - DOMString backgroundAttachment; - DOMString backgroundColor; - DOMString backgroundImage; - DOMString backgroundPosition; - DOMString backgroundRepeat; - DOMString border; - DOMString borderCollapse; - DOMString borderColor; - DOMString borderSpacing; - DOMString borderStyle; - DOMString borderTop; - DOMString borderRight; - DOMString borderBottom; - DOMString borderLeft; - DOMString borderTopColor; - DOMString borderRightColor; - DOMString borderBottomColor; - DOMString borderLeftColor; - DOMString borderTopStyle; - DOMString borderRightStyle; - DOMString borderBottomStyle; - DOMString borderLeftStyle; - DOMString borderTopWidth; - DOMString borderRightWidth; - DOMString borderBottomWidth; - DOMString borderLeftWidth; - DOMString borderWidth; - DOMString bottom; - DOMString captionSide; - DOMString clear; - DOMString clip; - DOMString color; - DOMString content; - DOMString counterIncrement; - DOMString counterReset; - DOMString cue; - DOMString cueAfter; - DOMString cueBefore; - DOMString cursor; - DOMString direction; - DOMString display; - DOMString elevation; - DOMString emptyCells; - DOMString cssFloat; - DOMString font; - DOMString fontFamily; - DOMString fontSize; - DOMString fontSizeAdjust; - DOMString fontStretch; - DOMString fontStyle; - DOMString fontVariant; - DOMString fontWeight; - DOMString height; - DOMString left; - DOMString letterSpacing; - DOMString lineHeight; - DOMString listStyle; - DOMString listStyleImage; - DOMString listStylePosition; - DOMString listStyleType; - DOMString margin; - DOMString marginTop; - DOMString marginRight; - DOMString marginBottom; - DOMString marginLeft; - DOMString markerOffset; - DOMString marks; - DOMString maxHeight; - DOMString maxWidth; - DOMString minHeight; - DOMString minWidth; - DOMString orphans; - DOMString outline; - DOMString outlineColor; - DOMString outlineStyle; - DOMString outlineWidth; - DOMString overflow; - DOMString padding; - DOMString paddingTop; - DOMString paddingRight; - DOMString paddingBottom; - DOMString paddingLeft; - DOMString page; - DOMString pageBreakAfter; - DOMString pageBreakBefore; - DOMString pageBreakInside; - DOMString pause; - DOMString pauseAfter; - DOMString pauseBefore; - DOMString pitch; - DOMString pitchRange; - DOMString playDuring; - DOMString position; - DOMString quotes; - DOMString richness; - DOMString right; - DOMString size; - DOMString speak; - DOMString speakHeader; - DOMString speakNumeral; - DOMString speakPunctuation; - DOMString speechRate; - DOMString stress; - DOMString tableLayout; - DOMString textAlign; - DOMString textDecoration; - DOMString textIndent; - DOMString textShadow; - DOMString textTransform; - DOMString top; - DOMString unicodeBidi; - DOMString verticalAlign; - DOMString visibility; - DOMString voiceFamily; - DOMString volume; - DOMString whiteSpace; - DOMString widows; - DOMString width; - DOMString wordSpacing; - DOMString zIndex; - - -}; - - - - - - - - -/*######################################################################### -## ViewCSS -#########################################################################*/ - -/** - * This interface represents a CSS view. The getComputedStyle method provides a - * read only access to the computed values of an element. - * - * The expectation is that an instance of the ViewCSS interface can be obtained - * by using binding-specific casting methods on an instance of the AbstractView - * interface. - * - * Since a computed style is related to an Element node, if this element is - * removed from the document, the associated CSSStyleDeclaration and CSSValue - * related to this declaration are no longer valid. - */ -class ViewCSS : virtual public views::AbstractView -{ -public: - - /** - * This method is used to get the computed style as it is defined in [CSS2]. - */ - virtual CSSStyleDeclaration getComputedStyle(const Element &/*elt*/, - const DOMString &/*pseudoElt*/) - { - CSSStyleDeclaration style; - return style; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - ViewCSS() : views::AbstractView() - { - } - - /** - * - */ - ViewCSS(const ViewCSS &other) : views::AbstractView(other) - { - } - - /** - * - */ - ViewCSS &operator=(const ViewCSS &/*other*/) - { - return *this; - } - - /** - * - */ - virtual ~ViewCSS() {} -}; - - - - - -/*######################################################################### -## DocumentCSS -#########################################################################*/ - -/** - * This interface represents a document with a CSS view. - * - * The getOverrideStyle method provides a mechanism through which a DOM author - * could effect immediate change to the style of an element without modifying the - * explicitly linked style sheets of a document or the inline style of elements - * in the style sheets. This style sheet comes after the author style sheet in - * the cascade algorithm and is called override style sheet. The override style - * sheet takes precedence over author style sheets. An "!important" declaration - * still takes precedence over a normal declaration. Override, author, and user - * style sheets all may contain "!important" declarations. User "!important" - * rules take precedence over both override and author "!important" rules, and - * override "!important" rules take precedence over author "!important" rules. - * - * The expectation is that an instance of the DocumentCSS interface can be - * obtained by using binding-specific casting methods on an instance of the - * Document interface. - */ -class DocumentCSS : virtual public stylesheets::DocumentStyle -{ -public: - - /** - * This method is used to retrieve the override style declaration for a specified - * element and a specified pseudo-element. - */ - virtual CSSStyleDeclaration getOverrideStyle(const Element */*elt*/, - const DOMString &/*pseudoElt*/) - { - CSSStyleDeclaration style; - return style; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - DocumentCSS() : stylesheets::DocumentStyle() - { - } - - /** - * - */ - DocumentCSS(const DocumentCSS &other) : stylesheets::DocumentStyle(other) - { - } - - /** - * - */ - DocumentCSS &operator=(const DocumentCSS &/*other*/) - { - return *this; - } - - /** - * - */ - virtual ~DocumentCSS() {} -}; - - - - - - -/*######################################################################### -## DOMImplementationCSS -#########################################################################*/ - -/** - * This interface allows the DOM user to create a CSSStyleSheet outside the - * context of a document. There is no way to associate the new CSSStyleSheet with - * a document in DOM Level 2. - */ -class DOMImplementationCSS : virtual public DOMImplementation -{ -public: - - /** - * Creates a new CSSStyleSheet. - */ - virtual CSSStyleSheet createCSSStyleSheet(const DOMString &/*title*/, - const DOMString &/*media*/) - throw (dom::DOMException) - { - CSSStyleSheet sheet; - return sheet; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - DOMImplementationCSS() {} - - /** - * - */ - DOMImplementationCSS(const DOMImplementationCSS &other) - : DOMImplementation(other) - { - } - - /** - * - */ - DOMImplementationCSS &operator=(const DOMImplementationCSS &/*other*/) - { - return *this; - } - - /** - * - */ - virtual ~DOMImplementationCSS() {} -}; - - - - - - - - -} //namespace css -} //namespace dom -} //namespace w3c -} //namespace org - - -#endif // SEEN_CSS_H - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ diff --git a/src/dom/cssreader.cpp b/src/dom/cssreader.cpp deleted file mode 100644 index 93473b229..000000000 --- a/src/dom/cssreader.cpp +++ /dev/null @@ -1,1684 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "cssreader.h" -#include "ucd.h" - -#include <stdio.h> -#include <stdarg.h> - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace css -{ - -//######################################################################### -//# M E S S A G E S -//######################################################################### - -/** - * Get the column and row number of the given character position - */ -void CssReader::getColumnAndRow(int p, int &colResult, int &rowResult, int &lastNL) -{ - int col = 1; - int row = 1; - int lastnl = 0; - - for (int i=0 ; i<p ; i++) - { - XMLCh ch = parsebuf[i]; - if (ch == '\n') - { - lastnl = i; - row++; - col=0; - } - else - col++; - } - - colResult = col; - rowResult = row; - lastNL = lastnl; -} - -/** - * - */ -void CssReader::error(char const *fmt, ...) -{ - int lineNr; - int colNr; - int lastNL; - getColumnAndRow(lastPosition, colNr, lineNr, lastNL); - - va_list args; - fprintf(stderr, "CssReader:error at %d, line %d, column %d:", - lastPosition, lineNr, colNr); - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args) ; - fprintf(stderr, "\n"); - - /* - int lineLen = lastPosition - lastNL; - printf("lineLen:%d lastNL:%d\n", lineLen, lastNL); - for (int i=lastNL+1 ; i<lastPosition ; i++) - fprintf(stderr, "%c", parsebuf[i]); - fprintf(stderr, "\n"); - for (int i=0 ; i<lineLen-1 ; i++) - fprintf(stderr, " "); - fprintf(stderr, "^\n"); - */ - for (int i=0 ; i<lastPosition ; i++) - fprintf(stderr, "%c", parsebuf[i]); - fprintf(stderr, "\n"); -} - - - -//######################################################################### -//# P A R S I N G -//######################################################################### - -/** - * Get the character at the position and record the fact - */ -XMLCh CssReader::get(int p) -{ - if (p >= parselen) - return 0; - XMLCh ch = parsebuf[p]; - //printf("%c", ch); - lastPosition = p; - return ch; -} - - - -/** - * Test if the given substring exists at the given position - * in parsebuf. Use get() in case of out-of-bounds - */ -bool CssReader::match(int pos, const char *str) -{ - while (*str) - { - if (get(pos++) != (XMLCh) *str++) - return false; - } - return true; -} - -/** - * - */ -int CssReader::skipwhite(int p) -{ - while (p < parselen) - { - //# XML COMMENT - if (match(p, "<!--")) - { - p+=4; - bool done=false; - while (p<parselen) - { - if (match(p, "-->")) - { - p+=3; - done=true; - break; - } - p++; - } - lastPosition = p; - if (!done) - { - error("unterminated <!-- .. --> comment"); - return -1; - } - } - //# C comment - else if (match(p, "/*")) - { - p+=2; - bool done=false; - while (p<parselen) - { - if (match(p, "*/")) - { - p+=2; - done=true; - break; - } - p++; - } - lastPosition = p; - if (!done) - { - error("unterminated /* .. */ comment"); - return -1; - } - } - else if (!uni_is_space(get(p))) - break; - else - p++; - } - lastPosition = p; - return p; -} - -/** - * get a word from the buffer - */ -int CssReader::getWord(int p, DOMString &result) -{ - XMLCh ch = get(p); - if (!uni_is_letter(ch)) - return p; - DOMString str; - str.push_back(ch); - p++; - - while (p < parselen) - { - ch = get(p); - if (uni_is_letter_or_digit(ch) || ch=='-' || ch=='_') - { - str.push_back(ch); - p++; - } - else if (ch == '\\') - { - p+=2; - } - else - break; - } - result = str; - return p; -} - - -/** - * get a word from the buffer - */ -int CssReader::getNumber(int p0, double &result) -{ - int p=p0; - DOMString str; - while (p < parselen) - { - XMLCh ch = get(p); - if (ch<'0' || ch>'9') - break; - str.push_back(ch); - p++; - } - if (get(p) == '.' && get(p+1)>='0' && get(p+1)<='9') - { - p++; - str.push_back('.'); - while (p < parselen) - { - XMLCh ch = get(p); - if (ch<'0' || ch>'9') - break; - str.push_back(ch); - p++; - } - } - if (p>p0) - { - char *start = (char *)str.c_str(); - char *end = NULL; - double val = strtod(start, &end); - if (end > start) - { - result = val; - return p; - } - } - - //not a number - return p0; -} - - - -/** - * Assume that we are starting on a quote. Ends on the char - * after the final '"' - */ -int CssReader::getQuoted(int p0, DOMString &result) -{ - - int p = p0; - - XMLCh quoteChar = get(p); - if (quoteChar != '"' && quoteChar != '\'') - return p0; - - p++; - - DOMString buf; - - bool done = false; - while (p<parselen ) - { - XMLCh ch = get(p); - if (ch == quoteChar) - { - done = true; - p++; - break; - } - else - { - buf.push_back(ch); - } - p++; - } - - if (!done) - { - error("unterminated quoted string"); - return -1; - } - - result.append(buf); - - return p; -} - -/** - * Not in api. replaces URI return by lexer - */ -int CssReader::getUri(int p0, DOMString &str) -{ - int p = p0; - if (!match(p, "url(")) - return p0; - p+=4; - p = skipwhite(p); - DOMString buf; - XMLCh ch; - while (p < parselen) - { - ch = get(p); - if (isspace(ch) || ch==')') - break; - buf.push_back(ch); - p++; - } - p = skipwhite(p); - ch = get(p); - if (ch != ')') - { - error("no closing ')' on url spec"); - return -1; - } - p++; - str = buf; - return p; -} - -/** - * Skip to the end of the block - */ -int CssReader::skipBlock(int p0) -{ - int p = p0; - while (p < parselen) - { - XMLCh ch = get(p); - if (ch == '}') - { - p++; - break; - } - else - { - p++; - } - } - return p; -} - -//######################################################################### -//# P R O D U C T I O N S -//######################################################################### - -/** - * stylesheet - * : [ CHARSET_SYM S* STRING S* ';' ]? - * [S|CDO|CDC]* [ import [S|CDO|CDC]* ]* - * [ [ ruleset | media | page ] [S|CDO|CDC]* ]* - * ; - */ -int CssReader::getStyleSheet(int p0) -{ - int p = p0; - int p2 = p; - - //# CHARSET 0 or 1 - if (match(p, "@charset")) - { - p+=8; - p = skipwhite(p); - DOMString str; - p2 = getQuoted(p, str); - if (p2<=p) - { - error("quoted string required after @charset"); - return -1; - } - p = skipwhite(p2); - XMLCh ch = get(p); - if (ch !=';') - { - error("';' required after @charset declaration"); - return -1; - } - p++; - p = skipwhite(p); - } - - //# IMPORT 0 to many - while (true) - { - p2 = getImport(p); - if (p2<0) - { - return -1; - } - if (p2<=p) - break; - p = p2; - } - - //# RULESET | MEDIA | PAGE 0 to many - while (true) - { - //Ruleset - p2 = getRuleSet(p); - if (p2<0) - { - return -1; - } - if (p2>p) - { - p = p2; - continue; - } - - //Media - p2 = getMedia(p); - if (p2<0) - { - return -1; - } - if (p2>p) - { - p = p2; - continue; - } - - //Page - p2 = getPage(p); - if (p2<0) - { - return -1; - } - if (p2>p) - { - p = p2; - continue; - } - - //none of the above - break; - } - - return p; -} - -/** - * import - * : IMPORT_SYM S* - * [STRING|URI] S* [ medium [ COMMA S* medium]* ]? ';' S* - * ; - */ -int CssReader::getImport(int p0) -{ - int p = p0; - if (!match(p, "@import")) - return p0; - p+=7; - p = skipwhite(p); - - //# STRING | URI - DOMString str; - int p2 = getQuoted(p, str); - if (p2<0) - { - return -1; - } - if (p2<=p) - { - p2 = getUri(p, str); - if (p2<0) - { - return -1; - } - if (p2<=p) - { - error("quoted string or URI required after @import"); - return -1; - } - } - p = p2; - p2 = getMedium(p); - if (p2<0) - return -1; - - p = p2; - p = skipwhite(p); - XMLCh ch = get(p); - if (ch != ';') - { - error("@import must be terminated with ';'"); - return -1; - } - p++; - return p; -} - -/** - * media - * : MEDIA_SYM S* medium [ COMMA S* medium ]* LBRACE S* ruleset* '}' S* - * ; - */ -int CssReader::getMedia(int p0) -{ - int p = p0; - XMLCh ch; - if (!match(p, "@media")) - return p0; - p+=6; - p = skipwhite(p); - - //# MEDIUM LIST - int p2 = getMedium(p); - if (p2<0) - return -1; - if (p2<=p) - { - error("@media must be followed by medium"); - return -1; - } - p = p2; - while (true) - { - ch = get(p); - if (ch != ',') - break; - p2 = getMedium(p); - if (p2<0) - return -1; - if (p2<=p) - { - error("',' in medium list must be followed by medium"); - return -1; - } - p = p2; - } - - p = skipwhite(p); - ch = get(p); - if (ch!='{') - { - error("@media requires '{' for ruleset"); - return -1; - } - p++; - p2 = getRuleSet(p); - if (p2<0) - return -1; - if (p2<=p) - { - error("@media requires ruleset after '{'"); - return -1; - } - p = p2; - ch = get(p); - if (ch != '}') - { - error("@media requires '}' after ruleset"); - return -1; - } - p++; - return p0; -} - -/** - * medium - * : IDENT S* - * ; - */ -int CssReader::getMedium(int p0) -{ - int p = p0; - p = skipwhite(p); - - DOMString ident; - int p2 = getWord(p, ident); - if (p2<0) - return -1; - if (p2<=p) - return p0; - p = p2; - - return p; -} - -/** - * page - * : PAGE_SYM S* pseudo_page? S* - * LBRACE S* declaration [ ';' S* declaration ]* '}' S* - * ; - */ -int CssReader::getPage(int p0) -{ - int p = p0; - - //# @PAGE - p = skipwhite(p); - if (!match(p, "@page")) - return p0; - p+= 5; - - //#PSEUDO PAGE 0 or 1 - p = skipwhite(p); - int p2 = getPseudoPage(p); - if (p2<0) - return -1; - if (p2>p) - { - p = p2; - } - - //# { - p=skipwhite(p); - XMLCh ch = get(p); - if (p != '{') - { - error("@page requires '{' before declarations"); - } - p++; - - //# DECLARATION LIST - p = skipwhite(p); - CSSStyleDeclaration declarationList; - p2 = getDeclaration(p, declarationList); - if (p2<0) - return -1; - if (p2<=p) - { - error("@page requires declaration(s) after '{'"); - return -1; - } - while (true) - { - p = skipwhite(p2); - XMLCh ch = get(p); - if (ch != ';') - break; - p++; - p = skipwhite(p); - p2 = getDeclaration(p, declarationList); - if (p2<0) - return -1; - if (p2<= p) - { - error("@page requires declaration after ';'"); - return -1; - } - } - - //# } - p=skipwhite(p); - ch = get(p); - if (p != '}') - { - error("@page requires '}' after declarations"); - } - p++; - - return p; -} - -/** - * pseudo_page - * : ':' IDENT - * ; - */ -int CssReader::getPseudoPage(int p0) -{ - int p = p0; - if (!match(p, ":")) - return p0; - p++; - DOMString str; - int p2 = getWord(p, str); - if (p2<0) - return -1; - if (p2<=p) - { - error("pseudo-page requires identifier after ':'"); - return -1; - } - p = p2; - return p; -} - -/** - * ruleset - * : selector [ COMMA S* selector ]* - * LBRACE S* declaration [ ';' S* declaration ]* '}' S* - * ; - */ -int CssReader::getRuleSet(int p0) -{ - int p = p0; - XMLCh ch; - - //## SELECTOR - p = skipwhite(p); - int p2 = getSelector(p); - if (p2<0) - return -1; - if (p2<=p) //no selector - { - if (get(p) != '{')//check for selector-less rule - return p0;//not me - } - p = p2; - while (true) - { - p = skipwhite(p); - ch = get(p); - if (ch != ',') - break; - p++; - p = skipwhite(p); - int p2 = getSelector(p); - if (p2<0) - return -1; - if (p2<=p) - { - error("selector required after ',' in list"); - return -1; - } - p = p2; - } - - //## { - ch = get(p); - if (ch != '{') - { - error("'{' required before declarations of ruleset"); - return -1; - } - p++; - - //## DECLARATIONS ( 0 to many ) - CSSStyleDeclaration declarationList; - - p = skipwhite(p); - p2 = getDeclaration(p, declarationList); - if (p2<0) - return -1; - if (p2>p) - { - p = p2; - while (true) - { - p = skipwhite(p); - ch = get(p); - if (ch != ';') - break; - p++; - p = skipwhite(p); - p2 = getDeclaration(p, declarationList); - if (p2<0) - return -1; - if (p2<=p) - { - //apparently this is ok - //error("declaration required after ';' in ruleset"); - //return -1; - break; - } - p = p2; - } - } - //## } - ch = get(p); - if (ch != '}') - { - error("ruleset requires closing '}'"); - return -1; - } - p++; - p = skipwhite(p); - - return p; -} - -/** - * selector - * : simple_selector [ combinator simple_selector ]* - * ; - */ -int CssReader::getSelector(int p0) -{ - int p = p0; - - //## SIMPLE SELECTOR - p = skipwhite(p); - int p2 = getSimpleSelector(p); - if (p2<0) - return -1; - if (p2<=p) - return p0; //not me - p = p2; - - //## COMBINATORS + MORE SELECTORS - while (true) - { - XMLCh ch = get(p); - bool wasSpace = isspace(ch); - p = skipwhite(p); - ch = get(p); - //# Combinators - //easier to do here than have a getCombinator() - int visibleCombinator = false; - if (ch == '+') - { - visibleCombinator = true; - p++; - } - else if (ch == '>') - { - visibleCombinator = true; - p++; - } - else if (wasSpace) - { - } - else - { - break; - } - p = skipwhite(p); - p2 = getSimpleSelector(p); - if (p2<0) - return -1; - if (p2<=p) - { - if (visibleCombinator) - { - error("need simple selector after combinator"); - return -1; - } - else - { - break; - } - } - p = p2; - } - return p; -} - -/** - * simple_selector - * : element_name [ HASH | class | attrib | pseudo ]* - * | [ HASH | class | attrib | pseudo ]+ - * ; - */ -int CssReader::getSimpleSelector(int p0) -{ - int p = p0; - int p2; - - DOMString str; - - p = skipwhite(p); - - int selectorItems = 0; - - XMLCh ch = get(p); - - //###################### - //# Note: do NOT skipwhite between items. Only within the - //# pseudo function and attrib below - //###################### - - //#Element name 0 or 1 - if (uni_is_letter(ch)) - { - p2 = getWord(p, str); - if (p2<0) - return -1; - if (p2<=p) - { - error("null element name"); - return -1; - } - selectorItems++; - p = p2; - } - else if (ch == '*') - { - str = "*"; - p++; - selectorItems++; - } - - - - //## HASH, CLASS, ATTRIB, PSEUDO (0 to many with elem name, 1 to many without) - while (true) - { - XMLCh ch = get(p); - - //# HASH - if (ch == '#') - { - p++; - p2 = getWord(p, str); - if (p2<0) - return -1; - if (p2<=p) - { - error("no name for hash"); - return -1; - } - p = p2; - selectorItems++; - } - - //# CLASS - else if (ch == '.') - { - p++; - p2 = getWord(p, str); - if (p2<0) - return -1; - if (p2<=p) - { - error("no name for class"); - return -1; - } - p = p2; - selectorItems++; - } - - //# ATTRIB - else if (ch == '[') - { - p++; - p = skipwhite(p); - p2 = getWord(p, str); - if (p2<0) - return -1; - if (p2<=p) - { - error("no name for class"); - return -1; - } - p = skipwhite(p2); - bool getRHS=false; - if (match(p, "=")) - { - p++; - getRHS=true; - } - else if (match(p, "~=")) - { - p+=2; - getRHS=true; - } - else if (match(p, "|=")) - { - p+=2; - getRHS=true; - } - if (getRHS) - { - p = skipwhite(p); - ch = get(p); - if (uni_is_letter(ch)) - { - p2 = getWord(p, str); - if (p2<0) - return -1; - if (p2<=p) - { - error("null ident on rhs of attrib"); - return -1; - } - p = p2; - } - else if (ch == '\'' || ch =='"') - { - p2 = getQuoted(p, str); - if (p2<0) - return -1; - if (p2<=p) - { - error("null literal string on rhs of attrib"); - return -1; - } - p = p2; - } - }//getRHS - p = skipwhite(p); - ch = get(p); - if (ch != ']') - { - error("attrib needs closing ']'"); - //return -1; - p = skipBlock(p); - return p; - } - p++; - selectorItems++; - } - - //# PSEUDO - else if (ch == ':') - { - p++; - p2 = getWord(p, str); - if (p2<0) - return -1; - if (p2<=p) - { - error("no name for pseudo"); - return -1; - } - p = p2; - selectorItems++; - ch = get(p); - if (ch == '(') - { - p++; - p = skipwhite(p); - ch = get(p); - if (uni_is_letter(ch)) - { - p2 = getWord(p, str); - if (p2<0) - return -1; - if (p2<=p) - { - error("null function parameter in pseudo"); - return -1; - } - p = skipwhite(p2); - ch = get(p); - } - if (ch != ')') - { - error("function in pseudo needs ')'"); - return -1; - } - p++; - }// ch==( -function- - }//pseudo - - //# none of the above - else - { - break; - } - - }//while - - - if (selectorItems > 0) - return p; - return p0; -} - -/** - * declaration - * : property ':' S* expr prio? - * | {empty} - * ; - */ -int CssReader::getDeclaration(int p0, CSSStyleDeclaration &/*declarationList*/) -{ - int p = p0; - - //## PROPERTY - p = skipwhite(p); - XMLCh ch = get(p); - if (!uni_is_letter(ch)) - return p0; //not me - DOMString propName; - int p2 = getWord(p, propName); - if (p2<0) - return -1; - - //## ':' - p = skipwhite(p2); - ch = get(p); - if (ch != ':') - { - error("declaration requires ':' between name and value"); - return -1; - } - p++; - - //## EXPR - p = skipwhite(p); - p2 = getExpr(p); - if (p2<0) - return -1; - if (p2<=p) - { - error("declaration requires value after ':'"); - return -1; - } - DOMString propVal; - for (int i=p ; i<p2 ; i++) //get our substring - propVal.push_back(get(i)); - printf("propVal:%s\n", propVal.c_str()); - p = p2; - - //## PRIO (optional) - p = skipwhite(p); - DOMString prio; - p2 = getPrio(p, prio); - if (p2<0) - return -1; - if (p2>p) - { - //do something - p = p2; - } - - return p; -} - -/** - * prio - * : IMPORTANT_SYM S* - * ; - */ -int CssReader::getPrio(int p0, DOMString &val) -{ - int p = p0; - - //## '!" - p = skipwhite(p); - XMLCh ch = get(p); - if (ch != '!') - return p0; - p++; - - //## "important" - p = skipwhite(p); - if (!match(p, "important")) - { - error("priority symbol is 'important'"); - return -1; - } - p += 9; - val = "important"; - return p; -} - -/** - * expr - * : term [ operator term ]* - * ; - */ -int CssReader::getExpr(int p0) -{ - int p = p0; - - //## TERM - p = skipwhite(p); - int p2 = getTerm(p); - if (p2<0) - return -1; - if (p2<=p) - return p0; //not me - p = p2; - while (p < parselen) - { - p = skipwhite(p); - //#Operator. do this instead of getOperator() - XMLCh ch = get(p); - int visibleTerm = false; - if (ch == '/') - { - visibleTerm = true; - p++; - } - else if (ch == ',') - { - visibleTerm = true; - p++; - } - else - { - //just space. this is allowable between terms, - // so we still need to check for another term - } - p = skipwhite(p); - p2 = getTerm(p); - if (p2<0) - return -1; - if (p2<=p) - { - if (visibleTerm) - { - error("expression requires term after operator"); - return -1; - } - else - { - break; - } - } - p = p2; - } - - return p; -} - -/** - * term - * : unary_operator? - * [ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* | - * TIME S* | FREQ S* | function ] - * | STRING S* | IDENT S* | URI S* | hexcolor - * ; - */ -int CssReader::getTerm(int p0) -{ - int p = p0; - p = skipwhite(p); - int unitType = CSSPrimitiveValue::CSS_UNKNOWN; /// \fixme Why is this variable never used? - //# Unary operator - XMLCh ch = get(p); - bool hasUnary = false; - if (ch == '-') - { - p++; - hasUnary = true; - } - else if (ch == '+') - { - p++; - hasUnary = true; - } - //# NUMERIC - double numVal; - int p2 = getNumber(p, numVal); - if (p2<0) - return -1; - if (p2>p) - { - p = p2; - if (match(p, "%")) - { - unitType = CSSPrimitiveValue::CSS_PERCENTAGE; - p++; - } - else if (match(p, "em")) - { - unitType = CSSPrimitiveValue::CSS_EMS; - p+=2; - } - else if (match(p, "ex")) - { - unitType = CSSPrimitiveValue::CSS_EXS; - p+=2; - } - else if (match(p, "px")) - { - unitType = CSSPrimitiveValue::CSS_PX; - p+=2; - } - else if (match(p, "cm")) - { - unitType = CSSPrimitiveValue::CSS_CM; - p+=2; - } - else if (match(p, "mm")) - { - unitType = CSSPrimitiveValue::CSS_MM; - p+=2; - } - else if (match(p, "in")) - { - unitType = CSSPrimitiveValue::CSS_IN; - p+=2; - } - else if (match(p, "pt")) - { - unitType = CSSPrimitiveValue::CSS_PT; - p+=2; - } - else if (match(p, "pc")) - { - unitType = CSSPrimitiveValue::CSS_PC; - p+=2; - } - else if (match(p, "deg")) - { - unitType = CSSPrimitiveValue::CSS_DEG; - p+=3; - } - else if (match(p, "rad")) - { - unitType = CSSPrimitiveValue::CSS_RAD; - p+=3; - } - else if (match(p, "grad")) - { - unitType = CSSPrimitiveValue::CSS_GRAD; - p+=4; - } - else if (match(p, "ms")) - { - unitType = CSSPrimitiveValue::CSS_MS; - p+=2; - } - else if (match(p, "s")) - { - unitType = CSSPrimitiveValue::CSS_S; - p+=1; - } - else if (match(p, "Hz")) - { - unitType = CSSPrimitiveValue::CSS_HZ; - p+=2; - } - else if (match(p, "kHz")) - { - unitType = CSSPrimitiveValue::CSS_KHZ; - p+=2; - } - else if (uni_is_letter(get(p)))//some other string - { - DOMString suffix; - p2 = getWord(p, suffix); - if (p2<0) - return -1; - unitType = CSSPrimitiveValue::CSS_DIMENSION; - p = p2; - } - else //plain number - { - unitType = CSSPrimitiveValue::CSS_NUMBER; - } - return p; - } - - DOMString str; - - //## URI --do before function, as syntax is similar - p2 = getUri(p, str); - if (p2<0) - return -1; - if (p2>p) - { - if (hasUnary) - { - error("+ or - not allowed on URI"); - return -1; - } - p = p2; - unitType = CSSPrimitiveValue::CSS_URI; - return p; - } - - //## FUNCTION - p2 = getFunction(p); - if (p2<0) - return -1; - if (p2>p) - { - p = p2; - return p; - } - - //## STRING - ch = get(p); - if (ch == '"' || ch == '\'') - { - p2 = getQuoted(p, str); - if (p2<0) - return -1; - if (p2>p) - { - if (hasUnary) - { - error("+ or - not allowed on a string"); - return -1; - } - p = p2; - unitType = CSSPrimitiveValue::CSS_STRING; - return p; - } - } - - //## IDENT - ch = get(p); - if (uni_is_letter(ch)) - { - p2 = getWord(p, str); - if (p2<0) - return -1; - if (p2>p) - { - if (hasUnary) - { - error("+ or - not allowed on an identifier"); - return -1; - } - p = p2; - unitType = CSSPrimitiveValue::CSS_IDENT; - return p; - } - } - - - //## HEXCOLOR - p2 = getHexColor(p); - if (p2<0) - return -1; - if (p2>p) - { - if (hasUnary) - { - error("+ or - not allowed on hex color"); - return -1; - } - p = p2; - unitType = CSSPrimitiveValue::CSS_RGBCOLOR; - return p; - } - - - return p0; -} - -/** - * function - * : FUNCTION S* expr ')' S* - * ; - */ -int CssReader::getFunction(int p0) -{ - int p = p0; - - //## IDENT + ( (both) - DOMString name; - p = skipwhite(p); - int p2 = getWord(p, name); - if (p2<0) - return -1; - if (p2<=p) - return p0; //not me - if (name == "uri" || name=="url") - return p0; //not me - p = skipwhite(p2); - XMLCh ch = get(p); - if (ch != '(') - return p0; //still not me - p++; - - //## EXPR - p = skipwhite(p); - p2 = getExpr(p); - if (p2<0) - return -1; - if (p2<=p) - { - error("function requires expression"); - return -1; - } - p = p2; - - //## ')' - p = skipwhite(p); - ch = get(p); - if (ch != ')') - { - error("function requires closing ')'"); - return -1; - } - p++; - p = skipwhite(p); - - return p; -} - -/** - * There is a constraint on the color that it must - * have either 3 or 6 hex-digits (i.e., [0-9a-fA-F]) - * after the "#"; e.g., "#000" is OK, but "#abcd" is not. - * hexcolor - * : HASH S* - * ; - */ -int CssReader::getHexColor(int p0) -{ - int p = p0; - - //## '#' - p = skipwhite(p); - if (!match(p, "#")) - return p0; - p++; - - //## HEX - DOMString hex; - long hexVal = 0; - while (p < parselen) - { - XMLCh b = get(p); - if (b>='0' && b<='9') - { - hexVal = (hexVal << 4) + (b - '0'); - hex.push_back(b); - p++; - } - else if (b>='a' && b<='f') - { - hexVal = (hexVal << 4) + (b - 'a' + 10); - hex.push_back(b); - p++; - } - else if (b>='A' && b<='F') - { - hexVal = (hexVal << 4) + (b - 'A' + 10); - hex.push_back(b); - p++; - } - else - { - break; - } - } - - if (hex.size() != 3 && hex.size() != 6) - { - error("exactly 3 or 6 hex digits are required after '#'"); - return -1; - } - - return p; -} - - - -/** - * - */ -bool CssReader::parse(const DOMString &str) -{ - /* - int len = str.size(); - for (int i=0 ; i<len ; i++) - { - XMLCh ch = str[i]; - if (ch == '\\' && i<(len-1)) //escape! - { - i++; - } - else - parsebuf.push_back(ch); - } - */ - parsebuf = str; - - parselen = parsebuf.size(); - //printf("==============================\n%s\n========================\n", str.c_str()); - - lastPosition = 0; - - int p = getStyleSheet(0); - if (p < parselen) - { - error("Not everything parsed"); - return false; - } - - return true; -} - - -/** - * - */ -bool CssReader::parseFile(const DOMString &fileName) -{ - DOMString tmp = fileName; - char *fname = (char *)tmp.c_str(); - FILE *f = fopen(fname, "r"); - if (!f) - { - printf("Could not open %s for reading\n", fname); - return false; - } - - DOMString str; - while (!feof(f)) - { - int ch = fgetc(f); - if (ch<0) - break; - str.push_back((XMLCh)ch); - } - fclose(f); - - bool ret = parse(str); - - return ret; -} - - - - - - - -} // namespace css -} // namespace dom -} // namespace w3c -} // namespace org - - -#ifdef CSSTEST - -static const char *fileNames[] = - { - "001.css", - "acid.css", - "base.css", - "inkscape.css", - "meyerweb.css", - NULL - }; - -bool doTests() -{ - org::w3c::dom::css::CssReader parser; - for (char **fname = (char **)fileNames ; *fname ; fname++) - { - DOMString fileName = *fname; - if (!parser.parseFile(fileName)) - { - printf("Test failed\n"); - return false; - } - } - return true; -} - -int main(int argc, char **argv) -{ - if (!doTests()) - return 1; - return 0; -} - -#endif /* CSSTEST */ - -//######################################################################### -//# E N D O F F I L E -//######################################################################### - diff --git a/src/dom/cssreader.h b/src/dom/cssreader.h deleted file mode 100644 index 8f795fc9c..000000000 --- a/src/dom/cssreader.h +++ /dev/null @@ -1,294 +0,0 @@ -#ifndef SEEN_CSSREADER_H -#define SEEN_CSSREADER_H -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "dom.h" - -#include "css.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace css -{ - -class CssReader -{ - -public: - - /** - * - */ - CssReader() : - stylesheet(), - parsebuf(), - parselen(0), - lastPosition(0) - {} - - /** - * - */ - virtual ~CssReader() - {} - - /** - * - */ - virtual bool parse(const DOMString &str); - - /** - * - */ - virtual bool parseFile(const DOMString &str); - - -private: - - CSSStyleSheet stylesheet; - DOMString parsebuf; - long parselen; - int lastPosition; - - - /** - * - */ - void error(char const *fmt, ...) - #ifdef G_GNUC_PRINTF - G_GNUC_PRINTF(2, 3) - #endif - ; - - /** - * Get the character at the given location in the buffer. - * Return 0 if out-of-bounds - */ - XMLCh get(int index); - - - /** - * Test if the given substring exists at the given position - * in parsebuf. Use get() in case of out-of-bounds - */ - bool match(int pos, const char *str); - - /** - * Skip over whitespace - * Return new position - */ - int skipwhite(int index); - - /** - * Get the word at the current position. Return the new - * position if successful, the current position if no word, - * -1 if error. - */ - int getWord(int index, DOMString &str); - - - /** - * Get a number at the current position - * Return the new position if a proper number, else the original pos - */ - int getNumber(int index, double &result); - - /** - * Assume that we are starting on a quote. Ends on the char - * after the final '"' - */ - int getQuoted(int p0, DOMString &result); - -/** - * Not in api. replaces URI return by lexer - */ -int getUri(int p0, DOMString &str); - - -/** - * Skip to the next rule - */ -int skipBlock(int p0); - -//######################################################################### -//# P R O D U C T I O N S -//######################################################################### - -/** - * stylesheet - * : [ CHARSET_SYM S* STRING S* ';' ]? - * [S|CDO|CDC]* [ import [S|CDO|CDC]* ]* - * [ [ ruleset | media | page ] [S|CDO|CDC]* ]* - * ; - */ -int getStyleSheet(int p0); - -/** - * import - * : IMPORT_SYM S* - * [STRING|URI] S* [ medium [ COMMA S* medium]* ]? ';' S* - * ; - */ -int getImport(int p0); - -/** - * media - * : MEDIA_SYM S* medium [ COMMA S* medium ]* LBRACE S* ruleset* '}' S* - * ; - */ -int getMedia(int p0); - -/** - * medium - * : IDENT S* - * ; - */ -int getMedium(int p0); - -/** - * page - * : PAGE_SYM S* pseudo_page? S* - * LBRACE S* declaration [ ';' S* declaration ]* '}' S* - * ; - */ -int getPage(int p0); - -/** - * pseudo_page - * : ':' IDENT - * ; - */ -int getPseudoPage(int p0); - -/** - * ruleset - * : selector [ COMMA S* selector ]* - * LBRACE S* declaration [ ';' S* declaration ]* '}' S* - * ; - */ -int getRuleSet(int p0); - -/** - * selector - * : simple_selector [ combinator simple_selector ]* - * ; - */ -int getSelector(int p0); - -/** - * simple_selector - * : element_name [ HASH | class | attrib | pseudo ]* - * | [ HASH | class | attrib | pseudo ]+ - * ; - */ -int getSimpleSelector(int p0); - -/** - * declaration - * : property ':' S* expr prio? - * | {empty} - * ; - */ -int getDeclaration(int p0, CSSStyleDeclaration &declarationList); - -/** - * prio - * : IMPORTANT_SYM S* - * ; - */ -int getPrio(int p0, DOMString &val); - -/** - * expr - * : term [ operator term ]* - * ; - */ -int getExpr(int p0); - -/** - * term - * : unary_operator? - * [ NUMBER S* | PERCENTAGE S* | LENGTH S* | EMS S* | EXS S* | ANGLE S* | - * TIME S* | FREQ S* | function ] - * | STRING S* | IDENT S* | URI S* | hexcolor - * ; - */ -int getTerm(int p0); - -/** - * function - * : FUNCTION S* expr ')' S* - * ; - */ -int getFunction(int p0); - -/** - * There is a constraint on the color that it must - * have either 3 or 6 hex-digits (i.e., [0-9a-fA-F]) - * after the "#"; e.g., "#000" is OK, but "#abcd" is not. - * - * hexcolor - * : HASH S* - * ; - */ -int getHexColor(int p0); - -/** - * Get the column and row number of the given character position. - * Also gets the last-occuring newline before the position - */ -void getColumnAndRow(int p, int &col, int &row, int &lastNL); - -}; - - -} // namespace css -} // namespace dom -} // namespace w3c -} // namespace org - - - - - - - -#endif // SEEN_CSSREADER_H -//######################################################################### -//# E N D O F F I L E -//######################################################################### - diff --git a/src/dom/dom.h b/src/dom/dom.h deleted file mode 100644 index 14165166e..000000000 --- a/src/dom/dom.h +++ /dev/null @@ -1,2758 +0,0 @@ -#ifndef SEEN_DOM_H -#define SEEN_DOM_H -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * More thorough explanations of the various classes and their algorithms - * can be found there. - * - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES: - * - * Notice that many of the classes defined here are pure virtual. In other - * words, they are purely unimplemented interfaces. For the implementations - * of them, look in domimpl.h and domimpl.cpp. - * - * Also, note that there is a domptr.cpp file that has a couple of necessary - * functions which cannot be in a .h file. - * - * Some of the comments below are quoted from the W3C spec: - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html - * - */ - -#include <vector> - -#include "domptr.h" - - -/** - * What type of string do we want? Pick one of the following - * Then below, select one of the corresponding typedefs. - */ - -#ifdef DOM_STANDALONE -# include <string> -#else -# include <glibmm/ustring.h> -#endif - -//# Unfortunate hack for a name collision -#ifdef SEVERITY_ERROR -#undef SEVERITY_ERROR -#endif - -#define XMLNSNAME "http://www.w3.org/2000/xmlns/" - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - -/** - * This is the org::w3c::dom::DOMString definition. - * Which type do we want? - */ -#ifdef DOM_STANDALONE -typedef std::string DOMString; -typedef unsigned short XMLCh; -#else -typedef Glib::ustring DOMString; -typedef gunichar XMLCh; -#endif - -/** - * At least 64 bit time stamp value. - */ -typedef unsigned long long DOMTimeStamp; - -/** - * This is used for storing refs to user-supplied data. - */ -typedef void DOMUserData; - - - -/** - * This is used for opaque references to arbitrary objects from - * the DOM tree. - */ -typedef void DOMObject; - - -/** - * Forward references. These are needed because of extensive - * inter-referencing within the DOM tree. - */ -class NodeList; -class NamedNodeMap; -class DOMException; -class DOMStringList; -class NameList; -class DOMImplementationList; -class DOMImplementationSource; -class DOMImplementation; -class TypeInfo; -class UserDataHandler; -class DOMError; -class DOMErrorHandler; -class DOMLocator; -class DOMConfiguration; - -/** - * Smart pointer definitions. Most methods that return references to - * Nodes of various types, will return one of these smart pointers instead, - * to allow refcounting and GC. - */ -class Node; -typedef Ptr<Node> NodePtr; -class CharacterData; -typedef Ptr<CharacterData> CharacterDataPtr; -class Attr; -typedef Ptr<Attr> AttrPtr; -class Element; -typedef Ptr<Element> ElementPtr; -class Text; -typedef Ptr<Text> TextPtr; -class Comment; -typedef Ptr<Comment> CommentPtr; -class DocumentType; -typedef Ptr<DocumentType> DocumentTypePtr; -class CDATASection; -typedef Ptr<CDATASection> CDATASectionPtr; -class Notation; -typedef Ptr<Notation> NotationPtr; -class Entity; -typedef Ptr<Entity> EntityPtr; -class EntityReference; -typedef Ptr<EntityReference> EntityReferencePtr; -class ProcessingInstruction; -typedef Ptr<ProcessingInstruction> ProcessingInstructionPtr; -class DocumentFragment; -typedef Ptr<DocumentFragment> DocumentFragmentPtr; -class Document; -typedef Ptr<Document> DocumentPtr; - - - - -/** - * NOTE: We were originally intending to split ALL specifications into - * interface and implementation. After consideration, though, it behooves - * us to simplify things by implementing the base exception and - * container classes directly: - * - * DOMException - * DOMStringList - * NameList - * DOMImplementationList - * DOMImplementationSource - * DOMImplementation - * NodeList - * NamedNodeMap - */ - - -/*######################################################################### -## DOMException -#########################################################################*/ - -/** - * An Exception class. Not an interface, since this is something that - * all implementations must support. - */ -class DOMException -{ - -public: - - /** - * ExceptionCode - */ - typedef enum - { - INDEX_SIZE_ERR = 1, - DOMSTRING_SIZE_ERR = 2, - HIERARCHY_REQUEST_ERR = 3, - WRONG_DOCUMENT_ERR = 4, - INVALID_CHARACTER_ERR = 5, - NO_DATA_ALLOWED_ERR = 6, - NO_MODIFICATION_ALLOWED_ERR = 7, - NOT_FOUND_ERR = 8, - NOT_SUPPORTED_ERR = 9, - INUSE_ATTRIBUTE_ERR = 10, - INVALID_STATE_ERR = 11, - SYNTAX_ERR = 12, - INVALID_MODIFICATION_ERR = 13, - NAMESPACE_ERR = 14, - INVALID_ACCESS_ERR = 15, - VALIDATION_ERR = 16, - TYPE_MISMATCH_ERR = 17 - } ExceptionCode; - - - - DOMException(const DOMString &reasonMsg) - : msg (reasonMsg) - { } - - DOMException(short theCode) - { - code = theCode; - } - - virtual ~DOMException() throw() - {} - - /** - * What type of exception? One of the ExceptionCodes above. - */ - unsigned short code; - - /** - * Some text describing the context that generated this exception. - */ - DOMString msg; - - /** - * Get a string, translated from the code. - * Like std::exception. Not in spec. - */ - const char *what() - { return (const char *)msg.c_str(); } - - - -}; - - - - - - -/*######################################################################### -## DOMStringList -#########################################################################*/ - -/** - * This holds a list of DOMStrings. This is likely the response to a query, - * or the value of an attribute. - */ -class DOMStringList -{ -public: - - /** - * Get the nth string of the list - */ - virtual DOMString item(unsigned long index) - { - if (index>=strings.size()) - return ""; - return strings[index]; - } - - /** - * How many strings in this list? - */ - virtual unsigned long getLength() - { - return (unsigned long) strings.size(); - } - - /** - * Is the argument string present in this list? Lexically, not identically. - */ - virtual bool contains(const DOMString &str) - { - for (unsigned int i=0; i<strings.size() ; i++) - { - if (strings[i] == str) - return true; - } - return false; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - DOMStringList() {} - - - /** - * - */ - DOMStringList(const DOMStringList &other) - : strings (other.strings) - { - } - - /** - * - */ - DOMStringList &operator=(const DOMStringList &other) - { - strings = other.strings; - return *this; - } - - /** - * - */ - virtual ~DOMStringList() {} - - -protected: - - /** - * - */ - virtual void add(const DOMString &str) - { - strings.push_back(str); - } - - std::vector<DOMString>strings; - -}; - - - -/*######################################################################### -## NameList -#########################################################################*/ - - -/** - * Constains a list of namespaced names. - */ -class NameList -{ -private: - - class NamePair - { - public: - NamePair(const DOMString &theNamespaceURI, const DOMString &theName) - : namespaceURI (theNamespaceURI), - name (theName) - { - } - NamePair(const NamePair &other) - : namespaceURI (other.namespaceURI), - name (other.name) - { - } - NamePair &operator=(const NamePair &other) - { - namespaceURI = other.namespaceURI; - name = other.name; - return *this; - } - virtual ~NamePair() {} - - DOMString namespaceURI; - DOMString name; - }; - -public: - - /** - * Returns a name at the given index. If out of range, return -1. - */ - virtual DOMString getName(unsigned long index) - { - if (index>=namePairs.size()) - return ""; - return namePairs[index].name; - } - - /** - * Returns a namespace at the given index. If out of range, return -1. - */ - virtual DOMString getNamespaceURI(unsigned long index) - { - if (index>=namePairs.size()) - return ""; - return namePairs[index].namespaceURI; - } - - /** - * Return the number of entries in this list. - */ - virtual unsigned long getLength() - { - return (unsigned long)namePairs.size(); - } - - /** - * Return whether the name argument is present in the list. - * This is done lexically, not identically. - */ - virtual bool contains(const DOMString &name) - { - for (unsigned int i=0; i<namePairs.size() ; i++) - { - if (namePairs[i].name == name ) - return true; - } - return false; - } - - /** - * Return whether the namespaced name argument is present in the list. - * This is done lexically, not identically. - */ - virtual bool containsNS(const DOMString &namespaceURI, const DOMString &name) - { - for (unsigned int i=0; i<namePairs.size() ; i++) - { - if (namePairs[i].namespaceURI == namespaceURI || - namePairs[i].name == name ) - return true; - } - return false; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - NameList() {} - - /** - * - */ - NameList(const NameList &other) - : namePairs (other.namePairs) - { - } - - /** - * - */ - NameList &operator=(const NameList &other) - { - namePairs = other.namePairs; - return *this; - } - - /** - * - */ - virtual ~NameList() {} - - -protected: - - std::vector<NamePair> namePairs; - -}; - -/*######################################################################### -## DOMImplementationList -#########################################################################*/ - -/** - * Contains a list of DOMImplementations, with accessors. - */ -class DOMImplementationList -{ -public: - - /** - * Return a DOMImplementation at the given index. If - * out of range, return NULL. - */ - virtual DOMImplementation *item(unsigned long index) - { - if (index >implementations.size()) - return NULL; - return implementations[index]; - } - - /** - * Return the number of DOMImplementations in this list. - */ - virtual unsigned long getLength() - { - return (unsigned long) implementations.size(); - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - DOMImplementationList() {} - - - /** - * - */ - DOMImplementationList(const DOMImplementationList &other) - : implementations (other.implementations) - { - } - - /** - * - */ - DOMImplementationList &operator=(const DOMImplementationList &other) - { - implementations = other.implementations; - return *this; - } - - /** - * - */ - virtual ~DOMImplementationList() {} - -protected: - - std::vector<DOMImplementation *>implementations; - -}; - - -/*######################################################################### -## DOMImplementationSource -#########################################################################*/ - -/** - * This is usually the first item to be called when creating a Document. - * You will either find one DOMImplementation with a given set of features, - * or return a list that match. Using "" will get any implementation - * available. - */ -class DOMImplementationSource -{ -public: - - /** - * Return the first DOMImplementation with the given set of features. - * Use "" to fetch any implementation. - */ - virtual DOMImplementation *getDOMImplementation(const DOMString &features) = 0; - - /** - * Return a list of DOMImplementations with the given set of features. - * Use "" to fetch any implementation. - */ - virtual DOMImplementationList getDOMImplementationList(const DOMString &features) = 0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~DOMImplementationSource() {} - -}; - - - - - -/*######################################################################### -## DOMImplementation -#########################################################################*/ - -/** - * This is the class that actually creates a Document. - */ -class DOMImplementation -{ -public: - - /** - * Determine if this implementation has the given feature and version. - */ - virtual bool hasFeature(const DOMString& feature, const DOMString& version) = 0; - - - /** - * Create a document type to be used in creating documents. - */ - virtual DocumentTypePtr createDocumentType( - const DOMString& qualifiedName, - const DOMString& publicId, - const DOMString& systemId) - throw(DOMException) = 0; - - /** - * Create a DOM document. - */ - virtual DocumentPtr createDocument(const DOMString& namespaceURI, - const DOMString& qualifiedName, - DocumentTypePtr doctype) - throw(DOMException) = 0; - /** - * Return the thing which is the feature of this implementation. Since - * this is a "one size fits all" call, you will need to typecast the - * result to the expected type. - */ - virtual DOMObject *getFeature(const DOMString& feature, - const DOMString& version) = 0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~DOMImplementation() {} - -}; - - - - - -/*######################################################################### -## Node -#########################################################################*/ - -/** - * The basic Node class, which is the root of most other - * classes in DOM. Thus it is by far the most important, and the one - * whose implementation we must perform correctly. - */ -class Node -{ -public: - - /** - * Which of the DOM Core node types is this node? - */ - typedef enum - { - ELEMENT_NODE = 1, - ATTRIBUTE_NODE = 2, - TEXT_NODE = 3, - CDATA_SECTION_NODE = 4, - ENTITY_REFERENCE_NODE = 5, - ENTITY_NODE = 6, - PROCESSING_INSTRUCTION_NODE = 7, - COMMENT_NODE = 8, - DOCUMENT_NODE = 9, - DOCUMENT_TYPE_NODE = 10, - DOCUMENT_FRAGMENT_NODE = 11, - NOTATION_NODE = 12 - } NodeType; - - /** - * Return the name of this node. - */ - virtual DOMString getNodeName() = 0; - - /** - * Return the value of this node. The interpretation of the - * value is type-specific. - */ - virtual DOMString getNodeValue() throw (DOMException) = 0; - - /** - * Set the value of this node. The interpretation of the - * value is type-specific. - */ - virtual void setNodeValue(const DOMString& val) throw (DOMException) = 0; - - /** - * Return the type of this Node. One of the NodeType values above. - */ - virtual unsigned short getNodeType() = 0; - - /** - * Return the parent which references this node as a child in the DOM - * tree. Return NULL if there is none. - */ - virtual NodePtr getParentNode() = 0; - - /** - * Return a list of the children of this Node. - * NOTE: the spec expects this to be a "live" list that always - * reflects an accurate list of what the Node current possesses, not - * a snapshot. How do we do this? - */ - virtual NodeList getChildNodes() = 0; - - /** - * Return the first sibling of the chidren of this node. Return - * null if there is none. - */ - virtual NodePtr getFirstChild() = 0; - - /** - * Return the last sibling of the children of this node. Return - * null if there is none. - */ - virtual NodePtr getLastChild() = 0; - - /** - * Return the node that is previous to this one in the parent's - * list of children. Return null if there is none. - */ - virtual NodePtr getPreviousSibling() = 0; - - /** - * Return the node that is after this one in the parent's list - * of children. Return null if there is none. - */ - virtual NodePtr getNextSibling() = 0; - - /** - * Get the list of all attributes of this node. - */ - virtual NamedNodeMap &getAttributes() = 0; - - - /** - * Return the document that created or inherited this node. - */ - virtual DocumentPtr getOwnerDocument() = 0; - - /** - * Insert a node as a new child. Place it before the referenced child. - * Place it at the end if the referenced child does not exist. - */ - virtual NodePtr insertBefore(const NodePtr newChild, - const NodePtr refChild) - throw(DOMException) = 0; - - /** - * Insert a node as a new child. Replace the referenced child with it. - * Place it at the end if the referenced child does not exist. - */ - virtual NodePtr replaceChild(const NodePtr newChild, - const NodePtr oldChild) - throw(DOMException) = 0; - - /** - * Remove a node from the list of children. Do nothing if the - * node is not a member of the child list. - */ - virtual NodePtr removeChild(const NodePtr oldChild) - throw(DOMException) = 0; - - /** - * Add the node to the end of this node's child list. - */ - virtual NodePtr appendChild(const NodePtr newChild) - throw(DOMException) = 0; - - /** - * Return true if this node has one or more children, else return false. - */ - virtual bool hasChildNodes() = 0; - - /** - * Return a new node which has the name, type, value, attributes, and - * child list as this one. - * If 'deep' is true, continue cloning recursively with this node's children, - * so that the child list also contains clones of their respective nodes. - */ - virtual NodePtr cloneNode(bool deep) = 0; - - /** - * Adjust this node and its children to have its namespaces and - * prefixes in "canonical" order. - */ - virtual void normalize() = 0; - - /** - * Return true if the named feature is supported by this node, - * else false. - */ - virtual bool isSupported(const DOMString& feature, - const DOMString& version) = 0; - - /** - * Return the namespace of this node. This would be whether the - * namespace were declared explicitly on this node, it has a namespace - * prefix, or it is inherits the namespace from an ancestor node. - */ - virtual DOMString getNamespaceURI() = 0; - - /** - * Return the namespace prefix of this node, if any. For example, if - * the tag were <svg:image> then the prefix would be "svg" - */ - virtual DOMString getPrefix() = 0; - - /** - * Sets the namespace prefix of this node to the given value. This - * does not change the namespaceURI value. - */ - virtual void setPrefix(const DOMString& val) throw(DOMException) = 0; - - /** - * Return the local name of this node. This is merely the name without - * any namespace or prefix. - */ - virtual DOMString getLocalName() = 0; - - /** - * Return true if this node has one or more attributes, else false. - */ - virtual bool hasAttributes() = 0; - - /** - * Return the base URI of this node. This is basically the "location" of this - * node, and is used in resolving the relative locations of other URIs. - */ - virtual DOMString getBaseURI() = 0; - - /** - * DocumentPosition. - * This is used to describe the position of one node relative - * to another in a document - */ - typedef enum - { - DOCUMENT_POSITION_DISCONNECTED = 0x01, - DOCUMENT_POSITION_PRECEDING = 0x02, - DOCUMENT_POSITION_FOLLOWING = 0x04, - DOCUMENT_POSITION_CONTAINS = 0x08, - DOCUMENT_POSITION_CONTAINED_BY = 0x10, - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20 - } DocumentPosition; - - - /** - * Get the position of this node relative to the node argument. - */ - virtual unsigned short compareDocumentPosition( - const NodePtr other) = 0; - - /** - * This is a DOM L3 method. Return the text value of this node and its - * children. This is done by concatenating all of the TEXT_NODE and - * CDATA_SECTION nodes of this node and its children, in order, together. - * Very handy. - */ - virtual DOMString getTextContent() throw(DOMException) = 0; - - - /** - * This is a DOM L3 method. Remember, this is a destructive call. This - * will replace all of the child nodes of this node with a single TEXT_NODE - * with the given text value. - */ - virtual void setTextContent(const DOMString &val) throw(DOMException) = 0; - - - /** - * This will search the tree from this node up, for a prefix that - * has been assigned to the namespace argument. Return "" if not found. - */ - virtual DOMString lookupPrefix(const DOMString &namespaceURI) =0; - - - /** - * Return true if this node is in the namespace of the argument, without - * requiring an explicit namespace declaration or a suffix. - */ - virtual bool isDefaultNamespace(const DOMString &namespaceURI) =0; - - - /** - * This will search the tree from this node up, for a namespace that - * has been assigned the suffix in the argument. Return "" if not found. - */ - virtual DOMString lookupNamespaceURI(const DOMString &prefix) =0; - - - /** - * Return true if the argument node is equal to this one. Use W3C rules - * for equality. - */ - virtual bool isEqualNode(const NodePtr node) =0; - - - - /** - * Return an opaque reference to the named feature. Return null if - * not supported. Using other than "" for the version will look for - * a feature with the given version. - */ - virtual DOMObject *getFeature(const DOMString &feature, - const DOMString &version) =0; - - /** - * Store a user data reference in this node, using the given key. - * A handler is an optional function object that will be called during - * future settings of this value. See UserDataHandler for more info. - */ - virtual DOMUserData *setUserData(const DOMString &key, - const DOMUserData *data, - const UserDataHandler *handler) =0; - - - /** - * Return a reference to the named user data object. Return null - * if it does not exist. - */ - virtual DOMUserData *getUserData(const DOMString &key) =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - Node() : _refCnt(0) - {} - - /** - * - */ - virtual ~Node() {} - -protected: - - friend void incrementRefCount(Node *p); - friend void decrementRefCount(Node *p); - - /** - * For the Ptr smart pointer - */ - int _refCnt; - -}; - - - - -/*######################################################################### -## NodeList -#########################################################################*/ - -/** - * Contains a list of Nodes. This is the standard API container for Nodes, - * and is used in lieu of other lists, arrays, etc, in order to provide - * a consistent API and algorithm. - */ -class NodeList -{ -public: - - /** - * Retrieve the Node at the given index. Return NULL - * if out of range. - */ - virtual NodePtr item(unsigned long index) - { - if (index>=nodes.size()) - return NULL; - return nodes[index]; - } - - /** - * Get the number of nodes in this list - */ - virtual unsigned long getLength() - { - return (unsigned long) nodes.size(); - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - NodeList() {} - - /** - * - */ - NodeList(const NodeList &other) - : nodes (other.nodes) - { - } - - /** - * - */ - NodeList &operator=(const NodeList &other) - { - nodes = other.nodes; - return *this; - } - - /** - * - */ - virtual ~NodeList() {} - - /** - * - */ - virtual void clear() - { - nodes.clear(); - } - -protected: - -friend class NodeImpl; -friend class ElementImpl; - - /* - * - */ - virtual void add(const NodePtr node) - { - nodes.push_back(node); - } - -protected: - - std::vector<NodePtr> nodes; - -}; - - - - -/*######################################################################### -## NamedNodeMap -#########################################################################*/ - -/** - * Contains a mapping from name->NodePtr. Used for various purposes. For - * example, a list of Attributes is a NamedNodeMap. - */ -class NamedNodeMap -{ -private: - - /** - * table entry. Not an API item - */ - class NamedNodeMapEntry - { - public: - NamedNodeMapEntry(const DOMString &theNamespaceURI, - const DOMString &theName, - const NodePtr theNode) - : namespaceURI (theNamespaceURI), - name (theName), - node (theNode) - { - } - NamedNodeMapEntry(const NamedNodeMapEntry &other) - { - assign(other); - } - NamedNodeMapEntry &operator=(const NamedNodeMapEntry &other) - { - assign(other); - return *this; - } - virtual ~NamedNodeMapEntry() - { - } - void assign(const NamedNodeMapEntry &other) - { - namespaceURI = other.namespaceURI; - name = other.name; - node = other.node; - } - DOMString namespaceURI; - DOMString name; - NodePtr node; - }; - - -public: - - /** - * Return the named node. Return nullptr if not found. - */ - virtual NodePtr getNamedItem(const DOMString& name) - { - std::vector<NamedNodeMapEntry>::iterator iter; - for (iter = entries.begin() ; iter!=entries.end() ; ++iter) - { - if (iter->name == name) - { - NodePtr node = iter->node; - return node; - } - } - return NULL; - } - - /** - * Adds a node using its nodeName attribute. If a node with that name is already - * present in this map, it is replaced by the new one. Replacing a node by itself - * has no effect. - */ - virtual NodePtr setNamedItem(NodePtr arg) throw(DOMException) - { - if (!arg) - return NULL; - DOMString namespaceURI = arg->getNamespaceURI(); - DOMString name = arg->getNodeName(); - std::vector<NamedNodeMapEntry>::iterator iter; - for (iter = entries.begin() ; iter!=entries.end() ; ++iter) - { - if (iter->name == name) - { - NodePtr node = iter->node; - iter->node = arg; - return node; - } - } - NamedNodeMapEntry entry(namespaceURI, name, arg); - entries.push_back(entry); - return arg; - } - - - /** - * Removes a node specified by name. - */ - virtual NodePtr removeNamedItem(const DOMString& name) throw(DOMException) - { - std::vector<NamedNodeMapEntry>::iterator iter; - for (iter = entries.begin() ; iter!=entries.end() ; ++iter) - { - if (iter->name == name) - { - NodePtr node = iter->node; - entries.erase(iter); - return node; - } - } - return NULL; - } - - /** - * Retrieves an item at the given index. If out of bounds, return NULL - */ - virtual NodePtr item(unsigned long index) - { - if (index>=entries.size()) - return NULL; - return entries[index].node; - } - - /** - * Return the number of items in this map - */ - virtual unsigned long getLength() - { - return (unsigned long)entries.size(); - } - - /** - * Retrieves a node specified by local name and namespace URI. - */ - virtual NodePtr getNamedItemNS(const DOMString& namespaceURI, - const DOMString& localName) - { - std::vector<NamedNodeMapEntry>::iterator iter; - for (iter = entries.begin() ; iter!=entries.end() ; ++iter) - { - if (iter->namespaceURI == namespaceURI && iter->name == localName) - { - NodePtr node = iter->node; - return node; - } - } - return NULL; - } - - /** - * Adds a node using its namespaceURI and localName. If a node with that - * namespace URI and that local name is already present in this map, it is - * replaced by the new one. Replacing a node by itself has no effect. - */ - virtual NodePtr setNamedItemNS(NodePtr arg) throw(DOMException) - { - if (!arg) - return NULL; - DOMString namespaceURI = arg->getNamespaceURI(); - DOMString name = arg->getNodeName(); - std::vector<NamedNodeMapEntry>::iterator iter; - for (iter = entries.begin() ; iter!=entries.end() ; ++iter) - { - if (iter->namespaceURI == namespaceURI && iter->name == name) - { - NodePtr node = iter->node; - iter->node = arg; - return node; - } - } - NamedNodeMapEntry entry(namespaceURI, name, arg); - entries.push_back(entry); - return arg; - } - - /** - * Removes a node specified by local name and namespace URI. - */ - virtual NodePtr removeNamedItemNS(const DOMString& namespaceURI, - const DOMString& localName) - throw(DOMException) - { - std::vector<NamedNodeMapEntry>::iterator iter; - for (iter = entries.begin() ; iter!=entries.end() ; ++iter) - { - if (iter->namespaceURI == namespaceURI && iter->name == localName) - { - NodePtr node = iter->node; - entries.erase(iter); - return node; - } - } - return NULL; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - NamedNodeMap() {} - - - /** - * - */ - NamedNodeMap(const NamedNodeMap &other) - : entries (other.entries) - { - } - - /** - * - */ - NamedNodeMap &operator=(const NamedNodeMap &other) - { - entries = other.entries; - return *this; - } - - - /** - * - */ - virtual ~NamedNodeMap() {} - -protected: - - std::vector<NamedNodeMapEntry> entries; - -}; - - - - -/*######################################################################### -## CharacterData -#########################################################################*/ - -/** - * This is the base class for other text-oriented Nodes, such as TEXT_NODE - * or CDATA_SECTION_NODE. No DOM objects correspond directly to CharacterData. - */ -class CharacterData : virtual public Node -{ -public: - - /** - * This is an alias for getNodeValue() - */ - virtual DOMString getData() throw(DOMException) = 0; - - /** - * This is an alias for setNodeValue() - */ - virtual void setData(const DOMString& val) throw(DOMException) = 0; - - /** - * Return the number of characters contained in this node's data - */ - virtual unsigned long getLength() = 0; - - /** - * Return a substring of this node's data, starting at offset, and - * continuing for 'count' characters. Throw an exception if this goes - * out of range. - */ - virtual DOMString substringData(unsigned long offset, - unsigned long count) - throw(DOMException) = 0; - - /** - * Append the argument string to the end of the node's current data. - */ - virtual void appendData(const DOMString& arg) throw(DOMException) = 0; - - /** - * Insert the argument string at the offset position into the node's - * current data. If the position is out of range, throw an Exception. - */ - virtual void insertData(unsigned long offset, - const DOMString& arg) - throw(DOMException) = 0; - - /** - * Delete 'count' characters from the node's data starting from the - * offset position. If this goes out of range, throw an Exception. - */ - virtual void deleteData(unsigned long offset, - unsigned long count) - throw(DOMException) = 0; - - /** - * Replace the 'count' characters at the offset position with the given - * argument string. If this goes out of range, throw an Exception. - */ - virtual void replaceData(unsigned long offset, - unsigned long count, - const DOMString& arg) - throw(DOMException) = 0; - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~CharacterData() {} - -}; - - - - -/*######################################################################### -## Attr -#########################################################################*/ - -/** - * The Attr interface represents an attribute in an Element object. - * Typically the allowable values for the attribute are defined in a - * schema associated with the document. - * Since Attrs are not considered to be part of the DOM tree, parent, - * previousSibling, and nextSibling are null. - */ -class Attr : virtual public Node -{ -public: - - /** - * Returns the name of this attribute. If Node.localName is different - * from null, this attribute is a qualified name. - */ - virtual DOMString getName() = 0; - - /** - * True if this attribute was explicitly given a value in the instance document, - * false otherwise. If the application changed the value of this attribute node - * (even if it ends up having the same value as the default value) then it is set - * to true. The implementation may handle attributes with default values from - * other schemas similarly but applications should use - * Document.normalizeDocument() to guarantee this information is up-to-date. - */ - virtual bool getSpecified() = 0; - - /** - * Returns the value of the attribute - */ - virtual DOMString getValue() = 0; - - /** - * Sets the value of the attribute - */ - virtual void setValue(const DOMString& val) throw(DOMException) = 0; - - /** - * Return the Element that possesses this attribute - */ - virtual ElementPtr getOwnerElement() = 0; - - - /** - * The type information associated with this attribute. - */ - virtual TypeInfo &getSchemaTypeInfo() = 0; - - - /** - * Returns whether this attribute is known to be of type ID (i.e. to contain an - * identifier for its owner element) or not. When it is and its value is unique, - * the ownerElement of this attribute can be retrieved using the method - * Document.getElementById. - */ - virtual bool getIsId() = 0; - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~Attr() {} - -}; - - - - - -/*######################################################################### -## Element -#########################################################################*/ - -/** - * The Element interface represents an element in an XML document. - * Elements may have attributes associated with them; since the Element interface - * inherits from Node, the generic Node interface attribute attributes may be - * used to retrieve the set of all attributes for an element. There are methods - * on the Element interface to retrieve either an Attr object by name or an - * attribute value by name. In XML, where an attribute value may contain entity - * references, an Attr object should be retrieved to examine the possibly fairly - * complex sub-tree representing the attribute value. On the other hand, in HTML, - * where all attributes have simple string values, methods to directly access an - * attribute value can safely be used as a convenience. - */ -class Element : virtual public Node -{ -public: - - - /** - * The name of the element. If Node.localName is different from null, - * this attribute is a qualified name. - */ - virtual DOMString getTagName() = 0; - - /** - * Retrieves an attribute value by name. - */ - virtual DOMString getAttribute(const DOMString& name) = 0; - - /** - * Adds a new attribute. If an attribute with that name is already present in the - * element, its value is changed to be that of the value parameter. This value is - * a simple string; it is not parsed as it is being set. So any markup (such as - * syntax to be recognized as an entity reference) is treated as literal text, - * and needs to be appropriately escaped by the implementation when it is written - * out. In order to assign an attribute value that contains entity references, - * the user must create an Attr node plus any Text and EntityReference nodes, - * build the appropriate subtree, and use setAttributeNode to assign it as the - * value of an attribute. - */ - virtual void setAttribute(const DOMString& name, - const DOMString& value) - throw(DOMException) = 0; - - /** - * Removes an attribute by name. If no attribute with this name is found, - * this method has no effect. - */ - virtual void removeAttribute(const DOMString& name) - throw(DOMException) = 0; - - /** - * Retrieves an attribute node by name. - */ - virtual AttrPtr getAttributeNode(const DOMString& name) = 0; - - /** - * Adds a new attribute node. If an attribute with that name (nodeName) - * is already present in the element, it is replaced by the new one. - * Replacing an attribute node by itself has no effect. - */ - virtual AttrPtr setAttributeNode(AttrPtr newAttr) - throw(DOMException) = 0; - - /** - * Removes the specified attribute node. - */ - virtual AttrPtr removeAttributeNode(AttrPtr oldAttr) - throw(DOMException) = 0; - - /** - * Returns a NodeList of all descendant Elements with a given tag name, - * in document order. - */ - virtual NodeList getElementsByTagName(const DOMString& name) = 0; - - /** - * Retrieves an attribute value by local name and namespace URI. - * Per [XML Namespaces], applications must use the value null as the - * namespaceURI parameter for methods if they wish to have no namespace. - */ - virtual DOMString getAttributeNS(const DOMString& namespaceURI, - const DOMString& localName) = 0; - - /** - * Adds a new attribute. If an attribute with the same local name and namespace - * URI is already present on the element, its prefix is changed to be the prefix - * part of the qualifiedName, and its value is changed to be the value parameter. - * This value is a simple string; it is not parsed as it is being set. So any - * markup (such as syntax to be recognized as an entity reference) is treated as - * literal text, and needs to be appropriately escaped by the implementation when - * it is written out. In order to assign an attribute value that contains entity - * references, the user must create an Attr node plus any Text and - * EntityReference nodes, build the appropriate subtree, and use - * setAttributeNodeNS or setAttributeNode to assign it as the value of an - * attribute. - */ - virtual void setAttributeNS(const DOMString& namespaceURI, - const DOMString& qualifiedName, - const DOMString& value) - throw(DOMException) = 0; - - /** - * Removes an attribute by local name and namespace URI. - */ - virtual void removeAttributeNS(const DOMString& namespaceURI, - const DOMString& localName) - throw(DOMException) = 0; - - /** - * Retrieves an Attr node by local name and namespace URI. - */ - virtual AttrPtr getAttributeNodeNS(const DOMString& namespaceURI, - const DOMString& localName) = 0; - - /** - * Adds a new attribute. If an attribute with that local name and - * that namespace URI is already present in the element, it is - * replaced by the new one. Replacing an attribute node by itself has no effect. - */ - virtual AttrPtr setAttributeNodeNS(AttrPtr newAttr) - throw(DOMException) = 0; - - /** - * Returns a NodeList of all the descendant Elements with a given - * local name and namespace URI in document order. - */ - virtual NodeList getElementsByTagNameNS(const DOMString& namespaceURI, - const DOMString& localName) = 0; - - /** - * Returns true when an attribute with a given name is specified on - * this element or has a default value, false otherwise. - */ - virtual bool hasAttribute(const DOMString& name) = 0; - - /** - * Returns true when an attribute with a given local name and namespace - * URI is specified on this element or has a default value, false otherwise. - */ - virtual bool hasAttributeNS(const DOMString& namespaceURI, - const DOMString& localName) = 0; - - /** - * The type information associated with this element. - */ - virtual TypeInfo &getSchemaTypeInfo() = 0; - - - /** - * If the parameter isId is true, this method declares the specified - * attribute to be a user-determined ID attribute. - */ - virtual void setIdAttribute(const DOMString &name, - bool isId) throw (DOMException) = 0; - - /** - * If the parameter isId is true, this method declares the specified - * attribute to be a user-determined ID attribute. - */ - virtual void setIdAttributeNS(const DOMString &namespaceURI, - const DOMString &localName, - bool isId) throw (DOMException) = 0; - - /** - * If the parameter isId is true, this method declares the specified - * attribute to be a user-determined ID attribute. - */ - virtual void setIdAttributeNode(const AttrPtr idAttr, - bool isId) throw (DOMException) = 0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~Element() {} - -}; - - - - - -/*######################################################################### -## Text -#########################################################################*/ - -/** - * The Text interface inherits from CharacterData and represents the textual - * content (termed character data in XML) of an Element or Attr. If there is no - * markup inside an element's content, the text is contained in a single object - * implementing the Text interface that is the only child of the element. If - * there is markup, it is parsed into the information items (elements, comments, - * etc.) and Text nodes that form the list of children of the element. - */ -class Text : virtual public CharacterData -{ -public: - - /** - * Breaks this node into two nodes at the specified offset, keeping both in the - * tree as siblings. After being split, this node will contain all the content up - * to the offset point. A new node of the same type, which contains all the - * content at and after the offset point, is returned. If the original node had a - * parent node, the new node is inserted as the next sibling of the original - * node. When the offset is equal to the length of this node, the new node has no - * data. - */ - virtual TextPtr splitText(unsigned long offset) - throw(DOMException) = 0; - - /** - * Returns whether this text node contains element content whitespace, often - * abusively called "ignorable whitespace". The text node is determined to - * contain whitespace in element content during the load of the document or if - * validation occurs while using Document.normalizeDocument(). - */ - virtual bool getIsElementContentWhitespace()= 0; - - /** - * Returns all text of Text nodes logically-adjacent text nodes - * to this node, concatenated in document order. - */ - virtual DOMString getWholeText() = 0; - - - /** - * Replaces the text of the current node and all logically-adjacent text nodes - * with the specified text. All logically-adjacent text nodes are removed - * including the current node unless it was the recipient of the replacement text. - * - * This method returns the node which received the replacement text. The returned - * node is: - * o null, when the replacement text is the empty string; - * o the current node, except when the current node is read-only; - * o a new Text node of the same type (Text or CDATASection) as - * the current node inserted at the location of the replacement. - */ - virtual TextPtr replaceWholeText(const DOMString &content) - throw(DOMException) = 0; - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~Text() {} - -}; - - - -/*######################################################################### -## Comment -#########################################################################*/ - -/** - * This interface inherits from CharacterData and represents the content of a - * comment, i.e., all the characters between the starting '<!--' and ending '-->'. - * Note that this is the definition of a comment in XML, and, in practice, - * HTML, although some HTML tools may implement the full SGML comment structure. - */ -class Comment : virtual public CharacterData -{ -public: - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~Comment() {} - - -}; - - - -/*######################################################################### -## TypeInfo -#########################################################################*/ - -/** - * The TypeInfo interface represents a type referenced from Element or Attr nodes, - * specified in the schemas associated with the document. The type is a pair of - * a namespace URI and name properties, and depends on the document's schema. - */ -class TypeInfo -{ -public: - - /** - * The name of a type declared for the associated element or attribute, - * or null if unknown. - */ - virtual DOMString getTypeName() - { return typeName; } - - /** - * The namespace of the type declared for the associated element - * or attribute or null if the element does not have declaration or - * if no namespace information is available. - */ - virtual DOMString getTypeNamespace() - { return typeNameSpace; } - - /** - * These are the available values for the derivationMethod parameter used by the - * method TypeInfo.isDerivedFrom(). It is a set of possible types of derivation, - * and the values represent bit positions. If a bit in the derivationMethod - * parameter is set to 1, the corresponding type of derivation will be taken into - * account when evaluating the derivation between the reference type definition - * and the other type definition. When using the isDerivedFrom method, combining - * all of them in the derivationMethod parameter is equivalent to invoking the - * method for each of them separately and combining the results with the OR - * boolean function. This specification only defines the type of derivation for - * XML Schema. - */ - typedef enum - { - DERIVATION_RESTRICTION = 0x00000001, - DERIVATION_EXTENSION = 0x00000002, - DERIVATION_UNION = 0x00000004, - DERIVATION_LIST = 0x00000008 - } DerivationMethod; - - - /** - * This method returns if there is a derivation between the reference - * type definition, i.e. the TypeInfo on which the method is being called, - * and the other type definition, i.e. the one passed as parameters. - */ - virtual bool isDerivedFrom(const DOMString &/*typeNamespaceArg*/, - const DOMString &/*typeNameArg*/, - DerivationMethod /*derivationMethod*/) - { return false; } - - //################## - //# Non-API methods - //################## - - - /** - * - */ - TypeInfo() - {} - - /** - * - */ - TypeInfo(const TypeInfo &other) - { assign(other); } - - /** - * - */ - TypeInfo &operator=(const TypeInfo &other) - { assign(other); return *this; } - - /** - * - */ - virtual ~TypeInfo() {} - -private: - - void assign(const TypeInfo &other) - { - typeName = other.typeName; - typeNameSpace = other.typeNameSpace; - } - - DOMString typeName; - DOMString typeNameSpace; -}; - - - - -/*######################################################################### -## UserDataHandler -#########################################################################*/ - -/** - * When associating an object to a key on a node using Node.setUserData() the - * application can provide a handler that gets called when the node the object is - * associated to is being cloned, imported, or renamed. This can be used by the - * application to implement various behaviors regarding the data it associates to - * the DOM nodes. This interface defines that handler. - */ -class UserDataHandler -{ -public: - - /** - * An integer indicating the type of operation being performed on a node. - */ - typedef enum - { - NODE_CLONED = 1, - NODE_IMPORTED = 2, - NODE_DELETED = 3, - NODE_RENAMED = 4, - NODE_ADOPTED = 5 - } OperationType; - - - /** - * This method is called whenever the node for which this handler - * is registered is imported or cloned. - */ - virtual void handle(unsigned short operation, - const DOMString &key, - const DOMUserData *data, - const NodePtr src, - const NodePtr dst) =0; - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~UserDataHandler() {} - -}; - - -/*######################################################################### -## DOMError -#########################################################################*/ - -/** - * DOMError is an interface that describes an error. - */ -class DOMError -{ -public: - - /** - * An integer indicating the severity of the error. - */ - typedef enum - { - SEVERITY_WARNING = 1, - SEVERITY_ERROR = 2, - SEVERITY_FATAL_ERROR = 3 - } ErrorSeverity; - - - /** - * The severity of the error, either SEVERITY_WARNING, SEVERITY_ERROR, - * or SEVERITY_FATAL_ERROR. - */ - virtual unsigned short getSeverity() =0; - - /** - * An implementation specific string describing the error that occurred. - */ - virtual DOMString getMessage() =0; - - /** - * A DOMString indicating which related data is expected in relatedData. - * Users should refer to the specification of the error in order to find - * its DOMString type and relatedData definitions if any. - */ - virtual DOMString getType() =0; - - /** - * The related platform dependent exception if any. - */ - virtual DOMObject *getRelatedException() =0; - - /** - * The related DOMError.type dependent data if any. - */ - virtual DOMObject *getRelatedData() =0; - - /** - * The location of the error. - */ - virtual DOMLocator *getLocation() =0; - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~DOMError() {} - -}; - - -/*######################################################################### -## DOMErrorHandler -#########################################################################*/ - -/** - * DOMErrorHandler is a callback interface that the DOM implementation can call - * when reporting errors that happens while processing XML data, or when doing - * some other processing (e.g. validating a document). A DOMErrorHandler object - * can be attached to a Document using the "error-handler" on the - * DOMConfiguration interface. If more than one error needs to be reported during - * an operation, the sequence and numbers of the errors passed to the error - * handler are implementation dependent. - */ -class DOMErrorHandler -{ -public: - - /** - * This method is called on the error handler when an error occurs. - * If an exception is thrown from this method, it is considered to be - * equivalent of returning true. - */ - virtual bool handleError(const DOMError *error) =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~DOMErrorHandler() {} - -}; - - - -/*######################################################################### -## DOMLocator -#########################################################################*/ - -/** - * DOMLocator is an interface that describes a location (e.g. where an error occurred). - */ -class DOMLocator -{ -public: - - /** - * The line number this locator is pointing to, or -1 if there is - * no column number available. - */ - virtual long getLineNumber() =0; - - /** - * The column number this locator is pointing to, or -1 if there is - * no column number available. - */ - virtual long getColumnNumber() =0; - - /** - * The byte offset into the input source this locator is pointing to - * or -1 if there is no byte offset available. - */ - virtual long getByteOffset() =0; - - /** - * The UTF-16, as defined in [Unicode] and Amendment 1 of [ISO/IEC 10646], - * offset into the input source this locator is pointing to or -1 - * if there is no UTF-16 offset available. - */ - virtual long getUtf16Offset() =0; - - - /** - * The node this locator is pointing to, or null if no node is available. - */ - virtual NodePtr getRelatedNode() =0; - - - /** - * The URI this locator is pointing to, or null if no URI is available. - */ - virtual DOMString getUri() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~DOMLocator() {} -}; - - -/*######################################################################### -## DOMConfiguration -#########################################################################*/ - -/** - * The DOMConfiguration interface represents the configuration of a document and - * maintains a table of recognized parameters. Using the configuration, it is - * possible to change Document.normalizeDocument() behavior, such as replacing - * the CDATASection nodes with Text nodes or specifying the type of the schema - * that must be used when the validation of the Document is requested. - * DOMConfiguration objects are also used in [DOM Level 3 Load and Save] in the - * DOMParser and DOMSerializer interfaces. - * - * Look here for a list of valid parameters: - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/core.html#DOMConfiguration - */ -class DOMConfiguration -{ -public: - - /** - * Set the value of a parameter. - */ - virtual void setParameter(const DOMString &name, - const DOMUserData *value) - throw (DOMException) =0; - - /** - * Return the value of a parameter if known. - */ - virtual DOMUserData *getParameter(const DOMString &name) - throw (DOMException) =0; - - /** - * Check if setting a parameter to a specific value is supported. - */ - virtual bool canSetParameter(const DOMString &name, - const DOMUserData *data) =0; - - /** - * The list of the parameters supported by this DOMConfiguration - * object and for which at least one value can be set by the application. - * Note that this list can also contain parameter names defined outside - * this specification. - */ - virtual DOMStringList *getParameterNames() =0; - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~DOMConfiguration() {} - -}; - - - - - - -/*######################################################################### -## CDATASection -#########################################################################*/ - -/** - * CDATA sections are used to escape blocks of text containing characters that - * would otherwise be regarded as markup. The only delimiter that is recognized - * in a CDATA section is the "]]>" string that ends the CDATA section. CDATA - * sections cannot be nested. Their primary purpose is for including material - * such as XML fragments, without needing to escape all the delimiters. - */ -class CDATASection : virtual public Text -{ -public: - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~CDATASection() {} - -}; - - - - -/*######################################################################### -## DocumentType -#########################################################################*/ - -/** - * Each Document has a doctype attribute whose value is either null or a - * DocumentType object. The DocumentType interface in the DOM Core provides an - * interface to the list of entities that are defined for the document, and - * little else because the effect of namespaces and the various XML schema - * efforts on DTD representation are not clearly understood as of this writing. - */ -class DocumentType : virtual public Node -{ -public: - - /** - * The name of DTD; i.e., the name immediately following the DOCTYPE keyword. - */ - virtual DOMString getName() = 0; - - /** - * A NamedNodeMap containing the general entities, both external and - * internal, declared in the DTD. Parameter entities are not contained. - * Duplicates are discarded. - */ - virtual NamedNodeMap getEntities() = 0; - - /** - * A NamedNodeMap containing the notations declared in the DTD. Duplicates - * are discarded. Every node in this map also implements the - * Notation interface. - */ - virtual NamedNodeMap getNotations() = 0; - - /** - * The public identifier of the external subset. - */ - virtual DOMString getPublicId() = 0; - - /** - * The system identifier of the external subset. This may be an - * absolute URI or not. - */ - virtual DOMString getSystemId() = 0; - - /** - * The internal subset as a string, or null if there is none. This - * does not contain the delimiting square brackets. - */ - virtual DOMString getInternalSubset() = 0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~DocumentType() {} - -}; - - - - - -/*######################################################################### -## Notation -#########################################################################*/ - -/** - * This interface represents a notation declared in the DTD. A notation either - * declares, by name, the format of an unparsed entity (see section 4.7 of the - * XML 1.0 specification [XML 1.0]), or is used for formal declaration of - * processing instruction targets (see section 2.6 of the XML 1.0 specification - * [XML 1.0]). The nodeName attribute inherited from Node is set to the declared - * name of the notation. - */ -class Notation : virtual public Node -{ -public: - - /** - * The public identifier of this notation. If the public identifier was - * not specified, this is null. - */ - virtual DOMString getPublicId() = 0; - - /** - * The system identifier of this notation. If the system identifier was - * not specified, this is null. This may be an absolute URI or not. - */ - virtual DOMString getSystemId() = 0; - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~Notation() {} -}; - - - - - - -/*######################################################################### -## Entity -#########################################################################*/ - -/** - * This interface represents a known entity, either parsed or unparsed, in an XML - * document. Note that this models the entity itself not the entity declaration. - */ -class Entity : virtual public Node -{ -public: - - /** - * The public identifier associated with the entity if specified, - * and null otherwise. - */ - virtual DOMString getPublicId() = 0; - - /** - * The system identifier associated with the entity if specified, - * and null otherwise. This may be an absolute URI or not. - */ - virtual DOMString getSystemId() = 0; - - /** - * For unparsed entities, the name of the notation for the entity. - * For parsed entities, this is null. - */ - virtual DOMString getNotationName() = 0; - - /** - * An attribute specifying the encoding used for this entity at the - * time of parsing, when it is an external parsed entity. This is null - * if it an entity from the internal subset or if it is not known. - */ - virtual DOMString getInputEncoding() = 0; - - /** - * An attribute specifying, as part of the text declaration, the encoding - * of this entity, when it is an external parsed entity. This is null otherwise. - */ - virtual DOMString getXmlEncoding() = 0; - - /** - * An attribute specifying, as part of the text declaration, the version - * number of this entity, when it is an external parsed entity. - * This is null otherwise. - */ - virtual DOMString getXmlVersion() = 0; - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~Entity() {} -}; - - - - - -/*######################################################################### -## EntityReference -#########################################################################*/ - -/** - * EntityReference nodes may be used to represent an entity reference in the tree. - */ -class EntityReference : virtual public Node -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~EntityReference() {} -}; - - - - - -/*######################################################################### -## ProcessingInstruction -#########################################################################*/ - -/** - * The ProcessingInstruction interface represents a "processing instruction", - * used in XML as a way to keep processor-specific information in the text of the - * document. - */ -class ProcessingInstruction : virtual public Node -{ -public: - - /** - * The target of this processing instruction. XML defines this as being - * the first token following the markup that begins the processing instruction. - */ - virtual DOMString getTarget() = 0; - - /** - * The content of this processing instruction. This is from the first non - * white space character after the target to the character immediately - * preceding the ?>. - */ - virtual DOMString getData() = 0; - - /** - * Sets the content above. - */ - virtual void setData(const DOMString& val) throw(DOMException) = 0; - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~ProcessingInstruction() {} - -}; - - - - - -/*######################################################################### -## DocumentFragment -#########################################################################*/ - -/** - * DocumentFragment is a "lightweight" or "minimal" Document object. It is very - * common to want to be able to extract a portion of a document's tree or to - * create a new fragment of a document. Imagine implementing a user command like - * cut or rearranging a document by moving fragments around. It is desirable to - * have an object which can hold such fragments and it is quite natural to use a - * Node for this purpose. While it is true that a Document object could fulfill - * this role, a Document object can potentially be a heavyweight object, - * depending on the underlying implementation. What is really needed for this is - * a very lightweight object. DocumentFragment is such an object. - */ -class DocumentFragment : virtual public Node -{ -public: - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~DocumentFragment() {} -}; - - - - - - -/*######################################################################### -## Document -#########################################################################*/ - -/** - * From the spec: - * - * The Document interface represents the entire HTML or XML document. - * Conceptually, it is the root of the document tree, and provides the primary - * access to the document's data. - * - * Since elements, text nodes, comments, processing instructions, etc. cannot - * exist outside the context of a Document, the Document interface also contains - * the factory methods needed to create these objects. The Node objects created - * have a ownerDocument attribute which associates them with the Document within - * whose context they were created. - * - */ -class Document : virtual public Node -{ -public: - - /** - * The Document Type Declaration (see DocumentType) associated with this document. - */ - virtual DocumentTypePtr getDoctype() = 0; - - /** - * The DOMImplementation object that handles this document. A DOM application - * may use objects from multiple implementations. - */ - virtual DOMImplementation *getImplementation() = 0; - - /** - * This is a convenience attribute that allows direct access to the child - * node that is the document element of the document. - */ - virtual ElementPtr getDocumentElement() = 0; - - /** - * Creates an element of the type specified. - */ - virtual ElementPtr createElement(const DOMString& tagName) - throw(DOMException) = 0; - - /** - * Creates a new, empty DocumentFragment - */ - virtual DocumentFragmentPtr createDocumentFragment() = 0; - - /** - * Creates an Text node with the text data specified. - */ - virtual TextPtr createTextNode(const DOMString& text) = 0; - - /** - * Creates a new Comment node with the argument text - */ - virtual CommentPtr createComment(const DOMString& text) = 0; - - /** - * Creates a new CDATASection node with the argument text - */ - virtual CDATASectionPtr createCDATASection(const DOMString& text) - throw(DOMException) = 0; - - /** - * Creates a new ProcessingInstruction - */ - virtual ProcessingInstructionPtr - createProcessingInstruction(const DOMString& target, - const DOMString& data) - throw(DOMException) = 0; - - /** - * Creates a new Attr with the given name, but no value. - */ - virtual AttrPtr createAttribute(const DOMString& name) - throw(DOMException) = 0; - - /** - * Creates a new EntityReference - */ - virtual EntityReferencePtr createEntityReference(const DOMString& name) - throw(DOMException) = 0; - - /** - * Searches the Document in document order for all elements with the given - * tag name - */ - virtual NodeList getElementsByTagName(const DOMString& tagname) = 0; - - - /** - * Imports a node from another document to this document, without altering or - * removing the source node from the original document; this method creates a new - * copy of the source node. The returned node has no parent; (parentNode is - * null). For all nodes, importing a node creates a node object owned by the - * importing document, with attribute values identical to the source node's - * nodeName and nodeType, plus the attributes related to namespaces (prefix, - * localName, and namespaceURI). As in the cloneNode operation, the source node - * is not altered. User data associated to the imported node is not carried over. - * However, if any UserDataHandlers has been specified along with the associated - * data these handlers will be called with the appropriate parameters before this - * method returns. Additional information is copied as appropriate to the - * nodeType, attempting to mirror the behavior expected if a fragment of XML or - * HTML source was copied from one document to another, recognizing that the two - * documents may have different DTDs in the XML case. The following list - * describes the specifics for each type of node. - */ - virtual NodePtr importNode(const NodePtr importedNode, - bool deep) - throw(DOMException) = 0; - - /** - * Creates a new Element with the given namespace and qualifiedName. - * Use "" for no namespace - */ - virtual ElementPtr createElementNS(const DOMString& namespaceURI, - const DOMString& qualifiedName) - throw(DOMException) = 0; - - /** - * Creates a new Attr with the given namespace and qualifiedName. - */ - virtual AttrPtr createAttributeNS(const DOMString& namespaceURI, - const DOMString& qualifiedName) - throw(DOMException) = 0; - - /** - * Searches the Document in document order for all elements with the given - * namespace and tag name - */ - virtual NodeList getElementsByTagNameNS(const DOMString& namespaceURI, - const DOMString& localName) = 0; - - /** - * Gets the element with the given id if it exists, else null. - */ - virtual ElementPtr getElementById(const DOMString& elementId) = 0; - - - /** - * Return the input encoding of this Document - */ - virtual DOMString getInputEncoding() = 0; - - - /** - * Return the XML encoding of this Document - */ - virtual DOMString getXmlEncoding() = 0; - - /** - * An attribute specifying, as part of the XML declaration, whether - * this document is standalone. This is false when unspecified. - */ - virtual bool getXmlStandalone() = 0; - - /** - * Sets whether this is a standalone XML document. No validation is - * done here. - */ - virtual void setXmlStandalone(bool val) throw (DOMException) = 0; - - /** - * Gets the version (1.0, 1.1, etc) of this document. - */ - virtual DOMString getXmlVersion() = 0; - - /** - * Sets the XML version of this document. - */ - virtual void setXmlVersion(const DOMString &version) - throw (DOMException) = 0; - - /** - * An attribute specifying whether error checking is enforced or not. When set to - * false, the implementation is free to not test every possible error case - * normally defined on DOM operations, and not raise any DOMException on DOM - * operations or report errors while using Document.normalizeDocument(). In case - * of error, the behavior is undefined. This attribute is true by default. - */ - virtual bool getStrictErrorChecking() = 0; - - /** - * Sets the value described above. - */ - virtual void setStrictErrorChecking(bool val) = 0; - - - /** - * Gets the document URI (the base location) of this Document. - */ - virtual DOMString getDocumentURI() = 0; - - /** - * Sets the document URI (the base location) of this Document to the - * argument uri. - */ - virtual void setDocumentURI(const DOMString &uri) = 0; - - /** - * Attempts to adopt a node from another document to this document. If supported, - * it changes the ownerDocument of the source node, its children, as well as the - * attached attribute nodes if there are any. If the source node has a parent it - * is first removed from the child list of its parent. This effectively allows - * moving a subtree from one document to another (unlike importNode() which - * create a copy of the source node instead of moving it). When it fails, - * applications should use Document.importNode() instead. Note that if the - * adopted node is already part of this document (i.e. the source and target - * document are the same), this method still has the effect of removing the - * source node from the child list of its parent, if any. - */ - virtual NodePtr adoptNode(const NodePtr source) throw (DOMException) = 0; - - /** - * Get the configuration item associated with this Document - */ - virtual DOMConfiguration *getDomConfig() = 0; - - /** - * This method acts as if the document was going through a save and load cycle, - * putting the document in a "normal" form. As a consequence, this method updates - * the replacement tree of EntityReference nodes and normalizes Text nodes, as - * defined in the method Node.normalize(). Otherwise, the actual result depends - * on the features being set on the Document.domConfig object and governing what - * operations actually take place. Noticeably this method could also make the - * document namespace well-formed according to the algorithm described in - * Namespace Normalization, check the character normalization, remove the - * CDATASection nodes, etc. See DOMConfiguration for details. - */ - virtual void normalizeDocument() = 0; - - /** - * - * Rename an existing node of type ELEMENT_NODE or ATTRIBUTE_NODE. When possible - * this simply changes the name of the given node, otherwise this creates a new - * node with the specified name and replaces the existing node with the new node - * as described below. If simply changing the name of the given node is not - * possible, the following operations are performed: a new node is created, any - * registered event listener is registered on the new node, any user data - * attached to the old node is removed from that node, the old node is removed - * from its parent if it has one, the children are moved to the new node, if the - * renamed node is an Element its attributes are moved to the new node, the new - * node is inserted at the position the old node used to have in its parent's - * child nodes list if it has one, the user data that was attached to the old - * node is attached to the new node. When the node being renamed is an Element - * only the specified attributes are moved, default attributes originated from - * the DTD are updated according to the new element name. In addition, the - * implementation may update default attributes from other schemas. Applications - * should use Document.normalizeDocument() to guarantee these attributes are - * up-to-date. When the node being renamed is an Attr that is attached to an - * Element, the node is first removed from the Element attributes map. Then, once - * renamed, either by modifying the existing node or creating a new one as - * described above, it is put back. - * - * In addition, - * a user data event NODE_RENAMED is fired, - * when the implementation supports the feature "MutationNameEvents", - * each mutation operation involved in this method fires the appropriate - * event, and in the end the event {http://www.w3.org/2001/xml-events, - * DOMElementNameChanged} or {http://www.w3.org/2001/xml-events, - * DOMAttributeNameChanged} is fired. - * - */ - virtual NodePtr renameNode(const NodePtr n, - const DOMString &namespaceURI, - const DOMString &qualifiedName) - throw (DOMException) = 0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~Document() {} - -}; - - - - - - - - -} //namespace dom -} //namespace w3c -} //namespace org - - -#endif // SEEN_DOM_H - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - - diff --git a/src/dom/domimpl.cpp b/src/dom/domimpl.cpp deleted file mode 100644 index 3d9a29592..000000000 --- a/src/dom/domimpl.cpp +++ /dev/null @@ -1,3071 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include <cstdio> -#include "domimpl.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - -/** - * Test if the given substring exists for the length of the string - * in a given buffer - */ -/* -static bool match(const DOMString &buf, char *str) -{ - int pos = 0; - while (*str) - { - if (buf[pos++] != *str++) - return false; - } - return true; -} -*/ - - - -/*######################################################################### -## DOMImplementationSourceImpl -#########################################################################*/ - - -/** - * - */ -DOMImplementationSourceImpl::DOMImplementationSourceImpl() -{ - domImpl = new DOMImplementationImpl(); -} - -/** - * - */ -DOMImplementationSourceImpl::~DOMImplementationSourceImpl() -{ - delete domImpl; -} - -/** - * - */ -DOMImplementation *DOMImplementationSourceImpl::getDOMImplementation( - const DOMString &/*features*/) -{ - return domImpl; -} - -/** - * - */ -DOMImplementationList DOMImplementationSourceImpl::getDOMImplementationList( - const DOMString &/*features*/) -{ - return domImplList; -} - - - - - - - -/*######################################################################### -## DOMImplementationImpl -#########################################################################*/ - - -/** - * - */ -DOMImplementationImpl::DOMImplementationImpl() -{ -} - -/** - * - */ -DOMImplementationImpl::~DOMImplementationImpl() -{ -} - -/** - * - */ -bool DOMImplementationImpl::hasFeature(const DOMString& /*feature*/, - const DOMString& /*version*/) -{ - return false; -} - - -/** - * - */ -DocumentTypePtr DOMImplementationImpl::createDocumentType(const DOMString& qualifiedName, - const DOMString& publicId, - const DOMString& systemId) - throw(DOMException) -{ - DocumentTypePtr typeImpl = new DocumentTypeImpl(qualifiedName, - publicId, systemId); - return typeImpl; -} - -/** - * - */ -DocumentPtr DOMImplementationImpl::createDocument( - const DOMString& namespaceURI, - const DOMString& qualifiedName, - DocumentTypePtr doctype) - throw(DOMException) -{ - DocumentPtr doc = new DocumentImpl(this, - namespaceURI, - qualifiedName, - doctype); - return doc; -} - -/** - * - */ -DOMObject *DOMImplementationImpl::getFeature(const DOMString& /*feature*/, - const DOMString& /*version*/) - -{ - return NULL; -} - - - - - -/*######################################################################### -## NodeImpl -#########################################################################*/ - -/** - * Utility for finding the first Element above - * a given node. Used by several methods below - */ -static NodePtr getAncestorElement(NodePtr node) -{ - if (!node.get()) - return NULL; - node = node->getParentNode(); - //Either quit because I am an element, or because I am null - while (node.get()) - { - if (node->getNodeType() == Node::ELEMENT_NODE) - return node; - node = node->getParentNode(); - } - return node; -} - -/** - * - */ -DOMString NodeImpl::getNodeName() -{ - return nodeName; -} - -/** - * - */ -DOMString NodeImpl::getNodeValue() throw (DOMException) -{ - return nodeValue; -} - -/** - * - */ -void NodeImpl::setNodeValue(const DOMString& val) throw (DOMException) -{ - nodeValue = val; -} - -/** - * - */ -unsigned short NodeImpl::getNodeType() -{ - return nodeType; -} - -/** - * - */ -NodePtr NodeImpl::getParentNode() -{ - return parent; -} - -/** - * - */ -NodeList NodeImpl::getChildNodes() -{ - NodeList list; - for (NodeImplPtr node = firstChild ; node.get() ; node=node->next) - list.add(node); - return list; -} - -/** - * - */ -NodePtr NodeImpl::getFirstChild() -{ - return firstChild; -} - -/** - * - */ -NodePtr NodeImpl::getLastChild() -{ - return lastChild; -} - -/** - * - */ -NodePtr NodeImpl::getPreviousSibling() -{ - return prev; -} - -/** - * - */ -NodePtr NodeImpl::getNextSibling() -{ - return next; -} - -/** - * - */ -NamedNodeMap &NodeImpl::getAttributes() -{ - NamedNodeMap &attrs = attributes; - return attrs; -} - - -/** - * - */ -DocumentPtr NodeImpl::getOwnerDocument() -{ - return ownerDocument; -} - -/** - * - */ -NodePtr NodeImpl::insertBefore(const NodePtr newChild, - const NodePtr refChild) - throw(DOMException) -{ - if (!newChild) - return NULL; - - //if no ref, then just append - if (!refChild) - return appendChild(newChild); - - NodeImplPtr newChildImpl = reinterpret_cast<NodeImpl *>(newChild.get()); - for (NodeImplPtr n = firstChild ; n.get() ; n=n->next) - { - if (n == refChild) - { - //link to new - if (n->prev.get()) - n->prev->next = newChildImpl; - else - firstChild = newChildImpl; - n->prev = newChildImpl; - //link from new - newChildImpl->next = n; - newChildImpl->prev = n->prev; - //reflect new location - newChildImpl->parent = this; - newChildImpl->ownerDocument = ownerDocument; - return n; - } - } - return NULL; -} - -/** - * - */ -NodePtr NodeImpl::replaceChild(const NodePtr newChild, - const NodePtr oldChild) - throw(DOMException) -{ - if (!oldChild) - return NULL; - - NodeImplPtr newChildImpl = reinterpret_cast<NodeImpl *>(newChild.get()); - for (NodeImplPtr n = firstChild ; n.get() ; n=n->next) - { - if (n == oldChild) - { - //link to new - if (n->prev.get()) - n->prev->next = newChildImpl; - else - firstChild = newChildImpl; - if (n->next.get()) - n->next->prev = newChildImpl; - else - lastChild = newChildImpl; - //link from new - newChildImpl->next = n->next; - newChildImpl->prev = n->prev; - //reflect new location - newChildImpl->parent = this; - newChildImpl->ownerDocument = ownerDocument; - return n; - } - } - return NULL; -} - -/** - * - */ -NodePtr NodeImpl::removeChild(const NodePtr oldChild) - throw(DOMException) -{ - if (!oldChild) - return NULL; - - for (NodeImplPtr n = firstChild ; n.get() ; n=n->next) - { - if (n == oldChild) - { - if (n->prev.get()) - n->prev->next = n->next; - if (n->next.get()) - n->next->prev = n->prev; - return n; - } - } - return NULL; -} - -/** - * - */ -NodePtr NodeImpl::appendChild(const NodePtr newChild) - throw(DOMException) -{ - if (!newChild) - return NULL; - - NodeImplPtr newChildImpl = - reinterpret_cast<NodeImpl *> (newChild.get()); - - newChildImpl->parent = this; - newChildImpl->ownerDocument = ownerDocument; - - if (!firstChild || !lastChild) - { - //Set up our first member - firstChild = newChildImpl; - lastChild = newChildImpl; - } - else - { - //link at the last position - lastChild->next = newChildImpl; - newChildImpl->prev = lastChild; - lastChild = newChildImpl; - } - - return newChild; -} - -/** - * - */ -bool NodeImpl::hasChildNodes() -{ - return (firstChild != (NodeImpl *)0); -} - -/** - * - */ -NodePtr NodeImpl::cloneNode(bool deep) -{ - NodeImplPtr node = new NodeImpl(ownerDocument, nodeName); - node->parent = parent; - node->prev = prev; - node->next = next; - node->userData = userData; - node->nodeValue = nodeValue; - - if (deep) - { - node->firstChild = node->lastChild = NULL; - for (NodeImplPtr child = firstChild ; child.get() ; child=child->next) - { - node->appendChild(child->cloneNode(deep)); - } - } - else - { - node->firstChild = firstChild; - node->lastChild = lastChild; - } - - return node; -} - -/** - * Concatenate adjoining text subnodes, remove null-length nodes - */ -void NodeImpl::normalize() -{ - //First, concatenate adjoining text nodes - NodeImplPtr next = (NodeImpl *)0; - for (NodeImplPtr child = firstChild ; child.get() ; child=next) - { - if (child->getNodeType() != Node::TEXT_NODE) - continue; - next = NULL; - DOMString sval = child->getNodeValue(); - for (NodeImplPtr sibling = child->next ; sibling.get() ; sibling=next) - { - next = sibling->next; - if (sibling->getNodeType() != Node::TEXT_NODE) - break; - sval.append(sibling->getNodeValue()); - //unlink and delete - child->next = sibling->next; - if (sibling->next.get()) - sibling->next->prev = child; - //delete sibling; - } - child->setNodeValue(sval); - } - - //Next, we remove zero-length text subnodes - next = NULL; - for (NodeImplPtr child = firstChild ; child.get() ; child=next) - { - next = child->next; - if (child->getNodeType() != Node::TEXT_NODE) - continue; - if (child->getNodeValue().size() == 0) - { - //unlink and delete - if (child->prev.get()) - child->prev->next = child->next; - if (child->next.get()) - child->next->prev = child->prev; - //delete child; - } - } - -} - -/** - * - */ -bool NodeImpl::isSupported(const DOMString& /*feature*/, - const DOMString& /*version*/) -{ - //again, no idea - return false; -} - -/** - * - */ -DOMString NodeImpl::getNamespaceURI() -{ - return namespaceURI; -} - -/** - * - */ -DOMString NodeImpl::getPrefix() -{ - return prefix; -} - -/** - * - */ -void NodeImpl::setPrefix(const DOMString& val) throw(DOMException) -{ - prefix = val; - if (prefix.size()>0) - nodeName = prefix + ":" + localName; - else - nodeName = localName; -} - -/** - * - */ -DOMString NodeImpl::getLocalName() -{ - return localName; -} - -/** - * - */ -bool NodeImpl::hasAttributes() -{ - return (attributes.getLength() > 0); -} - -/** - * - */ -DOMString NodeImpl::getBaseURI() -{ - return baseURI; -} - -/** - * - */ -unsigned short NodeImpl::compareDocumentPosition(const NodePtr otherArg) -{ - if (!otherArg || otherArg == (NodePtr )this) - return 0;//no flags - - NodePtr node; - NodePtr other = otherArg; - - //Look above me - for (node=getParentNode() ; node.get() ; node=node->getParentNode()) - if (node == other) - return DOCUMENT_POSITION_CONTAINED_BY; - - //Look above the other guy. See me? - for (node=other->getParentNode() ; node.get() ; node=node->getParentNode()) - if (node == (NodePtr )this) - return DOCUMENT_POSITION_CONTAINS; - - - return DOCUMENT_POSITION_DISCONNECTED | - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC; -} - -/** - * - */ -DOMString NodeImpl::getTextContent() throw(DOMException) -{ - DOMString buf; - if (nodeType == TEXT_NODE || - nodeType == CDATA_SECTION_NODE || - nodeType == COMMENT_NODE || - nodeType == PROCESSING_INSTRUCTION_NODE) - buf = getNodeValue(); - else if (nodeType == ELEMENT_NODE || - nodeType == ATTRIBUTE_NODE || - nodeType == ENTITY_NODE || - nodeType == ENTITY_REFERENCE_NODE || - nodeType == DOCUMENT_FRAGMENT_NODE) - { - for (NodePtr n = getFirstChild() ; n.get() ; - n=n->getNextSibling() ) - { - if (n->getNodeType() != COMMENT_NODE && - n->getNodeType() != COMMENT_NODE) - buf.append(n->getTextContent()); - } - } - return buf; -} - - -/** - * - */ -void NodeImpl::setTextContent(const DOMString &val) throw(DOMException) -{ - //Delete children - /** Not necessary. Just let smart pointers to their work - for (NodePtr n = getFirstChild() ; n.get() ; - n=n->getNextSibling() ) - delete n; - */ - firstChild = lastChild = NULL; - - //Replace with a single text node - NodeImplPtr tnode = new NodeImpl(ownerDocument); - tnode->nodeType = Node::TEXT_NODE; - tnode->setNodeValue(val); - appendChild(tnode); -} - - -/** - * From DOM3 Namespace algorithms - */ -DOMString NodeImpl::lookupPrefix(const DOMString &theNamespaceURI) -{ - - if (theNamespaceURI.size()==0) - { - return DOMString(""); - } - - switch (nodeType) - { - case Node::ELEMENT_NODE: - { - ElementPtr elem = reinterpret_cast<Element *>(this); - return lookupNamespacePrefix(theNamespaceURI, elem); - } - case Node::DOCUMENT_NODE: - { - DocumentPtr doc = reinterpret_cast<Document *>(this); - ElementPtr elem = doc->getDocumentElement(); - return elem->lookupPrefix(theNamespaceURI); - } - case Node::ENTITY_NODE : - case Node::NOTATION_NODE: - case Node::DOCUMENT_FRAGMENT_NODE: - case Node::DOCUMENT_TYPE_NODE: - return DOMString(""); // type is unknown - case Node::ATTRIBUTE_NODE: - { - AttrPtr attr = reinterpret_cast<Attr *>(this); - ElementPtr elem = attr->getOwnerElement(); - if ( elem.get() ) - { - return elem->lookupPrefix(theNamespaceURI); - } - return DOMString(""); - } - default: - { - //Get ancestor element, if any - NodePtr ancestor = getAncestorElement(this); - if ( ancestor.get() ) - { - return ancestor->lookupPrefix(theNamespaceURI); - } - return DOMString(""); - } - }//switch - return DOMString(""); -} - - -/** - * - */ -bool NodeImpl::isDefaultNamespace(const DOMString &theNamespaceURI) -{ - switch (nodeType) - { - case ELEMENT_NODE: - { - if ( namespaceURI.size()>0 && prefix.size()==0 ) - { - return (namespaceURI == theNamespaceURI); - } - NodePtr attr = attributes.getNamedItem("xmlns"); - if ( attr.get() ) - { - return (attr->getNodeValue() == theNamespaceURI); - } - - NodePtr ancestor = getAncestorElement(this); - if ( ancestor.get() ) - { - return ancestor->isDefaultNamespace(theNamespaceURI); - } - else - { - return false; - } - } - case DOCUMENT_NODE: - { //just use braces for local declaration - DocumentPtr doc = reinterpret_cast<Document *>(this); - ElementPtr elem = doc->getDocumentElement(); - return elem->isDefaultNamespace(theNamespaceURI); - } - case ENTITY_NODE: - case NOTATION_NODE: - case DOCUMENT_TYPE_NODE: - case DOCUMENT_FRAGMENT_NODE: - return false; - case ATTRIBUTE_NODE: - {//braces only for scope - AttrPtr attr = reinterpret_cast<Attr *>(this); - ElementPtr ownerElement = attr->getOwnerElement(); - if ( ownerElement.get() ) - { - return ownerElement->isDefaultNamespace(theNamespaceURI); - } - else - { - return false; - } - } - default: - { - NodePtr ancestor = getAncestorElement(this); - if ( ancestor.get() ) - { - return ancestor->isDefaultNamespace(theNamespaceURI); - } - else - { - return false; - } - } - }//switch - - return false; -} - - -/** - * - */ -DOMString NodeImpl::lookupNamespaceURI(const DOMString &thePrefix) -{ - switch (nodeType) - { - case ELEMENT_NODE: - { - if ( namespaceURI.size()>0 && prefix == thePrefix ) - { - DOMString nsURI = namespaceURI; - return (nsURI); - } - if ( hasAttributes() ) - { - NamedNodeMap attributes = getAttributes(); - int nrAttrs = attributes.getLength(); - for (int i=0 ; i<nrAttrs ; i++) - { - NodePtr attr = attributes.item(i); - if (attr->getPrefix() == "xmlns" && attr->getLocalName() == thePrefix ) - { // non default namespace - if (attr->getNodeValue().size()>0) - { - return (attr->getNodeValue()); - } - return DOMString(""); - } - else if (attr->getLocalName() == "xmlns" && thePrefix.size()==0) - { // default namespace - if (attr->getNodeValue().size()>0) - { - return (attr->getNodeValue()); - } - return DOMString(""); - } - } - } - - NodePtr ancestor = getAncestorElement(this); - if ( ancestor.get() ) - { - return ancestor->lookupNamespaceURI(thePrefix); - } - return DOMString(""); - } - case DOCUMENT_NODE: - { - DocumentPtr doc = reinterpret_cast<Document *>(this); - ElementPtr elem = doc->getDocumentElement(); - return elem->lookupNamespaceURI(thePrefix); - } - case ENTITY_NODE: - case NOTATION_NODE: - case DOCUMENT_TYPE_NODE: - case DOCUMENT_FRAGMENT_NODE: - return DOMString(""); - - case ATTRIBUTE_NODE: - { - ElementPtr ownerElement = (reinterpret_cast<Attr *>(this))->getOwnerElement(); - if ( ownerElement.get() ) - { - return ownerElement->lookupNamespaceURI(thePrefix); - } - else - { - return DOMString(""); - } - } - default: - { - NodePtr ancestor = getAncestorElement(this); - if ( ancestor.get() ) - { - return ancestor->lookupNamespaceURI(thePrefix); - } - else - { - return DOMString(""); - } - } - }//switch -} - - -/** - * - */ -bool NodeImpl::isEqualNode(const NodePtr nodeArg) -{ - if (!nodeArg) - return false; - - if (nodeArg == static_cast<NodePtr>(this)) - return true; - - NodePtr node = nodeArg; - - if (getNodeType() != node->getNodeType() || - getNodeName() != node->getNodeName() || - getLocalName() != node->getLocalName() || - getNamespaceURI() != node->getNamespaceURI() || - getPrefix() != node->getPrefix() || - getNodeValue() != node->getNodeValue() || - getBaseURI() != node->getBaseURI() ) - return false; - - return true; -} - - - -/** - * - */ -DOMObject *NodeImpl::getFeature(const DOMString &/*feature*/, - const DOMString &/*version*/) -{ - //dont know - return NULL; -} - -/** - * - */ -DOMUserData *NodeImpl::setUserData(const DOMString &key, - const DOMUserData *data, - const UserDataHandler *handler) -{ - UserDataEntry *entry = userDataEntries; - UserDataEntry *prev = NULL; - while (entry) - { - if (entry->key == key) - { - DOMUserData *oldData = entry->data; - entry->data = const_cast<DOMUserData *>(data); - entry->handler = const_cast<UserDataHandler *>(handler); - return oldData; - } - prev = entry; - entry = entry->next; - } - - //Make a new one - UserDataEntry *newEntry = new UserDataEntry(key, data, handler); - if (!prev) - userDataEntries = newEntry; - else - prev->next = newEntry; - - return NULL; -} - -/** - * - */ -DOMUserData *NodeImpl::getUserData(const DOMString &key) -{ - UserDataEntry *entry = userDataEntries; - while (entry) - { - if (entry->key == key) - return entry->data; - entry = entry->next; - } - return NULL; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -void NodeImpl::setNodeName(const DOMString &qualifiedName) -{ - nodeName = qualifiedName; - prefix = ""; - localName = ""; - for (unsigned int i=0 ; i<qualifiedName.size() ; i++) - { - int ch = qualifiedName[i]; - if (ch == ':') - { - prefix = localName; - localName = ""; - } - else - { - localName.push_back((XMLCh)ch); - } - } -} - -/** - * - */ -void NodeImpl::setNamespaceURI(const DOMString &theNamespaceURI) -{ - namespaceURI = theNamespaceURI; -} - - -/** - * From DOM3 Namespace algorithms - */ -DOMString NodeImpl::lookupNamespacePrefix(const DOMString &theNamespaceURI, - NodePtr originalElement) -{ - if (!originalElement) - return DOMString(""); - - if ( namespaceURI.size()>0 && namespaceURI==theNamespaceURI && - prefix.size()>0 && - originalElement->lookupNamespaceURI(prefix) == theNamespaceURI) - { - return (prefix); - } - - if ( hasAttributes() ) - { - NamedNodeMap attributes = getAttributes(); - int nrAttrs = attributes.getLength(); - for (int i=0 ; i<nrAttrs ; i++) - { - NodePtr attr = attributes.item(i); - DOMString attrLocalName = attr->getLocalName(); - if (attr->getPrefix() == "xmlns" && - attr->getNodeValue() == theNamespaceURI && - originalElement->lookupNamespaceURI(attrLocalName) - == theNamespaceURI) - { - return (attrLocalName); - } - } - } - - //Get ancestor element, if any - NodeImplPtr ancestor = parent; - while (ancestor.get() && ancestor->getNodeType()!= Node::ELEMENT_NODE) - ancestor = ancestor->parent; - - if ( ancestor.get() ) - { - return ancestor->lookupNamespacePrefix(theNamespaceURI, originalElement); - } - - return DOMString(""); -} - - -/** - * - */ -NodeImpl::NodeImpl() : Node() -{ - init(); -} - - -/** - * - */ -NodeImpl::NodeImpl(const NodeImpl &other) : Node() -{ - init(); - assign(other); -} - -/** - * - */ -NodeImpl &NodeImpl::operator=(const NodeImpl &other) -{ - init(); - assign(other); - return *this; -} - - -/** - * - */ -NodeImpl::NodeImpl(DocumentImplPtr owner) : Node() -{ - init(); - ownerDocument = owner; -} - -/** - * - */ -NodeImpl::NodeImpl(DocumentImplPtr owner, const DOMString &nodeName) - : Node() -{ - init(); - ownerDocument = owner; - setNodeName(nodeName); -} - -/** - * - */ -NodeImpl::NodeImpl(DocumentImplPtr owner, const DOMString &/*theNamespaceURI*/, - const DOMString &qualifiedName) : Node() -{ - init(); - ownerDocument = owner; - //if (owner) - // namespaceURI = owner->stringCache(theNamespaceURI); - setNodeName(qualifiedName); -} - - - -/** - * - */ -void NodeImpl::init() -{ - nodeType = 0; //none yet - nodeValue = ""; - setNodeName(""); - namespaceURI = ""; - parent = NULL; - prev = NULL; - next = NULL; - userData = NULL; - firstChild = NULL; - lastChild = NULL; - ownerDocument = NULL; - userDataEntries = NULL; -} - -/** - * - */ -void NodeImpl::assign(const NodeImpl &other) -{ - ownerDocument = other.ownerDocument; - prefix = other.prefix; - localName = other.localName; - nodeName = other.nodeName; - nodeValue = other.nodeValue; - namespaceURI = other.namespaceURI; - attributes = other.attributes; -} - - -/** - * - */ -NodeImpl::~NodeImpl() -{ - if (userDataEntries) - delete userDataEntries; - //Delete children - /** Use smart pointers. do not delete explicitly - for (NodePtr n = getFirstChild() ; n.get() ; - n=n->getNextSibling() ) - delete n; - */ - firstChild = lastChild = (NodeImpl *)0; -} - - - -/*######################################################################### -## CharacterDataImpl -#########################################################################*/ - - -/** - * - */ -CharacterDataImpl::CharacterDataImpl() : NodeImpl() -{ -} - -/** - * - */ -CharacterDataImpl::CharacterDataImpl(DocumentImplPtr owner, - const DOMString &theValue) : NodeImpl() -{ - ownerDocument = owner; - nodeValue = theValue; -} - -/** - * - */ -CharacterDataImpl::~CharacterDataImpl() -{ -} - -/** - * - */ -DOMString CharacterDataImpl::getData() throw(DOMException) -{ - return nodeValue; -} - -/** - * - */ -void CharacterDataImpl::setData(const DOMString& val) throw(DOMException) -{ - nodeValue = val; -} - -/** - * - */ -unsigned long CharacterDataImpl::getLength() -{ - return nodeValue.size(); -} - -/** - * - */ -DOMString CharacterDataImpl::substringData(unsigned long offset, - unsigned long count) - throw(DOMException) -{ - return nodeValue.substr(offset, count); -} - -/** - * - */ -void CharacterDataImpl::appendData(const DOMString& arg) throw(DOMException) -{ - nodeValue += arg; -} - -/** - * - */ -void CharacterDataImpl::insertData(unsigned long offset, - const DOMString& arg) - throw(DOMException) -{ - nodeValue.insert(offset, arg); -} - -/** - * - */ -void CharacterDataImpl::deleteData(unsigned long offset, - unsigned long count) - throw(DOMException) -{ - nodeValue.erase(offset, count); -} - -/** - * - */ -void CharacterDataImpl::replaceData(unsigned long offset, - unsigned long count, - const DOMString& arg) - throw(DOMException) -{ - nodeValue.replace(offset, count, arg); -} - - - - - - -/*######################################################################### -## AttrImpl -#########################################################################*/ - -/** - * - */ -DOMString AttrImpl::getName() -{ - return nodeName; -} - -/** - * - */ -bool AttrImpl::getSpecified() -{ - return (nodeValue.size() > 0); -} - -/** - * - */ -DOMString AttrImpl::getValue() -{ - return nodeValue; -} - -/** - * - */ -void AttrImpl::setValue(const DOMString& val) throw(DOMException) -{ - nodeValue = val; -} - -/** - * - */ -ElementPtr AttrImpl::getOwnerElement() -{ - return ownerElement; -} - - -/** - * - */ -TypeInfo &AttrImpl::getSchemaTypeInfo() -{ - return typeInfo; -} - - -/** - * - */ -bool AttrImpl::getIsId() -{ - return (nodeName == "id"); -} - - - -//################## -//# Non-API methods -//################## - - -void AttrImpl::setOwnerElement(const ElementPtr elem) -{ - ownerElement = elem; -} - -/** - * - */ -AttrImpl::AttrImpl(DocumentImplPtr owner, const DOMString &theName) - : NodeImpl() -{ - nodeType = ATTRIBUTE_NODE; - ownerDocument = owner; - setNodeName(theName); -} - -/** - * - */ -AttrImpl::AttrImpl(DocumentImplPtr owner, - const DOMString &/*theNamespaceURI*/, - const DOMString &theQualifiedName) - : NodeImpl() -{ - nodeType = ATTRIBUTE_NODE; - ownerDocument = owner; - //if (owner) - // namespaceURI = owner->stringCache(theNamespaceURI); - setNodeName(theQualifiedName); -} - -/** - * - */ -AttrImpl::~AttrImpl() -{ -} - - - - - -/*######################################################################### -## ElementImpl -#########################################################################*/ - - -/** - * - */ -DOMString ElementImpl::getTagName() -{ - if (prefix.size() > 0) - return prefix + ":" + nodeName; - else - return nodeName; -} - -/** - * - */ -DOMString ElementImpl::getAttribute(const DOMString& name) -{ - NodePtr node = attributes.getNamedItem(name); - if (!node || node->getNodeType() != ATTRIBUTE_NODE) - return DOMString(""); - AttrPtr attr = reinterpret_cast<Attr *>(node.get()); - return attr->getValue(); -} - -/** - * - */ -void ElementImpl::setAttribute(const DOMString& name, - const DOMString& value) - throw(DOMException) -{ - AttrImplPtr attr = new AttrImpl(ownerDocument, name); - attr->setValue(value); - attr->setOwnerElement(this); - attributes.setNamedItem(attr); -} - -/** - * - */ -void ElementImpl::removeAttribute(const DOMString& name) - throw(DOMException) -{ - attributes.removeNamedItem(name); -} - -/** - * - */ -AttrPtr ElementImpl::getAttributeNode(const DOMString& name) -{ - NodePtr node = attributes.getNamedItem(name); - if (!node || node->getNodeType() != ATTRIBUTE_NODE) - return NULL; - AttrPtr attr = reinterpret_cast<Attr *>(node.get()); - return attr; -} - -/** - * - */ -AttrPtr ElementImpl::setAttributeNode(AttrPtr attr) - throw(DOMException) -{ - attributes.setNamedItem(attr); - return attr; -} - -/** - * - */ -AttrPtr ElementImpl::removeAttributeNode(AttrPtr attr) - throw(DOMException) -{ - attributes.removeNamedItem(attr->getName()); - return attr; -} - - -/** - * - */ -void ElementImpl::getElementsByTagNameRecursive(NodeList &list, - const DOMString& name, ElementPtr elem) -{ - if (!elem) - return; - - if (name == elem->getTagName()) - list.add(elem); - for (NodePtr node = elem->getFirstChild() ; node.get() ; - node=node->getNextSibling()) - { - if (node->getNodeType() != Node::ELEMENT_NODE) - continue; - ElementPtr childElem = reinterpret_cast<Element *>(node.get()); - getElementsByTagNameRecursive(list, name, childElem); - } -} - - -/** - * - */ -NodeList ElementImpl::getElementsByTagName(const DOMString& tagName) -{ - NodeList list; - getElementsByTagNameRecursive(list, tagName, this); - return list; -} - -/** - * - */ -DOMString ElementImpl::getAttributeNS(const DOMString& namespaceURI, - const DOMString& localName) -{ - NodePtr node = attributes.getNamedItemNS(namespaceURI, localName); - if (!node || node->getNodeType()!=ATTRIBUTE_NODE) - return DOMString(""); - AttrPtr attr = reinterpret_cast<Attr *>(node.get()); - return attr->getValue(); -} - -/** - * - */ -void ElementImpl::setAttributeNS(const DOMString& namespaceURI, - const DOMString& qualifiedName, - const DOMString& value) - throw(DOMException) -{ - AttrImplPtr attr = new AttrImpl(ownerDocument, namespaceURI, qualifiedName); - attr->setValue(value); - attr->setOwnerElement(this); - attributes.setNamedItemNS(attr); -} - -/** - * - */ -void ElementImpl::removeAttributeNS(const DOMString& namespaceURI, - const DOMString& localName) - throw(DOMException) -{ - attributes.removeNamedItemNS(namespaceURI, localName); -} - -/** - * - */ - AttrPtr ElementImpl::getAttributeNodeNS(const DOMString& namespaceURI, - const DOMString& localName) -{ - NodePtr node = attributes.getNamedItemNS(namespaceURI, localName); - if (!node || node->getNodeType() != ATTRIBUTE_NODE) - return (Attr *)0; - AttrPtr attr = reinterpret_cast<Attr *>(node.get()); - return attr; -} - -/** - * - */ -AttrPtr ElementImpl::setAttributeNodeNS(AttrPtr attr) - throw(DOMException) -{ - attributes.setNamedItemNS(attr); - return attr; -} - - -/** - * - */ -void ElementImpl::getElementsByTagNameNSRecursive(NodeList &list, - const DOMString& namespaceURI, - const DOMString& tagName, ElementPtr elem) -{ - if (!elem) - return; - - if (namespaceURI == elem->getNamespaceURI() && tagName == elem->getTagName()) - list.add(elem); - for (NodePtr node = elem->getFirstChild() ; node.get() ; node=node->getNextSibling()) - { - if (node->getNodeType() != Node::ELEMENT_NODE) - continue; - ElementPtr childElem = reinterpret_cast<Element *>(node.get()); - getElementsByTagNameNSRecursive(list, namespaceURI, tagName, childElem); - } -} - -/** - * - */ -NodeList ElementImpl::getElementsByTagNameNS(const DOMString& namespaceURI, - const DOMString& localName) -{ - NodeList list; - getElementsByTagNameNSRecursive(list, namespaceURI, localName, this); - return list; -} - -/** - * - */ -bool ElementImpl::hasAttribute(const DOMString& attrName) -{ - NodePtr node = attributes.getNamedItem(attrName); - if (!node || node->getNodeType() != ATTRIBUTE_NODE) - return false; - return true; -} - -/** - * - */ -bool ElementImpl::hasAttributeNS(const DOMString& namespaceURI, - const DOMString& localName) -{ - NodePtr node = attributes.getNamedItemNS(namespaceURI, localName); - if (!node || node->getNodeType() != ATTRIBUTE_NODE) - return false; - return true; -} - -/** - * - */ -TypeInfo &ElementImpl::getSchemaTypeInfo() -{ - return typeInfo; -} - - -/** - * - */ -void ElementImpl::setIdAttribute(const DOMString &/*name*/, - bool /*isId*/) throw (DOMException) -{ - //fixme -} - -/** - * - */ -void ElementImpl::setIdAttributeNS(const DOMString &/*namespaceURI*/, - const DOMString &/*localName*/, - bool /*isId*/) throw (DOMException) -{ - //fixme -} - -/** - * - */ -void ElementImpl::setIdAttributeNode(const AttrPtr /*idAttr*/, - bool /*isId*/) throw (DOMException) -{ - //fixme -} - - -//################## -//# Non-API methods -//################## - - -/** - * - */ -ElementImpl::ElementImpl() : NodeImpl() -{ - nodeType = ELEMENT_NODE; -} - -/** - * - */ -ElementImpl::ElementImpl(DocumentImplPtr owner, const DOMString &tagName) - : NodeImpl() -{ - nodeType = ELEMENT_NODE; - ownerDocument = owner; - setNodeName(tagName); -} - -/** - * - */ -ElementImpl::ElementImpl(DocumentImplPtr owner, - const DOMString &/*theNamespaceURI*/, - const DOMString &qualifiedName) : - NodeImpl() -{ - nodeType = ELEMENT_NODE; - ownerDocument = owner; - setNodeName(qualifiedName); -} - -/** - * - */ -ElementImpl::~ElementImpl() -{ -} - - -/** - * - */ -void ElementImpl::normalizeNamespaces() -{ - //printf("### NORMALIZE\n"); - - NamedNodeMap attrs = getAttributes(); - - //####################################### - //# Pick up local namespace declarations - //####################################### - bindingsClear(); //Reset bindings on this node - - int nrAttrs = attrs.getLength(); - for (int i=0; i<nrAttrs ; i++) - { - NodePtr attrNode = attrs.item(i); - if (attrNode->getNodeType() != Node::ATTRIBUTE_NODE) - continue; - AttrImplPtr attr = reinterpret_cast<AttrImpl *>(attrNode.get()); - DOMString attrName = attr->getLocalName(); - DOMString attrPrefix = attr->getPrefix(); - DOMString attrValue = attr->getNodeValue(); - if (attrName != "xmlns" && attrPrefix != "xmlns") - continue; - - //is the namespace declaration is invalid? - if (attrValue == XMLNSNAME || attrName == attrPrefix) - { - // Note: The prefix xmlns is used only to declare namespace bindings and - // is by definition bound to the namespace name http://www.w3.org/2000/xmlns/. - // It must not be declared. No other prefix may be bound to this namespace name. - - //==> Report an error. - printf("normalizeNamespaces() error: Namespace %s cannot be reassigned\n", - XMLNSNAME); - - } - else - { - //==> Record the namespace declaration - attr->setNamespaceURI(XMLNSNAME); - if (attrPrefix.size() > 0) - bindingsAdd(attrPrefix, attrValue); - else - bindingsAdd("*", attrValue);//default - - } - } - - - //####################################### - //# Fixup element's namespace - //####################################### - if ( namespaceURI.size() > 0 ) - { - DOMString key = prefix; - if (key.size() == 0) - key = "*"; - DOMString binding = bindingsFind(key); - //Element's prefix/namespace pair (or default namespace, if no prefix) - // are within the scope of a binding - if ( binding == namespaceURI ) - { - //==> do nothing, declaration in scope is inherited - - // See section "B.1.1: Scope of a binding" for an example - - } - else - { - - /* - ==> Create a local namespace declaration attr for this namespace, - with Element's current prefix (or a default namespace, if - no prefix). If there's a conflicting local declaration - already present, change its value to use this namespace. - - See section "B.1.2: Conflicting namespace declaration" for an example - */ - DOMString attrName = "xmlns"; - if (prefix.size() > 0) - { - attrName.append(":"); - attrName.append(prefix); - } - setAttribute(attrName, namespaceURI); - // NOTE that this may break other nodes within this Element's - // subtree, if they're already using this prefix. - // They will be repaired when we reach them. - } - } - else // Element has no namespace URI: - { - //############################################### - //# Bob -- alter this from the specs a bit. - //# Since the XmlReader does not set namespaces, - //# do it here - //############################################### - DOMString localName = getLocalName(); - if ( localName.size()==0 ) - { - // DOM Level 1 node - /* - ==> if in process of validation against a namespace aware schema - (i.e XML Schema) report a fatal error: the processor can not recover - in this situation. - Otherwise, report an error: no namespace fixup will be performed on this node. - */ - printf("normalizeNamespaces() error: no localName\n"); - } - else - { - // Element has no pseudo-prefix - //there's a conflicting local default namespace declaration already present - if ( prefix.size()==0 ) - { - //==> change its value to use this empty namespace. - namespaceURI = bindingsFind("*"); - //setAttribute("xmlns", ""); - } - else //#BOB . I added this. - { - namespaceURI = bindingsFind(prefix); - } - // NOTE that this may break other nodes within this Element's - // subtree, if they're already using the default namespaces. - // They will be repaired when we reach them. - } - } - - - //####################################### - //# Examine and polish the attributes - //####################################### - nrAttrs = attrs.getLength(); - for (int i=0; i<nrAttrs ; i++)// all non-namespace Attrs of Element - { - NodePtr attrNode = attrs.item(i); - if (attrNode->getNodeType() != Node::ATTRIBUTE_NODE) - continue; - AttrPtr attr = reinterpret_cast<Attr *>(attrNode.get()); - DOMString attrNS = attr->getNamespaceURI(); - DOMString attrPrefix = attr->getPrefix(); - if (attrNS == XMLNSNAME) - continue; - - if ( attrNS.size()>0 ) //Attr[i] has a namespace URI - { - DOMString attrBinding = bindingsFind(attrPrefix); - /* - if attribute has no prefix (default namespace decl does not apply to attributes) - OR - attribute prefix is not declared - OR - conflict: attribute has a prefix that conflicts with a binding - already active in scope - */ - if ( attrPrefix.size() == 0 || attrBinding.size() == 0) - { - //namespaceURI matches an in scope declaration of one or more prefixes) - DOMString prefixForNS = lookupNamespacePrefix(attrNS, this); - if ( prefixForNS.size() > 0 ) - { - // pick the most local binding available; - // if there is more than one pick one arbitrarily - - //==> change attribute's prefix. - attr->setPrefix(prefixForNS); - } - else - { - // the current prefix is not null and it has no in scope declaration) - if ( attrPrefix.size() > 0 || attrBinding.size() == 0 ) - { - //==> declare this prefix - DOMString newAttrName = "xmlns:"; - newAttrName.append(attrPrefix); - setAttribute(newAttrName, attrNS); - bindingsAdd(attrPrefix, attrNS); - } - else - { - // find a prefix following the pattern "NS" +index (starting at 1) - // make sure this prefix is not declared in the current scope. - // create a local namespace declaration attribute - - //==> declare this prefix - char buf[16]; - sprintf(buf, "%d" , ownerDocument->namespaceIndex++); - DOMString newPrefix = "NS"; - newPrefix.append(buf); - DOMString newAttrName = "xmlns:"; - newAttrName.append(newPrefix); - setAttribute(newAttrName, attrNS); - bindingsAdd(newPrefix, attrNS); - //==> change attribute's prefix. - } - } - } - } - else // Attr has no namespace URI - { - // Attr has no localName - if ( attr->getLocalName().size() == 0 ) - { - // DOM Level 1 node - /* - ==> if in process of validation against a namespace aware schema - (i.e XML Schema) report a fatal error: the processor can not recover - in this situation. - Otherwise, report an error: no namespace fixup will be performed on this node. - */ - printf("normalizeNamespaces: no local name for attribute\n"); - } - else - { - // attr has no namespace URI and no prefix - // no action is required, since attrs don't use default - //==> do nothing - } - } - } // end for-all-Attrs - - - //####################################### - //# Recursively normalize children - //####################################### - for (NodePtr child=getFirstChild() ; child.get() ; child=child->getNextSibling()) - { - if (child->getNodeType() != Node::ELEMENT_NODE) - continue; - ElementImplPtr childElement = reinterpret_cast<ElementImpl *>(child.get()); - childElement->normalizeNamespaces(); - } - -} - - -/*######################################################################### -## TextImpl -#########################################################################*/ - - -/** - * - */ -TextImpl::TextImpl() : CharacterDataImpl() -{ - nodeType = TEXT_NODE; - nodeName = "#text"; -} - - -/** - * - */ -TextImpl::TextImpl(DocumentImplPtr owner, const DOMString &value) - : CharacterDataImpl() -{ - nodeType = TEXT_NODE; - nodeName = "#text"; - ownerDocument = owner; - nodeValue = value; -} - - -/** - * - */ -TextImpl::~TextImpl() -{ -} - -/** - * - */ -TextPtr TextImpl::splitText(unsigned long /*offset*/) - throw(DOMException) -{ - return NULL; -} - -/** - * - */ -bool TextImpl::getIsElementContentWhitespace() -{ - return false; -} - -/** - * - */ -DOMString TextImpl::getWholeText() -{ - return nodeValue; -} - - -/** - * - */ -TextPtr TextImpl::replaceWholeText(const DOMString &/*content*/) - throw(DOMException) -{ - return NULL; -} - - -/*######################################################################### -## CommentImpl -#########################################################################*/ - -/** - * - */ -CommentImpl::CommentImpl() : CharacterDataImpl() -{ - nodeType = COMMENT_NODE; - nodeName = "#comment"; -} - - -/** - * - */ -CommentImpl::CommentImpl(DocumentImplPtr owner, const DOMString &value) - : CharacterDataImpl() -{ - nodeType = COMMENT_NODE; - nodeName = "#comment"; - ownerDocument = owner; - nodeValue = value; -} - - -/** - * - */ -CommentImpl::~CommentImpl() -{ -} - - - - - - - -/*######################################################################### -## UserDataHandlerImpl -#########################################################################*/ - - - -/** - * - */ -UserDataHandlerImpl::UserDataHandlerImpl() -{ -} - - -/** - * - */ -UserDataHandlerImpl::~UserDataHandlerImpl() -{ -} - -/** - * - */ -void UserDataHandlerImpl::handle(unsigned short /*operation*/, - const DOMString &/*key*/, - const DOMUserData */*data*/, - const NodePtr /*src*/, - const NodePtr /*dst*/) -{ - //do nothing. do we need anything here? -} - - - -/*######################################################################### -## DOMErrorImpl -#########################################################################*/ - - - -/** - * - */ -DOMErrorImpl::DOMErrorImpl() : - severity(0), - message(), - type() -{ -} - - -/** - * - */ -DOMErrorImpl::~DOMErrorImpl() -{ -} - -/** - * - */ -unsigned short DOMErrorImpl::getSeverity() -{ - return severity; -} - -/** - * - */ -DOMString DOMErrorImpl::getMessage() -{ - return message; -} - -/** - * - */ -DOMString DOMErrorImpl::getType() -{ - return type; -} - -/** - * - */ -DOMObject *DOMErrorImpl::getRelatedException() -{ - return NULL; -} - -/** - * - */ -DOMObject *DOMErrorImpl::getRelatedData() -{ - return NULL; -} - -/** - * - */ -DOMLocator *DOMErrorImpl::getLocation() -{ - //really should fill this in - return NULL; -} - - - - -/*######################################################################### -## DOMErrorHandlerImpl -#########################################################################*/ - - - -/** - * - */ -DOMErrorHandlerImpl::DOMErrorHandlerImpl() -{ -} - - -/** - * - */ -DOMErrorHandlerImpl::~DOMErrorHandlerImpl() -{ -} - -/** - * - */ -bool DOMErrorHandlerImpl::handleError(const DOMError *error) -{ - if (!error) - return false; - return true; -} - - - - -/*######################################################################### -## DOMLocatorImpl -#########################################################################*/ - - -/** - * - */ -DOMLocatorImpl::DOMLocatorImpl() : - lineNumber(0), - columnNumber(0), - byteOffset(0), - utf16Offset(0), - relatedNode(0), - uri() -{ -} - - -/** - * - */ -DOMLocatorImpl::~DOMLocatorImpl() -{ -} - - -/** - * - */ -long DOMLocatorImpl::getLineNumber() -{ - return lineNumber; -} - -/** - * - */ -long DOMLocatorImpl::getColumnNumber() -{ - return columnNumber; -} - -/** - * - */ -long DOMLocatorImpl::getByteOffset() -{ - return byteOffset; -} - -/** - * - */ -long DOMLocatorImpl::getUtf16Offset() -{ - return utf16Offset; -} - - -/** - * - */ -NodePtr DOMLocatorImpl::getRelatedNode() -{ - return relatedNode; -} - - -/** - * - */ -DOMString DOMLocatorImpl::getUri() -{ - return uri; -} - - - -/*######################################################################### -## DOMConfigurationImpl -#########################################################################*/ - - -/** - * - */ -DOMConfigurationImpl::DOMConfigurationImpl() -{ -} - - -/** - * - */ -DOMConfigurationImpl::~DOMConfigurationImpl() -{ -} - -/** - * - */ -void DOMConfigurationImpl::setParameter(const DOMString &/*name*/, - const DOMUserData */*value*/) throw (DOMException) -{ -} - -/** - * - */ -DOMUserData *DOMConfigurationImpl::getParameter(const DOMString &/*name*/) - throw (DOMException) -{ - return NULL; -} - -/** - * - */ -bool DOMConfigurationImpl::canSetParameter(const DOMString &/*name*/, - const DOMUserData */*data*/) -{ - return false; -} - -/** - * - */ -DOMStringList *DOMConfigurationImpl::getParameterNames() -{ - return NULL; -} - - - -/*######################################################################### -## CDATASectionImpl -#########################################################################*/ - -/** - * - */ -CDATASectionImpl::CDATASectionImpl() : TextImpl() -{ - nodeType = CDATA_SECTION_NODE; - nodeName = "#cdata-section"; -} - -/** - * - */ -CDATASectionImpl::CDATASectionImpl(DocumentImplPtr owner, const DOMString &theValue) - : TextImpl() -{ - nodeType = CDATA_SECTION_NODE; - nodeName = "#cdata-section"; - ownerDocument = owner; - nodeValue = theValue; -} - - -/** - * - */ -CDATASectionImpl::~CDATASectionImpl() -{ -} - - - - - -/*######################################################################### -## DocumentTypeImpl -#########################################################################*/ - -/** - * - */ -DocumentTypeImpl::DocumentTypeImpl(const DOMString& theName, - const DOMString& thePublicId, - const DOMString& theSystemId) - : NodeImpl(), - name(), //what with this variable? - publicId(thePublicId), - systemId(theSystemId), - entities(), - notations() -{ - nodeType = DOCUMENT_TYPE_NODE;//of class NodeImpl - nodeName = theName;//of class NodeImpl -} - -/** - * - */ -DocumentTypeImpl::~DocumentTypeImpl() -{ -} - -/** - * - */ -DOMString DocumentTypeImpl::getName() -{ - return nodeName; -} - -/** - * - */ -NamedNodeMap DocumentTypeImpl::getEntities() -{ - return entities; -} - -/** - * - */ -NamedNodeMap DocumentTypeImpl::getNotations() -{ - return notations; -} - -/** - * - */ -DOMString DocumentTypeImpl::getPublicId() -{ - return publicId; -} - -/** - * - */ -DOMString DocumentTypeImpl::getSystemId() -{ - return systemId; -} - -/** - * - */ -DOMString DocumentTypeImpl::getInternalSubset() -{ - return DOMString(""); -} - - - - - - -/*######################################################################### -## NotationImpl -#########################################################################*/ - - - -/** - * - */ -NotationImpl::NotationImpl(DocumentImplPtr owner) : NodeImpl() -{ - nodeType = NOTATION_NODE; - ownerDocument = owner; -} - - -/** - * - */ -NotationImpl::~NotationImpl() -{ -} - -/** - * - */ -DOMString NotationImpl::getPublicId() -{ - return publicId; -} - -/** - * - */ -DOMString NotationImpl::getSystemId() -{ - return systemId; -} - - - - - - - - -/*######################################################################### -## EntityImpl -#########################################################################*/ - - -/** - * - */ -EntityImpl::EntityImpl() : NodeImpl() -{ - nodeType = ENTITY_NODE; -} - - -/** - * - */ -EntityImpl::EntityImpl(DocumentImplPtr owner) : NodeImpl() -{ - nodeType = ENTITY_NODE; - ownerDocument = owner; -} - - -/** - * - */ -EntityImpl::~EntityImpl() -{ -} - -/** - * - */ -DOMString EntityImpl::getPublicId() -{ - return publicId; -} - -/** - * - */ -DOMString EntityImpl::getSystemId() -{ - return systemId; -} - -/** - * - */ -DOMString EntityImpl::getNotationName() -{ - return notationName; -} - -/** - * - */ -DOMString EntityImpl::getInputEncoding() -{ - return inputEncoding; -} - -/** - * - */ -DOMString EntityImpl::getXmlEncoding() -{ - return xmlEncoding; -} - -/** - * - */ -DOMString EntityImpl::getXmlVersion() -{ - return xmlVersion; -} - - - - - - -/*######################################################################### -## EntityReferenceImpl -#########################################################################*/ - - - -/** - * - */ -EntityReferenceImpl::EntityReferenceImpl() : NodeImpl() -{ - nodeType = ENTITY_REFERENCE_NODE; -} - - -/** - * - */ -EntityReferenceImpl::EntityReferenceImpl(DocumentImplPtr owner, - const DOMString &theName) - : NodeImpl() -{ - nodeType = ENTITY_REFERENCE_NODE; - nodeName = theName; - ownerDocument = owner; -} - - -/** - * - */ -EntityReferenceImpl::~EntityReferenceImpl() -{ -} - - - -/*######################################################################### -## ProcessingInstructionImpl -#########################################################################*/ - - - - -/** - * - */ -ProcessingInstructionImpl::ProcessingInstructionImpl(): NodeImpl() -{ - nodeType = PROCESSING_INSTRUCTION_NODE; -} - - - -/** - * - */ -ProcessingInstructionImpl::ProcessingInstructionImpl(DocumentImplPtr owner, - const DOMString &target, - const DOMString &data) - : NodeImpl() -{ - nodeType = PROCESSING_INSTRUCTION_NODE; - ownerDocument = owner; - nodeName = target; - nodeValue = data; -} - - -/** - * - */ -ProcessingInstructionImpl::~ProcessingInstructionImpl() -{ -} - - - - -/** - * - */ -DOMString ProcessingInstructionImpl::getTarget() -{ - return nodeName; -} - -/** - * - */ -DOMString ProcessingInstructionImpl::getData() -{ - return nodeValue; -} - -/** - * - */ -void ProcessingInstructionImpl::setData(const DOMString& /*val*/) throw(DOMException) -{ - //do something here -} - - - - - - - -/*######################################################################### -## DocumentFragmentImpl -#########################################################################*/ - -/** - * - */ -DocumentFragmentImpl::DocumentFragmentImpl() : NodeImpl() -{ - nodeType = DOCUMENT_FRAGMENT_NODE; - nodeName = "#document-fragment"; -} - - -/** - * - */ -DocumentFragmentImpl::DocumentFragmentImpl(DocumentImplPtr owner) : NodeImpl() -{ - nodeType = DOCUMENT_FRAGMENT_NODE; - nodeName = "#document-fragment"; - ownerDocument = owner; -} - - -/** - * - */ -DocumentFragmentImpl::~DocumentFragmentImpl() -{ -} - - - - - - -/*######################################################################### -## DocumentImpl -#########################################################################*/ - - - -/** - * - */ -DocumentTypePtr DocumentImpl::getDoctype() -{ - return doctype; -} - -/** - * - */ -DOMImplementation *DocumentImpl::getImplementation() -{ - return parent; -} - -/** - * - */ -ElementPtr DocumentImpl::getDocumentElement() -{ - return documentElement; -} - -/** - * - */ -ElementPtr DocumentImpl::createElement(const DOMString& tagName) - throw(DOMException) -{ - ElementPtr elem = new ElementImpl(this, tagName); - return elem; -} - -/** - * - */ -DocumentFragmentPtr DocumentImpl::createDocumentFragment() -{ - DocumentFragmentPtr frag = new DocumentFragmentImpl(this); - return frag; -} - -/** - * - */ -TextPtr DocumentImpl::createTextNode(const DOMString& data) -{ - TextPtr text = new TextImpl(this, data); - return text; -} - -/** - * - */ -CommentPtr DocumentImpl::createComment(const DOMString& data) -{ - CommentPtr comment = new CommentImpl(this, data); - return comment; -} - -/** - * - */ -CDATASectionPtr DocumentImpl::createCDATASection(const DOMString& data) - throw(DOMException) -{ - CDATASectionPtr cdata = new CDATASectionImpl(this, data); - return cdata; -} - -/** - * - */ -ProcessingInstructionPtr -DocumentImpl::createProcessingInstruction(const DOMString& target, - const DOMString& data) - throw(DOMException) -{ - ProcessingInstructionPtr pi = - new ProcessingInstructionImpl(this, target, data); - return pi; -} - -/** - * - */ -AttrPtr DocumentImpl::createAttribute(const DOMString& attrName) - throw(DOMException) -{ - AttrPtr attr = new AttrImpl(this, attrName); - return attr; -} - -/** - * - */ -EntityReferencePtr DocumentImpl::createEntityReference(const DOMString& erName) - throw(DOMException) -{ - EntityReferencePtr ref = new EntityReferenceImpl(this, erName); - return ref; -} - - -/** - * - */ -NodeList DocumentImpl::getElementsByTagName(const DOMString& tagname) -{ - NodeList list; - ElementImpl::getElementsByTagNameRecursive(list, - tagname, documentElement); - return list; -} - - -/** - * - */ -NodePtr DocumentImpl::importNode(const NodePtr /*importedNode*/, - bool /*deep*/) - throw(DOMException) -{ - return NULL; -} - -/** - * - */ -ElementPtr DocumentImpl::createElementNS(const DOMString& namespaceURI, - const DOMString& qualifiedName) - throw(DOMException) -{ - ElementPtr elem = new ElementImpl(this, namespaceURI, qualifiedName); - return elem; -} - -/** - * - */ -AttrPtr DocumentImpl::createAttributeNS(const DOMString& namespaceURI, - const DOMString& qualifiedName) - throw(DOMException) -{ - AttrPtr attr = new AttrImpl(this, namespaceURI, qualifiedName); - return attr; -} - - -/** - * - */ -NodeList DocumentImpl::getElementsByTagNameNS(const DOMString& namespaceURI, - const DOMString& localName) -{ - NodeList list; - ElementImpl::getElementsByTagNameNSRecursive(list, namespaceURI, - localName, documentElement); - return list; -} - -/** - * - */ -ElementPtr DocumentImpl::getElementById(const DOMString& elementId) -{ - for (NamedElementItem *entry = elementsById.next; entry ; entry=entry->next) - if (entry->name == elementId) - return entry->elem; - return NULL; -} - - -/** - * - */ -DOMString DocumentImpl::getInputEncoding() -{ - return inputEncoding; -} - - -/** - * - */ -DOMString DocumentImpl::getXmlEncoding() -{ - return xmlEncoding; -} - -/** - * - */ -bool DocumentImpl::getXmlStandalone() -{ - return xmlStandalone; -} - -/** - * - */ -void DocumentImpl::setXmlStandalone(bool val) throw (DOMException) -{ - xmlStandalone = val; -} - -/** - * - */ -DOMString DocumentImpl::getXmlVersion() -{ - return xmlVersion; -} - -/** - * - */ -void DocumentImpl::setXmlVersion(const DOMString &version) throw (DOMException) -{ - xmlVersion = version; -} - -/** - * - */ -bool DocumentImpl::getStrictErrorChecking() -{ - return strictErrorChecking; -} - -/** - * - */ -void DocumentImpl::setStrictErrorChecking(bool val) -{ - strictErrorChecking = val; -} - - -/** - * - */ -DOMString DocumentImpl::getDocumentURI() -{ - return documentURI; -} - -/** - * - */ -void DocumentImpl::setDocumentURI(const DOMString &/*uri*/) -{ - //documentURI = stringCache(uri); -} - -/** - * - */ -NodePtr DocumentImpl::adoptNode(const NodePtr source) throw (DOMException) -{ - return (NodePtr )source; -} - -/** - * - */ -DOMConfiguration *DocumentImpl::getDomConfig() -{ - return domConfig; -} - -/** - * - */ -void DocumentImpl::normalizeDocument() -{ - //i assume that this means adjusting namespaces & prefixes - if (documentElement.get()) - documentElement->normalizeNamespaces(); -} - -/** - * - */ -NodePtr DocumentImpl::renameNode(const NodePtr node, - const DOMString &/*namespaceURI*/, - const DOMString &qualifiedName) - throw (DOMException) -{ - NodeImplPtr nodeImpl = reinterpret_cast<NodeImpl *> (node.get()); - nodeImpl->setNodeName(qualifiedName); - return node; -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -DocumentImpl::DocumentImpl(const DOMImplementation *domImpl, - const DOMString &/*theNamespaceURI*/, - const DOMString &theQualifiedName, - const DocumentTypePtr theDoctype) - : NodeImpl(), - namespaceIndex(0), - parent(const_cast<DOMImplementation *>(domImpl)), - qualifiedName(theQualifiedName), - xmlStandalone(false), - strictErrorChecking(false), - domConfig(NULL) -{ - nodeType = DOCUMENT_NODE;//of class NodeImpl - nodeName = "#document";//of class NodeImpl - if (theDoctype.get()) //only assign if not null. - doctype = theDoctype; - else - doctype = new DocumentTypeImpl("", "", ""); - documentElement = new ElementImpl(this, "root"); -} - - -/** - * - */ -DocumentImpl::~DocumentImpl() -{ - documentElement = NULL; -} - - - - - - - - - - - - -} //namespace dom -} //namespace w3c -} //namespace org - - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - - diff --git a/src/dom/domimpl.h b/src/dom/domimpl.h deleted file mode 100644 index df586f35e..000000000 --- a/src/dom/domimpl.h +++ /dev/null @@ -1,2029 +0,0 @@ -#ifndef SEEN_DOMIMPL_H -#define SEEN_DOMIMPL_H -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "dom.h" - -#include <map> - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - - -class DOMImplementationSourceImpl; -class DOMImplementationImpl; -class NodeImpl; -typedef Ptr<NodeImpl> NodeImplPtr; -class CharacterDataImpl; -class AttrImpl; -typedef Ptr<AttrImpl> AttrImplPtr; -class ElementImpl; -typedef Ptr<ElementImpl> ElementImplPtr; -class TextImpl; -class CommentImpl; -class TypeInfoImpl; -class UserDataHandlerImpl; -class DOMErrorImpl; -class DOMErrorHandlerImpl; -class DOMLocatorImpl; -class DOMConfigurationImpl; -class CDATASectionImpl; -class DocumentTypeImpl; -typedef Ptr<DocumentTypeImpl> DocumentTypeImplPtr; -class NotationImpl; -class EntityImpl; -class EntityReferenceImpl; -class ProcessingInstructionImpl; -class DocumentFragmentImpl; -class DocumentImpl; -typedef Ptr<DocumentImpl> DocumentImplPtr; - - - -/*######################################################################### -## DOMImplementationSourceImpl -#########################################################################*/ - -class DOMImplementationSourceImpl : public DOMImplementationSource -{ -public: - - /** - * - */ - virtual DOMImplementation *getDOMImplementation(const DOMString &features); - - /** - * - */ - virtual DOMImplementationList getDOMImplementationList(const DOMString &features); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - DOMImplementationSourceImpl(); - - /** - * - */ - virtual ~DOMImplementationSourceImpl(); - -protected: - - - DOMImplementationImpl *domImpl; - DOMImplementationList domImplList; -}; - - - - - -/*######################################################################### -## DOMImplementationImpl -#########################################################################*/ -/** - * - */ -class DOMImplementationImpl : public DOMImplementation -{ -public: - - - /** - * - */ - DOMImplementationImpl(); - - /** - * - */ - virtual ~DOMImplementationImpl(); - - /** - * - */ - virtual bool hasFeature(const DOMString& feature, const DOMString& version); - - - /** - * - */ - virtual DocumentTypePtr createDocumentType(const DOMString& qualifiedName, - const DOMString& publicId, - const DOMString& systemId) - throw(DOMException); - - /** - * - */ - virtual DocumentPtr createDocument(const DOMString& namespaceURI, - const DOMString& qualifiedName, - DocumentTypePtr doctype) - throw(DOMException); - /** - * - */ - virtual DOMObject *getFeature(const DOMString& feature, - const DOMString& version); - - -protected: - -}; - - - - -/*######################################################################### -## NodeImpl -#########################################################################*/ - -/** - * - */ -class NodeImpl : virtual public Node -{ - - friend class DocumentImpl; - -public: - - /** - * - */ - virtual DOMString getNodeName(); - - /** - * - */ - virtual DOMString getNodeValue() throw (DOMException); - - /** - * - */ - virtual void setNodeValue(const DOMString& val) throw (DOMException); - - /** - * - */ - virtual unsigned short getNodeType(); - - /** - * - */ - virtual NodePtr getParentNode(); - - /** - * - */ - virtual NodeList getChildNodes(); - - /** - * - */ - virtual NodePtr getFirstChild(); - - /** - * - */ - virtual NodePtr getLastChild(); - - /** - * - */ - virtual NodePtr getPreviousSibling(); - - /** - * - */ - virtual NodePtr getNextSibling(); - - /** - * - */ - virtual NamedNodeMap &getAttributes(); - - - /** - * - */ - virtual DocumentPtr getOwnerDocument(); - - /** - * - */ - virtual NodePtr insertBefore(const NodePtr newChild, - const NodePtr refChild) - throw(DOMException); - - /** - * - */ - virtual NodePtr replaceChild(const NodePtr newChild, - const NodePtr oldChild) - throw(DOMException); - - /** - * - */ - virtual NodePtr removeChild(const NodePtr oldChild) - throw(DOMException); - - /** - * - */ - virtual NodePtr appendChild(const NodePtr newChild) - throw(DOMException); - - /** - * - */ - virtual bool hasChildNodes(); - - /** - * - */ - virtual NodePtr cloneNode(bool deep); - - /** - * - */ - virtual void normalize(); - - /** - * - */ - virtual bool isSupported(const DOMString& feature, - const DOMString& version); - - /** - * - */ - virtual DOMString getNamespaceURI(); - - /** - * - */ - virtual DOMString getPrefix(); - - /** - * - */ - virtual void setPrefix(const DOMString& val) throw(DOMException); - - /** - * - */ - virtual DOMString getLocalName(); - - /** - * - */ - virtual bool hasAttributes(); - - /** - * - */ - virtual DOMString getBaseURI(); - - /** - * - */ - virtual unsigned short compareDocumentPosition(const NodePtr other); - - /** - * - */ - virtual DOMString getTextContent() throw(DOMException); - - - /** - * - */ - virtual void setTextContent(const DOMString &val) throw(DOMException); - - - /** - * - */ - virtual DOMString lookupPrefix(const DOMString &namespaceURI); - - - /** - * - */ - virtual bool isDefaultNamespace(const DOMString &namespaceURI); - - - /** - * - */ - virtual DOMString lookupNamespaceURI(const DOMString &prefix); - - - /** - * - */ - virtual bool isEqualNode(const NodePtr node); - - - - /** - * - */ - virtual DOMObject *getFeature(const DOMString &feature, - const DOMString &version); - - /** - * - */ - virtual DOMUserData *setUserData(const DOMString &key, - const DOMUserData *data, - const UserDataHandler *handler); - - - /** - * - */ - virtual DOMUserData *getUserData(const DOMString &key); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual void bindingsAdd(const DOMString &prefix, const DOMString &namespaceURI) - { - bindings[prefix] = namespaceURI; - } - - /** - * - */ - virtual void bindingsClear() - { - bindings.clear(); - } - - DOMString bindingsFind(const DOMString &prefix) - { - std::map<DOMString, DOMString>::iterator iter = - bindings.find(prefix); - if (iter != bindings.end()) - { - DOMString ret = iter->second; - return ret; - } - if (parent.get()) - { - DOMString ret = parent->bindingsFind(prefix); - if (ret.size() > 0) - return ret; - } - return ""; - } - - /** - * - */ - virtual void setNodeName(const DOMString &qualifiedName); - - /** - * - */ - virtual void setNamespaceURI(const DOMString &theNamespaceURI); - - /** - * - */ - DOMString lookupNamespacePrefix(const DOMString &namespaceURI, - NodePtr originalElement); - /** - * - */ - NodeImpl(); - - /** - * - */ - NodeImpl(const NodeImpl &other); - - /** - * - */ - NodeImpl &operator=(const NodeImpl &other); - - /** - * - */ - NodeImpl(DocumentImplPtr owner); - - /** - * - */ - NodeImpl(DocumentImplPtr owner, const DOMString &nodeName); - - /** - * - */ - NodeImpl(DocumentImplPtr owner, const DOMString &namespaceURI, - const DOMString &nodeName); - - /** - * - */ - virtual ~NodeImpl(); - - - /** - * - */ - void assign(const NodeImpl &other); - -protected: - - /** - * Set up the internal values - */ - void init(); - - unsigned short nodeType; - - NodeImplPtr parent; - - NodeImplPtr prev; - - NodeImplPtr next; - - DOMUserData *userData; - - DOMString prefix; - - DOMString localName; - - DOMString nodeName; - - DOMString namespaceURI; - - DOMString baseURI; - - DOMString nodeValue; - - NodeImplPtr firstChild; - NodeImplPtr lastChild; - - DocumentImplPtr ownerDocument; - - NamedNodeMap attributes; - - class UserDataEntry - { - public: - UserDataEntry(const DOMString &theKey, - const DOMUserData *theData, - const UserDataHandler *theHandler) - : next(NULL), - key(theKey), - data(const_cast<DOMUserData *>(theData)), - handler(const_cast<UserDataHandler *>(theHandler)) - { - } - - virtual ~UserDataEntry() - { - //delete anything after me, too - if (next) - delete next; - } - - UserDataEntry *next; - DOMString key; - DOMUserData *data; - UserDataHandler *handler; - }; - - UserDataEntry *userDataEntries; - - TypeInfo typeInfo; - - //### Our prefix->namespaceURI bindings - - std::map<DOMString, DOMString> bindings; - - -}; - - - -/*######################################################################### -## CharacterDataImpl -#########################################################################*/ - -/** - * - */ -class CharacterDataImpl : virtual public CharacterData, protected NodeImpl -{ -public: - - /** - * - */ - virtual DOMString getData() throw(DOMException); - - /** - * - */ - virtual void setData(const DOMString& val) throw(DOMException); - - /** - * - */ - virtual unsigned long getLength(); - - /** - * - */ - virtual DOMString substringData(unsigned long offset, - unsigned long count) - throw(DOMException); - - /** - * - */ - virtual void appendData(const DOMString& arg) throw(DOMException); - - /** - * - */ - virtual void insertData(unsigned long offset, - const DOMString& arg) - throw(DOMException); - - /** - * - */ - virtual void deleteData(unsigned long offset, - unsigned long count) - throw(DOMException); - - /** - * - */ - virtual void replaceData(unsigned long offset, - unsigned long count, - const DOMString& arg) - throw(DOMException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - CharacterDataImpl(); - - - /** - * - */ - CharacterDataImpl(DocumentImplPtr owner, const DOMString &value); - - /** - * - */ - virtual ~CharacterDataImpl(); - -protected: - - //'data' is the nodeValue - -}; - - - - - -/*######################################################################### -## AttrImpl -#########################################################################*/ - -/** - * - */ -class AttrImpl : virtual public Attr, public NodeImpl -{ -public: - - /** - * - */ - virtual DOMString getName(); - - /** - * - */ - virtual bool getSpecified(); - - /** - * - */ - virtual DOMString getValue(); - - /** - * - */ - virtual void setValue(const DOMString& val) throw(DOMException); - - /** - * - */ - virtual ElementPtr getOwnerElement(); - - - /** - * - */ - virtual TypeInfo &getSchemaTypeInfo(); - - - /** - * - */ - virtual bool getIsId(); - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual void setOwnerElement(const ElementPtr elem); - - /** - * - */ - AttrImpl(DocumentImplPtr owner, const DOMString &name); - - /** - * - */ - AttrImpl(DocumentImplPtr owner, const DOMString &namespaceURI, - const DOMString &name); - - /** - * - */ - virtual ~AttrImpl(); - -protected: - - - ElementPtr ownerElement; - - -}; - - - - - -/*######################################################################### -## ElementImpl -#########################################################################*/ - -/** - * - */ -class ElementImpl : virtual public Element, public NodeImpl -{ -public: - - /** - * - */ - virtual DOMString getTagName(); - - /** - * - */ - virtual DOMString getAttribute(const DOMString& name); - - /** - * - */ - virtual void setAttribute(const DOMString& name, - const DOMString& value) - throw(DOMException); - - /** - * - */ - virtual void removeAttribute(const DOMString& name) - throw(DOMException); - - /** - * - */ - virtual AttrPtr getAttributeNode(const DOMString& name); - - /** - * - */ - virtual AttrPtr setAttributeNode(AttrPtr newAttr) - throw(DOMException); - - /** - * - */ - virtual AttrPtr removeAttributeNode(AttrPtr oldAttr) - throw(DOMException); - - /** - * - */ - virtual NodeList getElementsByTagName(const DOMString& name); - - /** - * - */ - virtual DOMString getAttributeNS(const DOMString& namespaceURI, - const DOMString& localName); - - /** - * - */ - virtual void setAttributeNS(const DOMString& namespaceURI, - const DOMString& qualifiedName, - const DOMString& value) - throw(DOMException); - - /** - * - */ - virtual void removeAttributeNS(const DOMString& namespaceURI, - const DOMString& localName) - throw(DOMException); - - /** - * - */ - virtual AttrPtr getAttributeNodeNS(const DOMString& namespaceURI, - const DOMString& localName); - - /** - * - */ - virtual AttrPtr setAttributeNodeNS(AttrPtr newAttr) - throw(DOMException); - - /** - * - */ - virtual NodeList getElementsByTagNameNS(const DOMString& namespaceURI, - const DOMString& localName); - - /** - * - */ - virtual bool hasAttribute(const DOMString& name); - - /** - * - */ - virtual bool hasAttributeNS(const DOMString& namespaceURI, - const DOMString& localName); - - /** - * - */ - virtual TypeInfo &getSchemaTypeInfo(); - - - /** - * - */ - virtual void setIdAttribute(const DOMString &name, - bool isId) throw (DOMException); - - /** - * - */ - virtual void setIdAttributeNS(const DOMString &namespaceURI, - const DOMString &localName, - bool isId) throw (DOMException); - - /** - * - */ - virtual void setIdAttributeNode(const AttrPtr idAttr, - bool isId) throw (DOMException); - - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - ElementImpl(); - - /** - * - */ - ElementImpl(DocumentImplPtr owner, const DOMString &tagName); - - /** - * - */ - ElementImpl(DocumentImplPtr owner, const DOMString &namespaceURI, - const DOMString &tagName); - - /** - * - */ - virtual ~ElementImpl(); - - /** - * - */ - void normalizeNamespaces(); - -protected: - -friend class DocumentImpl; - - static void getElementsByTagNameRecursive(NodeList &list, - const DOMString& name, ElementPtr elem); - static void getElementsByTagNameNSRecursive(NodeList &list, - const DOMString& namespaceURI, const DOMString& tagName, - ElementPtr elem); -}; - - - - - -/*######################################################################### -## TextImpl -#########################################################################*/ - -/** - * - */ -class TextImpl : virtual public Text, protected CharacterDataImpl -{ -public: - - /** - * - */ - virtual TextPtr splitText(unsigned long offset) - throw(DOMException); - - /** - * - */ - virtual bool getIsElementContentWhitespace(); - - /** - * - */ - virtual DOMString getWholeText(); - - - /** - * - */ - virtual TextPtr replaceWholeText(const DOMString &content) - throw(DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - TextImpl(); - - - /** - * - */ - TextImpl(DocumentImplPtr owner, const DOMString &val); - - /** - * - */ - virtual ~TextImpl(); - -protected: - -}; - - - -/*######################################################################### -## CommentImpl -#########################################################################*/ - -/** - * - */ -class CommentImpl : virtual public Comment, protected CharacterDataImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - CommentImpl(); - - /** - * - */ - CommentImpl(DocumentImplPtr owner, const DOMString &theValue); - - /** - * - */ - virtual ~CommentImpl(); -}; - - - -/*######################################################################### -## TypeInfoImpl -#########################################################################*/ - -/** - * - */ -class TypeInfoImpl : public TypeInfo -{ -public: - - /** - * - */ - virtual DOMString getTypeName(); - - /** - * - */ - virtual DOMString getTypeNamespace(); - - /** - * - */ - virtual bool isDerivedFrom(const DOMString &typeNamespaceArg, - const DOMString &typeNameArg, - const DerivationMethod derivationMethod); - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - TypeInfoImpl(const DOMString &typeNamespaceArg, - const DOMString &typeNameArg, - const DerivationMethod derivationMethod); - - /** - * - */ - virtual ~TypeInfoImpl(); - -protected: - - DOMString typeName; - - DOMString typeNamespace; - - unsigned short derivationMethod; - -}; - - - - -/*######################################################################### -## UserDataHandlerImpl -#########################################################################*/ - -/** - * - */ -class UserDataHandlerImpl : public UserDataHandler -{ -public: - - /** - * - */ - virtual void handle(unsigned short operation, - const DOMString &key, - const DOMUserData *data, - const NodePtr src, - const NodePtr dst); - - //################## - //# Non-API methods - //################## - - -protected: - - /** - * - */ - UserDataHandlerImpl(); - - /** - * - */ - virtual ~UserDataHandlerImpl(); -}; - - -/*######################################################################### -## DOMErrorImpl -#########################################################################*/ - -/** - * - */ -class DOMErrorImpl : public DOMError -{ -public: - - /** - * - */ - virtual unsigned short getSeverity(); - - /** - * - */ - virtual DOMString getMessage(); - - /** - * - */ - virtual DOMString getType(); - - /** - * - */ - virtual DOMObject *getRelatedException(); - - /** - * - */ - virtual DOMObject *getRelatedData(); - - /** - * - */ - virtual DOMLocator *getLocation(); - - - //################## - //# Non-API methods - //################## - - -protected: - - /** - * - */ - DOMErrorImpl(); - - /** - * - */ - virtual ~DOMErrorImpl(); - - unsigned short severity; - - DOMString message; - - DOMString type; - - -}; - - -/*######################################################################### -## DOMErrorHandlerImpl -#########################################################################*/ - -/** - * - */ -class DOMErrorHandlerImpl : public DOMErrorHandler -{ -public: - - /** - * - */ - virtual bool handleError(const DOMError *error); - - - - //################## - //# Non-API methods - //################## - - - -protected: - - /** - * - */ - DOMErrorHandlerImpl(); - - /** - * - */ - virtual ~DOMErrorHandlerImpl(); - - -}; - - - -/*######################################################################### -## DOMLocatorImpl -#########################################################################*/ - -/** - * - */ -class DOMLocatorImpl : public DOMLocator -{ -public: - - /** - * - */ - virtual long getLineNumber(); - - /** - * - */ - virtual long getColumnNumber(); - - /** - * - */ - virtual long getByteOffset(); - - /** - * - */ - virtual long getUtf16Offset(); - - - /** - * - */ - virtual NodePtr getRelatedNode(); - - - /** - * - */ - virtual DOMString getUri(); - - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - DOMLocatorImpl(); - - /** - * - */ - virtual ~DOMLocatorImpl(); - -protected: - - - long lineNumber; - - long columnNumber; - - long byteOffset; - - long utf16Offset; - - NodePtr relatedNode; - - DOMString uri; -}; - - -/*######################################################################### -## DOMConfigurationImpl -#########################################################################*/ - -/** - * - */ -class DOMConfigurationImpl : public DOMConfiguration -{ -public: - - /** - * - */ - virtual void setParameter(const DOMString &name, - const DOMUserData *value) throw (DOMException); - - /** - * - */ - virtual DOMUserData *getParameter(const DOMString &name) - throw (DOMException); - - /** - * - */ - virtual bool canSetParameter(const DOMString &name, - const DOMUserData *data); - - /** - * - */ - virtual DOMStringList *getParameterNames(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - DOMConfigurationImpl(); - - /** - * - */ - virtual ~DOMConfigurationImpl(); - -protected: - -}; - - - - - - -/*######################################################################### -## CDATASectionImpl -#########################################################################*/ -/** - * - */ -class CDATASectionImpl : public CDATASection, public TextImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - CDATASectionImpl(); - - - /** - * - */ - CDATASectionImpl(DocumentImplPtr owner, const DOMString &value); - - /** - * - */ - virtual ~CDATASectionImpl(); - -}; - - - - -/*######################################################################### -## DocumentTypeImpl -#########################################################################*/ - -/** - * - */ -class DocumentTypeImpl : public DocumentType, public NodeImpl -{ -public: - - /** - * - */ - virtual DOMString getName(); - - /** - * - */ - virtual NamedNodeMap getEntities(); - - /** - * - */ - virtual NamedNodeMap getNotations(); - - /** - * - */ - virtual DOMString getPublicId(); - - /** - * - */ - virtual DOMString getSystemId(); - - /** - * - */ - virtual DOMString getInternalSubset(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - DocumentTypeImpl(); - - /** - * - */ - DocumentTypeImpl(const DOMString& name, - const DOMString& publicId, - const DOMString& systemId); - /** - * - */ - virtual ~DocumentTypeImpl(); - - -protected: - DOMString name; - DOMString publicId; - DOMString systemId; - - NamedNodeMap entities; - NamedNodeMap notations; - -}; - - - - - -/*######################################################################### -## NotationImpl -#########################################################################*/ - -/** - * - */ -class NotationImpl : public Notation, public NodeImpl -{ -public: - - /** - * - */ - virtual DOMString getPublicId(); - - /** - * - */ - virtual DOMString getSystemId(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - NotationImpl(); - - /** - * - */ - NotationImpl(DocumentImplPtr owner); - - /** - * - */ - virtual ~NotationImpl(); - - -protected: - - - - DOMString publicId; - - DOMString systemId; -}; - - - - - - -/*######################################################################### -## EntityImpl -#########################################################################*/ - -/** - * - */ -class EntityImpl : public Entity, public NodeImpl -{ -public: - - /** - * - */ - virtual DOMString getPublicId(); - - /** - * - */ - virtual DOMString getSystemId(); - - /** - * - */ - virtual DOMString getNotationName(); - - /** - * - */ - virtual DOMString getInputEncoding(); - - /** - * - */ - virtual DOMString getXmlEncoding(); - - /** - * - */ - virtual DOMString getXmlVersion(); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - EntityImpl(); - - - /** - * - */ - EntityImpl(DocumentImplPtr owner); - - /** - * - */ - virtual ~EntityImpl(); - -protected: - - - - DOMString publicId; - - DOMString systemId; - - DOMString notationName; - - DOMString inputEncoding; - - DOMString xmlEncoding; - - DOMString xmlVersion; - -}; - - - - - -/*######################################################################### -## EntityReferenceImpl -#########################################################################*/ -/** - * - */ -class EntityReferenceImpl : public EntityReference, public NodeImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - EntityReferenceImpl(); - - - /** - * - */ - EntityReferenceImpl(DocumentImplPtr owner, const DOMString &theName); - - /** - * - */ - virtual ~EntityReferenceImpl(); - -}; - - - - - -/*######################################################################### -## ProcessingInstructionImpl -#########################################################################*/ - -/** - * - */ -class ProcessingInstructionImpl : - public ProcessingInstruction, - public NodeImpl -{ -public: - - /** - * - */ - virtual DOMString getTarget(); - - /** - * - */ - virtual DOMString getData(); - - /** - * - */ - virtual void setData(const DOMString& val) throw(DOMException); - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - ProcessingInstructionImpl(); - - - /** - * - */ - ProcessingInstructionImpl(DocumentImplPtr owner, - const DOMString &target, - const DOMString &data); - - /** - * - */ - virtual ~ProcessingInstructionImpl(); - - -protected: - - - //'target' is nodeName - - //'data' is nodeValue - - -}; - - - - - -/*######################################################################### -## DocumentFragmentImpl -#########################################################################*/ -/** - * - */ -class DocumentFragmentImpl : public DocumentFragment, public NodeImpl -{ - -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - DocumentFragmentImpl(); - - /** - * - */ - DocumentFragmentImpl(DocumentImplPtr owner); - - /** - * - */ - virtual ~DocumentFragmentImpl(); - -}; - - - - - - -/*######################################################################### -## DocumentImpl -#########################################################################*/ - -/** - * - */ -class DocumentImpl : virtual public Document, public NodeImpl -{ -public: - - /** - * - */ - virtual DocumentTypePtr getDoctype(); - - /** - * - */ - virtual DOMImplementation *getImplementation(); - - /** - * - */ - virtual ElementPtr getDocumentElement(); - - /** - * - */ - virtual ElementPtr createElement(const DOMString& tagName) - throw(DOMException); - - /** - * - */ - virtual DocumentFragmentPtr createDocumentFragment(); - - /** - * - */ - virtual TextPtr createTextNode(const DOMString& data); - - /** - * - */ - virtual CommentPtr createComment(const DOMString& data); - - /** - * - */ - virtual CDATASectionPtr createCDATASection(const DOMString& data) - throw(DOMException); - - /** - * - */ - virtual ProcessingInstructionPtr createProcessingInstruction( - const DOMString& target, - const DOMString& data) - throw(DOMException); - - /** - * - */ - virtual AttrPtr createAttribute(const DOMString& name) - throw(DOMException); - - /** - * - */ - virtual EntityReferencePtr createEntityReference(const DOMString& name) - throw(DOMException); - - /** - * - */ - virtual NodeList getElementsByTagName(const DOMString& tagname); - - - /** - * - */ - virtual NodePtr importNode(const NodePtr importedNode, - bool deep) - throw(DOMException); - - /** - * - */ - virtual ElementPtr createElementNS(const DOMString& namespaceURI, - const DOMString& qualifiedName) - throw(DOMException); - - /** - * - */ - virtual AttrPtr createAttributeNS(const DOMString& namespaceURI, - const DOMString& qualifiedName) - throw(DOMException); - - /** - * - */ - virtual NodeList getElementsByTagNameNS(const DOMString& namespaceURI, - const DOMString& localName); - - /** - * - */ - virtual ElementPtr getElementById(const DOMString& elementId); - - - /** - * - */ - virtual DOMString getInputEncoding(); - - - /** - * - */ - virtual DOMString getXmlEncoding(); - - /** - * - */ - virtual bool getXmlStandalone(); - - /** - * - */ - virtual void setXmlStandalone(bool val) throw (DOMException); - - /** - * - */ - virtual DOMString getXmlVersion(); - - /** - * - */ - virtual void setXmlVersion(const DOMString &version) throw (DOMException); - - /** - * - */ - virtual bool getStrictErrorChecking(); - - /** - * - */ - virtual void setStrictErrorChecking(bool val); - - - /** - * - */ - virtual DOMString getDocumentURI(); - - /** - * - */ - virtual void setDocumentURI(const DOMString &uri); - - /** - * - */ - virtual NodePtr adoptNode(const NodePtr source) throw (DOMException); - - /** - * - */ - virtual DOMConfiguration *getDomConfig(); - - /** - * - */ - virtual void normalizeDocument(); - - /** - * - */ - virtual NodePtr renameNode(const NodePtr n, - const DOMString &name, - const DOMString &qualifiedName) - throw (DOMException); - - - //################## - //# Non-API methods - //################## - - DocumentImpl(const DOMImplementation *domImpl, - const DOMString &namespaceURI, - const DOMString &qualifiedName, - const DocumentTypePtr doctype); - - virtual ~DocumentImpl(); - - - DOMString *stringCache(const DOMString &val); - - int namespaceIndex; - -protected: - - DOMImplementation *parent; - - DOMString documentURI; - - DOMString qualifiedName; - - DocumentTypePtr doctype; - - ElementImplPtr documentElement; - - class NamedElementItem - { - public: - NamedElementItem() - { - next = NULL; - } - NamedElementItem(const DOMString &nameArg, ElementPtr elemArg) - : next (NULL), - name (nameArg), - elem (elemArg) - { - } - ~NamedElementItem() - { - if (next) - delete next; - } - NamedElementItem *next; - DOMString name; - ElementPtr elem; - }; - - NamedElementItem elementsById; - - - DOMString xmlEncoding; - - DOMString inputEncoding; - - DOMString xmlVersion; - - bool xmlStandalone; - - bool strictErrorChecking; - - DOMConfiguration *domConfig; - - NamedNodeMap namespaceURIs; - - -}; - - - - - - - - - - - -} //namespace dom -} //namespace w3c -} //namespace org - - -#endif // SEEN_DOMIMPL_H - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - - diff --git a/src/dom/domptr.cpp b/src/dom/domptr.cpp deleted file mode 100644 index 73999e100..000000000 --- a/src/dom/domptr.cpp +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "dom.h" -#include "domptr.h" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - - - -/*######################################################################### -## NodePtr -#########################################################################*/ - - - -/** - * Increment the ref counter of the wrapped class instance - */ -void incrementRefCount(Node *p) -{ - if (p) - p->_refCnt++; -} - -/** - * Decrement the ref counter of the wrapped class instance. Delete - * the object if the reference count goes to zero - */ -void decrementRefCount(Node *p) -{ - if (p) - { - if (--(p->_refCnt) < 1) - delete p; - } -} - - - - -} //namespace dom -} //namespace w3c -} //namespace org - - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - - diff --git a/src/dom/domptr.h b/src/dom/domptr.h deleted file mode 100644 index aa9d4c208..000000000 --- a/src/dom/domptr.h +++ /dev/null @@ -1,339 +0,0 @@ -#ifndef SEEN_DOMPTR_H -#define SEEN_DOMPTR_H -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * More thorough explanations of the various classes and their algorithms - * can be found there. - * - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES: - * - * Notice that many of the classes defined here are pure virtual. In other - * words, they are purely unimplemented interfaces. For the implementations - * of them, look in domimpl.h and domimpl.cpp. - * - * Also, note that there is a domptr.cpp file that has a couple of necessary - * functions which cannot be in a .h file - * - */ - -#include <functional> - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - - -/*######################################################################### -## NodePtr -#########################################################################*/ - -/** - * A simple Smart Pointer class that handles Nodes and all of its - * descendants. This is very similar to shared_ptr, but it is customized - * to handle our needs. - */ -template<class T> class Ptr -{ -public: - - /** - * Simple constructor - */ - Ptr() - { _ref = 0; } - - /** - * Constructor upon a reference - */ - template<class Y> Ptr(const Ptr<Y> &other) - { - _ref = other._ref; - incrementRefCount(_ref); - } - - /** - * Constructor upon a reference - */ - Ptr(T * refArg, bool addRef = true) - { - _ref = refArg; - if(addRef) - incrementRefCount(_ref); - } - - - /** - * Copy constructor - */ - Ptr(const Ptr &other) - { - _ref = other._ref; - incrementRefCount(_ref); - } - - /** - * Destructor - */ - virtual ~Ptr() - { - decrementRefCount(_ref); - } - - - /** - * Assignment operator - */ - template<class Y> Ptr &operator=(const Ptr<Y> &other) - { - decrementRefCount(_ref); - _ref = other._ref; - incrementRefCount(_ref); - return *this; - } - - /** - * Assignment operator - */ - Ptr &operator=(const Ptr &other) - { - decrementRefCount(_ref); - _ref = other._ref; - incrementRefCount(_ref); - return *this; - } - - /** - * Assignment operator - */ - template<class Y> Ptr &operator=(Y * ref) - { - decrementRefCount(_ref); - _ref = ref; - incrementRefCount(_ref); - return *this; - } - - /** - * Assignment operator - */ - template<class Y> Ptr &operator=(const Y * ref) - { - decrementRefCount(_ref); - _ref = const_cast<Y *>(ref); - incrementRefCount(_ref); - return *this; - } - - /** - * Return the reference - */ - T * get() const - { - return _ref; - } - - /** - * Dereference operator - */ - T &operator*() const - { - return *_ref; - } - - /** - * Point-to operator - */ - T *operator->() const - { - return _ref; - } - - /** - * NOT bool operator. How to check if we are null without a comparison - */ - bool operator! () const - { - return (_ref == 0); - } - - /** - * Swap what I reference with the other guy - */ - void swap(Ptr &other) - { - T *tmp = _ref; - _ref = other._ref; - other._ref = tmp; - } - - //The referenced item - T *_ref; -}; - - -/** - * Global definitions. Many of these are used to mimic behaviour of - * a real pointer - */ - -/** - * Equality - */ -template<class T, class U> inline bool - operator==(const Ptr<T> &a, const Ptr<U> &b) -{ - return a.get() == b.get(); -} - -/** - * Inequality - */ -template<class T, class U> inline bool - operator!=(const Ptr<T> &a, const Ptr<U> &b) -{ - return a.get() != b.get(); -} - -/** - * Equality - */ -template<class T> inline bool - operator==(const Ptr<T> &a, T * b) -{ - return a.get() == b; -} - -/** - * Inequality - */ -template<class T> inline bool - operator!=(const Ptr<T> &a, T * b) -{ - return a.get() != b; -} - -/** - * Equality - */ -template<class T> inline bool - operator==(T * a, const Ptr<T> &b) -{ - return a == b.get(); -} - -/** - * Inequality - */ -template<class T> inline bool - operator!=(T * a, const Ptr<T> &b) -{ - return a != b.get(); -} - - -/** - * Less than - */ -template<class T> inline bool - operator<(const Ptr<T> &a, const Ptr<T> &b) -{ - return std::less<T *>()(a.get(), b.get()); -} - -/** - * Swap - */ -template<class T> void - swap(Ptr<T> &a, Ptr<T> &b) -{ - a.swap(b); -} - - -/** - * Get the pointer globally, for <algo> - */ -template<class T> T * - get_pointer(const Ptr<T> &p) -{ - return p.get(); -} - -/** - * Static cast - */ -template<class T, class U> Ptr<T> - static_pointer_cast(const Ptr<U> &p) -{ - return static_cast<T *>(p.get()); -} - -/** - * Const cast - */ -template<class T, class U> Ptr<T> - const_pointer_cast(const Ptr<U> &p) -{ - return const_cast<T *>(p.get()); -} - -/** - * Dynamic cast - */ -template<class T, class U> Ptr<T> - dynamic_pointer_cast(const Ptr<U> &p) -{ - return dynamic_cast<T *>(p.get()); -} - - - -} //namespace dom -} //namespace w3c -} //namespace org - - -#endif // SEEN_DOMPTR_H - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - - diff --git a/src/dom/domstring.cpp b/src/dom/domstring.cpp deleted file mode 100644 index 32e3c078f..000000000 --- a/src/dom/domstring.cpp +++ /dev/null @@ -1,423 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include <stdio.h> -#include <stdlib.h> - -#include "domstring.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - -//######################################################################### -//# C O N S T R U C T O R S -//######################################################################### - -DOMString::DOMString() -{ - init(); -} - -DOMString::DOMString(const DOMString &other) -{ - init(); - chars = other.chars; -} - -DOMString::DOMString(const char *str) -{ - init(); - append(str); -} - - -DOMString::~DOMString() -{ - if (cstring) - delete[] cstring; -} - - -/** - * Called only by Constructors - */ -void DOMString::init() -{ - cstring = NULL; - chars.clear(); -} - -//######################################################################### -//# M O D I F Y -//######################################################################### - -DOMString &DOMString::append(const DOMString &str) -{ - unsigned int len = str.size(); - for (unsigned int i=0 ; i<len ; i++) - { - XMLCh ch = str.charAt(i); - chars.push_back(ch); - } - return *this; -} - -DOMString &DOMString::append(const char *str) -{ - if (!str) - return *this; - char *s = (char *)str; - while (*s) - { - XMLCh ch = (XMLCh) *s++; - chars.push_back(ch); - } - return *this; -} - -DOMString &DOMString::append(const std::string &str) -{ - unsigned int len = str.size(); - for (unsigned int i=0 ; i<len ; i++) - { - XMLCh ch = str[i]; - chars.push_back(ch); - } - return *this; -} - -DOMString &DOMString::assign(const DOMString &str) -{ - clear(); - append(str); - return *this; -} - -DOMString &DOMString::operator=(const DOMString &str) -{ - clear(); - append(str); - return *this; -} - -DOMString &DOMString::assign(const char *str) -{ - clear(); - append(str); - return *this; -} - -DOMString &DOMString::assign(const std::string &str) -{ - clear(); - append(str); - return *this; -} - - -void DOMString::erase(unsigned long /*pos*/, unsigned long count) -{ - std::vector<XMLCh>::iterator iter = chars.begin(); - chars.erase(iter, iter + count); -} - -DOMString &DOMString::insert(unsigned long pos, const DOMString &str) -{ - DOMString a = substr(0, pos); - DOMString b = substr(pos, size()); - clear(); - append(a); - append(str); - append(b); - return *this; -} - -DOMString &DOMString::insert(unsigned long pos, const char *str) -{ - DOMString a = substr(0, pos); - DOMString b = substr(pos, size()); - clear(); - append(a); - append(str); - append(b); - return *this; -} - -DOMString &DOMString::insert(unsigned long pos, const std::string &str) -{ - DOMString a = substr(0, pos); - DOMString b = substr(pos, size()); - clear(); - append(a); - append(str); - append(b); - return *this; -} - - -DOMString &DOMString::prepend(const DOMString &str) -{ - DOMString tmp = *this; - clear(); - append(str); - append(tmp); - return *this; -} - -DOMString &DOMString::prepend(const char *str) -{ - DOMString tmp = *this; - clear(); - append(str); - append(tmp); - return *this; -} - -DOMString &DOMString::prepend(const std::string &str) -{ - DOMString tmp = *this; - clear(); - append(str); - append(tmp); - return *this; -} - -DOMString &DOMString::replace(unsigned long pos, unsigned long count, - const DOMString &str) -{ - DOMString a = substr(0, pos); - DOMString b = substr(pos+count, size()); - clear(); - append(a); - append(str); - append(b); - return *this; -} - -DOMString &DOMString::replace(unsigned long pos, unsigned long count, - const char *str) -{ - DOMString a = substr(0, pos); - DOMString b = substr(pos+count, size()); - clear(); - append(a); - append(str); - append(b); - return *this; -} - -DOMString &DOMString::replace(unsigned long pos, unsigned long count, - const std::string &str) -{ - DOMString a = substr(0, pos); - DOMString b = substr(pos+count, size()); - clear(); - append(a); - append(str); - append(b); - return *this; -} - - -DOMString &DOMString::push_back(XMLCh ch) -{ - chars.push_back(ch); - return *this; -} - - - -void DOMString::clear() -{ - chars.clear(); - if (cstring) - { - delete[] cstring; - cstring = NULL; - } -} - -//######################################################################### -//# Q U E R Y -//######################################################################### - -XMLCh DOMString::charAt(unsigned long index) const -{ - return chars[index]; -} - -XMLCh DOMString::operator[](unsigned long index) const -{ - return chars[index]; -} - -DOMString DOMString::substr(unsigned long start, unsigned long end) const -{ - DOMString ret; - for (unsigned long i = start; i<end ; i++) - ret.push_back(chars[i]); - return ret; -} - -const char *DOMString::c_str() -{ - if (cstring) - delete[] cstring; - - int length = chars.size(); - - cstring = new char[length+1]; - - int i=0; - for ( ; i<length ; i++ ) - cstring[i] = (char) chars[i]; - - cstring[i] = '\0'; - - return cstring; -} - - -unsigned long DOMString::size() const -{ - return chars.size(); -} - - - -//######################################################################### -//# C O M P A R I S O N -//######################################################################### - -int DOMString::compare(const DOMString &str) const -{ - int asize = chars.size(); - int bsize = str.size(); - - int diff = 0; - int index = 0; - while (index < asize && index < bsize) - { - int a = (int) chars[index]; - int b = (int) str[index]; - diff = a - b; - if (diff) - return diff; - index++; - } - - //equal for their common length. lets see which is longer - diff = asize - bsize; - - return diff; -} - - -int DOMString::compare(const char *str) const -{ - if (!str) - return 1; - - int asize = chars.size(); - - int diff = 0; - int index = 0; - while (index < asize) - { - int a = (int) chars[index]; - int b = (int) str[index]; - if (!b) - return a; - - diff = a - b; - if (diff) - return diff; - index++; - } - - diff = str[index]; //char or terminating 0 - - return diff; - -} - - -int DOMString::compare(const std::string &str) const -{ - int asize = chars.size(); - int bsize = str.size(); - - int diff = 0; - int index = 0; - while (index < asize && index < bsize) - { - int a = (int) chars[index]; - int b = (int) str[index]; - diff = a - b; - if (diff) - return diff; - index++; - } - - diff = asize - bsize; - - return diff; - - - -} - - - -//######################################################################### -//# O P E R A T O R S -//######################################################################### -DOMString &operator +(DOMString &a, const char *b) - { return a.append(b); } - -DOMString &operator +(const char *b, DOMString &a) - { return a.prepend(b); } - - - -} //namespace dom -} //namespace w3c -} //namespace org - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - diff --git a/src/dom/domstring.h b/src/dom/domstring.h deleted file mode 100644 index 0002bd9b5..000000000 --- a/src/dom/domstring.h +++ /dev/null @@ -1,316 +0,0 @@ -#ifndef SEEN_DOMSTRING_H -#define SEEN_DOMSTRING_H -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include <vector> -#include <string> - -namespace org -{ -namespace w3c -{ -namespace dom -{ - -/** - * - */ -typedef unsigned short XMLCh; - -class DOMString -{ -public: - - //############################### - //# C O N S T R U C T O R S - //############################### - - /** - * - */ - DOMString(); - - /** - * - */ - DOMString(const char *str); - - - /** - * - */ - DOMString(const DOMString &str); - - - /** - * - */ - DOMString(const std::string &str); - - /** - * - */ - virtual ~DOMString(); - - - //############################### - //# M O D I F Y - //############################### - - - - /** - * - */ - virtual DOMString &append(const DOMString &str); - virtual DOMString &operator +(const DOMString &str) - { return append(str); } - virtual DOMString &operator +=(const DOMString &str) - { return append(str); } - - /** - * - */ - virtual DOMString &append(const char *str); - - /** - * - */ - virtual DOMString &append(const std::string &str); - - - /** - * - */ - virtual DOMString &assign(const DOMString &str); - - /** - * - */ - DOMString &operator =(const DOMString &a); - - /** - * - */ - virtual DOMString &assign(const char *str); - - /** - * - */ - virtual DOMString &assign(const std::string &str); - - /** - * - */ - virtual void erase(unsigned long pos, unsigned long count); - - /** - * - */ - virtual DOMString &insert(unsigned long pos, const DOMString &str); - - /** - * - */ - virtual DOMString &insert(unsigned long pos, const char *str); - - /** - * - */ - virtual DOMString &insert(unsigned long pos, const std::string &str); - - - /** - * - */ - virtual DOMString &prepend(const DOMString &str); - - /** - * - */ - virtual DOMString &prepend(const char *str); - - /** - * - */ - virtual DOMString &prepend(const std::string &str); - - - /** - * - */ - virtual DOMString &replace(unsigned long pos, unsigned long count, - const DOMString &str); - - /** - * - */ - virtual DOMString &replace(unsigned long pos, unsigned long count, - const char *str); - - /** - * - */ - virtual DOMString &replace(unsigned long pos, unsigned long count, - const std::string &str); - - /** - * - */ - virtual DOMString &push_back(XMLCh ch); - - /** - * - */ - virtual void clear(); - - //############################### - //# Q U E R Y - //############################### - - /** - * - */ - virtual DOMString substr(unsigned long start, unsigned long end) const; - - /** - * - */ - virtual XMLCh charAt(unsigned long index) const; - - /** - * - */ - virtual XMLCh operator[](unsigned long index) const; - - /** - * - */ - virtual unsigned long size() const; - - /** - * - */ - virtual const char *c_str(); - - //############################### - //# C O M P A R I S O N - //############################### - - /** - * - */ - virtual int compare(const DOMString &str) const; - virtual bool operator <(const DOMString &str) const - { return (compare(str)<0) ; } - virtual bool operator <=(const DOMString &str) const - { return (compare(str)<=0) ; } - virtual bool operator >(const DOMString &str) const - { return (compare(str)>0) ; } - virtual bool operator >=(const DOMString &str) const - { return (compare(str)>=0) ; } - virtual bool operator !=(const DOMString &str) const - { return (compare(str)!=0) ; } - virtual bool operator ==(const DOMString &str) const - { return (compare(str)==0) ; } - - /** - * - */ - virtual int compare(const char *str) const; - virtual bool operator <(const char *str) const - { return (compare(str)<0) ; } - virtual bool operator <=(const char *str) const - { return (compare(str)<=0) ; } - virtual bool operator >(const char *str) const - { return (compare(str)>0) ; } - virtual bool operator >=(const char *str) const - { return (compare(str)>=0) ; } - virtual bool operator !=(const char *str) const - { return (compare(str)!=0) ; } - virtual bool operator ==(const char *str) const - { return (compare(str)==0) ; } - - /** - * - */ - virtual int compare(const std::string &str) const; - virtual bool operator <(const std::string &str) const - { return (compare(str)<0) ; } - virtual bool operator <=(const std::string &str) const - { return (compare(str)<=0) ; } - virtual bool operator >(const std::string &str) const - { return (compare(str)>0) ; } - virtual bool operator >=(const std::string &str) const - { return (compare(str)>=0) ; } - virtual bool operator !=(const std::string &str) const - { return (compare(str)!=0) ; } - virtual bool operator ==(const std::string &str) const - { return (compare(str)==0) ; } - - - - -protected: - - void init(); - - char *cstring; - - std::vector<XMLCh> chars; - -}; // class DOMString - - - - -//############################### -//# O P E R A T O R S -//############################### - -DOMString &operator +(DOMString &a, const char *b); - -DOMString &operator +(const char *b, DOMString &a); - - - -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_DOMSTRING_H -//######################################################################### -//## E N D O F F I L E -//######################################################################### - - diff --git a/src/dom/events.h b/src/dom/events.h deleted file mode 100644 index e62c5d420..000000000 --- a/src/dom/events.h +++ /dev/null @@ -1,1644 +0,0 @@ -#ifndef SEEN_EVENTS_H -#define SEEN_EVENTS_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================== - * NOTES - * - * This Events API follows somewhat this specification: - * http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/events.html - * - * Some of the comments are excerpted from that document. - * - * - */ - - -#include "dom.h" -#include "views.h" - - - - -namespace org { -namespace w3c { -namespace dom { -namespace events { - - - - -//Local definitions -typedef dom::DOMString DOMString; -typedef dom::DOMTimeStamp DOMTimeStamp; -typedef dom::NodePtr NodePtr ; - - - - -//forward declarations -class EventTarget; -class EventListener; -class DocumentEvent; -class CustomEvent; -class UIEvent; -class TextEvent; -class MouseEvent; -class KeyboardEvent; -class MutationEvent; -class MutationNameEvent; - - - -/*######################################################################### -## EventException -#########################################################################*/ - -/** - * Event operations may throw an EventException as specified in their - * method descriptions. - */ -class EventException -{ -public: - - /** - * An integer indicating the type of error generated. - */ - typedef enum - { - UNSPECIFIED_EVENT_TYPE_ERR = 0, - DISPATCH_REQUEST_ERR = 1 - } EventExceptionCode; - - unsigned short code; - - - //################## - //# Non-API methods - //################## - - EventException(short theCode) - { - code = theCode; - } - - virtual ~EventException() throw() - {} - -}; - - - - -/*######################################################################### -## Event -#########################################################################*/ - -/** - * The Event interface is used to provide contextual information about an event - * to the listener processing the event. An object which implements the Event - * interface is passed as the parameter to an EventListener. More specific - * context information is passed to event listeners by deriving additional - * interfaces from Event which contain information directly relating to the type - * of event they represent. These derived interfaces are also implemented by the - * object passed to the event listener. - * - * To create an instance of the Event interface, use the - * DocumentEvent.createEvent("Event") method call. - */ -class Event -{ -public: - - /** - * An integer indicating which phase of the event flow is being processed - * as defined in DOM event flow. - */ - typedef enum - { - CAPTURING_PHASE = 1, - AT_TARGET = 2, - BUBBLING_PHASE = 3 - } PhaseType; - - /** - * The name should be an NCName as defined in [XML Namespaces] and is - * case-sensitive. - * If the attribute Event.namespaceURI is different from null, this - * attribute represents a local name. - */ - virtual DOMString getType() const - { return eventType; } - - /** - * Used to indicate the event target. This attribute contains the target - * node when used with the DOM event flow. - */ - virtual EventTarget *getTarget() - { return target; } - - /** - * Used to indicate the EventTarget whose EventListeners are currently - * being processed. This is particularly useful during the capture and - * bubbling phases. This attribute could contain the target node or a - * target ancestor when used with the DOM event flow. - */ - virtual EventTarget *getCurrentTarget() - { return currentTarget; } - - /** - * Used to indicate which phase of event flow is currently being accomplished. - */ - virtual unsigned short getEventPhase() - { return eventPhase; } - - /** - * Used to indicate whether or not an event is a bubbling event. If the - * event can bubble the value is true, otherwise the value is false. - */ - virtual bool getBubbles() - { return canBubble; } - - /** - * Used to indicate whether or not an event can have its default action - * prevented (see also Default actions and cancelable events). If the - * default action can be prevented the value is true, otherwise the - * value is false. - */ - virtual bool getCancelable() - { return cancelable; } - - /** - * Used to specify the time (in milliseconds relative to the epoch) at which the - * event was created. Due to the fact that some systems may not provide this - * information the value of timeStamp may be not available for all events. When - * not available, a value of 0 will be returned. Examples of epoch time are the - * time of the system start or 0:0:0 UTC 1st January 1970. - */ - virtual DOMTimeStamp getTimeStamp() - { return timeStamp; } - - /** - * This method is used to prevent event listeners of the same group to be - * triggered but its effect is deferred until all event listeners attached on the - * currentTarget have been triggered (see Event propagation and event groups). - * Once it has been called, further calls to that method have no additional effect. - */ - virtual void stopPropagation() - { - } - - /** - * If an event is cancelable, the preventDefault method is used to signify that - * the event is to be canceled, meaning any default action normally taken by the - * implementation as a result of the event will not occur (see also Default - * actions and cancelable events), and thus independently of event groups. - * Calling this method for a non-cancelable event has no effect. - */ - virtual void preventDefault() - { - } - - /** - * The initEvent method is used to initialize the value of an Event created - * through the DocumentEvent.createEvent method. This method may only be called - * before the Event has been dispatched via the EventTarget.dispatchEvent() - * method. If the method is called several times before invoking - * EventTarget.dispatchEvent, only the final invocation takes precedence. This - * method has no effect if called after the event has been dispatched. If called - * from a subclass of the Event interface only the values specified in this - * method are modified, all other attributes are left unchanged. - * - * This method sets the Event.type attribute to eventTypeArg, and - * Event.namespaceURI to null. To initialize an event with a namespace URI, use - * the Event.initEventNS(namespaceURIArg, eventTypeArg, ...) method. - */ - virtual void initEvent(const DOMString &eventTypeArg, - bool canBubbleArg, - bool cancelableArg) - { - namespaceURI = ""; - eventType = eventTypeArg; - canBubble = canBubbleArg; - cancelable = cancelableArg; - } - - - /** - * The namespace URI associated with this event at creation time, or - * null if it is unspecified. - */ - virtual DOMString getNamespaceURI() const - { return namespaceURI; } - - /** - * This method will always return false, unless the event implements - * the CustomEvent interface. - */ - virtual bool isCustom() - { return custom; } - - /** - * This method is used to prevent event listeners of the same group to be - * triggered and, unlike stopPropagation its effect is immediate (see Event - * propagation and event groups). Once it has been called, further calls to that - * method have no additional effect. - * - * Note: This method does not prevent the default action from being invoked; use - * Event.preventDefault() for that effect. - */ - virtual void stopImmediatePropagation() - { - } - - /** - * This method will return true if the method Event.preventDefault() - * has been called for this event, false otherwise. - */ - virtual bool isDefaultPrevented() - { return defaultPrevented; } - - /** - * The initEventNS method is used to initialize the value of an Event - * object and has the same behavior as Event.initEvent(). - */ - virtual void initEventNS(const DOMString &namespaceURIArg, - const DOMString &eventTypeArg, - bool canBubbleArg, - bool cancelableArg) - { - namespaceURI = namespaceURIArg; - eventType = eventTypeArg; - canBubble = canBubbleArg; - cancelable = cancelableArg; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - Event() - { - init(); - } - - /** - * - */ - Event(const DOMString &eventTypeArg) - { - init(); - eventType = eventTypeArg; - } - - - /** - * - */ - Event(const Event &other) - { - eventType = other.eventType; - target = other.target; - currentTarget = other.currentTarget; - eventPhase = other.eventPhase; - canBubble = other.canBubble; - cancelable = other.cancelable; - timeStamp = other.timeStamp; - namespaceURI = other.namespaceURI; - custom = other.custom; - defaultPrevented = other.defaultPrevented; - } - - /** - * - */ - virtual ~Event() {} - -protected: - - /** - * - */ - void init() - { - eventType = ""; - target = NULL; - currentTarget = NULL; - eventPhase = 0; - canBubble = false; - cancelable = false; - //timeStamp = other.timeStamp; - namespaceURI = ""; - custom = false; - defaultPrevented = false; - } - - DOMString eventType; - EventTarget *target; - EventTarget *currentTarget; - unsigned short eventPhase; - bool canBubble; - bool cancelable; - DOMTimeStamp timeStamp; - DOMString namespaceURI; - bool custom; - bool defaultPrevented; - -}; - - - - -/*######################################################################### -## EventListener -#########################################################################*/ - -/** - * The EventListener interface is the primary way for handling events. Users - * implement the EventListener interface and register their event listener on an - * EventTarget. The users should also remove their EventListener from its - * EventTarget after they have completed using the listener. - * - * Copying a Node, with methods such as Node.cloneNode or Range.cloneContents, - * does not copy the event listeners attached to it. Event listeners must be - * attached to the newly created Node afterwards if so desired. - * - * Moving a Node, with methods Document.adoptNode, Node.appendChild, or - * Range.extractContents, does not affect the event listeners attached to it. - */ -class EventListener -{ -public: - - /** - * This method is called whenever an event occurs of the event type - * for which the EventListener interface was registered. - */ - virtual void handleEvent(const Event &/*evt*/) - {} - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~EventListener() {} -}; - - - - - - -/*######################################################################### -## EventTarget -#########################################################################*/ - - -/** - * The EventTarget interface is implemented by all the objects which could be - * event targets in an implementation which supports the Event flows. The - * interface allows registration, removal or query of event listeners, and - * dispatch of events to an event target. - * - * When used with DOM event flow, this interface is implemented by all target - * nodes and target ancestors, i.e. all DOM Nodes of the tree support this - * interface when the implementation conforms to DOM Level 3 Events and, - * therefore, this interface can be obtained by using binding-specific casting - * methods on an instance of the Node interface. - * - * Invoking addEventListener or addEventListenerNS multiple times on the same - * EventTarget with the same parameters (namespaceURI, type, listener, and - * useCapture) is considered to be a no-op and thus independently of the event - * group. They do not cause the EventListener to be called more than once and do - * not cause a change in the triggering order. In order to guarantee that an - * event listener will be added to the event target for the specified event group, - * one needs to invoke removeEventListener or removeEventListenerNS first. - */ -class EventTarget -{ -private: - - class EventListenerEntry - { - public: - EventListenerEntry(const DOMString &namespaceURIArg, - const DOMString &eventTypeArg, - const EventListener *listenerArg, - bool useCaptureArg) - { - namespaceURI = namespaceURIArg; - eventType = eventTypeArg; - listener = const_cast<EventListener *>(listenerArg); - useCapture = useCaptureArg; - } - - EventListenerEntry(const EventListenerEntry &other) - { - namespaceURI = other.namespaceURI; - eventType = other.eventType; - listener = other.listener; - useCapture = other.useCapture; - } - - virtual ~EventListenerEntry() {} - - DOMString namespaceURI; - DOMString eventType; - EventListener *listener; - bool useCapture; - }; - - - -public: - - /** - * This method allows the registration of an event listener in the default group - * and, depending on the useCapture parameter, on the capture phase of the DOM - * event flow or its target and bubbling phases. - */ - virtual void addEventListener(const DOMString &type, - const EventListener *listener, - bool useCapture) - { - EventListenerEntry entry("", type, listener, useCapture); - listeners.push_back(entry); - } - - /** - * This method allows the removal of event listeners from the default group. - * Calling removeEventListener with arguments which do not identify any currently - * registered EventListener on the EventTarget has no effect. - */ - virtual void removeEventListener(const DOMString &type, - const EventListener *listener, - bool useCapture) - { - std::vector<EventListenerEntry>::iterator iter; - for (iter = listeners.begin() ; iter != listeners.end() ; ){ - EventListenerEntry entry = *iter; - if (entry.eventType == type && - entry.listener == listener && - useCapture && entry.useCapture){ - iter = listeners.erase(iter); - } - else{ - ++iter; - } - } - } - - /** - * This method allows the dispatch of events into the implementation's event - * model. The event target of the event is the EventTarget object on which - * dispatchEvent is called. - */ - virtual bool dispatchEvent(const Event &evt) throw(EventException) - { - - for (unsigned int i=0 ; i<listeners.size() ; i++) - { - EventListenerEntry listener = listeners[i]; - if (listener.namespaceURI == evt.getNamespaceURI() && - listener.eventType == evt.getType()) - { - if (listener.listener) - listener.listener->handleEvent(evt); - } - } - return true; - } - - - /** - * This method allows the registration of an event listener in a specified group - * or the default group and, depending on the useCapture parameter, on the - * capture phase of the DOM event flow or its target and bubbling phases. - */ - virtual void addEventListenerNS(const DOMString &namespaceURI, - const DOMString &type, - const EventListener *listener, - bool useCapture) - { - EventListenerEntry entry(namespaceURI, type, listener, useCapture); - listeners.push_back(entry); - } - - /** - * This method allows the removal of an event listener, independently of the - * associated event group. - * Calling removeEventListenerNS with arguments which do not identify any - * currently registered EventListener on the EventTarget has no effect. - */ - virtual void removeEventListenerNS(const DOMString &namespaceURI, - const DOMString &type, - const EventListener *listener, - bool useCapture) - { - std::vector<EventListenerEntry>::iterator iter; - for (iter = listeners.begin() ; iter != listeners.end() ; ){ - EventListenerEntry entry = *iter; - if (entry.namespaceURI == namespaceURI && - entry.eventType == type && - entry.listener == listener && - useCapture && entry.useCapture){ - iter = listeners.erase(iter); - } - else { - ++iter; - } - } - } - - /** - * This method allows the DOM application to know if an event listener, attached - * to this EventTarget or one of its ancestors, will be triggered by the - * specified event type during the dispatch of the event to this event target or - * one of its descendants. - */ - virtual bool willTriggerNS(const DOMString &namespaceURI, - const DOMString &type) - { - std::vector<EventListenerEntry>::iterator iter; - for (iter = listeners.begin() ; iter != listeners.end() ; ++iter) - { - EventListenerEntry entry = *iter; - if (entry.namespaceURI == namespaceURI && - entry.eventType == type) - return true; - } - return false; - } - - /** - * This method allows the DOM application to know if this EventTarget contains an - * event listener registered for the specified event type. This is useful for - * determining at which nodes within a hierarchy altered handling of specific - * event types has been introduced, but should not be used to determine whether - * the specified event type triggers an event listener (see - * EventTarget.willTriggerNS()). - */ - virtual bool hasEventListenerNS(const DOMString &namespaceURI, - const DOMString &type) - { - std::vector<EventListenerEntry>::iterator iter; - for (iter = listeners.begin() ; iter != listeners.end() ; ++iter) - { - EventListenerEntry entry = *iter; - if (entry.namespaceURI == namespaceURI && - entry.eventType == type) - return true; - } - return false; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - EventTarget() {} - - /** - * - */ - EventTarget(const EventTarget &other) - : listeners (other.listeners) - { - } - - /** - * - */ - virtual ~EventTarget() {} - -protected: - - std::vector<EventListenerEntry> listeners; - -}; - - - - -/*######################################################################### -## DocumentEvent -#########################################################################*/ - -/** - * The DocumentEvent interface provides a mechanism by which the user can create - * an Event object of a type supported by the implementation. If the feature - * "Events" is supported by the Document object, the DocumentEvent interface must - * be implemented on the same object. If the feature "+Events" is supported by - * the Document object, an object that supports the DocumentEvent interface must - * be returned by invoking the method Node.getFeature("+Events", "3.0") on the - * Document object. - */ -class DocumentEvent : virtual public Event -{ -public: - - /** - * Create an event with the current document - */ - virtual Event createEvent(const DOMString &/*eventType*/) - throw (dom::DOMException) - { - Event event; - return event; - } - - /** - * Test if the implementation can generate events of a specified type. - */ - virtual bool canDispatch(const DOMString &/*namespaceURI*/, - const DOMString &/*type*/) - { - return dispatchable; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - DocumentEvent() - : dispatchable(false) - {} - - /** - * - */ - DocumentEvent(const DocumentEvent &other) : Event(other) - { - dispatchable = other.dispatchable; - } - - /** - * - */ - virtual ~DocumentEvent() {} - -protected: - - bool dispatchable; - - -}; - - -/*######################################################################### -## CustomEvent -#########################################################################*/ - -/** - * The CustomEvent interface gives access to the attributes Event.currentTarget - * and Event.eventPhase. It is intended to be used by the DOM Events - * implementation to access the underlying current target and event phase while - * dispatching a custom Event in the tree; it is also intended to be implemented, - * and not used, by DOM applications. - * - * The methods contained in this interface are not intended to be used by a DOM - * application, especially during the dispatch on the Event object. Changing the - * current target or the current phase may result in unpredictable results of the - * event flow. The DOM Events implementation should ensure that both methods - * return the appropriate current target and phase before invoking each event - * listener on the current target to protect DOM applications from malicious - * event listeners. - * - * Note: If this interface is supported by the event object, Event.isCustom() - * must return true. -*/ -class CustomEvent : virtual public Event -{ -public: - - /** - * The setDispatchState method is used by the DOM Events implementation to set - * the values of Event.currentTarget and Event.eventPhase. It also reset the - * states of isPropagationStopped and isImmediatePropagationStopped. - */ - virtual void setDispatchState(const EventTarget */*target*/, - unsigned short /*phase*/) - { - } - - /** - * This method will return true if the method stopPropagation() has been - * called for this event, false in any other cases. - */ - virtual bool isPropagationStopped() - { - return propagationStopped; - } - - /** - * The isImmediatePropagationStopped method is used by the DOM Events - * implementation to know if the method stopImmediatePropagation() has been - * called for this event. It returns true if the method has been called, false - * otherwise. - */ - virtual bool isImmediatePropagationStopped() - { - return immediatePropagationStopped; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - CustomEvent() - : propagationStopped(false), - immediatePropagationStopped(false) - {} - - /** - * - */ - CustomEvent(const CustomEvent &other) : Event(other) - { - propagationStopped = other.propagationStopped; - immediatePropagationStopped = other.immediatePropagationStopped; - } - - /** - * - */ - virtual ~CustomEvent() {} - -protected: - - bool propagationStopped; - bool immediatePropagationStopped; - - - -}; - - - - -/*######################################################################### -## UIEvent -#########################################################################*/ - -/** - * The UIEvent interface provides specific contextual information associated with - * User Interface events. - * - * To create an instance of the UIEvent interface, use the - * DocumentEvent.createEvent("UIEvent") method call. - * - * NOTE: - * For dom level 2 and 3, note that views.idl and events.idl disagree on the - * name of Views. We are using level -2- Views - */ -class UIEvent : virtual public Event -{ -public: - - /** - * The view attribute identifies the AbstractView from which the - * event was generated. - */ - virtual views::AbstractView getView() - { return view; } - - /** - * Specifies some detail information about the Event, depending on - * the type of event. - */ - virtual long getDetail() - { return detail; } - - /** - * The initUIEvent method is used to initialize the value of a UIEvent object and - * has the same behavior as Event.initEvent(). - */ - virtual void initUIEvent(const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const views::AbstractView */*viewArg*/, - long /*detailArg*/) - { - } - - /** - * The initUIEventNS method is used to initialize the value of a UIEvent object - * and has the same behavior as Event.initEventNS(). - */ - virtual void initUIEventNS(const DOMString &/*namespaceURI*/, - const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const views::AbstractView */*viewArg*/, - long /*detailArg*/) - { - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - UIEvent() - : view(), - detail(0) - {} - - /** - * - */ - UIEvent(const UIEvent &other) - : Event(other), - view(other.view), - detail(other.detail) - { - } - - /** - * - */ - virtual ~UIEvent() {} - -protected: - - views::AbstractView view; - long detail; -}; - - - - -/*######################################################################### -## TextEvent -#########################################################################*/ - -/** - * The TextEvent interface provides specific contextual information associated - * with Text Events. - * - * To create an instance of the TextEvent interface, use the - * DocumentEvent.createEvent("TextEvent") method call. - */ -class TextEvent : virtual public UIEvent -{ -public: - - /** - * data holds the value of the characters generated by the character device. This - * may be a single Unicode character or a non-empty sequence of Unicode - * characters [Unicode]. Characters should be normalized as defined by the - * Unicode normalization form NFC, defined in [UTR #15]. This attribute cannot be - * null or contain the empty string. - */ - virtual DOMString getData() - { return data; } - - /** - * The initTextEvent method is used to initialize the value of a TextEvent object - * and has the same behavior as UIEvent.initUIEvent(). The value of - * UIEvent.detail remains undefined. - */ - virtual void initTextEvent(const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const views::AbstractView */*viewArg*/, - long /*detailArg*/) - { - } - - /** - * The initTextEventNS method is used to initialize the value of a TextEvent - * object and has the same behavior as UIEvent.initUIEventNS(). The value of - * UIEvent.detail remains undefined. - */ - virtual void initTextEventNS(const DOMString &/*namespaceURI*/, - const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const views::AbstractView */*viewArg*/, - long /*detailArg*/) - { - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - TextEvent() {} - - /** - * - */ - TextEvent(const TextEvent &other) : Event(other), UIEvent(other) - { - data = other.data; - } - - /** - * - */ - virtual ~TextEvent() {} - -protected: - - DOMString data; - -}; - - - - - - - - -/*######################################################################### -## MouseEvent -#########################################################################*/ - -/** - * The MouseEvent interface provides specific contextual information associated - * with Mouse events. - * - * In the case of nested elements mouse events are always targeted at the most - * deeply nested element. Ancestors of the targeted element may use bubbling to - * obtain notification of mouse events which occur within theirs descendent - * elements. - * - * To create an instance of the MouseEvent interface, use the - * DocumentEvent.createEvent("MouseEvent") method call. - */ -class MouseEvent : virtual public UIEvent -{ -public: - - /** - * The horizontal coordinate at which the event occurred relative to the - * origin of the screen coordinate system. - */ - virtual long getScreenX() - { return screenX; } - - /** - * The vertical coordinate at which the event occurred relative to the - * origin of the screen coordinate system. - */ - virtual long getScreenY() - { return screenY; } - - /** - * The horizontal coordinate at which the event occurred relative to the - * DOM implementation's client area. - */ - virtual long getClientX() - { return clientX; } - - /** - * The vertical coordinate at which the event occurred relative to the - * DOM implementation's client area. - */ - virtual long getClientY() - { return clientY; } - - /** - * true if the control (Ctrl) key modifier is activated. - */ - virtual bool getCtrlKey() - { return ctrlKey; } - - /** - * true if the shift (Shift) key modifier is activated. - */ - virtual bool getShiftKey() - { return shiftKey; } - - /** - * true if the alt (alternative) key modifier is activated. - */ - virtual bool getAltKey() - { return altKey; } - - /** - * true if the meta (Meta) key modifier is activated. - */ - virtual bool getMetaKey() - { return metaKey; } - - /** - * During mouse events caused by the depression or release of a mouse button, - * button is used to indicate which mouse button changed state. 0 indicates the - * normal button of the mouse (in general on the left or the one button on - * Macintosh mice, used to activate a button or select text). 2 indicates the - * contextual property (in general on the right, used to display a context menu) - * button of the mouse if present. 1 indicates the extra (in general in the - * middle and often combined with the mouse wheel) button. Some mice may provide - * or simulate more buttons, and values higher than 2 can be used to represent - * such buttons. - */ - virtual unsigned short getButton() - { return button; } - - /** - * Used to identify a secondary EventTarget related to a UI event. Currently this - * attribute is used with the mouseover event to indicate the EventTarget which - * the pointing device exited and with the mouseout event to indicate the - * EventTarget which the pointing device entered. - */ - virtual EventTarget *getRelatedTarget() - { return relatedTarget; } - - - /** - * This methods queries the state of a modifier using a key identifier. - * The argument is a modifier key identifier, as defined by the - * KeyboardEvent.keyIdentifier attribute. Common modifier keys are "Alt", - * "AltGraph", "CapsLock", "Control", "Meta", "NumLock", "Scroll", or "Shift". - */ - virtual bool getModifierState(const DOMString &/*id*/) - { return false; } - - /** - * The initMouseEvent method is used to initialize the value of a MouseEvent - * object and has the same behavior as UIEvent.initUIEvent(). - */ - virtual void initMouseEvent(const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const views::AbstractView */*viewArg*/, - long /*detailArg*/, - long /*screenXArg*/, - long /*screenYArg*/, - long /*clientXArg*/, - long /*clientYArg*/, - bool /*ctrlKeyArg*/, - bool /*altKeyArg*/, - bool /*shiftKeyArg*/, - bool /*metaKeyArg*/, - unsigned short /*buttonArg*/, - const EventTarget */*relatedTargetArg*/) - { - } - - - /** - * The initMouseEventNS method is used to initialize the value of a - * MouseEvent object and has the same behavior as UIEvent.initUIEventNS(). - */ - virtual void initMouseEventNS(const DOMString &/*namespaceURI*/, - const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const views::AbstractView */*viewArg*/, - long /*detailArg*/, - long /*screenXArg*/, - long /*screenYArg*/, - long /*clientXArg*/, - long /*clientYArg*/, - unsigned short /*buttonArg*/, - const EventTarget */*relatedTargetArg*/, - const DOMString &/*modifiersList*/) - { - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - MouseEvent() - : screenX(0), - screenY(0), - clientX(0), - clientY(0), - ctrlKey(false), - shiftKey(false), - altKey(false), - metaKey(false), - button(0), - relatedTarget(NULL) - {} - - /** - * - */ - MouseEvent(const MouseEvent &other) : Event(other), UIEvent(other) - { - screenX = other.screenX; - screenY = other.screenY; - clientX = other.clientX; - clientY = other.clientY; - ctrlKey = other.ctrlKey; - shiftKey = other.shiftKey; - altKey = other.altKey; - metaKey = other.metaKey; - button = other.button; - relatedTarget = other.relatedTarget; - } - - /** - * - */ - virtual ~MouseEvent() {} - -protected: - - long screenX; - long screenY; - long clientX; - long clientY; - bool ctrlKey; - bool shiftKey; - bool altKey; - bool metaKey; - unsigned short button; - EventTarget *relatedTarget; -}; - - - - -/*######################################################################### -## KeyboardEvent -#########################################################################*/ - -/** - * The KeyboardEvent interface provides specific contextual information - * associated with keyboard devices. Each keyboard event references a key using - * an identifier. Keyboard events are commonly directed at the element that has - * the focus. - * - * The KeyboardEvent interface provides convenient attributes for some common - * modifiers keys: KeyboardEvent.ctrlKey, KeyboardEvent.shiftKey, - * KeyboardEvent.altKey, KeyboardEvent.metaKey. These attributes are equivalent - * to use the method KeyboardEvent.getModifierState(keyIdentifierArg) with - * "Control", "Shift", "Alt", or "Meta" respectively. - * - * To create an instance of the KeyboardEvent interface, use the - * DocumentEvent.createEvent("KeyboardEvent") method call. - */ -class KeyboardEvent : virtual public UIEvent -{ -public: - - /** - * This set of constants is used to indicate the location of a key on - * the device. In case a DOM implementation wishes to provide a new - * location information, a value different from the following constant - * values must be used. - */ - typedef enum - { - DOM_KEY_LOCATION_STANDARD = 0x00, - DOM_KEY_LOCATION_LEFT = 0x01, - DOM_KEY_LOCATION_RIGHT = 0x02, - DOM_KEY_LOCATION_NUMPAD = 0x03 - } KeyLocationCode; - - /** - * keyIdentifier holds the identifier of the key. - * Key identifiers can be found here: - * http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/keyset.html#KeySet-Set - * Implementations that are unable to identify a key must use the key - * identifier "Unidentified". - */ - virtual DOMString getKeyIdentifier() - { return keyIdentifier; } - - /** - * The keyLocation attribute contains an indication of the location of - * they key on the device, as described in: - * http://www.w3.org/TR/2003/NOTE-DOM-Level-3-Events-20031107/events.html#ID-KeyboardEvent-KeyLocationCode - */ - virtual unsigned long getKeyLocation() - { return keyLocation; } - - /** - * true if the control (Ctrl) key modifier is activated. - */ - virtual bool getCtrlKey() - { return ctrlKey; } - - /** - * true if the shift (Shift) key modifier is activated. - */ - virtual bool getShiftKey() - { return shiftKey; } - - /** - * true if the alternative (Alt) key modifier is activated. - */ - virtual bool getAltKey() - { return altKey; } - - /** - * true if the meta (Meta) key modifier is activated. - */ - virtual bool getMetaKey() - { return metaKey; } - - /** - * This methods queries the state of a modifier using a key identifier. - * The argument is a modifier key identifier. Common modifier keys are "Alt", - * "AltGraph", "CapsLock", "Control", "Meta", "NumLock", "Scroll", or "Shift". - */ - virtual bool getModifierState(const DOMString &/*id*/) - { return false; } - - /** - * The initKeyboardEvent method is used to initialize the value of a - * KeyboardEvent object and has the same behavior as UIEvent.initUIEvent(). The - * value of UIEvent.detail remains undefined. - */ - virtual void initKeyboardEvent(const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const views::AbstractView */*viewArg*/, - const DOMString &/*keyIdentifier*/, - unsigned long /*keyLocation*/, - const DOMString /*modifiersList*/) - { - } - - - - /** - * The initKeyboardEventNS method is used to initialize the value of a - * KeyboardEvent object and has the same behavior as UIEvent.initUIEventNS(). The - * value of UIEvent.detail remains undefined. - */ - virtual void initKeyboardEventNS(const DOMString &/*namespaceURI*/, - const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const views::AbstractView */*viewArg*/, - const DOMString &/*keyIdentifier*/, - unsigned long /*keyLocation*/, - const DOMString /*modifiersList*/) - { - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - KeyboardEvent() - : keyIdentifier(), - keyLocation(0), - ctrlKey(false), - shiftKey(false), - altKey(false), - metaKey(false) - {} - - /** - * - */ - KeyboardEvent(const KeyboardEvent &other) : Event(other), UIEvent(other) - { - keyIdentifier = other.keyIdentifier; - keyLocation = other.keyLocation; - ctrlKey = other.ctrlKey; - shiftKey = other.shiftKey; - altKey = other.altKey; - metaKey = other.metaKey; - } - - /** - * - */ - virtual ~KeyboardEvent() {} - -protected: - - DOMString keyIdentifier; - unsigned long keyLocation; - bool ctrlKey; - bool shiftKey; - bool altKey; - bool metaKey; -}; - - - - - - - - - -/*######################################################################### -## MutationEvent -#########################################################################*/ - -/** - * The MutationEvent interface provides specific contextual information - * associated with Mutation events. - * - * To create an instance of the MutationEvent interface, use the - * DocumentEvent.createEvent("MutationEvent") method call. - */ -class MutationEvent : virtual public Event -{ -public: - - /** - * An integer indicating in which way the Attr was changed. - */ - typedef enum - { - MODIFICATION = 1, - ADDITION = 2, - REMOVAL = 3 - } AttrChangeType; - - /** - * relatedNode is used to identify a secondary node related to a mutation event. - * For example, if a mutation event is dispatched to a node indicating that its - * parent has changed, the relatedNode is the changed parent. If an event is - * instead dispatched to a subtree indicating a node was changed within it, the - * relatedNode is the changed node. In the case of the - * {"http://www.w3.org/2001/xml-events", "DOMAttrModified"} event it indicates - * the Attr node which was modified, added, or removed. - */ - virtual NodePtr getRelatedNode() - { return relatedNodePtr ; } - - /** - * prevValue indicates the previous value of the Attr node in - * {"http://www.w3.org/2001/xml-events", "DOMAttrModified"} events, and of the - * CharacterData node in {"http://www.w3.org/2001/xml-events", - * "DOMCharacterDataModified"} events. - */ - virtual DOMString getPrevValue() - { return prevValue; } - - /** - * newValue indicates the new value of the Attr node in - * {"http://www.w3.org/2001/xml-events", "DOMAttrModified"} events, and of the - * CharacterData node in {"http://www.w3.org/2001/xml-events", - * "DOMCharacterDataModified"} events. - */ - virtual DOMString getNewValue() - { return newValue; } - - /** - * attrName indicates the name of the changed Attr node in a - * {"http://www.w3.org/2001/xml-events", "DOMAttrModified"} event. - */ - virtual DOMString getAttrName() - { return attrName; } - - /** - * attrChange indicates the type of change which triggered the - * {"http://www.w3.org/2001/xml-events", "DOMAttrModified"} event. The values can - * be MODIFICATION, ADDITION, or REMOVAL. - */ - virtual unsigned short getAttrChange() - { - return attrChange; - } - - /** - * The initMutationEvent method is used to initialize the value of a - * MutationEvent object and has the same behavior as Event.initEvent(). - */ - virtual void initMutationEvent(const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const NodePtr /*relatedNodeArg*/, - const DOMString &/*prevValueArg*/, - const DOMString &/*newValueArg*/, - const DOMString &/*attrNameArg*/, - unsigned short /*attrChangeArg*/) - { - } - - /** - * The initMutationEventNS method is used to initialize the value of a - * MutationEvent object and has the same behavior as Event.initEventNS(). - */ - virtual void initMutationEventNS(const DOMString &/*namespaceURI*/, - const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const NodePtr /*relatedNodeArg*/, - const DOMString &/*prevValueArg*/, - const DOMString &/*newValueArg*/, - const DOMString &/*attrNameArg*/, - unsigned short /*attrChangeArg*/) - { - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - MutationEvent() - : relatedNodePtr (NULL), - attrChange(0) - { - } - - /** - * - */ - MutationEvent(const MutationEvent &other) : Event(other) - { - relatedNodePtr = other.relatedNodePtr ; - prevValue = other.prevValue; - newValue = other.newValue; - attrName = other.attrName; - attrChange = other.attrChange; - } - - /** - * - */ - virtual ~MutationEvent() {} - -protected: - - NodePtr relatedNodePtr ; - DOMString prevValue; - DOMString newValue; - DOMString attrName; - unsigned short attrChange; - -}; - - - - -/*######################################################################### -## MutationNameEvent -#########################################################################*/ - -/** - * The MutationNameEvent interface provides specific contextual information - * associated with Mutation name event types. - * - * To create an instance of the MutationNameEvent interface, use the - * Document.createEvent("MutationNameEvent") method call. - */ -class MutationNameEvent : virtual public MutationEvent -{ -public: - - /** - * The previous value of the relatedNode's namespaceURI. - */ - virtual DOMString getPrevNamespaceURI() - { return prevNamespaceURI; } - - /** - * The previous value of the relatedNode's nodeName. - */ - virtual DOMString getPrevNodeName() - { return prevNodeName; } - - /** - * The initMutationNameEvent method is used to initialize the value of a - * MutationNameEvent object and has the same behavior as - * MutationEvent.initMutationEvent(). - */ - virtual void initMutationNameEvent(const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const NodePtr /*relatedNodeArg*/, - const DOMString &/*prevNamespaceURIArg*/, - const DOMString &/*prevNodeNameArg*/) - { - } - - - /** - * The initMutationNameEventNS method is used to initialize the value of a - * MutationNameEvent object and has the same behavior as - * MutationEvent.initMutationEventNS(). - */ - virtual void initMutationNameEventNS(const DOMString &/*namespaceURI*/, - const DOMString &/*typeArg*/, - bool /*canBubbleArg*/, - bool /*cancelableArg*/, - const NodePtr /*relatedNodeArg*/, - const DOMString &/*prevNamespaceURIArg*/, - const DOMString &/*prevNodeNameArg*/) - { - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - MutationNameEvent() {} - - - /** - * - */ - MutationNameEvent(const MutationNameEvent &other) - : Event(other), MutationEvent(other) - { - prevNamespaceURI = other.prevNamespaceURI; - prevNodeName = other.prevNodeName; - } - - - /** - * - */ - virtual ~MutationNameEvent() {} - -protected: - - DOMString prevNamespaceURI; - DOMString prevNodeName; - - -}; - - - - - - -} //namespace events -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_EVENTS_H - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/io/domstream.cpp b/src/dom/io/domstream.cpp deleted file mode 100644 index 1f08c0eee..000000000 --- a/src/dom/io/domstream.cpp +++ /dev/null @@ -1,1228 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * Our base input/output stream classes. These are is directly - * inherited from iostreams, and includes any extra - * functionality that we might need. - * - */ - -#include <cmath> -#include <cstdarg> -#include <cstdio> -#include <cstdlib> - -#include "domstream.h" -#include "dom/ucd.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace io -{ - - -//######################################################################### -//# U T I L I T Y -//######################################################################### - -void pipeStream(InputStream &source, OutputStream &dest) -{ - for (;;) - { - int ch = source.get(); - if (ch<0) - break; - dest.put(ch); - } - dest.flush(); -} -/* - - -//######################################################################### -//# F O R M A T T E D P R I N T I N G -//######################################################################### - -static char const *digits = "0123456789abcdefghijklmnopqrstuvwxyz"; -*/ -// static int dprintInt(Writer &outs, - // long arg, int base, - // int flag, int width, int /*precision*/) -/*{ - - DOMString buf; - - //### Get the digits - while (arg > 0) - { - int ch = arg % base; - buf.insert(buf.begin(), digits[ch]); - arg /= base; - } - - if (flag == '#' && base == 16) - { - buf.insert(buf.begin(), 'x'); - buf.insert(buf.begin(), '0'); - } - - if (buf.size() == 0) - buf = "0"; - - int pad = width - (int)buf.size(); - for (int i=0 ; i<pad ; i++) - buf.insert(buf.begin(), '0'); - - //### Output the result - for (unsigned int i=0 ; i<buf.size() ; i++) - { - if (outs.put(buf[i]) < 0) - return -1; - } - - return 1; -} - - - -static int dprintDouble(Writer &outs, double val, - int flag, int width, int precision) -{ - - DOMString buf; - - //printf("int:%f frac:%f\n", intPart, fracPart); - - bool negative = false; - if (val < 0) - { - negative = true; - val = -val; - } - - int intDigits = 0; - double scale = 1.0; - while (scale < val) - { - intDigits++; - scale *= 10.0; - } - - double intPart; - double fracPart = modf(val, &intPart); - - if (precision <= 0) - precision = 5; - - //### How many pad digits? - int pad = width - intDigits; - if (precision > 0) - pad -= precision + 1; - else if (flag == '#') - pad--; - - - //### Signs - if (negative) - buf.push_back('-'); - else if (flag == '+') - buf.push_back('+'); - - //### Prefix pad - if (pad > 0 && flag == '0') - { - while (pad--) - buf.push_back('0'); - } - - //### Integer digits - intPart = (intPart + 0.1 ) / scale; // turn 12345.678 to .12345678 - while (intDigits--) - { - intPart *= 10.0; - double dig; - intPart = modf(intPart, &dig); - char ch = '0' + (int)dig; - buf.push_back(ch); - } - if (buf.size() == 0) - buf = "0"; - - //### Decimal point - if (flag == '#' || precision > 0) - { - buf.push_back('.'); - } - - //### Fractional digits - while (precision--) - { - fracPart *= 10.0; - double dig; - fracPart = modf(fracPart, &dig); - char ch = '0' + (int)dig; - buf.push_back(ch); - } - - //### Left justify if requested - if (pad > 0 && flag == '-') - { - while (pad--) - buf.push_back(' '); - } - - //### Output the result - for (unsigned int i=0 ; i<buf.size() ; i++) - { - if (outs.put(buf[i]) < 0) - return -1; - } - return 1; -} -*/ - -/** - * Output a string. We veer from the standard a tiny bit. - * Normally, a flag of '#' is undefined for strings. We use - * it as an indicator that the user wants to XML-escape any - * XML entities. - */ -// static int dprintString(Writer &outs, const DOMString &str, - // int flags, int /*width*/, int /*precision*/) -/*{ - int len = str.size(); - if (flags == '#') - { - for (int pos = 0; pos < len; pos++) - { - XMLCh ch = (XMLCh) str[pos]; - if (ch == '&') - outs.writeString("&r;"); - else if (ch == '<') - outs.writeString("<"); - else if (ch == '>') - outs.writeString(">"); - else if (ch == '"') - outs.writeString("""); - else if (ch == '\'') - outs.writeString("'"); - else - outs.put(ch); - } - } - else - { - outs.writeString(str); - } - - return 1; -} - - - -static int getint(const DOMString &buf, int pos, int *ret) -{ - int len = buf.size(); - if (!len) - { - *ret = 0; - return pos; - } - - bool has_sign = false; - int val = 0; - if (buf[pos] == '-') - { - has_sign = true; - pos++; - } - while (pos < len) - { - XMLCh ch = buf[pos]; - if (ch >= '0' && ch <= '9') - val = val * 10 + (ch - '0'); - else - break; - pos++; - } - if (has_sign) - val = -val; - - *ret = val; - - return pos; -} - - - -static int dprintf(Writer &outs, const DOMString &fmt, va_list ap) -{ - - int len = fmt.size(); - - for (int pos=0 ; pos < len ; pos++) - { - XMLCh ch = fmt[pos]; - - //## normal character - if (ch != '%') - { - if (outs.put(ch)<0) - { - return -1; - } - continue; - } - - if (++pos >= len) - { - return -1; - } - - ch = fmt[pos]; - - //## is this %% ? - if (ch == '%') // escaped '%' - { - if (outs.put('%')<0) - { - return -1; - } - continue; - } - - //## flag - char flag = '\0'; - if (ch == '-' || ch == '+' || ch == ' ' || - ch == '#' || ch == '0') - { - flag = ch; - if (++pos >= len) - { - return -1; - } - ch = fmt[pos]; - } - - //## width.precision - int width = 0; - int precision = 0; - pos = getint(fmt, pos, &width); - if (pos >= len) - { - return -1; - } - ch = fmt[pos]; - if (ch == '.') - { - if (++pos >= len) - { - return -1; - } - pos = getint(fmt, pos, &precision); - if (pos >= len) - { - return -1; - } - ch = fmt[pos]; - } - - //## length - char length = '\0'; - if (ch == 'l' || ch == 'h') - { - length = ch; - if (++pos >= len) - { - return -1; - } - ch = fmt[pos]; - } - - //## data type - switch (ch) - { - case 'f': - case 'g': - { - double val = va_arg(ap, double); - dprintDouble(outs, val, flag, width, precision); - break; - } - case 'd': - { - long val = 0; - if (length == 'l') - val = va_arg(ap, long); - else if (length == 'h') - val = (long)va_arg(ap, int); - else - val = (long)va_arg(ap, int); - dprintInt(outs, val, 10, flag, width, precision); - break; - } - case 'x': - { - long val = 0; - if (length == 'l') - val = va_arg(ap, long); - else if (length == 'h') - val = (long)va_arg(ap, int); - else - val = (long)va_arg(ap, int); - dprintInt(outs, val, 16, flag, width, precision); - break; - } - case 's': - { - DOMString val = va_arg(ap, char *); - dprintString(outs, val, flag, width, precision); - break; - } - default: - { - break; - } - } - } - - return 1; -} -*/ - -//######################################################################### -//# B A S I C I N P U T S T R E A M -//######################################################################### - -/** - * - */ -BasicInputStream::BasicInputStream(InputStream &sourceStream) - : source(sourceStream) -{ - closed = false; -} - -/** - * Returns the number of bytes that can be read (or skipped over) from - * this input stream without blocking by the next caller of a method for - * this input stream. - */ -int BasicInputStream::available() -{ - if (closed) - return 0; - return source.available(); -} - - -/** - * Closes this input stream and releases any system resources - * associated with the stream. - */ -void BasicInputStream::close() -{ - if (closed) - return; - source.close(); - closed = true; -} - -/** - * Reads the next byte of data from the input stream. -1 if EOF - */ -int BasicInputStream::get() -{ - if (closed) - return -1; - return source.get(); -} - - - -//######################################################################### -//# B A S I C O U T P U T S T R E A M -//######################################################################### - -/** - * - */ -BasicOutputStream::BasicOutputStream(OutputStream &destinationStream) - : destination(destinationStream) -{ - closed = false; -} - -/** - * Closes this output stream and releases any system resources - * associated with this stream. - */ -void BasicOutputStream::close() -{ - if (closed) - return; - destination.close(); - closed = true; -} - -/** - * Flushes this output stream and forces any buffered output - * bytes to be written out. - */ -void BasicOutputStream::flush() -{ - if (closed) - return; - destination.flush(); -} - -/** - * Writes the specified byte to this output stream. - */ -int BasicOutputStream::put(gunichar ch) -{ - if (closed) - return -1; - destination.put(ch); - return 1; -} - - -//######################################################################### -//# B A S I C R E A D E R -//######################################################################### -BasicReader::BasicReader(Reader &sourceReader) -{ - source = &sourceReader; -} - -/** - * Returns the number of bytes that can be read (or skipped over) from - * this reader without blocking by the next caller of a method for - * this reader. - */ -int BasicReader::available() -{ - if (source) - return source->available(); - else - return 0; -} - - -/** - * Closes this reader and releases any system resources - * associated with the reader. - */ -void BasicReader::close() -{ - if (source) - source->close(); -} - -/** - * Reads the next byte of data from the reader. - */ -gunichar BasicReader::get() -{ - if (source) - return source->get(); - else - return (gunichar)-1; -} - - -/** - * Reads a line of data from the reader. - */ -Glib::ustring BasicReader::readLine() -{ - Glib::ustring str; - while (available() > 0) - { - gunichar ch = get(); - if (ch == '\n') - break; - str.push_back(ch); - } - return str; -} - -/** - * Reads a line of data from the reader. - */ -Glib::ustring BasicReader::readWord() -{ - Glib::ustring str; - while (available() > 0) - { - gunichar ch = get(); - if (!g_unichar_isprint(ch)) - break; - str.push_back(ch); - } - return str; -} - - -static bool getLong(Glib::ustring &str, long *val) -{ - const char *begin = str.raw().c_str(); - char *end; - long ival = strtol(begin, &end, 10); - if (str == end) - return false; - *val = ival; - return true; -} - -static bool getULong(Glib::ustring &str, unsigned long *val) -{ - const char *begin = str.raw().c_str(); - char *end; - unsigned long ival = strtoul(begin, &end, 10); - if (str == end) - return false; - *val = ival; - return true; -} - -static bool getDouble(Glib::ustring &str, double *val) -{ - const char *begin = str.raw().c_str(); - char *end; - double ival = strtod(begin, &end); - if (str == end) - return false; - *val = ival; - return true; -} - - - -const Reader &BasicReader::readBool (bool& val ) -{ - Glib::ustring buf = readWord(); - if (buf == "true") - val = true; - else - val = false; - return *this; -} - -const Reader &BasicReader::readShort (short& val ) -{ - Glib::ustring buf = readWord(); - long ival; - if (getLong(buf, &ival)) - val = (short) ival; - return *this; -} - -const Reader &BasicReader::readUnsignedShort (unsigned short& val ) -{ - Glib::ustring buf = readWord(); - unsigned long ival; - if (getULong(buf, &ival)) - val = (unsigned short) ival; - return *this; -} - -const Reader &BasicReader::readInt (int& val ) -{ - Glib::ustring buf = readWord(); - long ival; - if (getLong(buf, &ival)) - val = (int) ival; - return *this; -} - -const Reader &BasicReader::readUnsignedInt (unsigned int& val ) -{ - Glib::ustring buf = readWord(); - unsigned long ival; - if (getULong(buf, &ival)) - val = (unsigned int) ival; - return *this; -} - -const Reader &BasicReader::readLong (long& val ) -{ - Glib::ustring buf = readWord(); - long ival; - if (getLong(buf, &ival)) - val = ival; - return *this; -} - -const Reader &BasicReader::readUnsignedLong (unsigned long& val ) -{ - Glib::ustring buf = readWord(); - unsigned long ival; - if (getULong(buf, &ival)) - val = ival; - return *this; -} - -const Reader &BasicReader::readFloat (float& val ) -{ - Glib::ustring buf = readWord(); - double ival; - if (getDouble(buf, &ival)) - val = (float)ival; - return *this; -} - -const Reader &BasicReader::readDouble (double& val ) -{ - Glib::ustring buf = readWord(); - double ival; - if (getDouble(buf, &ival)) - val = ival; - return *this; -} - - - -//######################################################################### -//# I N P U T S T R E A M R E A D E R -//######################################################################### - - -InputStreamReader::InputStreamReader(InputStream &inputStreamSource) - : inputStream(inputStreamSource) -{ -} - - - -/** - * Close the underlying OutputStream - */ -void InputStreamReader::close() -{ - inputStream.close(); -} - -/** - * Flush the underlying OutputStream - */ -int InputStreamReader::available() -{ - return inputStream.available(); -} - -/** - * Overloaded to receive its bytes from an InputStream - * rather than a Reader - */ -gunichar InputStreamReader::get() -{ - //Do we need conversions here? - gunichar ch = (gunichar)inputStream.get(); - return ch; -} - - - -//######################################################################### -//# S T D R E A D E R -//######################################################################### - - -/** - * - */ -StdReader::StdReader() -{ - inputStream = new StdInputStream(); -} - -/** - * - */ -StdReader::~StdReader() -{ - delete inputStream; -} - - - -/** - * Close the underlying OutputStream - */ -void StdReader::close() -{ - inputStream->close(); -} - -/** - * Flush the underlying OutputStream - */ -int StdReader::available() -{ - return inputStream->available(); -} - -/** - * Overloaded to receive its bytes from an InputStream - * rather than a Reader - */ -gunichar StdReader::get() -{ - //Do we need conversions here? - gunichar ch = (gunichar)inputStream->get(); - return ch; -} - - - - -//######################################################################### -//# B A S I C W R I T E R -//######################################################################### -/** - * - */ -BasicWriter::BasicWriter(const Writer &destinationWriter) -{ - destination = (Writer*) &destinationWriter; -} - -/** - * Closes this writer and releases any system resources - * associated with this writer. - */ -void BasicWriter::close() -{ - if (destination) - destination->close(); -} - -/** - * Flushes this output stream and forces any buffered output - * bytes to be written out. - */ -void BasicWriter::flush() -{ - if (destination) - destination->flush(); -} - -/** - * Writes the specified byte to this output writer. - */ -int BasicWriter::put(gunichar ch) -{ - if (destination && destination->put(ch)>=0) - return 1; - return -1; -} - -/** - * Provide printf()-like formatting - */ -Writer &BasicWriter::printf(char const *fmt, ...) -{ - va_list args; - va_start(args, fmt); - gchar *buf = g_strdup_vprintf(fmt, args); - va_end(args); - if (buf) { - writeString(buf); - g_free(buf); - } - return *this; -} -/** - * Writes the specified character to this output writer. - */ -Writer &BasicWriter::writeChar(char ch) -{ - gunichar uch = ch; - put(uch); - return *this; -} - - -/** - * Writes the specified unicode string to this output writer. - */ -Writer &BasicWriter::writeUString(Glib::ustring &str) -{ - for (int i=0; i< (int)str.size(); i++) - put(str[i]); - return *this; -} - -/** - * Writes the specified standard string to this output writer. - */ -Writer &BasicWriter::writeStdString(std::string &str) -{ - Glib::ustring tmp(str); - writeUString(tmp); - return *this; -} - -/** - * Writes the specified character string to this output writer. - */ -Writer &BasicWriter::writeString(const char *str) -{ - Glib::ustring tmp; - if (str) - tmp = str; - else - tmp = "null"; - writeUString(tmp); - return *this; -} - - - - -/** - * - */ -Writer &BasicWriter::writeBool (bool val ) -{ - if (val) - writeString("true"); - else - writeString("false"); - return *this; -} - - -/** - * - */ -Writer &BasicWriter::writeShort (short val ) -{ - gchar *buf = g_strdup_printf("%d", val); - if (buf) { - writeString(buf); - g_free(buf); - } - return *this; -} - - - -/** - * - */ -Writer &BasicWriter::writeUnsignedShort (unsigned short val ) -{ - gchar *buf = g_strdup_printf("%u", val); - if (buf) { - writeString(buf); - g_free(buf); - } - return *this; -} - -/** - * - */ -Writer &BasicWriter::writeInt (int val) -{ - gchar *buf = g_strdup_printf("%d", val); - if (buf) { - writeString(buf); - g_free(buf); - } - return *this; -} - -/** - * - */ -Writer &BasicWriter::writeUnsignedInt (unsigned int val) -{ - gchar *buf = g_strdup_printf("%u", val); - if (buf) { - writeString(buf); - g_free(buf); - } - return *this; -} - -/** - * - */ -Writer &BasicWriter::writeLong (long val) -{ - gchar *buf = g_strdup_printf("%ld", val); - if (buf) { - writeString(buf); - g_free(buf); - } - return *this; -} - -/** - * - */ -Writer &BasicWriter::writeUnsignedLong(unsigned long val) -{ - gchar *buf = g_strdup_printf("%lu", val); - if (buf) { - writeString(buf); - g_free(buf); - } - return *this; -} - -/** - * - */ -Writer &BasicWriter::writeFloat(float val) -{ -#if 1 - gchar *buf = g_strdup_printf("%8.3f", val); - if (buf) { - writeString(buf); - g_free(buf); - } -#else - std::string tmp = ftos(val, 'g', 8, 3, 0); - writeStdString(tmp); -#endif - return *this; -} - -/** - * - */ -Writer &BasicWriter::writeDouble(double val) -{ -#if 1 - gchar *buf = g_strdup_printf("%8.3f", val); - if (buf) { - writeString(buf); - g_free(buf); - } -#else - std::string tmp = ftos(val, 'g', 8, 3, 0); - writeStdString(tmp); -#endif - return *this; -} - - - - -//######################################################################### -//# O U T P U T S T R E A M W R I T E R -//######################################################################### - - -OutputStreamWriter::OutputStreamWriter(OutputStream &outputStreamDest) - : outputStream(outputStreamDest) -{ -} - - - -/** - * Close the underlying OutputStream - */ -void OutputStreamWriter::close() -{ - flush(); - outputStream.close(); -} - -/** - * Flush the underlying OutputStream - */ -void OutputStreamWriter::flush() -{ - outputStream.flush(); -} - -/** - * Overloaded to redirect the output chars from the next Writer - * in the chain to an OutputStream instead. - */ -int OutputStreamWriter::put(gunichar ch) -{ - if (outputStream.put(ch)>=0) - return 1; - return -1; -} - -//######################################################################### -//# S T D W R I T E R -//######################################################################### - - -/** - * - */ -StdWriter::StdWriter() -{ - outputStream = new StdOutputStream(); -} - -/** - * - */ -StdWriter::~StdWriter() -{ - delete outputStream; -} - -/** - * Close the underlying OutputStream - */ -void StdWriter::close() -{ - flush(); - outputStream->close(); -} - -/** - * Flush the underlying OutputStream - */ -void StdWriter::flush() -{ - outputStream->flush(); -} - -/** - * Overloaded to redirect the output chars from the next Writer - * in the chain to an OutputStream instead. - */ -int StdWriter::put(gunichar ch) -{ - if (outputStream && (outputStream->put(ch)>=0)) - return 1; - return -1; -} - - - -//############################################### -//# O P E R A T O R S -//############################################### -//# Normally these would be in the .h, but we -//# just want to be absolutely certain that these -//# are never multiply defined. Easy to maintain, -//# though. Just occasionally copy/paste these -//# into the .h , and replace the {} with a ; -//############################################### - - - - -const Reader& operator>> (Reader &reader, bool& val ) - { return reader.readBool(val); } - -const Reader& operator>> (Reader &reader, short &val) - { return reader.readShort(val); } - -const Reader& operator>> (Reader &reader, unsigned short &val) - { return reader.readUnsignedShort(val); } - -const Reader& operator>> (Reader &reader, int &val) - { return reader.readInt(val); } - -const Reader& operator>> (Reader &reader, unsigned int &val) - { return reader.readUnsignedInt(val); } - -const Reader& operator>> (Reader &reader, long &val) - { return reader.readLong(val); } - -const Reader& operator>> (Reader &reader, unsigned long &val) - { return reader.readUnsignedLong(val); } - -const Reader& operator>> (Reader &reader, float &val) - { return reader.readFloat(val); } - -const Reader& operator>> (Reader &reader, double &val) - { return reader.readDouble(val); } - - - -Writer& operator<< (Writer &writer, char val) - { return writer.writeChar(val); } - -Writer& operator<< (Writer &writer, Glib::ustring &val) - { return writer.writeUString(val); } - -Writer& operator<< (Writer &writer, std::string &val) - { return writer.writeStdString(val); } - -Writer& operator<< (Writer &writer, char const *val) - { return writer.writeString(val); } - -Writer& operator<< (Writer &writer, bool val) - { return writer.writeBool(val); } - -Writer& operator<< (Writer &writer, short val) - { return writer.writeShort(val); } - -Writer& operator<< (Writer &writer, unsigned short val) - { return writer.writeUnsignedShort(val); } - -Writer& operator<< (Writer &writer, int val) - { return writer.writeInt(val); } - -Writer& operator<< (Writer &writer, unsigned int val) - { return writer.writeUnsignedInt(val); } - -Writer& operator<< (Writer &writer, long val) - { return writer.writeLong(val); } - -Writer& operator<< (Writer &writer, unsigned long val) - { return writer.writeUnsignedLong(val); } - -Writer& operator<< (Writer &writer, float val) - { return writer.writeFloat(val); } - -Writer& operator<< (Writer &writer, double val) - { return writer.writeDouble(val); } - -} //namespace io -} //namespace dom -} //namespace w3c -} //namespace org - - -//######################################################################### -//# E N D O F F I L E -//######################################################################### diff --git a/src/dom/io/domstream.h b/src/dom/io/domstream.h deleted file mode 100644 index edd180b83..000000000 --- a/src/dom/io/domstream.h +++ /dev/null @@ -1,684 +0,0 @@ -#ifndef SEEN_DOMSTREAM_H -#define SEEN_DOMSTREAM_H -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2007 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include <cstdio> -#include <dom/dom.h> - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace io -{ - -class StreamException : public std::exception -{ -public: - - StreamException(const char *theReason) throw() - { reason = theReason; } - StreamException(Glib::ustring &theReason) throw() - { reason = theReason; } - virtual ~StreamException() throw() - { } - char const *what() const throw() - { return reason.c_str(); } - -private: - Glib::ustring reason; - -}; - -//######################################################################### -//# I N P U T S T R E A M -//######################################################################### - -/** - * This interface is the base of all input stream classes. Users who wish - * to make an InputStream that is part of a chain should inherit from - * BasicInputStream. Inherit from this class to make a source endpoint, - * such as a URI or buffer. - * - */ -class InputStream -{ - -public: - - /** - * Constructor. - */ - InputStream() {} - - /** - * Destructor - */ - virtual ~InputStream() {} - - /** - * Return the number of bytes that are currently available - * to be read - */ - virtual int available() = 0; - - /** - * Do whatever it takes to 'close' this input stream - * The most likely implementation of this method will be - * for endpoints that use a resource for their data. - */ - virtual void close() = 0; - - /** - * Read one byte from this input stream. This is a blocking - * call. If no data is currently available, this call will - * not return until it exists. If the user does not want - * their code to block, then the usual solution is: - * if (available() > 0) - * myChar = get(); - * This call returns -1 on end-of-file. - */ - virtual int get() = 0; - -}; // class InputStream - - - - -/** - * This is the class that most users should inherit, to provide - * their own streams. - * - */ -class BasicInputStream : public InputStream -{ - -public: - - BasicInputStream(InputStream &sourceStream); - - virtual ~BasicInputStream() {} - - virtual int available(); - - virtual void close(); - - virtual int get(); - -protected: - - bool closed; - - InputStream &source; - -private: - - -}; // class BasicInputStream - - - -/** - * Convenience class for reading from standard input - */ -class StdInputStream : public InputStream -{ -public: - - int available() - { return 0; } - - void close() - { /* do nothing */ } - - int get() - { return getchar(); } - -}; - - - - - -//######################################################################### -//# O U T P U T S T R E A M -//######################################################################### - -/** - * This interface is the base of all input stream classes. Users who wish - * to make an OutputStream that is part of a chain should inherit from - * BasicOutputStream. Inherit from this class to make a destination endpoint, - * such as a URI or buffer. - */ -class OutputStream -{ - -public: - - /** - * Constructor. - */ - OutputStream() {} - - /** - * Destructor - */ - virtual ~OutputStream() {} - - /** - * This call should - * 1. flush itself - * 2. close itself - * 3. close the destination stream - */ - virtual void close() = 0; - - /** - * This call should push any pending data it might have to - * the destination stream. It should NOT call flush() on - * the destination stream. - */ - virtual void flush() = 0; - - /** - * Send one byte to the destination stream. - */ - virtual int put(gunichar ch) = 0; - - -}; // class OutputStream - - -/** - * This is the class that most users should inherit, to provide - * their own output streams. - */ -class BasicOutputStream : public OutputStream -{ - -public: - - BasicOutputStream(OutputStream &destinationStream); - - virtual ~BasicOutputStream() {} - - virtual void close(); - - virtual void flush(); - - virtual int put(gunichar ch); - -protected: - - bool closed; - - OutputStream &destination; - - -}; // class BasicOutputStream - - - -/** - * Convenience class for writing to standard output - */ -class StdOutputStream : public OutputStream -{ -public: - - void close() - { } - - void flush() - { } - - int put(gunichar ch) - { return putchar(ch); } - -}; - - - - -//######################################################################### -//# R E A D E R -//######################################################################### - -/** - * This interface and its descendants are for unicode character-oriented input - * - */ -class Reader -{ - -public: - - /** - * Constructor. - */ - Reader() {} - - /** - * Destructor - */ - virtual ~Reader() {} - - - virtual int available() = 0; - - virtual void close() = 0; - - virtual gunichar get() = 0; - - virtual Glib::ustring readLine() = 0; - - virtual Glib::ustring readWord() = 0; - - /* Input formatting */ - virtual const Reader& readBool (bool& val ) = 0; - virtual const Reader& operator>> (bool& val ) = 0; - - virtual const Reader& readShort (short &val) = 0; - virtual const Reader& operator>> (short &val) = 0; - - virtual const Reader& readUnsignedShort (unsigned short &val) = 0; - virtual const Reader& operator>> (unsigned short &val) = 0; - - virtual const Reader& readInt (int &val) = 0; - virtual const Reader& operator>> (int &val) = 0; - - virtual const Reader& readUnsignedInt (unsigned int &val) = 0; - virtual const Reader& operator>> (unsigned int &val) = 0; - - virtual const Reader& readLong (long &val) = 0; - virtual const Reader& operator>> (long &val) = 0; - - virtual const Reader& readUnsignedLong (unsigned long &val) = 0; - virtual const Reader& operator>> (unsigned long &val) = 0; - - virtual const Reader& readFloat (float &val) = 0; - virtual const Reader& operator>> (float &val) = 0; - - virtual const Reader& readDouble (double &val) = 0; - virtual const Reader& operator>> (double &val) = 0; - -}; // interface Reader - - - -/** - * This class and its descendants are for unicode character-oriented input - * - */ -class BasicReader : public Reader -{ - -public: - - BasicReader(Reader &sourceStream); - - virtual ~BasicReader() {} - - virtual int available(); - - virtual void close(); - - virtual gunichar get(); - - virtual Glib::ustring readLine(); - - virtual Glib::ustring readWord(); - - /* Input formatting */ - virtual const Reader& readBool (bool& val ); - virtual const Reader& operator>> (bool& val ) - { return readBool(val); } - - virtual const Reader& readShort (short &val); - virtual const Reader& operator>> (short &val) - { return readShort(val); } - - virtual const Reader& readUnsignedShort (unsigned short &val); - virtual const Reader& operator>> (unsigned short &val) - { return readUnsignedShort(val); } - - virtual const Reader& readInt (int &val); - virtual const Reader& operator>> (int &val) - { return readInt(val); } - - virtual const Reader& readUnsignedInt (unsigned int &val); - virtual const Reader& operator>> (unsigned int &val) - { return readUnsignedInt(val); } - - virtual const Reader& readLong (long &val); - virtual const Reader& operator>> (long &val) - { return readLong(val); } - - virtual const Reader& readUnsignedLong (unsigned long &val); - virtual const Reader& operator>> (unsigned long &val) - { return readUnsignedLong(val); } - - virtual const Reader& readFloat (float &val); - virtual const Reader& operator>> (float &val) - { return readFloat(val); } - - virtual const Reader& readDouble (double &val); - virtual const Reader& operator>> (double &val) - { return readDouble(val); } - - -protected: - - Reader *source; - - BasicReader() - { source = NULL; } - -private: - -}; // class BasicReader - - - -/** - * Class for placing a Reader on an open InputStream - * - */ -class InputStreamReader : public BasicReader -{ -public: - - InputStreamReader(InputStream &inputStreamSource); - - /*Overload these 3 for your implementation*/ - virtual int available(); - - virtual void close(); - - virtual gunichar get(); - - -private: - - InputStream &inputStream; - - -}; - -/** - * Convenience class for reading formatted from standard input - * - */ -class StdReader : public BasicReader -{ -public: - - StdReader(); - - virtual ~StdReader(); - - /*Overload these 3 for your implementation*/ - virtual int available(); - - virtual void close(); - - virtual gunichar get(); - - -private: - - InputStream *inputStream; - - -}; - - - -//######################################################################### -//# W R I T E R -//######################################################################### - -/** - * This interface and its descendants are for unicode character-oriented output - * - */ -class Writer -{ - -public: - - /** - * Constructor. - */ - Writer() {} - - /** - * Destructor - */ - virtual ~Writer() {} - - virtual void close() = 0; - - virtual void flush() = 0; - - virtual int put(gunichar ch) = 0; - - /* Formatted output */ - virtual Writer& printf(char const *fmt, ...) G_GNUC_PRINTF(2,3) = 0; - - virtual Writer& writeChar(char val) = 0; - - virtual Writer& writeUString(Glib::ustring &val) = 0; - - virtual Writer& writeStdString(std::string &val) = 0; - - virtual Writer& writeString(const char *str) = 0; - - virtual Writer& writeBool (bool val ) = 0; - - virtual Writer& writeShort (short val ) = 0; - - virtual Writer& writeUnsignedShort (unsigned short val ) = 0; - - virtual Writer& writeInt (int val ) = 0; - - virtual Writer& writeUnsignedInt (unsigned int val ) = 0; - - virtual Writer& writeLong (long val ) = 0; - - virtual Writer& writeUnsignedLong (unsigned long val ) = 0; - - virtual Writer& writeFloat (float val ) = 0; - - virtual Writer& writeDouble (double val ) = 0; - - - -}; // interface Writer - - -/** - * This class and its descendants are for unicode character-oriented output - * - */ -class BasicWriter : public Writer -{ - -public: - - BasicWriter(const Writer &destinationWriter); - - virtual ~BasicWriter() {} - - /*Overload these 3 for your implementation*/ - virtual void close(); - - virtual void flush(); - - virtual int put(gunichar ch); - - - - /* Formatted output */ - virtual Writer &printf(char const *fmt, ...) G_GNUC_PRINTF(2,3); - - virtual Writer& writeChar(char val); - - virtual Writer& writeUString(Glib::ustring &val); - - virtual Writer& writeStdString(std::string &val); - - virtual Writer& writeString(const char *str); - - virtual Writer& writeBool (bool val ); - - virtual Writer& writeShort (short val ); - - virtual Writer& writeUnsignedShort (unsigned short val ); - - virtual Writer& writeInt (int val ); - - virtual Writer& writeUnsignedInt (unsigned int val ); - - virtual Writer& writeLong (long val ); - - virtual Writer& writeUnsignedLong (unsigned long val ); - - virtual Writer& writeFloat (float val ); - - virtual Writer& writeDouble (double val ); - - -protected: - - Writer *destination; - - BasicWriter() - { destination = NULL; } - -private: - -}; // class BasicWriter - - -Writer& operator<< (Writer &writer, char val); - -Writer& operator<< (Writer &writer, Glib::ustring &val); - -Writer& operator<< (Writer &writer, std::string &val); - -Writer& operator<< (Writer &writer, char const *val); - -Writer& operator<< (Writer &writer, bool val); - -Writer& operator<< (Writer &writer, short val); - -Writer& operator<< (Writer &writer, unsigned short val); - -Writer& operator<< (Writer &writer, int val); - -Writer& operator<< (Writer &writer, unsigned int val); - -Writer& operator<< (Writer &writer, long val); - -Writer& operator<< (Writer &writer, unsigned long val); - -Writer& operator<< (Writer &writer, float val); - -Writer& operator<< (Writer &writer, double val); - - -/** - * Class for placing a Writer on an open OutputStream - * - */ -class OutputStreamWriter : public BasicWriter -{ -public: - - OutputStreamWriter(OutputStream &outputStreamDest); - - /*Overload these 3 for your implementation*/ - virtual void close(); - virtual void flush(); - virtual int put(gunichar ch); - - -private: - - OutputStream &outputStream; - - -}; - - -/** - * Convenience class for writing to standard output - */ -class StdWriter : public BasicWriter -{ -public: - StdWriter(); - - virtual ~StdWriter(); - virtual void close(); - virtual void flush(); - virtual int put(gunichar ch); - - -private: - - OutputStream *outputStream; - -}; - -//######################################################################### -//# U T I L I T Y -//######################################################################### - -void pipeStream(InputStream &source, OutputStream &dest); - - -} //namespace io -} //namespace dom -} //namespace w3c -} //namespace org - - -#endif // SEEN_DOMSTREAM_H - -//######################################################################### -//# E N D O F F I L E -//######################################################################### diff --git a/src/dom/ls.h b/src/dom/ls.h deleted file mode 100644 index 6e9a940f7..000000000 --- a/src/dom/ls.h +++ /dev/null @@ -1,947 +0,0 @@ -#ifndef SEEN_LS_H -#define SEEN_LS_H -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "dom.h" -#include "events.h" -#include "traversal.h" - -#include "io/domstream.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace ls -{ - - - -//Local definitions -//The idl said Object. Since this is undefined, we will -//use our own class which is designed to be a bit similar to -//java.io streams - -typedef dom::io::InputStream LSInputStream; -typedef dom::io::OutputStream LSOutputStream; -typedef dom::io::Reader LSReader; -typedef dom::io::Writer LSWriter; - - -//local definitions -typedef dom::DOMString DOMString; -typedef dom::DOMConfiguration DOMConfiguration; -typedef dom::Node Node; -typedef dom::NodePtr NodePtr; -typedef dom::Document Document; -typedef dom::DocumentPtr DocumentPtr; -typedef dom::Element Element; -typedef dom::ElementPtr ElementPtr; - - -//forward declarations -class LSParser; -class LSSerializer; -class LSInput; -class LSOutput; -class LSParserFilter; -class LSSerializerFilter; - - - -/*######################################################################### -## LSException -#########################################################################*/ - -/** - * Maybe this should inherit from DOMException? - */ -class LSException -{ - -public: - - LSException(const DOMString &reasonMsg) - { msg = reasonMsg; } - - LSException(short theCode) - { - code = theCode; - } - - virtual ~LSException() throw() - {} - - /** - * - */ - unsigned short code; - - /** - * - */ - DOMString msg; - - /** - * Get a string, translated from the code. - * Like std::exception. Not in spec. - */ - const char *what() - { return msg.c_str(); } - - - -}; - - -/** - * LSExceptionCode - */ -typedef enum - { - PARSE_ERR = 81, - SERIALIZE_ERR = 82 - } XPathExceptionCode; - - -/*######################################################################### -## LSParserFilter -#########################################################################*/ - -/** - * - */ -class LSParserFilter -{ -public: - - // Constants returned by startElement and acceptNode - typedef enum - { - FILTER_ACCEPT = 1, - FILTER_REJECT = 2, - FILTER_SKIP = 3, - FILTER_INTERRUPT = 4 - } ReturnValues; - - - /** - * - */ - virtual unsigned short startElement(const ElementPtr elementArg) =0; - - /** - * - */ - virtual unsigned short acceptNode(const NodePtr nodeArg) =0; - - /** - * - */ - virtual unsigned long getWhatToShow() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~LSParserFilter() {} - - - -}; - -/*######################################################################### -## LSInput -#########################################################################*/ - -/** - * - */ -class LSInput -{ -public: - - /** - * - */ - virtual LSReader *getCharacterStream() const - { return characterStream; } - - /** - * - */ - virtual void setCharacterStream(const LSReader *val) - { characterStream = (LSReader *)val; } - - /** - * - */ - virtual LSInputStream *getByteStream() const - { return byteStream; } - - /** - * - */ - virtual void setByteStream(const LSInputStream *val) - { byteStream = (LSInputStream *)val; } - - /** - * - */ - virtual DOMString getStringData() const - { return stringData; } - - /** - * - */ - virtual void setStringData(const DOMString &val) - { stringData = val; } - - /** - * - */ - virtual DOMString getSystemId() const - { return systemId; } - - /** - * - */ - virtual void setSystemId(const DOMString &val) - { systemId = val; } - - /** - * - */ - virtual DOMString getPublicId() const - { return publicId; } - - /** - * - */ - virtual void setPublicId(const DOMString &val) - { publicId = val; } - - /** - * - */ - virtual DOMString getBaseURI() const - { return baseURI; } - - /** - * - */ - virtual void setBaseURI(const DOMString &val) - { baseURI = val; } - - /** - * - */ - virtual DOMString getEncoding() const - { return encoding; } - - /** - * - */ - virtual void setEncoding(const DOMString &val) - { encoding = val; } - - /** - * - */ - virtual bool getCertifiedText() const - { return certifiedText; } - - /** - * - */ - virtual void setCertifiedText(bool val) - { certifiedText = val; } - - //################## - //# Non-API methods - //################## - - - /** - * - */ - LSInput() - { - characterStream = NULL; - byteStream = NULL; - stringData = ""; - systemId = ""; - publicId = ""; - baseURI = ""; - encoding = ""; - certifiedText = false; - } - - - - /** - * - */ - LSInput(const LSInput &other) - { - characterStream = other.characterStream; - byteStream = other.byteStream; - stringData = other.stringData; - systemId = other.systemId; - publicId = other.publicId; - baseURI = other.baseURI; - encoding = other.encoding; - certifiedText = other.certifiedText; - } - - /** - * - */ - virtual ~LSInput() - {} - -private: - - LSReader *characterStream; - LSInputStream *byteStream; - DOMString stringData; - DOMString systemId; - DOMString publicId; - DOMString baseURI; - DOMString encoding; - bool certifiedText; - - -}; - - -/*######################################################################### -## LSParser -#########################################################################*/ - -/** - * - */ -class LSParser -{ -public: - - - /** - * - */ - virtual DOMConfiguration *getDomConfig() - { return NULL; } - - /** - * - */ - virtual LSParserFilter *getFilter() - { return filter; } - - /** - * - */ - virtual void setFilter(const LSParserFilter *val) - { filter = const_cast<LSParserFilter *>(val); } - - /** - * - */ - virtual bool getAsync() - { return false; } - - /** - * - */ - virtual bool getBusy() - { return false; } - - /** - * - */ - virtual DocumentPtr parse(const LSInput &/*input*/) - throw(dom::DOMException, LSException) - { return NULL; } - - - /** - * - */ - virtual DocumentPtr parseURI(const DOMString &/*uri*/) - throw(dom::DOMException, LSException) - { return NULL; } - - typedef enum - { - ACTION_APPEND_AS_CHILDREN = 1, - ACTION_REPLACE_CHILDREN = 2, - ACTION_INSERT_BEFORE = 3, - ACTION_INSERT_AFTER = 4, - ACTION_REPLACE = 5 - } ActionTypes; - - - /** - * - */ - virtual NodePtr parseWithContext(const LSInput &/*input*/, - const NodePtr /*contextArg*/, - unsigned short /*action*/) - throw(dom::DOMException, LSException) - { return NULL; } - - /** - * - */ - virtual void abort() - {} - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - LSParser() - { - filter = NULL; - } - - /** - * - */ - LSParser(const LSParser &other) - { - filter = other.filter; - } - - /** - * - */ - virtual ~LSParser() {} - -protected: - - LSParserFilter *filter; -}; - - - -/*######################################################################### -## LSResourceResolver -#########################################################################*/ - -/** - * - */ -class LSResourceResolver -{ -public: - - /** - * - */ - virtual LSInput resolveResource(const DOMString &/*type*/, - const DOMString &/*namespaceURI*/, - const DOMString &/*publicId*/, - const DOMString &/*systemId*/, - const DOMString &/*baseURI*/) - { - LSInput input; - //do something - return input; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - LSResourceResolver() {} - - /** - * - */ - LSResourceResolver(const LSResourceResolver &/*other*/) - { - } - - /** - * - */ - virtual ~LSResourceResolver() {} - - - -}; - -/*######################################################################### -## LSOutput -#########################################################################*/ - -/** - * - */ -class LSOutput -{ -public: - - /** - * - */ - virtual LSWriter *getCharacterStream() const - { return characterStream; } - - /** - * - */ - virtual void setCharacterStream(const LSWriter *val) - { characterStream = (LSWriter *)val; } - - /** - * - */ - virtual LSOutputStream *getByteStream() const - { return byteStream; } - - /** - * - */ - virtual void setByteStream(const LSOutputStream *val) - { byteStream = (LSOutputStream *) val; } - - /** - * - */ - virtual DOMString getSystemId() const - { return systemId; } - - /** - * - */ - virtual void setSystemId(const DOMString &val) - { systemId = val; } - - /** - * - */ - virtual DOMString getEncoding() const - { return encoding; } - - /** - * - */ - virtual void setEncoding(const DOMString &val) - { encoding = val; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - LSOutput() - { - characterStream = NULL; - byteStream = NULL; - systemId = ""; - encoding = ""; - } - - - /** - * - */ - LSOutput(const LSOutput &other) - { - characterStream = other.characterStream; - byteStream = other.byteStream; - systemId = other.systemId; - encoding = other.encoding; - } - - /** - * - */ - virtual ~LSOutput() - {} - -private: - - LSWriter *characterStream; - LSOutputStream *byteStream; - DOMString systemId; - DOMString encoding; - -}; - - -/*######################################################################### -## LSSerializer -#########################################################################*/ - -/** - * - */ -class LSSerializer -{ -public: - - /** - * - */ - virtual DOMConfiguration *getDomConfig() - { return NULL; } - - /** - * - */ - virtual DOMString getNewLine() - { return newLine; } - /** - * - */ - virtual void setNewLine(const DOMString &val) - { newLine = val; } - - /** - * - */ - virtual LSSerializerFilter *getFilter() - { return filter; } - - /** - * - */ - virtual void setFilter(const LSSerializerFilter *val) - { filter = const_cast<LSSerializerFilter *>(val); } - - /** - * - */ - virtual bool write(const NodePtr /*nodeArg*/, - const LSOutput &/*destination*/) - throw (LSException) - { return false; } - - /** - * - */ - virtual bool writeToURI(const NodePtr /*nodeArg*/, - const DOMString &/*uri*/) - throw(LSException) - { return false; } - - /** - * - */ - virtual DOMString writeToString(const NodePtr /*nodeArg*/) - throw(dom::DOMException, LSException) - { - DOMString str; - return str; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - LSSerializer() - { - filter = NULL; - newLine = "\n"; - } - - /** - * - */ - LSSerializer(const LSSerializer &other) - { - filter = other.filter; - newLine = other.newLine; - } - - /** - * - */ - virtual ~LSSerializer() {} - -protected: - - LSSerializerFilter *filter; - DOMString newLine; - -}; - -/*######################################################################### -## LSProgressEvent -#########################################################################*/ - -/** - * - */ -class LSProgressEvent : virtual public events::Event -{ -public: - - /** - * - */ - virtual LSInput &getInput() - { - return input; - } - - /** - * - */ - virtual unsigned long getPosition() - { return position; } - - /** - * - */ - virtual unsigned long getTotalSize() - { return totalSize; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - LSProgressEvent(const LSInput &inputArg, unsigned long positionArg, - unsigned long totalSizeArg) : input((LSInput &)inputArg) - { - position = positionArg; - totalSize = totalSizeArg; - } - - - /** - * - */ - LSProgressEvent(const LSProgressEvent &other) - : events::Event(other) , input(other.input) - { - position = other.position; - totalSize = other.totalSize; - } - - - /** - * - */ - virtual ~LSProgressEvent() {} - -protected: - - LSInput &input; - unsigned long position; - unsigned long totalSize; - -}; - -/*######################################################################### -## LSLoadEvent -#########################################################################*/ - -/** - * - */ -class LSLoadEvent : public events::Event -{ -public: - - /** - * - */ - virtual DocumentPtr getNewDocument() - { return newDocument; } - - /** - * - */ - virtual LSInput &getInput() - { return input; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - LSLoadEvent(const LSInput &inputArg, - const DocumentPtr docArg) - : input((LSInput &)inputArg) - { newDocument = docArg; } - - /** - * - */ - LSLoadEvent(const LSLoadEvent &other) - : events::Event(other) , input(other.input) - { - newDocument = other.newDocument; - } - - /** - * - */ - virtual ~LSLoadEvent() {} - -protected: - - DocumentPtr newDocument; - - LSInput &input; - - -}; - - - -/*######################################################################### -## LSSerializerFilter -#########################################################################*/ - -/** - * - */ -class LSSerializerFilter : virtual public traversal::NodeFilter -{ -public: - - /** - * - */ - virtual unsigned long getWhatToShow() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~LSSerializerFilter() {} -}; - - - - -/*######################################################################### -## DOMImplementationLS -#########################################################################*/ - -/** - * - */ -class DOMImplementationLS -{ -public: - - typedef enum - { - MODE_SYNCHRONOUS = 1, - MODE_ASYNCHRONOUS = 2 - } DOMImplementationLSMode; - - /** - * To use, for this and subclasses: - * LSParser &parser = myImplementation.createLSParser(mode, schemaType); - */ - virtual LSParser &createLSParser(unsigned short mode, - const DOMString &schemaType) - throw (dom::DOMException) =0; - - /** - * To use, for this and subclasses: - * LSSerializer &serializer = myImplementation.createLSSerializer(); - * - */ - virtual LSSerializer &createLSSerializer() =0; - - /** - * - */ - virtual LSInput createLSInput() =0; - - /** - * - */ - virtual LSOutput createLSOutput() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~DOMImplementationLS() {} -}; - - - - -} //namespace ls -} //namespace dom -} //namespace w3c -} //namespace org - - -#endif // SEEN_LS_H - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/lsimpl.cpp b/src/dom/lsimpl.cpp deleted file mode 100644 index d4da0d5ce..000000000 --- a/src/dom/lsimpl.cpp +++ /dev/null @@ -1,441 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2007 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "domimpl.h" -#include "events.h" -#include "traversal.h" -#include "lsimpl.h" - -#include <stdarg.h> -#include <cstdio> - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace ls -{ - - - -/*######################################################################### -## LSParserImpl -#########################################################################*/ - - -/** - * - */ -bool LSParserImpl::getBusy() -{ - return false; -} - -/** - * - */ -DocumentPtr LSParserImpl::parse(const LSInput &input) - throw(dom::DOMException, LSException) -{ - - //#### Check the various inputs of 'input' in order, according - //# to the L&S spec - LSReader *lsreader = input.getCharacterStream(); - if (lsreader) - { - DOMString buf; - while (true) - { - int ch = lsreader->get(); - if (ch < 0) - break; - buf.push_back((XMLCh)ch); - } - XmlReader reader; - DocumentPtr doc = reader.parse(buf); - return doc; - } - - LSInputStream *inputStream = input.getByteStream(); - if (inputStream) - { - DOMString buf; - while (true) - { - int ch = inputStream->get(); - if (ch < 0) - break; - buf.push_back((XMLCh)ch); - } - XmlReader reader; - DocumentPtr doc = reader.parse(buf); - return doc; - } - - DOMString stringData = input.getStringData(); - if (stringData.size() > 0) - { - XmlReader reader; - DocumentPtr doc = reader.parse(stringData); - return doc; - } - - DOMString systemId = input.getSystemId(); - if (systemId.size() > 0) - { - //lets not do this yet - return NULL; - } - - DOMString publicId = input.getPublicId(); - if (publicId.size() > 0) - { - //lets not do this yet - return NULL; - } - - return NULL; -} - - -/** - * - */ -DocumentPtr LSParserImpl::parseURI(const DOMString &/*uri*/) - throw(dom::DOMException, LSException) -{ - return NULL; -} - - /** - * - */ -NodePtr LSParserImpl::parseWithContext(const LSInput &/*input*/, - const NodePtr /*contextArg*/, - unsigned short /*action*/) - throw(dom::DOMException, LSException) -{ - return NULL; -} - - - -//################## -//# Non-API methods -//################## - - - - - - - - - - - -/*######################################################################### -## LSSerializerImpl -#########################################################################*/ - - -/** - * - */ -bool LSSerializerImpl::write( - const NodePtr nodeArg, - const LSOutput &destination) - throw (LSException) -{ - outbuf = ""; - indent = 0; - - writeNode(nodeArg); - - //## Check in order specified in the L&S specs - LSWriter *writer = destination.getCharacterStream(); - if (writer) - { - for (unsigned int i=0 ; i<outbuf.size() ; i++) - { - int ch = outbuf[i]; - writer->put(ch); - } - return true; - } - - LSOutputStream *outputStream = destination.getByteStream(); - if (outputStream) - { - for (unsigned int i=0 ; i<outbuf.size() ; i++) - { - int ch = outbuf[i]; - writer->put(ch); - } - return true; - } - - DOMString systemId = destination.getSystemId(); - if (systemId.size() > 0) - { - //DO SOMETHING - return true; - } - - return false; -} - -/** - * - */ -bool LSSerializerImpl::writeToURI(const NodePtr nodeArg, - const DOMString &uriArg) - throw(LSException) -{ - outbuf = ""; - indent = 0; - - writeNode(nodeArg); - - DOMString uri = uriArg; - char *fileName = (char *) uri.c_str(); //temporary hack - FILE *f = fopen(fileName, "wb"); - if (!f) - return false; - for (unsigned int i=0 ; i<outbuf.size() ; i++) - { - int ch = outbuf[i]; - fputc(ch, f); - } - fclose(f); - return false; -} - -/** - * - */ -DOMString LSSerializerImpl::writeToString(const NodePtr nodeArg) - throw(dom::DOMException, LSException) -{ - outbuf = ""; - indent = 0; - - writeNode(nodeArg); - return outbuf; -} - - - -//################## -//# Non-API methods -//################## - - -/** - * - */ -void LSSerializerImpl::spaces() -{ - for (int i=0 ; i<indent ; i++) - { - outbuf.push_back(' '); - } -} - -/** - * - */ -void LSSerializerImpl::po(char const *fmt, ...) -{ - char str[257]; - va_list args; - va_start(args, fmt); - vsnprintf(str, 256, fmt, args); - va_end(args) ; - - outbuf.append(str); -} - - -void LSSerializerImpl::pos(const DOMString &str) -{ - outbuf.append(str); -} - -void LSSerializerImpl::poxml(const DOMString &str) -{ - for (unsigned int i=0 ; i<str.size() ; i++) - { - XMLCh ch = (XMLCh) str[i]; - if (ch == '&') - outbuf.append("&r;"); - else if (ch == '<') - outbuf.append("<"); - else if (ch == '>') - outbuf.append(">"); - else if (ch == '"') - outbuf.append("""); - else if (ch == '\'') - outbuf.append("'"); - else - outbuf.push_back(ch); - } -} - -/** - * - */ -void LSSerializerImpl::writeNode(const NodePtr nodeArg) -{ - NodePtr node = nodeArg; - - int type = node->getNodeType(); - - switch (type) - { - - //############# - //# DOCUMENT - //############# - case Node::DOCUMENT_NODE: - { - DocumentPtr doc = dynamic_cast<Document *>(node.get()); - writeNode(doc->getDocumentElement()); - } - break; - - //############# - //# TEXT - //############# - case Node::TEXT_NODE: - { - poxml(node->getNodeValue()); - } - break; - - - //############# - //# CDATA - //############# - case Node::CDATA_SECTION_NODE: - { - pos("<![CDATA["); - poxml(node->getNodeValue()); - pos("]]>"); - } - break; - - - //############# - //# ELEMENT - //############# - case Node::ELEMENT_NODE: - { - - indent+=2; - - NamedNodeMap attributes = node->getAttributes(); - int nrAttrs = attributes.getLength(); - - //### Start open tag - spaces(); - po("<"); - pos(node->getNodeName()); - //if (nrAttrs>0) - // pos(newLine); - - //### Attributes - for (int i=0 ; i<nrAttrs ; i++) - { - NodePtr attr = attributes.item(i); - spaces(); - pos(attr->getNodeName()); - po("=\""); - pos(attr->getNodeValue()); - po("\""); - //pos(newLine); - } - - //### Finish open tag - //if (nrAttrs>0) - // spaces(); - po(">"); - //pos(newLine); - - //### Contents - //spaces(); - pos(node->getNodeValue()); - - //### Children - for (NodePtr child = node->getFirstChild() ; - child.get() ; - child=child->getNextSibling()) - { - writeNode(child); - } - - //### Close tag - //spaces(); - po("</"); - pos(node->getNodeName()); - po(">"); - pos(newLine); - - indent-=2; - } - break; - - }//switch - -} - - - - - - - - - - -} //namespace ls -} //namespace dom -} //namespace w3c -} //namespace org - - - - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/lsimpl.h b/src/dom/lsimpl.h deleted file mode 100644 index fcfd42a4b..000000000 --- a/src/dom/lsimpl.h +++ /dev/null @@ -1,390 +0,0 @@ -#ifndef SEEN_LSIMPL_H -#define SEEN_LSIMPL_H -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2007 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "domimpl.h" -#include "events.h" -#include "traversal.h" -#include "ls.h" - - -#include "xmlreader.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace ls -{ - - -/*######################################################################### -## LSParserImpl -#########################################################################*/ - -/** - * - */ -class LSParserImpl : virtual public LSParser -{ -public: - - typedef enum - { - PARSE_AS_DATA = 0, - PARSE_AS_DOCUMENT = 1 - } ParsingModes; - - /** - * - */ - virtual bool getBusy(); - - /** - * - */ - virtual DocumentPtr parse(const LSInput &input) - throw(dom::DOMException, LSException); - - - /** - * - */ - virtual DocumentPtr parseURI(const DOMString &uri) - throw(dom::DOMException, LSException); - - /** - * - */ - virtual NodePtr parseWithContext(const LSInput &input, - const NodePtr contextArg, - unsigned short action) - throw(dom::DOMException, LSException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - LSParserImpl() : - reader(), - filter(0) - {} - - /** - * - */ - LSParserImpl(const LSParserImpl &other) : - LSParser(other), - reader(), - filter(0) - {} - - /** - * - */ - virtual ~LSParserImpl() - {} - - - - //################## - //# Internals - //################## - - -protected: - - XmlReader reader; - LSParserFilter *filter; - -}; - - - - -/*######################################################################### -## LSParserFilterImpl -#########################################################################*/ - -/** - * - */ -class LSParserFilterImpl : virtual public LSParserFilter -{ -public: - - /** - * - */ - virtual unsigned short startElement(const ElementPtr /*elementArg*/) - { return 0; } - - /** - * - */ - virtual unsigned short acceptNode(const NodePtr /*nodeArg*/) - { return 0; } - - /** - * - */ - virtual unsigned long getWhatToShow() - { return 0; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~LSParserFilterImpl() - {} - - - -}; - -/*######################################################################### -## LSSerializerImpl -#########################################################################*/ - -/** - * - */ -class LSSerializerImpl : virtual public LSSerializer -{ -public: - - - /** - * - */ - virtual bool write(const NodePtr nodeArg, - const LSOutput &destination) - throw (LSException); - - /** - * - */ - virtual bool writeToURI(const NodePtr nodeArg, - const DOMString &uri) - throw(LSException); - - /** - * - */ - virtual DOMString writeToString(const NodePtr nodeArg) - throw(dom::DOMException, LSException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - LSSerializerImpl() : - outbuf(), - indent(0), - domConfig(0), - filter(0) - { - } - - /** - * - */ - virtual ~LSSerializerImpl() - {} - - - -protected: - - /** - * - */ - void writeNode(const NodePtr nodeArg); - -private: - - void spaces(); - - void po(char const *fmt, ...) - #ifdef G_GNUC_PRINTF - G_GNUC_PRINTF(2, 3) - #endif - ; - - void pos(const DOMString &str); - - void poxml(const DOMString &str); - - DOMString outbuf; - - int indent; - - DOMConfiguration *domConfig; - - LSSerializerFilter *filter; - - - -}; - - - - -/*######################################################################### -## LSSerializerFilterImpl -#########################################################################*/ - -/** - * - */ -class LSSerializerFilterImpl : virtual public LSSerializerFilter -{ -public: - - /** - * - */ - virtual unsigned long getWhatToShow() - { return 0; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~LSSerializerFilterImpl() - {} -}; - - - -/*######################################################################### -## DOMImplementationLSImpl -#########################################################################*/ - -/** - * - */ -class DOMImplementationLSImpl : virtual public DOMImplementationLS -{ -public: - - /** - * - */ - virtual LSParser &createLSParser(unsigned short /*mode*/, - const DOMString &/*schemaType*/) - throw (dom::DOMException) - { - LSParserImpl newParser; - parser = newParser; - return parser; - } - - - /** - * - */ - virtual LSSerializer &createLSSerializer() - { - LSSerializerImpl newSerializer; - serializer = newSerializer; - return serializer; - } - - - /** - * - */ - virtual LSInput createLSInput() - { - LSInput input; - return input; - } - - /** - * - */ - virtual LSOutput createLSOutput() - { - LSOutput output; - return output; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~DOMImplementationLSImpl() {} - -protected: - - LSParserImpl parser; - LSSerializerImpl serializer; -}; - - - - - - -} //namespace ls -} //namespace dom -} //namespace w3c -} //namespace org - - - - -#endif // SEEN_LSIMPL_H - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/makefile.in b/src/dom/makefile.in deleted file mode 100644 index b505975a6..000000000 --- a/src/dom/makefile.in +++ /dev/null @@ -1,17 +0,0 @@ -# Convenience stub makefile to call the real Makefile. - -@SET_MAKE@ - -OBJEXT = @OBJEXT@ - -# Explicit so that it's the default rule. -all: - cd .. && $(MAKE) dom/all - -clean %.a %.$(OBJEXT): - cd .. && $(MAKE) dom/$@ - -.PHONY: all clean - -.SUFFIXES: -.SUFFIXES: .a .$(OBJEXT) diff --git a/src/dom/mingwenv.bat b/src/dom/mingwenv.bat deleted file mode 100644 index 48e8bf096..000000000 --- a/src/dom/mingwenv.bat +++ /dev/null @@ -1,2 +0,0 @@ -set PATH=c:\mingw\bin;%PATH% -set RM=del diff --git a/src/dom/prop-css.cpp b/src/dom/prop-css.cpp deleted file mode 100644 index 9922b4935..000000000 --- a/src/dom/prop-css.cpp +++ /dev/null @@ -1,1161 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#include <stdio.h> - - -struct CssProp_def -{ - const char *name; - const char *values; - const char *defaultValue; - const char *appliesTo; - bool inherited; - const char *percentages; - const char *mediaGroups; -}; - -typedef struct CssProp_def CssProp; - -static CssProp cssProps[] = -{ - -{ -"azimuth", -"<angle> | [[ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards | inherit", -"center", -"", -true, -"", -"aural" -}, - - -{ -"background-attachment", -"scroll | fixed | inherit", -"scroll", -"", -false, -"", -"visual" -}, - - -{ -"background-color", -"<color> | transparent | inherit", -"transparent", -"", -false, -"", -"visual" -}, - - -{ -"background-image", -"<uri> | none | inherit", -"none", -"", -false, -"", -"visual" -}, - - -{ -"background-position", -"[ [ <percentage> | <length> | left | center | right ] [ <percentage> | <length> | top | center | bottom ]? ] | [ [ left | center | right ] || [ top | center | bottom ] ] | inherit", -"0% 0%", -"", -false, -"refer to the size of the box itself", -"visual" -}, - - -{ -"background-repeat", -"repeat | repeat-x | repeat-y | no-repeat | inherit", -"repeat", -"", -false, -"", -"visual" -}, - - -{ -"background", -"['background-color' || 'background-image' || 'background-repeat' || 'background-attachment' || 'background-position'] | inherit", -"see individual properties", -"", -false, -"allowed on 'background-position", -"visual" -}, - - -{ -"border-collapse", -"collapse | separate | inherit", -"separate", -"table' and 'inline-table' elements", -true, -"", -"visual" -}, - - -{ -"border-color", -"[ <color> | transparent ]{1,4} | inherit", -"see individual properties", -"", -false, -"", -"visual" -}, - - -{ -"border-spacing", -"<length> <length>? | inherit", -"0", -"table' and 'inline-table' elements", -true, -"", -"visual" -}, - - -{ -"border-style", -"<border-style>{1,4} | inherit", -"see individual properties", -"", -false, -"", -"visual" -}, - - -{ -"border-top' 'border-right' 'border-bottom' 'border-left", -"[ <border-width> || <border-style> || 'border-top-color' ] | inherit", -"see individual properties", -"", -false, -"", -"visual" -}, - - -{ -"border-top-color' 'border-right-color' 'border-bottom-color' 'border-left-color", -"<color> | transparent | inherit", -"the value of the 'color' property", -"", -false, -"", -"visual" -}, - - -{ -"border-top-style' 'border-right-style' 'border-bottom-style' 'border-left-style", -"<border-style> | inherit", -"none", -"", -false, -"", -"visual" -}, - - -{ -"border-top-width' 'border-right-width' 'border-bottom-width' 'border-left-width", -"<border-width> | inherit", -"medium", -"", -false, -"", -"visual" -}, - - -{ -"border-width", -"<border-width>{1,4} | inherit", -"see individual properties", -"", -false, -"", -"visual" -}, - - -{ -"border", -"[ <border-width> || <border-style> || 'border-top-color' ] | inherit", -"see individual properties", -"", -false, -"", -"visual" -}, - - -{ -"bottom", -"<length> | <percentage> | auto | inherit", -"auto", -"positioned elements", -false, -"refer to height of containing block", -"visual" -}, - - -{ -"caption-side", -"top | bottom | inherit", -"top", -"table-caption' elements", -true, -"", -"visual" -}, - - -{ -"clear", -"none | left | right | both | inherit", -"none", -"block-level elements", -false, -"", -"visual" -}, - - -{ -"clip", -"<shape> | auto | inherit", -"auto", -"absolutely positioned elements", -false, -"", -"visual" -}, - - -{ -"color", -"<color> | inherit", -"depends on user agent", -"", -true, -"", -"visual" -}, - - -{ -"content", -"normal | [ <string> | <uri> | <counter> | attr(<identifier>) | open-quote | close-quote | no-open-quote | no-close-quote ]+ | inherit", -"normal", -":before and :after pseudo-elements", -false, -"", -"all " -}, - - -{ -"counter-increment", -"[ <identifier> <integer>? ]+ | none | inherit", -"none", -"", -false, -"", -"all " -}, - - -{ -"counter-reset", -"[ <identifier> <integer>? ]+ | none | inherit", -"none", -"", -false, -"", -"all " -}, - - -{ -"cue-after", -"<uri> | none | inherit", -"none", -"", -false, -"", -"aural" -}, - - -{ -"cue-before", -"<uri> | none | inherit", -"none", -"", -false, -"", -"aural" -}, - - -{ -"cue", -"[ 'cue-before' || 'cue-after' ] | inherit", -"see individual properties", -"", -false, -"", -"aural" -}, - - -{ -"cursor", -"[ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize | text | wait | help | progress ] ] | inherit", -"auto", -"", -true, -"", -"visual, interactive " -}, - - -{ -"direction", -"ltr | rtl | inherit", -"ltr", -"all elements, but see prose", -true, -"", -"visual" -}, - - -{ -"display", -"inline | block | list-item | run-in | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit", -"inline", -"", -false, -"", -"all " -}, - - -{ -"elevation", -"<angle> | below | level | above | higher | lower | inherit", -"level", -"", -true, -"", -"aural" -}, - - -{ -"empty-cells", -"show | hide | inherit", -"show", -"table-cell' elements", -true, -"", -"visual" -}, - - -{ -"float", -"left | right | none | inherit", -"none", -"all, but see 9.7", -false, -"", -"visual" -}, - - -{ -"font-family", -"[[ <family-name> | <generic-family> ] [, <family-name>| <generic-family>]* ] | inherit", -"depends on user agent", -"", -true, -"", -"visual" -}, - - -{ -"font-size", -"<absolute-size> | <relative-size> | <length> | <percentage> | inherit", -"medium", -"", -true, -"refer to parent element's font size", -"visual" -}, - - -{ -"font-style", -"normal | italic | oblique | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -"font-variant", -"normal | small-caps | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -"font-weight", -"normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -"font", -"[ [ 'font-style' || 'font-variant' || 'font-weight' ]? 'font-size' [ / 'line-height' ]? 'font-family' ] | caption | icon | menu | message-box | small-caption | status-bar | inherit", -"see individual properties", -"", -true, -"see individual properties", -"visual" -}, - - -{ -"height", -"<length> | <percentage> | auto | inherit", -"auto", -"all elements but non-replaced inline elements, table columns, and column groups", -false, -"see prose", -"visual" -}, - - -{ -"left", -"<length> | <percentage> | auto | inherit", -"auto", -"positioned elements", -false, -"refer to width of containing block", -"visual" -}, - - -{ -"letter-spacing", -"normal | <length> | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -"line-height", -"normal | <number> | <length> | <percentage> | inherit", -"normal", -"", -true, -"refer to the font size of the element itself", -"visual" -}, - - -{ -"list-style-image", -"<uri> | none | inherit", -"none", -"elements with 'display: list-item", -true, -"", -"visual" -}, - - -{ -"list-style-position", -"inside | outside | inherit", -"outside", -"elements with 'display: list-item", -true, -"", -"visual" -}, - - -{ -"list-style-type", -"disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | none | inherit", -"disc", -"elements with 'display: list-item", -true, -"", -"visual" -}, - - -{ -"list-style", -"[ 'list-style-type' || 'list-style-position' || 'list-style-image' ] | inherit", -"see individual properties", -"elements with 'display: list-item", -true, -"", -"visual" -}, - - -{ -"margin-right' 'margin-left", -"<margin-width> | inherit", -"0", -"all elements except elements with table display types other than table and inline-table", -false, -"refer to width of containing block", -"visual" -}, - - -{ -"margin-top' 'margin-bottom", -"<margin-width> | inherit", -"0", -"all elements except elements with table display types other than table and inline-table", -false, -"refer to width of containing block", -"visual" -}, - - -{ -"margin", -"<margin-width>{1,4} | inherit", -"see individual properties", -"all elements except elements with table display types other than table and inline-table", -false, -"refer to width of containing block", -"visual" -}, - - -{ -"max-height", -"<length> | <percentage> | none | inherit", -"none", -"all elements except non-replaced inline elements and table elements", -false, -"see prose", -"visual" -}, - - -{ -"max-width", -"<length> | <percentage> | none | inherit", -"none", -"all elements except non-replaced inline elements and table elements", -false, -"refer to width of containing block", -"visual" -}, - - -{ -"min-height", -"<length> | <percentage> | inherit", -"0", -"all elements except non-replaced inline elements and table elements", -false, -"see prose", -"visual" -}, - - -{ -"min-width", -"<length> | <percentage> | inherit", -"0", -"all elements except non-replaced inline elements and table elements", -false, -"refer to width of containing block", -"visual" -}, - - -{ -"orphans", -"<integer> | inherit", -"2", -"block-level elements", -true, -"", -"visual, paged " -}, - - -{ -"outline-color", -"<color> | invert | inherit", -"invert", -"", -false, -"", -"visual, interactive " -}, - - -{ -"outline-style", -"<border-style> | inherit", -"none", -"", -false, -"", -"visual, interactive " -}, - - -{ -"outline-width", -"<border-width> | inherit", -"medium", -"", -false, -"", -"visual, interactive " -}, - - -{ -"outline", -"[ 'outline-color' || 'outline-style' || 'outline-width' ] | inherit", -"see individual properties", -"", -false, -"", -"visual, interactive " -}, - - -{ -"overflow", -"visible | hidden | scroll | auto | inherit", -"visible", -"block-level and replaced elements, table cells, inline blocks", -false, -"", -"visual" -}, - - -{ -"padding-top' 'padding-right' 'padding-bottom' 'padding-left", -"<padding-width> | inherit", -"0", -"all elements except elements with table display types other than table, inline-table, and table-cell", -false, -"refer to width of containing block", -"visual" -}, - - -{ -"padding", -"<padding-width>{1,4} | inherit", -"see individual properties", -"all elements except elements with table display types other than table, inline-table, and table-cell", -false, -"refer to width of containing block", -"visual" -}, - - -{ -"page-break-after", -"auto | always | avoid | left | right | inherit", -"auto", -"block-level elements", -false, -"", -"visual, paged " -}, - - -{ -"page-break-before", -"auto | always | avoid | left | right | inherit", -"auto", -"block-level elements", -false, -"", -"visual, paged " -}, - - -{ -"page-break-inside", -"avoid | auto | inherit", -"auto", -"block-level elements", -true, -"", -"visual, paged " -}, - - -{ -"pause-after", -"<time> | <percentage> | inherit", -"0", -"", -false, -"see prose", -"aural" -}, - - -{ -"pause-before", -"<time> | <percentage> | inherit", -"0", -"", -false, -"see prose", -"aural" -}, - - -{ -"pause", -"[ [<time> | <percentage>]{1,2} ] | inherit", -"see individual properties", -"", -false, -"see descriptions of 'pause-before' and 'pause-after", -"aural" -}, - - -{ -"pitch-range", -"<number> | inherit", -"50", -"", -true, -"", -"aural" -}, - - -{ -"pitch", -"<frequency> | x-low | low | medium | high | x-high | inherit", -"medium", -"", -true, -"", -"aural" -}, - - -{ -"play-during", -"<uri> [ mix || repeat ]? | auto | none | inherit", -"auto", -"", -false, -"", -"aural" -}, - - -{ -"position", -"static | relative | absolute | fixed | inherit", -"static", -"", -false, -"", -"visual" -}, - - -{ -"quotes", -"[<string> <string>]+ | none | inherit", -"depends on user agent", -"", -true, -"", -"visual" -}, - - -{ -"richness", -"<number> | inherit", -"50", -"", -true, -"", -"aural" -}, - - -{ -"right", -"<length> | <percentage> | auto | inherit", -"auto", -"positioned elements", -false, -"refer to width of containing block", -"visual" -}, - - -{ -"speak-header", -"once | always | inherit", -"once", -"elements that have table header information", -true, -"", -"aural" -}, - - -{ -"speak-numeral", -"digits | continuous | inherit", -"continuous", -"", -true, -"", -"aural" -}, - - -{ -"speak-punctuation", -"code | none | inherit", -"none", -"", -true, -"", -"aural" -}, - - -{ -"speak", -"normal | none | spell-out | inherit", -"normal", -"", -true, -"", -"aural" -}, - - -{ -"speech-rate", -"<number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit", -"medium", -"", -true, -"", -"aural" -}, - - -{ -"stress", -"<number> | inherit", -"50", -"", -true, -"", -"aural" -}, - - -{ -"table-layout", -"auto | fixed | inherit", -"auto", -"table' and 'inline-table' elements", -false, -"", -"visual" -}, - - -{ -"text-align", -"left | right | center | justify | inherit", -"left' if 'direction' is 'ltr'; 'right' if 'direction' is 'rtl", -"block-level elements, table cells and inline blocks", -true, -"", -"visual" -}, - - -{ -"text-decoration", -"none | [ underline || overline || line-through || blink ] | inherit", -"none", -"", -"no (see prose)", -"", -"visual" -}, - - -{ -"text-indent", -"<length> | <percentage> | inherit", -"0", -"block-level elements, table cells and inline blocks", -true, -"refer to width of containing block", -"visual" -}, - - -{ -"text-transform", -"capitalize | uppercase | lowercase | none | inherit", -"none", -"", -true, -"", -"visual" -}, - - -{ -"top", -"<length> | <percentage> | auto | inherit", -"auto", -"positioned elements", -false, -"refer to height of containing block", -"visual" -}, - - -{ -"unicode-bidi", -"normal | embed | bidi-override | inherit", -"normal", -"all elements, but see prose", -false, -"", -"visual" -}, - - -{ -"vertical-align", -"baseline | sub | super | top | text-top | middle | bottom | text-bottom | <percentage> | <length> | inherit", -"baseline", -"inline-level and 'table-cell' elements", -false, -"refer to the 'line-height' of the element itself", -"visual" -}, - - -{ -"visibility", -"visible | hidden | collapse | inherit", -"visible", -"", -true, -"", -"visual" -}, - - -{ -"voice-family", -"[[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit", -"depends on user agent", -"", -true, -"", -"aural" -}, - - -{ -"volume", -"<number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit", -"medium", -"", -true, -"refer to inherited value", -"aural" -}, - - -{ -"white-space", -"normal | pre | nowrap | pre-wrap | pre-line | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -"widows", -"<integer> | inherit", -"2", -"block-level elements", -true, -"", -"visual, paged" -}, - - -{ -"width", -"<length> | <percentage> | auto | inherit", -"auto", -"all elements but non-replaced inline elements, table rows, and row groups", -false, -"refer to width of containing block", -"visual" -}, - - -{ -"word-spacing", -"normal | <length> | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -"z-index", -"auto | <integer> | inherit", -"auto", -"positioned elements", -false, -"", -"visual" -}, - -{ -NULL, -NULL, -NULL, -NULL, -false, -NULL, -NULL -} - -}; - - - - -static bool printTable() -{ - for (CssProp *prop=cssProps; prop->name ; prop++) - { - printf("#### Prop: %s ####\n", prop->name); - printf("values : %s\n", prop->values); - printf("defaultValue: %s\n", prop->defaultValue); - printf("appliesTo : %s\n", prop->appliesTo); - printf("inherited : %s\n", ( prop->inherited ? "true" : "false" )); - printf("percentages : %s\n", prop->percentages); - printf("groups : %s\n", prop->mediaGroups); - printf("\n"); - } - return true; -} - - -int main(int /*argc*/, char **/*argv*/) -{ - printTable(); - return 0; -} diff --git a/src/dom/prop-css2.cpp b/src/dom/prop-css2.cpp deleted file mode 100644 index 192295d1c..000000000 --- a/src/dom/prop-css2.cpp +++ /dev/null @@ -1,1305 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#include <stdio.h> -#include <string.h> - -typedef struct CssProp_def CssProp; - -typedef bool (*parsefunc)(CssProp *prop, char *propName, char *propVal); - - -struct CssProp_def -{ - parsefunc func; - const char *name; - const char *values; - const char *defaultValue; - const char *appliesTo; - bool inherited; - const char *percentages; - const char *mediaGroups; -}; - - -bool parseDefault(CssProp */*prop*/, char *propName, char *propVal) -{ - printf("######## '%s:%s'\n", propName, propVal); - return true; -} - - - -static CssProp cssProps[] = -{ - -{ -parseDefault, -"azimuth", -"<angle> | [[ left-side | far-left | left | center-left | center | center-right | right | far-right | right-side ] || behind ] | leftwards | rightwards | inherit", -"center", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"background-attachment", -"scroll | fixed | inherit", -"scroll", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"background-color", -"<color> | transparent | inherit", -"transparent", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"background-image", -"<uri> | none | inherit", -"none", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"background-position", -"[ [ <percentage> | <length> | left | center | right ] [ <percentage> | <length> | top | center | bottom ]? ] | [ [ left | center | right ] || [ top | center | bottom ] ] | inherit", -"0% 0%", -"", -false, -"refer to the size of the box itself", -"visual" -}, - - -{ -parseDefault, -"background-repeat", -"repeat | repeat-x | repeat-y | no-repeat | inherit", -"repeat", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"background", -"['background-color' || 'background-image' || 'background-repeat' || 'background-attachment' || 'background-position'] | inherit", -"see individual properties", -"", -false, -"allowed on 'background-position", -"visual" -}, - - -{ -parseDefault, -"border-collapse", -"collapse | separate | inherit", -"separate", -"table' and 'inline-table' elements", -true, -"", -"visual" -}, - - -{ -parseDefault, -"border-color", -"[ <color> | transparent ]{1,4} | inherit", -"see individual properties", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"border-spacing", -"<length> <length>? | inherit", -"0", -"table' and 'inline-table' elements", -true, -"", -"visual" -}, - - -{ -parseDefault, -"border-style", -"<border-style>{1,4} | inherit", -"see individual properties", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"border-top' 'border-right' 'border-bottom' 'border-left", -"[ <border-width> || <border-style> || 'border-top-color' ] | inherit", -"see individual properties", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"border-top-color' 'border-right-color' 'border-bottom-color' 'border-left-color", -"<color> | transparent | inherit", -"the value of the 'color' property", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"border-top-style' 'border-right-style' 'border-bottom-style' 'border-left-style", -"<border-style> | inherit", -"none", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"border-top-width' 'border-right-width' 'border-bottom-width' 'border-left-width", -"<border-width> | inherit", -"medium", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"border-width", -"<border-width>{1,4} | inherit", -"see individual properties", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"border", -"[ <border-width> || <border-style> || 'border-top-color' ] | inherit", -"see individual properties", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"bottom", -"<length> | <percentage> | auto | inherit", -"auto", -"positioned elements", -false, -"refer to height of containing block", -"visual" -}, - - -{ -parseDefault, -"caption-side", -"top | bottom | inherit", -"top", -"table-caption' elements", -true, -"", -"visual" -}, - - -{ -parseDefault, -"clear", -"none | left | right | both | inherit", -"none", -"block-level elements", -false, -"", -"visual" -}, - - -{ -parseDefault, -"clip", -"<shape> | auto | inherit", -"auto", -"absolutely positioned elements", -false, -"", -"visual" -}, - - -{ -parseDefault, -"color", -"<color> | inherit", -"depends on user agent", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"content", -"normal | [ <string> | <uri> | <counter> | attr(<identifier>) | open-quote | close-quote | no-open-quote | no-close-quote ]+ | inherit", -"normal", -":before and :after pseudo-elements", -false, -"", -"all " -}, - - -{ -parseDefault, -"counter-increment", -"[ <identifier> <integer>? ]+ | none | inherit", -"none", -"", -false, -"", -"all " -}, - - -{ -parseDefault, -"counter-reset", -"[ <identifier> <integer>? ]+ | none | inherit", -"none", -"", -false, -"", -"all " -}, - - -{ -parseDefault, -"cue-after", -"<uri> | none | inherit", -"none", -"", -false, -"", -"aural" -}, - - -{ -parseDefault, -"cue-before", -"<uri> | none | inherit", -"none", -"", -false, -"", -"aural" -}, - - -{ -parseDefault, -"cue", -"[ 'cue-before' || 'cue-after' ] | inherit", -"see individual properties", -"", -false, -"", -"aural" -}, - - -{ -parseDefault, -"cursor", -"[ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize | text | wait | help | progress ] ] | inherit", -"auto", -"", -true, -"", -"visual, interactive " -}, - - -{ -parseDefault, -"direction", -"ltr | rtl | inherit", -"ltr", -"all elements, but see prose", -true, -"", -"visual" -}, - - -{ -parseDefault, -"display", -"inline | block | list-item | run-in | inline-block | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit", -"inline", -"", -false, -"", -"all " -}, - - -{ -parseDefault, -"elevation", -"<angle> | below | level | above | higher | lower | inherit", -"level", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"empty-cells", -"show | hide | inherit", -"show", -"table-cell' elements", -true, -"", -"visual" -}, - - -{ -parseDefault, -"float", -"left | right | none | inherit", -"none", -"all, but see 9.7", -false, -"", -"visual" -}, - - -{ -parseDefault, -"font-family", -"[[ <family-name> | <generic-family> ] [, <family-name>| <generic-family>]* ] | inherit", -"depends on user agent", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"font-size", -"<absolute-size> | <relative-size> | <length> | <percentage> | inherit", -"medium", -"", -true, -"refer to parent element's font size", -"visual" -}, - - -{ -parseDefault, -"font-style", -"normal | italic | oblique | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"font-variant", -"normal | small-caps | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"font-weight", -"normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"font", -"[ [ 'font-style' || 'font-variant' || 'font-weight' ]? 'font-size' [ / 'line-height' ]? 'font-family' ] | caption | icon | menu | message-box | small-caption | status-bar | inherit", -"see individual properties", -"", -true, -"see individual properties", -"visual" -}, - - -{ -parseDefault, -"height", -"<length> | <percentage> | auto | inherit", -"auto", -"all elements but non-replaced inline elements, table columns, and column groups", -false, -"see prose", -"visual" -}, - - -{ -parseDefault, -"left", -"<length> | <percentage> | auto | inherit", -"auto", -"positioned elements", -false, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"letter-spacing", -"normal | <length> | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"line-height", -"normal | <number> | <length> | <percentage> | inherit", -"normal", -"", -true, -"refer to the font size of the element itself", -"visual" -}, - - -{ -parseDefault, -"list-style-image", -"<uri> | none | inherit", -"none", -"elements with 'display: list-item", -true, -"", -"visual" -}, - - -{ -parseDefault, -"list-style-position", -"inside | outside | inherit", -"outside", -"elements with 'display: list-item", -true, -"", -"visual" -}, - - -{ -parseDefault, -"list-style-type", -"disc | circle | square | decimal | decimal-leading-zero | lower-roman | upper-roman | lower-greek | lower-latin | upper-latin | armenian | georgian | none | inherit", -"disc", -"elements with 'display: list-item", -true, -"", -"visual" -}, - - -{ -parseDefault, -"list-style", -"[ 'list-style-type' || 'list-style-position' || 'list-style-image' ] | inherit", -"see individual properties", -"elements with 'display: list-item", -true, -"", -"visual" -}, - - -{ -parseDefault, -"margin-right' 'margin-left", -"<margin-width> | inherit", -"0", -"all elements except elements with table display types other than table and inline-table", -false, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"margin-top' 'margin-bottom", -"<margin-width> | inherit", -"0", -"all elements except elements with table display types other than table and inline-table", -false, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"margin", -"<margin-width>{1,4} | inherit", -"see individual properties", -"all elements except elements with table display types other than table and inline-table", -false, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"max-height", -"<length> | <percentage> | none | inherit", -"none", -"all elements except non-replaced inline elements and table elements", -false, -"see prose", -"visual" -}, - - -{ -parseDefault, -"max-width", -"<length> | <percentage> | none | inherit", -"none", -"all elements except non-replaced inline elements and table elements", -false, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"min-height", -"<length> | <percentage> | inherit", -"0", -"all elements except non-replaced inline elements and table elements", -false, -"see prose", -"visual" -}, - - -{ -parseDefault, -"min-width", -"<length> | <percentage> | inherit", -"0", -"all elements except non-replaced inline elements and table elements", -false, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"orphans", -"<integer> | inherit", -"2", -"block-level elements", -true, -"", -"visual, paged " -}, - - -{ -parseDefault, -"outline-color", -"<color> | invert | inherit", -"invert", -"", -false, -"", -"visual, interactive " -}, - - -{ -parseDefault, -"outline-style", -"<border-style> | inherit", -"none", -"", -false, -"", -"visual, interactive " -}, - - -{ -parseDefault, -"outline-width", -"<border-width> | inherit", -"medium", -"", -false, -"", -"visual, interactive " -}, - - -{ -parseDefault, -"outline", -"[ 'outline-color' || 'outline-style' || 'outline-width' ] | inherit", -"see individual properties", -"", -false, -"", -"visual, interactive " -}, - - -{ -parseDefault, -"overflow", -"visible | hidden | scroll | auto | inherit", -"visible", -"block-level and replaced elements, table cells, inline blocks", -false, -"", -"visual" -}, - - -{ -parseDefault, -"padding-top' 'padding-right' 'padding-bottom' 'padding-left", -"<padding-width> | inherit", -"0", -"all elements except elements with table display types other than table, inline-table, and table-cell", -false, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"padding", -"<padding-width>{1,4} | inherit", -"see individual properties", -"all elements except elements with table display types other than table, inline-table, and table-cell", -false, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"page-break-after", -"auto | always | avoid | left | right | inherit", -"auto", -"block-level elements", -false, -"", -"visual, paged " -}, - - -{ -parseDefault, -"page-break-before", -"auto | always | avoid | left | right | inherit", -"auto", -"block-level elements", -false, -"", -"visual, paged " -}, - - -{ -parseDefault, -"page-break-inside", -"avoid | auto | inherit", -"auto", -"block-level elements", -true, -"", -"visual, paged " -}, - - -{ -parseDefault, -"pause-after", -"<time> | <percentage> | inherit", -"0", -"", -false, -"see prose", -"aural" -}, - - -{ -parseDefault, -"pause-before", -"<time> | <percentage> | inherit", -"0", -"", -false, -"see prose", -"aural" -}, - - -{ -parseDefault, -"pause", -"[ [<time> | <percentage>]{1,2} ] | inherit", -"see individual properties", -"", -false, -"see descriptions of 'pause-before' and 'pause-after", -"aural" -}, - - -{ -parseDefault, -"pitch-range", -"<number> | inherit", -"50", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"pitch", -"<frequency> | x-low | low | medium | high | x-high | inherit", -"medium", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"play-during", -"<uri> [ mix || repeat ]? | auto | none | inherit", -"auto", -"", -false, -"", -"aural" -}, - - -{ -parseDefault, -"position", -"static | relative | absolute | fixed | inherit", -"static", -"", -false, -"", -"visual" -}, - - -{ -parseDefault, -"quotes", -"[<string> <string>]+ | none | inherit", -"depends on user agent", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"richness", -"<number> | inherit", -"50", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"right", -"<length> | <percentage> | auto | inherit", -"auto", -"positioned elements", -false, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"speak-header", -"once | always | inherit", -"once", -"elements that have table header information", -true, -"", -"aural" -}, - - -{ -parseDefault, -"speak-numeral", -"digits | continuous | inherit", -"continuous", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"speak-punctuation", -"code | none | inherit", -"none", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"speak", -"normal | none | spell-out | inherit", -"normal", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"speech-rate", -"<number> | x-slow | slow | medium | fast | x-fast | faster | slower | inherit", -"medium", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"stress", -"<number> | inherit", -"50", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"table-layout", -"auto | fixed | inherit", -"auto", -"table' and 'inline-table' elements", -false, -"", -"visual" -}, - - -{ -parseDefault, -"text-align", -"left | right | center | justify | inherit", -"left' if 'direction' is 'ltr'; 'right' if 'direction' is 'rtl", -"block-level elements, table cells and inline blocks", -true, -"", -"visual" -}, - - -{ -parseDefault, -"text-decoration", -"none | [ underline || overline || line-through || blink ] | inherit", -"none", -"", -"no (see prose)", -"", -"visual" -}, - - -{ -parseDefault, -"text-indent", -"<length> | <percentage> | inherit", -"0", -"block-level elements, table cells and inline blocks", -true, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"text-transform", -"capitalize | uppercase | lowercase | none | inherit", -"none", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"top", -"<length> | <percentage> | auto | inherit", -"auto", -"positioned elements", -false, -"refer to height of containing block", -"visual" -}, - - -{ -parseDefault, -"unicode-bidi", -"normal | embed | bidi-override | inherit", -"normal", -"all elements, but see prose", -false, -"", -"visual" -}, - - -{ -parseDefault, -"vertical-align", -"baseline | sub | super | top | text-top | middle | bottom | text-bottom | <percentage> | <length> | inherit", -"baseline", -"inline-level and 'table-cell' elements", -false, -"refer to the 'line-height' of the element itself", -"visual" -}, - - -{ -parseDefault, -"visibility", -"visible | hidden | collapse | inherit", -"visible", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"voice-family", -"[[<specific-voice> | <generic-voice> ],]* [<specific-voice> | <generic-voice> ] | inherit", -"depends on user agent", -"", -true, -"", -"aural" -}, - - -{ -parseDefault, -"volume", -"<number> | <percentage> | silent | x-soft | soft | medium | loud | x-loud | inherit", -"medium", -"", -true, -"refer to inherited value", -"aural" -}, - - -{ -parseDefault, -"white-space", -"normal | pre | nowrap | pre-wrap | pre-line | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"widows", -"<integer> | inherit", -"2", -"block-level elements", -true, -"", -"visual, paged" -}, - - -{ -parseDefault, -"width", -"<length> | <percentage> | auto | inherit", -"auto", -"all elements but non-replaced inline elements, table rows, and row groups", -false, -"refer to width of containing block", -"visual" -}, - - -{ -parseDefault, -"word-spacing", -"normal | <length> | inherit", -"normal", -"", -true, -"", -"visual" -}, - - -{ -parseDefault, -"z-index", -"auto | <integer> | inherit", -"auto", -"positioned elements", -false, -"", -"visual" -}, - -{ -NULL, -NULL, -NULL, -NULL, -NULL, -false, -NULL, -NULL -} - -}; - - - -bool parseProperty(char *name, char *value) -{ - for (CssProp *prop=cssProps; prop->name ; prop++) - { - if (strcmp(name, prop->name)==0) - { - parsefunc func = prop->func; - if (func) - { - if (!(*func)(prop, name, value)) - { - printf("...\n"); - return false; - } - else - { - return true; - } - } - else - { - printf("null parsing function specified\n"); - return false; - } - } - } - printf("Property '%s' not found\n", name); - return false; -} - - -/* -static bool printTable() -{ - for (CssProp *prop=cssProps; prop->name ; prop++) - { - printf("#### Prop: %s ####\n", prop->name); - printf("values : %s\n", prop->values); - printf("defaultValue: %s\n", prop->defaultValue); - printf("appliesTo : %s\n", prop->appliesTo); - printf("inherited : %s\n", ( prop->inherited ? "true" : "false" )); - printf("percentages : %s\n", prop->percentages); - printf("groups : %s\n", prop->mediaGroups); - printf("\n"); - } - return true; -} -*/ - -int main(int /*argc*/, char **/*argv*/) -{ - //printTable(); - parseProperty((char *)"visibility", (char *)"hidden"); - return 0; -} diff --git a/src/dom/prop-svg.cpp b/src/dom/prop-svg.cpp deleted file mode 100644 index bcb8dffea..000000000 --- a/src/dom/prop-svg.cpp +++ /dev/null @@ -1,746 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ -#include <stdio.h> -#include <stdlib.h> - - -struct SvgProp_def -{ - char const *name; - char const *values; - char const *defaultValue; - char const *appliesTo; - bool inherited; - char const *percentages; - char const *mediaGroups; - bool animatable; -}; - -typedef struct SvgProp_def SvgProp; - -static SvgProp svgProps[] = -{ - -{ -"alignment-baseline", -"auto | baseline | before-edge | text-before-edge | middle | central | after-edge | text-after-edge | ideographic | alphabetic | hanging | mathematical | inherit", -"see property description", -"'tspan', 'tref', 'altGlyph', 'textPath' elements", -false, -"", -"visual", -true -}, - -{ -"baseline-shift", -"baseline | sub | super | <percentage> | <length> | inherit", -"baseline", -"tspan', 'tref', 'altGlyph', 'textPath' elements", -false, -"refers to the 'line-height' of the 'text' element, which in the case of SVG is defined to be equal to the 'font-size", -"visual", -"yes (non-additive, 'set' and 'animate' elements only)" -}, - -{ -"clip", -"<shape> | auto | inherit", -"auto", -"elements which establish a new viewport, 'pattern' elements and 'marker' elements", -false, -"", -"visual", -true -}, - -{ -"clip-path", -"<uri> | none | inherit", -"none", -"container elements and graphics elements", -false, -"", -"visual", -true -}, - -{ -"clip-rule", -"nonzero | evenodd | inherit", -"nonzero", -"graphics elements within a 'clipPath' element", -true, -"", -"visual", -true -}, - -{ -"color", -"<color> | inherit", -"depends on user agent", -"elements to which properties 'fill', 'stroke', 'stop-color', 'flood-color', 'lighting-color' apply", -true, -"", -"visual", -true -}, - -{ -"color-interpolation", -"auto | sRGB | linearRGB | inherit", -"sRGB", -"container elements, graphics elements and 'animateColor", -true, -"", -"visual", -true -}, - -{ -"color-interpolation-filters", -"auto | sRGB | linearRGB | inherit", -"linearRGB", -"filter primitives", -true, -"", -"visual", -true -}, - -{ -"color-profile", -"auto | sRGB | <name> | <uri> | inherit", -"auto", -"'image' elements that refer to raster images", -true, -"", -"visual", -true -}, - -{ -"color-rendering", -"auto | optimizeSpeed | optimizeQuality | inherit", -"auto", -"container elements, graphics elements and 'animateColor", -true, -"", -"visual", -true -}, - -{ -"cursor", -"[ [<uri> ,]* [ auto | crosshair | default | pointer | move | e-resize | ne-resize | nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize| text | wait | help ] ] | inherit", -"auto", -"container elements and graphics elements", -true, -"", -"visual, interactive", -true -}, - -{ -"direction", -"ltr | rtl | inherit", -"ltr", -"text content elements", -true, -"", -"visual", -false -}, - -{ -"display", -"inline | block | list-item | run-in | compact | marker | table | inline-table | table-row-group | table-header-group | table-footer-group | table-row | table-column-group | table-column | table-cell | table-caption | none | inherit", -"inline", -"'svg', 'g', 'switch', 'a', 'foreignObject', graphics elements (including the 'text' element) and text sub-elements (i.e., 'tspan', 'tref', 'altGlyph', 'textPath')", -false, -"", -"all", -true -}, - -{ -"dominant-baseline", -"auto | use-script | no-change | reset-size | ideographic | alphabetic | hanging | mathematical | central | middle | text-after-edge | text-before-edge | inherit", -"auto", -"text content elements", -false, -"", -"visual", -true -}, - -{ -"enable-background", -"accumulate | new [ <x> <y> <width> <height> ] | inherit", -"accumulate", -"container elements", -false, -"", -"visual", -false -}, - -{ -"fill", -"<paint> (See Specifying paint)", -"black", -"shapes and text content elements", -true, -"", -"visual", -true -}, - -{ -"fill-opacity", -"<opacity-value> | inherit", -"1", -"shapes and text content elements", -true, -"", -"visual", -true -}, - -{ -"fill-rule", -"nonzero | evenodd | inherit", -"nonzero", -"shapes and text content elements", -true, -"", -"visual", -true -}, - -{ -"filter", -"<uri> | none | inherit", -"none", -"container elements and graphics elements", -false, -"", -"visual", -true -}, - -{ -"flood-color", -"currentColor | <color> [icc-color(<name>[,<icccolorvalue>]*)] | inherit", -"black", -"'feFlood' elements", -false, -"", -"visual", -true -}, - -{ -"flood-opacity", -"<opacity-value> | inherit", -"1", -"'feFlood' elements", -false, -"", -"visual", -true -}, - -{ -"font", -"[ [ 'font-style' || 'font-variant' || 'font-weight' ]? 'font-size' [ / 'line-height' ]? 'font-family' ] | caption | icon | menu | message-box | small-caption | status-bar | inherit", -"see individual properties", -"text content elements", -true, -"allowed on 'font-size' and 'line-height' ('line-height' same as 'font-size' in SVG)", -"visual", -"yes (non-additive, 'set' and 'animate' elements only)" -}, - -{ -"font-family", -"[[ <family-name> | <generic-family> ],]* [ <family-name> | <generic-family>] | inherit", -"depends on user agent", -"text content elements", -true, -"", -"visual", -true -}, - -{ -"font-size", -"<absolute-size> | <relative-size> | <length> | <percentage> | inherit", -"medium", -"text content elements", -"yes, the computed value is inherited", -"refer to parent element's font size", -"visual", -true -}, - -{ -"font-size-adjust", -"<number> | none | inherit", -"none", -"text content elements", -true, -"", -"visual", -true -}, - -{ -"font-stretch", -"normal | wider | narrower | ultra-condensed | extra-condensed | condensed | semi-condensed | semi-expanded | expanded | extra-expanded | ultra-expanded | inherit", -"normal", -"text content elements", -true, -"", -"visual", -true -}, - -{ -"font-style", -"normal | italic | oblique | inherit", -"normal", -"text content elements", -true, -"", -"visual", -true -}, - -{ -"font-variant", -"normal | small-caps | inherit", -"normal", -"text content elements", -true, -"", -"visual", -true -}, - -{ -"font-weight", -"normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit", -"normal", -"text content elements", -true, -"", -"visual", -true -}, - -{ -"glyph-orientation-horizontal", -"<angle> | inherit", -"0deg", -"text content elements", -true, -"", -"visual", -false -}, - -{ -"glyph-orientation-vertical", -"auto | <angle> | inherit", -"auto", -"text content elements", -true, -"", -"visual", -false -}, - -{ -"image-rendering", -"auto | optimizeSpeed | optimizeQuality | inherit", -"auto", -"images", -true, -"", -"visual", -true -}, - -{ -"kerning", -"auto | <length> | inherit", -"auto", -"text content elements", -true, -"", -"visual", -true -}, - -{ -"letter-spacing", -"normal | <length> | inherit", -"normal", -"text content elements", -true, -"", -"visual", -true -}, - -{ -"lighting-color", -"currentColor | <color> [icc-color(<name>[,<icccolorvalue>]*)] | inherit", -"white", -"feDiffuseLighting' and 'feSpecularLighting' elements", -false, -"", -"visual", -true -}, - -{ -"marker", -"see individual properties", -"see individual properties", -"path', 'line', 'polyline' and 'polygon' elements", -true, -"", -"visual", -true -}, - -{ -"marker-end' 'marker-mid' 'marker-start", -"none | inherit | <uri>", -"none", -"path', 'line', 'polyline' and 'polygon' elements", -true, -"", -"visual", -true -}, - -{ -"mask", -"<uri> | none | inherit", -"none", -"container elements and graphics elements", -false, -"", -"visual", -true -}, - -{ -"opacity", -"<opacity-value> | inherit", -"1", -"container elements and graphics elements", -false, -"", -"visual", -true -}, - -{ -"overflow", -"visible | hidden | scroll | auto | inherit", -"see prose", -"elements which establish a new viewport, 'pattern' elements and 'marker' elements", -false, -"", -"visual", -true -}, - -{ -"pointer-events", -"visiblePainted | visibleFill | visibleStroke | visible | painted | fill | stroke | all | none | inherit", -"visiblePainted", -"graphics elements", -true, -"", -"visual", -true -}, - -{ -"shape-rendering", -"auto | optimizeSpeed | crispEdges | geometricPrecision | inherit", -"auto", -"shapes", -true, -"", -"visual", -true -}, - -{ -"stop-color", -"currentColor | <color> [icc-color(<name>[,<icccolorvalue>]*)] | inherit", -"black", -"stop' elements", -false, -"", -"visual", -true -}, - -{ -"stop-opacity", -"<opacity-value> | inherit", -"1", -"stop' elements", -false, -"", -"visual", -true -}, - -{ -"stroke", -"<paint> (See Specifying paint)", -"none", -"shapes and text content elements", -true, -"", -"visual", -true -}, - -{ -"stroke-dasharray", -"none | <dasharray> | inherit", -"none", -"shapes and text content elements", -true, -"", -"visual", -"" -}, - -{ -"stroke-dashoffset", -"<length> | inherit", -"0", -"shapes and text content elements", -true, -"see prose", -"visual", -true -}, - -{ -"stroke-linecap", -"butt | round | square | inherit", -"butt", -"shapes and text content elements", -true, -"", -"visual", -true -}, - -{ -"stroke-linejoin", -"miter | round | bevel | inherit", -"miter", -"shapes and text content elements", -true, -"", -"visual", -true -}, - -{ -"stroke-miterlimit", -"<miterlimit> | inherit", -"4", -"shapes and text content elements", -true, -"", -"visual", -true -}, - -{ -"stroke-opacity", -"<opacity-value> | inherit", -"1", -"shapes and text content elements", -true, -"", -"visual", -true -}, - -{ -"stroke-width", -"<length> | inherit", -"1", -"shapes and text content elements", -true, -"", -"visual", -true -}, - -{ -"text-anchor", -"start | middle | end | inherit", -"start", -"text content elements", -true, -"", -"visual", -true -}, - -{ -"text-decoration", -"none | [ underline || overline || line-through || blink ] | inherit", -"none", -"text content elements", -"no (see prose)", -"", -"visual", -true -}, - -{ -"text-rendering", -"auto | optimizeSpeed | optimizeLegibility | geometricPrecision | inherit", -"auto", -"'text' elements", -true, -"", -"visual", -true -}, - -{ -"unicode-bidi", -"normal | embed | bidi-override | inherit", -"normal", -"text content elements", -false, -"", -"visual", -false -}, - -{ -"visibility", -"visible | hidden | collapse | inherit", -"visible", -"graphics elements (including the 'text' element) and text sub-elements (i.e., 'tspan', 'tref', 'altGlyph', 'textPath' and 'a')", -true, -"", -"visual", -true -}, - -{ -"word-spacing", -"normal | <length> | inherit", -"normal", -"text content elements", -true, -"", -"visual", -true -}, - -{ -"writing-mode", -"lr-tb | rl-tb | tb-rl | lr | rl | tb | inherit", -"lr-tb", -"'text' elements", -true, -"", -"visual", -false -}, - -{ -NULL, -NULL, -NULL, -NULL, -false, -NULL, -NULL, -false -} - -}; - - -static void -printTable() -{ - for (SvgProp const *prop = svgProps; prop->name; prop++) { - printf("#### Prop: %s ####\n", prop->name); - printf("values : %s\n", prop->values); - printf("defaultValue: %s\n", prop->defaultValue); - printf("appliesTo : %s\n", prop->appliesTo); - printf("inherited : %s\n", ( prop->inherited ? "true" : "false" )); - printf("percentages : %s\n", prop->percentages); - printf("groups : %s\n", prop->mediaGroups); - printf("animatable : %s\n", ( prop->animatable ? "true" : "false" )); - printf("\n"); - } -} - - -int main(int /*argc*/, char **/*argv*/) -{ - printTable(); - return ( ferror(stdout) ? EXIT_FAILURE : EXIT_SUCCESS ); -} - - -/* - Local Variables: - mode:c++ - c-file-style:"stroustrup" - c-file-offsets:((innamespace . 0)(inline-open . 0)(case-label . +)) - indent-tabs-mode:nil - fill-column:99 - End: -*/ -// vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:fileencoding=utf-8:textwidth=99 : diff --git a/src/dom/smil.h b/src/dom/smil.h deleted file mode 100644 index 14870a4e4..000000000 --- a/src/dom/smil.h +++ /dev/null @@ -1,2508 +0,0 @@ -#ifndef SEEN_SMIL_H -#define SEEN_SMIL_H -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * =========================================================================== - * NOTES - * - * This API and many of the comments come from this document: - * http://www.w3.org/TR/smil-boston-dom - * - * ...which is a DRAFT. But it's the best we can find. Can someone - * find a more finished, complete SMIL DOM document for us? Thanks. - */ - - -#include "dom.h" -#include "views.h" -#include "events.h" - -#include <vector> - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace smil -{ - - - - -//Local definitions -typedef dom::DOMString DOMString; -typedef dom::Element Element; -typedef dom::NodeList NodeList; -typedef dom::Document Document; - -//forward declarations -//SMIL (non-DOM) types -class ElementExclusiveTimeContainer; -class ElementLayout; -class ElementParallelTimeContainer; -class ElementSequentialTimeContainer; -class ElementSyncBehavior; -class ElementTargetAttributes; -class ElementTest; -class ElementTime; -class ElementTimeContainer; -class ElementTimeControl; -class ElementTimeManipulation; -class Time; -class TimeEvent; -class TimeList; - -//SMIL Elements -class SMILAnimateColorElement; -typedef Ptr<SMILAnimateColorElement> SMILAnimateColorElementPtr; -class SMILAnimateElement; -typedef Ptr<SMILAnimateElement> SMILAnimateElementPtr; -class SMILAnimateMotionElement; -typedef Ptr<SMILAnimateMotionElement> SMILAnimateMotionElementPtr; -class SMILAnimation; -typedef Ptr<SMILAnimation> SMILAnimationPtr; -class SMILDocument; -typedef Ptr<SMILDocument> SMILDocumentPtr; -class SMILElement; -typedef Ptr<SMILElement> SMILElementPtr; -class SMILLayoutElement; -typedef Ptr<SMILLayoutElement> SMILLayoutElementPtr; -class SMILMediaElement; -typedef Ptr<SMILMediaElement> SMILMediaElementPtr; -class SMILRefElement; -typedef Ptr<SMILRefElement> SMILRefElementPtr; -class SMILRegionElement; -typedef Ptr<SMILRegionElement> SMILRegionElementPtr; -class SMILRegionInterface; -typedef Ptr<SMILRegionInterface> SMILRegionInterfacePtr; -class SMILRootLayoutElement; -typedef Ptr<SMILRootLayoutElement> SMILRootLayoutElementPtr; -class SMILSetElement; -typedef Ptr<SMILSetElement> SMILSetElementPtr; -class SMILSwitchElement; -typedef Ptr<SMILSwitchElement> SMILSwitchElementPtr; -class SMILTopLayoutElement; -typedef Ptr<SMILTopLayoutElement> SMILTopLayoutElementPtr; - - - -/*######################################################################### -########################################################################### -## D A T A T Y P E S -########################################################################### -#########################################################################*/ - - - -/*######################################################################### -## ElementLayout -#########################################################################*/ - -/** - * This interface is used by SMIL elements root-layout, top-layout and region. - */ -class ElementLayout -{ -public: - - - /** - * Return the title of an item implementing this interface - */ - virtual DOMString getTitle() - { return title; } - - /** - * Set the title of an item implementing this interface - */ - virtual void setTitle(const DOMString &val) throw(dom::DOMException) - { title = val; } - - /** - * Return the background color of an item implementing this interface - */ - virtual DOMString getBackgroundColor() - { return backgroundColor; } - - /** - * Set the background color of an item implementing this interface - */ - virtual void setBackgroundColor(const DOMString &val) throw(dom::DOMException) - { backgroundColor = val; } - - /** - * Return the height of an item implementing this interface - */ - virtual long getHeight() - { return height; } - - /** - * Set the height of an item implementing this interface - */ - virtual void setHeight(long val) throw(dom::DOMException) - { height = val; } - - /** - * Return the width of an item implementing this interface - */ - virtual long getWidth() - { return width; } - - /** - * Set the width of an item implementing this interface - */ - virtual void setWidth(long val) throw(dom::DOMException) - { width = val; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementLayout() : - title(), - backgroundColor(), - height(0), - width(0) - {} - - /** - * - */ - ElementLayout(const ElementLayout &other) - { - assign(other); - } - - /** - * - */ - ElementLayout &operator=(const ElementLayout &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const ElementLayout &other) - { - title = other.title; - backgroundColor = other.backgroundColor; - height = other.height; - width = other.width; - } - - /** - * - */ - virtual ~ElementLayout() {} - -protected: - - DOMString title; - DOMString backgroundColor; - long height; - long width; - -}; - - -/*######################################################################### -## SMILRegionInterface -#########################################################################*/ - -/** - * Declares rendering surface for an element. See the region attribute definition. - */ -class SMILRegionInterface -{ -public: - - /** - * Gets an associated region element - */ - virtual SMILRegionElementPtr getRegion() - { return regionElement; } - - /** - * Sets an associated region element - */ - virtual void setRegion(const SMILRegionElementPtr val) - { regionElement = val; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - SMILRegionInterface() - { } - - /** - * - */ - SMILRegionInterface(const SMILRegionInterface &other) : - regionElement (other.regionElement) - {} - - /** - * - */ - SMILRegionInterface& operator=(const SMILRegionInterface &other) - { - regionElement = other.regionElement; - return *this; - } - - /** - * - */ - virtual ~SMILRegionInterface() {} - -protected: - - SMILRegionElementPtr regionElement; - -}; - - -/*######################################################################### -## Time -#########################################################################*/ - -/** - * The Time interface is a datatype that represents times within the timegraph. - * A Time has a type, key values to describe the time, and a boolean to - * indicate whether the values are currently unresolved. - */ -class Time -{ -public: - - - /** - * A boolean indicating whether the current Time has been fully resolved to the - * document schedule. Note that for this to be true, the current Time must be - * defined (not indefinite), the syncbase and all Time's that the syncbase - * depends on must be defined (not indefinite), and the begin Time of all - * ascendent time containers of this element and all Time elements that this - * depends upon must be defined (not indefinite). If this Time is based upon an - * event, this Time will only be resolved once the specified event has happened, - * subject to the constraints of the time container. Note that this may change - * from true to false when the parent time container ends its simple duration - * (including when it repeats or restarts). - */ - virtual bool getResolved() - { return resolved; } - - /** - * The clock value in seconds relative to the parent time container begin. This - * indicates the resolved time relationship to the parent time container. This is - * only valid if resolved is true. - */ - virtual double getResolvedOffset() - { return resolvedOffset; } - - /** - * An integer indicating the type of this time value. - */ - typedef enum - { - SMIL_TIME_INDEFINITE = 0, - SMIL_TIME_OFFSET = 1, - SMIL_TIME_SYNC_BASED = 2, - SMIL_TIME_EVENT_BASED = 3, - SMIL_TIME_WALLCLOCK = 4, - SMIL_TIME_MEDIA_MARKER = 5 - } TimeType; - - - - /** - * A code representing the type of the underlying object, as defined above. - */ - virtual unsigned short getTimeType() - { return timeType; } - - - /** - * The clock value in seconds relative to the syncbase or eventbase. - * Default value is 0. - */ - virtual double getOffset() - { return offset; } - - /** - * Set the value above - */ - virtual void setOffset(double val) throw (dom::DOMException) - { offset = val; } - - /** - * Get the base element for a sync-based or event-based time. - */ - virtual ElementPtr getBaseElement() - { return baseElement; } - - /** - * Set the base element for a sync-based or event-based time. - */ - virtual void setBaseElement(const ElementPtr val) throw (dom::DOMException) - { baseElement = val; } - - /** - * If true, indicates that a sync-based time is relative to the begin of the - * baseElement. If false, indicates that a sync-based time is relative to the - * active end of the baseElement. - */ - virtual bool getBaseBegin() - { return baseBegin; } - - /** - * Set the value above. - */ - virtual void setBaseBegin(bool val) throw (dom::DOMException) - { baseBegin = val; } - - /** - * Get the name of the event for an event-based time. Default value is null. - */ - virtual DOMString getEvent() - { return eventStr; } - - /** - * Set the name of the event for an event-based time. Default value is null. - */ - virtual void setEvent(const DOMString &val) throw (dom::DOMException) - { eventStr = val; } - - /** - * Get the name of the marker from the media element, for media marker - * times. Default value is null. - */ - virtual DOMString getMarker() - { return marker; } - - /** - * Set the name of the marker from the media element, for media marker - * times. Default value is null. - */ - virtual void setMarker(const DOMString &val) throw (dom::DOMException) - { marker = val; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - Time() - { - resolved = false; - resolvedOffset = 0.0; - timeType = SMIL_TIME_INDEFINITE; - offset = 0.0; - //baseElement = NULL; //not necessary - baseBegin = false; - eventStr = ""; - marker = ""; - } - - /** - * - */ - Time(const Time &other) - { - assign(other); - } - - /** - * - */ - Time &operator=(const Time &other) - { - assign(other); - return *this; - } - - void assign(const Time &other) - { - resolved = other.resolved; - resolvedOffset = other.resolvedOffset; - timeType = other.timeType; - offset = other.offset; - baseElement = other.baseElement; - baseBegin = other.baseBegin; - eventStr = other.eventStr; - marker = other.marker; - } - - /** - * - */ - virtual ~Time() {} - -protected: - - bool resolved; - double resolvedOffset; - unsigned short timeType; - double offset; - ElementPtr baseElement; - bool baseBegin; - DOMString eventStr; - DOMString marker; - -}; - - -/*######################################################################### -## TimeList -#########################################################################*/ - -/** - * The TimeList interface provides the abstraction of an ordered collection of - * times, without defining or constraining how this collection is implemented. - * - * The items in the TimeList are accessible via an integral index, starting from 0. - */ -class TimeList -{ -public: - - /** - * Returns the indexth item in the collection. If index is greater than or equal - * to the number of times in the list, this returns null. - */ - virtual Time item(unsigned long index) - { - if (index >=items.size()) - { - Time tim; - return tim; - } - return items[index]; - } - - /** - * The number of times in the list. The range of valid child time - * indices is 0 to length-1 inclusive. - */ - virtual unsigned long getLength() - { - return items.size(); - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - TimeList() {} - - /** - * - */ - TimeList(const TimeList &other) : - items (other.items) - { - } - - /** - * - */ - TimeList &operator=(const TimeList &other) - { - items = other.items; - return *this; - } - - /** - * - */ - virtual ~TimeList() {} - -protected: - - std::vector<Time>items; - - -}; - - -/*######################################################################### -## ElementTime -#########################################################################*/ - -/** - * This interface defines the set of timing attributes that are common to - * all timed elements. - */ -class ElementTime -{ -public: - - - /** - * Get the desired value (as a list of times) of the begin instant of this node. - */ - virtual TimeList &getBegin() - { return beginTime; } - - /** - * Set the desired value (as a list of times) of the begin instant of this node. - */ - virtual void setBegin(const TimeList &val) throw(dom::DOMException) - { beginTime = val; } - - /** - * Set the list of active ends for this node. - */ - virtual TimeList &getEnd() - { return endTime; } - - /** - * Set the list of active ends for this node. - */ - virtual void setEnd(const TimeList &val) throw(dom::DOMException) - { endTime = val; } - - /** - * Get the desired simple duration value of this node in seconds. - * Negative value means "indefinite". - */ - virtual double getDur() - { return dur; } - - /** - * Set the desired simple duration value of this node in seconds. - * Negative value means "indefinite". - */ - virtual void setDur(double val) throw(dom::DOMException) - { dur = val; } - - /** - * An integer indicating the value of the restart attribute. - */ - typedef enum - { - RESTART_ALWAYS = 0, - RESTART_NEVER = 1, - RESTART_WHEN_NOT_ACTIVE = 2 - } RestartType; - - /** - * Get code representing the value of the restart attribute, - * as defined above. Default value is RESTART_ALWAYS. - */ - virtual unsigned short getRestart() - { return restart; } - - /** - * Set code representing the value of the restart attribute, - * as defined above. Default value is RESTART_ALWAYS. - */ - virtual void setRestart(unsigned short val) throw (dom::DOMException) - { restart = val; } - - - /** - * An integer indicating the value of the fill attribute. - */ - typedef enum - { - FILL_REMOVE = 0, - FILL_FREEZE = 1 - } FillType; - - - /** - * Get code representing the value of the fill attribute, as defined above. - * Default value is FILL_REMOVE. - */ - virtual unsigned short getFill() - { return fill; } - - /** - * Set code representing the value of the fill attribute, as defined above. - */ - virtual void setFill(unsigned short val) throw (dom::DOMException) - { fill = val; } - - /** - * The repeatCount attribute causes the element to play repeatedly (loop) for the - * specified number of times. A negative value repeat the element indefinitely. - * Default value is 0 (unspecified). - */ - virtual double getRepeatCount() - { return repeatCount; } - - /** - * Set the value above. - */ - virtual void setRepeatCount(double val) throw (dom::DOMException) - { repeatCount = val; } - - /** - * The repeatDur causes the element to play repeatedly (loop) for the specified - * duration in milliseconds. Negative means "indefinite". - */ - virtual double getRepeatDur() - { return repeatDur; } - - /** - * Set the value above. - */ - virtual void setRepeatDur(double val) throw (dom::DOMException) - { repeatDur = val; } - - /** - * Causes this element to begin the local timeline (subject to sync constraints). - */ - virtual bool beginElement() - { - return true; - } - - /** - * Causes this element to end the local timeline (subject to sync constraints). - */ - virtual bool endElement() - { - return true; - } - - /** - * Causes this element to pause the local timeline (subject to sync constraints). - */ - virtual void pauseElement() - { - } - - /** - * Causes this element to resume a paused local timeline. - */ - virtual void resumeElement() - { - } - - /** - * Seeks this element to the specified point on the local timeline (subject to - * sync constraints). If this is a timeline, this must seek the entire timeline - * (i.e. propagate to all timeChildren). - */ - virtual void seekElement(double &/*seekTo*/) - { - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementTime() - { - dur = 0.0; - restart = RESTART_ALWAYS; - fill = FILL_REMOVE; - repeatCount = 0.0; - repeatDur = 0.0; - } - - /** - * - */ - ElementTime(const ElementTime &other) - { - assign(other); - } - - /** - * - */ - ElementTime &operator=(const ElementTime &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const ElementTime &other) - { - beginTime = other.beginTime; - endTime = other.endTime; - dur = other.dur; - restart = other.restart; - fill = other.fill; - repeatCount = other.repeatCount; - repeatDur = other.repeatDur; - } - - /** - * - */ - virtual ~ElementTime() {} - - -protected: - - TimeList beginTime; - TimeList endTime; - double dur; - unsigned short restart; - unsigned short fill; - double repeatCount; - double repeatDur; - - -}; - - -/*######################################################################### -## ElementTimeManipulation -#########################################################################*/ - -/** - * This interface support use-cases commonly associated with animation. - */ -class ElementTimeManipulation -{ -public: - - /** - * Defines the playback speed of element time. The value is specified as a - * multiple of normal (parent time container) play speed. Legal values are signed - * floating point values. Zero values are not allowed. The default is 1.0 (no - * modification of speed). - */ - virtual double getSpeed() - { return speed; } - - /** - * Sets the value above. - */ - virtual void setSpeed(double val) throw (dom::DOMException) - { speed = val; } - - /** - * The percentage value of the simple acceleration of time for the element. - * Allowed values are from 0 to 100. Default value is 0 (no acceleration). The - * sum of the values for accelerate and decelerate must not exceed 100. If it - * does, the deceleration value will be reduced to make the sum legal. - */ - virtual double getAccelerate() - { return accelerate; } - - /** - * Sets the value above. - */ - virtual void setAccelerate(double val) throw (dom::DOMException) - { accelerate = val; } - - /** - * The percentage value of the simple decelerate of time for the element. Allowed - * values are from 0 to 100. Default value is 0 (no deceleration). The sum of the - * values for accelerate and decelerate must not exceed 100. If it does, the - * deceleration value will be reduced to make the sum legal. - */ - virtual double getDecelerate() - { return decelerate; } - - /** - * Sets the value above. - */ - virtual void setDecelerate(double val) throw (dom::DOMException) - { decelerate = val; } - - /** - * The autoReverse attribute controls the "play forwards then backwards" - * functionality. Default value is false. - */ - virtual bool getAutoReverse() - { return autoReverse; } - - /** - * Sets the value above. - */ - virtual void setAutoReverse(bool val) throw (dom::DOMException) - { autoReverse = val; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementTimeManipulation() - { - speed = 0.0; - accelerate = 0.0; - decelerate = 0.0; - autoReverse = false; - } - - /** - * - */ - ElementTimeManipulation(const ElementTimeManipulation &other) - { - assign(other); - } - - /** - * - */ - ElementTimeManipulation &operator=(const ElementTimeManipulation &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const ElementTimeManipulation &other) - { - speed = other.speed; - accelerate = other.accelerate; - decelerate = other.decelerate; - autoReverse = other.autoReverse; - } - - /** - * - */ - virtual ~ElementTimeManipulation() {} - - -protected: - - double speed; - double accelerate; - double decelerate; - bool autoReverse; - -}; - - -/*######################################################################### -## ElementTimeContainer -#########################################################################*/ - -/** - * This is a placeholder - subject to change. This represents generic timelines. - */ -class ElementTimeContainer : public ElementTime -{ -public: - - - /** - * A NodeList that contains all timed childrens of this node. If there - * are no timed children, the Nodelist is empty. - */ - virtual NodeList getTimeChildren() - { - NodeList list; - return list; - } - - /** - * Returns a list of child elements active at the specified invocation. - */ - virtual NodeList getActiveChildrenAt(double /*instant_in_millis*/) - { - NodeList list; - return list; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementTimeContainer() {} - - /** - * - */ - ElementTimeContainer(const ElementTimeContainer &other) : ElementTime(other) - { - } - - /** - * - */ - ElementTimeContainer &operator=(const ElementTimeContainer &/*other*/) - { - return *this; - } - - /** - * - */ - virtual ~ElementTimeContainer() {} - -protected: - - -}; - - -/*######################################################################### -## ElementSyncBehavior -#########################################################################*/ - -/** - * The synchronization behavior extension. - */ -class ElementSyncBehavior -{ -public: - - /** - * The runtime synchronization behavior for an element. - */ - virtual DOMString getSyncBehavior() - { return syncBehavior; } - - /** - * The sync tolerance for the associated element. It has an effect only - * if the element has syncBehavior="locked". - */ - virtual double getSyncTolerance() - { return syncTolerance; } - - /** - * Defines the default value for the runtime synchronization behavior - * for an element, and all descendents. - */ - virtual DOMString getDefaultSyncBehavior() - { return defaultSyncBehavior; } - - /** - * Defines the default value for the sync tolerance for an element, - * and all descendents. - */ - virtual double getDefaultSyncTolerance() - { return defaultSyncTolerance; } - - /** - * If set to true, forces the time container playback to sync to this element. - */ - virtual bool getSyncMaster() - { return syncMaster; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementSyncBehavior() - { - syncBehavior = ""; - syncTolerance = 0.0; - defaultSyncBehavior = ""; - defaultSyncTolerance = 0.0; - syncMaster = false; - } - - /** - * - */ - ElementSyncBehavior(const ElementSyncBehavior &other) - { - assign(other); - } - - /** - * - */ - ElementSyncBehavior &operator=(const ElementSyncBehavior &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const ElementSyncBehavior &other) - { - syncBehavior = other.syncBehavior; - syncTolerance = other.syncTolerance; - defaultSyncBehavior = other.defaultSyncBehavior; - defaultSyncTolerance = other.defaultSyncTolerance; - syncMaster = other.syncMaster; - } - - /** - * - */ - virtual ~ElementSyncBehavior() {} - -protected: - - DOMString syncBehavior; - double syncTolerance; - DOMString defaultSyncBehavior; - double defaultSyncTolerance; - bool syncMaster; - -}; - - -/*######################################################################### -## ElementParallelTimeContainer -#########################################################################*/ - -/** - * A parallel container defines a simple parallel time grouping in which multiple - * elements can play back at the same time. - */ -class ElementParallelTimeContainer : public ElementTimeContainer -{ -public: - - /** - * Controls the end of the container. - */ - virtual DOMString getEndSync() - { return endSync; } - - /** - * Controls the end of the container. - */ - virtual void setEndSync(const DOMString &val) throw (dom::DOMException) - { endSync = val; } - - /** - * This method returns the implicit duration in seconds. - */ - virtual double getImplicitDuration() - { return implicitDuration; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementParallelTimeContainer() - { - endSync = ""; - implicitDuration = 0.0; - } - - /** - * - */ - ElementParallelTimeContainer(const ElementParallelTimeContainer &other) - : ElementTimeContainer(other) - { - assign(other); - } - - /** - * - */ - ElementParallelTimeContainer &operator=(const ElementParallelTimeContainer &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const ElementParallelTimeContainer &other) - { - endSync = other.endSync; - implicitDuration = other.implicitDuration; - } - - /** - * - */ - virtual ~ElementParallelTimeContainer() {} - -protected: - - DOMString endSync; - double implicitDuration; - -}; - - -/*######################################################################### -## ElementSequentialTimeContainer -#########################################################################*/ - -/** - * A seq container defines a sequence of elements in which elements play - * one after the other. - */ -class ElementSequentialTimeContainer : public ElementTimeContainer -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementSequentialTimeContainer() {} - - /** - * - */ - ElementSequentialTimeContainer(const ElementSequentialTimeContainer &other) - : ElementTimeContainer(other) - { - } - - /** - * - */ - virtual ~ElementSequentialTimeContainer() {} - - -}; - - -/*######################################################################### -## ElementExclusiveTimeContainer -#########################################################################*/ - -/** - * This interface defines a time container with semantics based upon par, but - * with the additional constraint that only one child element may play at a time. - */ -class ElementExclusiveTimeContainer : public ElementTimeContainer -{ -public: - - /** - * Controls the end of the container. - */ - virtual DOMString getEndSync() - { return endSync; } - - /** - * Controls the end of the container. - */ - virtual void setEndSync(const DOMString &val) throw (dom::DOMException) - { endSync = val; } - - /** - * This should support another method to get the ordered collection of paused - * elements (the paused stack) at a given point in time. - */ - virtual NodeList getPausedElements() - { return pausedElements; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementExclusiveTimeContainer() {} - - /** - * - */ - ElementExclusiveTimeContainer(const ElementExclusiveTimeContainer &other) - : ElementTimeContainer(other) - { - assign(other); - } - - /** - * - */ - ElementExclusiveTimeContainer &operator=(const ElementExclusiveTimeContainer &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const ElementExclusiveTimeContainer &other) - { - endSync = other.endSync; - pausedElements = other.pausedElements; - } - - /** - * - */ - virtual ~ElementExclusiveTimeContainer() {} - -protected: - - DOMString endSync; - NodeList pausedElements; - - -}; - - -/*######################################################################### -## ElementTimeControl -#########################################################################*/ - -/** - * NOTE: need more info - */ -class ElementTimeControl -{ -public: - - /** - * Causes this element to begin the local timeline (subject to sync constraints). - */ - virtual bool beginElement() throw(dom::DOMException) - { - return true; - } - - /** - * Causes this element to begin the local timeline (subject to sync constraints), - * at the passed offset from the current time when the method is called. If the - * offset is >= 0, the semantics are equivalent to an event-base begin with the - * specified offset. If the offset is < 0, the semantics are equivalent to - * beginElement(), but the element active duration is evaluated as though the - * element had begun at the passed (negative) offset from the current time when - * the method is called. - */ - virtual bool beginElementAt(double /*offset*/) throw(dom::DOMException) - { - return true; - } - - /** - * Causes this element to end the local timeline (subject to sync constraints). - */ - virtual bool endElement() throw(dom::DOMException) - { - return true; - } - - /** - * Causes this element to end the local timeline (subject to sync constraints) at - * the specified offset from the current time when the method is called. - */ - virtual bool endElementAt(double /*offset*/) throw(dom::DOMException) - { - return true; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementTimeControl() {} - - /** - * - */ - ElementTimeControl(const ElementTimeControl &/*other*/) - { - } - - /** - * - */ - ElementTimeControl &operator=(const ElementTimeControl &/*other*/) - { - return *this; - } - - /** - * - */ - virtual ~ElementTimeControl() {} - - -}; - - -/*######################################################################### -## ElementTargetAttributes -#########################################################################*/ - -/** - * This interface define the set of animation target extensions. - */ -class ElementTargetAttributes -{ -public: - - - /** - * Get the name of the target attribute. - */ - virtual DOMString getAttributeName() - { return attributeName; } - - /** - * Set the name of the target attribute. - */ - virtual void setAttributeName(const DOMString &val) - { attributeName = val; } - - /** - * A code representing the value of the attributeType attribute - */ - typedef enum - { - ATTRIBUTE_TYPE_AUTO = 0, - ATTRIBUTE_TYPE_CSS = 1, - ATTRIBUTE_TYPE_XML = 2 - } AttributeType; - - /** - * Get the attribute type, as defined above. - */ - virtual unsigned short getAttributeType() - { return attributeType; } - - /** - * Set the attribute type, as defined above. - */ - virtual void setAttributeType(unsigned short val) - { attributeType = val; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementTargetAttributes() - { - attributeName = ""; - attributeType = ATTRIBUTE_TYPE_AUTO; - } - - /** - * - */ - ElementTargetAttributes(const ElementTargetAttributes &other) - { - assign(other); - } - - /** - * - */ - ElementTargetAttributes &operator=(const ElementTargetAttributes &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const ElementTargetAttributes &other) - { - attributeName = other.attributeName; - attributeType = other.attributeType; - } - - /** - * - */ - virtual ~ElementTargetAttributes() {} - -protected: - - DOMString attributeName; - unsigned short attributeType; - -}; - - -/*######################################################################### -## ElementTest -#########################################################################*/ - -/** - * Defines the test attributes interface. See the Test attributes definition. - */ -class ElementTest -{ -public: - - - /** - * Get the systemBitrate value. - */ - virtual long getSystemBitrate() - { return systemBitrate; } - - /** - * Set the systemBitrate value. - */ - virtual void setSystemBitrate(long val) throw (dom::DOMException) - { systemBitrate = val; } - - /** - * Get the systemCaptions value. - */ - virtual bool getSystemCaptions() - { return systemCaptions; } - - /** - * Set the systemCaptions value. - */ - virtual void setSystemCaptions(bool val) throw (dom::DOMException) - { systemCaptions = val; } - - /** - * Get the systemLanguage value. - */ - virtual DOMString getSystemLanguage() - { return systemLanguage; } - - /** - * Set the systemLanguage value. - */ - virtual void setSystemLanguage(const DOMString &val) throw (dom::DOMException) - { systemLanguage = val; } - - /** - * Get the systemRequired value. - */ - virtual bool getSystemRequired() - { return systemRequired; } - - /** - * Get the systemScreenSize value. - */ - virtual bool getSystemScreenSize() - { return systemScreenSize; } - - /** - * Get the systemScreenDepth value. - */ - virtual bool getSystemScreenDepth() - { return systemScreenDepth; } - - /** - * Get the systemOverdubOrSubtitle value. - */ - virtual DOMString getSystemOverdubOrSubtitle() - { return systemOverdubOrSubtitle; } - - /** - * Set the systemOverdubOrSubtitle value. - */ - virtual void setSystemOverdubOrSubtitle(const DOMString &val) throw (dom::DOMException) - { systemOverdubOrSubtitle = val; } - - /** - * Get the systemAudioDesc value. - */ - virtual bool getSystemAudioDesc() - { return systemAudioDesc; } - - /** - * Set the systemOverdubOrSubtitle value. - */ - virtual void setSystemAudioDesc(bool val) throw (dom::DOMException) - { systemAudioDesc = val; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - ElementTest() : - systemBitrate (0), - systemCaptions (false), - systemLanguage (), - systemRequired (false), - systemScreenSize (false), - systemScreenDepth (false), - systemOverdubOrSubtitle (), - systemAudioDesc (false) - { - } - - /** - * - */ - ElementTest(const ElementTest &other) - { - assign(other); - } - - /** - * - */ - ElementTest &operator=(const ElementTest &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const ElementTest &other) - { - systemBitrate = other.systemBitrate; - systemCaptions = other.systemCaptions; - systemLanguage = other.systemLanguage; - systemRequired = other.systemRequired; - systemScreenSize = other.systemScreenSize; - systemScreenDepth = other.systemScreenDepth; - systemOverdubOrSubtitle = other.systemOverdubOrSubtitle; - systemAudioDesc = other.systemAudioDesc; - } - - /** - * - */ - virtual ~ElementTest() {} - - -protected: - long systemBitrate; - bool systemCaptions; - DOMString systemLanguage; - bool systemRequired; - bool systemScreenSize; - bool systemScreenDepth; - DOMString systemOverdubOrSubtitle; - bool systemAudioDesc; -}; - - -/*######################################################################### -## TimeEvent -#########################################################################*/ - -/** - * The TimeEvent interface provides specific contextual information associated - * with Time events. - */ -class TimeEvent : public events::Event -{ -public: - - /** - * The view attribute identifies the AbstractView from which the event - * was generated. - */ - virtual views::AbstractView &getView() - { return view; } - - /** - * Specifies some detail information about the Event, depending on - * the type of event. - */ - virtual long getDetail() - { return detail; } - - /** - * The initTimeEvent method is used to initialize the value of a TimeEvent - * created through the DocumentEvent interface. This method may only be called - * before the TimeEvent has been dispatched via the dispatchEvent method, though - * it may be called multiple times during that phase if necessary. If called - * multiple times, the final invocation takes precedence. - */ - virtual void initTimeEvent(const DOMString &/*typeArg*/, - const views::AbstractView */*viewArg*/, - long /*detailArg*/) - { - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - TimeEvent() - { - detail = 0; - } - - /** - * - */ - TimeEvent(const TimeEvent &other) : events::Event(other) - { - assign(other); - } - - /** - * - */ - TimeEvent &operator=(const TimeEvent &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const TimeEvent &other) - { - view = other.view; - detail = other.detail; - } - - /** - * - */ - virtual ~TimeEvent() {} - - -protected: - - views::AbstractView view; - long detail; - - -}; - - - - -/*######################################################################### -########################################################################### -## I N T E R F A C E T Y P E S -########################################################################### -#########################################################################*/ - - - - -/*######################################################################### -## SMILDocument -#########################################################################*/ - -/** - * A SMIL document is the root of the SMIL Hierarchy and holds the entire - * content. Beside providing access to the hierarchy, it also provides some - * convenience methods for accessing certain sets of information from the document. - */ -class SMILDocument : virtual public Document, - public ElementSequentialTimeContainer -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILDocument() {} - - -}; - - -/*######################################################################### -## SMILElement -#########################################################################*/ - -/** - * The SMILElement interface is the base for all SMIL element types. It follows - * the model of the HTMLElement in the HTML DOM, extending the base Element class - * to denote SMIL-specific elements. - */ -class SMILElement : virtual public Element -{ -public: - - /** - * Get the unique ID - */ - virtual DOMString getId() =0; - - /** - * Set the unique ID - */ - virtual void setId(const DOMString &val) throw (dom::DOMException) =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILElement() {} - - -}; - - -/*######################################################################### -## SMILLayoutElement -#########################################################################*/ - -/** - * Declares layout type for the document. See: - * http://www.w3.org/TR/2000/WD-smil-boston-20000225/layout.html#LayoutModuleNS-TheLayoutElement - */ -class SMILLayoutElement : virtual public SMILElement -{ -public: - - /** - * The mime type of the layout langage used in this layout element.The default - * value of the type attribute is "text/smil-basic-layout". - */ - virtual DOMString getType() =0; - - /** - * true if the player can understand the mime type, false otherwise. - */ - virtual bool getResolved() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILLayoutElement() {} - - -}; - - -/*######################################################################### -## SMILTopLayoutElement -#########################################################################*/ - -/** - * Declares layout properties for the top-layout element. See: - * http://www.w3.org/TR/2000/WD-smil-boston-20000225/layout.html#LayoutModuleNS-TheTopLayoutElement - */ -class SMILTopLayoutElement : virtual public SMILElement, - virtual public ElementLayout -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILTopLayoutElement() {} - - -}; - - -/*######################################################################### -## SMILRootLayoutElement -#########################################################################*/ - -/** - * Declares layout properties for the root-layout element. See: - * http://www.w3.org/TR/2000/WD-smil-boston-20000225/layout.html#LayoutModuleNS-TheRootLayoutElement - */ -class SMILRootLayoutElement : virtual public SMILElement, - virtual public ElementLayout -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILRootLayoutElement() {} - - -}; - - -/*######################################################################### -## SMILRegionElement -#########################################################################*/ - -/** - * Controls the position, size and scaling of media object elements. See: - * http://www.w3.org/TR/2000/WD-smil-boston-20000225/layout.html#LayoutModuleNS-TheRegionElement - */ -class SMILRegionElement : virtual public SMILElement, - virtual public ElementLayout -{ -public: - - - /** - * Get the fit value - */ - virtual DOMString getFit() =0; - - /** - * Set the fit value - */ - virtual void setFit(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the top value - */ - virtual DOMString getTop() =0; - - /** - * Set the top value - */ - virtual void setTop(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the ZIndex value - */ - virtual long getZIndex() =0; - - /** - * Set the ZIndex value - */ - virtual void setZIndex(long val) throw (dom::DOMException) =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILRegionElement() {} - - -}; - - - -/*######################################################################### -## SMILMediaElement -#########################################################################*/ - -/** - * Declares media content. - */ -class SMILMediaElement : virtual public ElementTime, - virtual public SMILElement -{ -public: - - - /** - * Get the "abstractAttr" value - */ - virtual DOMString getAbstractAttr() =0; - - /** - * Set the "abstractAttr" value - */ - virtual void setAbstractAttr(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "alt" value - */ - virtual DOMString getAlt() =0; - - /** - * Set the "alt" value - */ - virtual void setAlt(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "author" value - */ - virtual DOMString getAuthor() =0; - - /** - * Set the "author" value - */ - virtual void setAuthor(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "clipBegin" value - */ - virtual DOMString getClipBegin() =0; - - /** - * Set the "clipBegin" value - */ - virtual void setClipBegin(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "clipEnd" value - */ - virtual DOMString getClipEnd() =0; - - /** - * Set the "clipEnd" value - */ - virtual void setClipEnd(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "copyright" value - */ - virtual DOMString getCopyright() =0; - - /** - * Set the "copyright" value - */ - virtual void setCopyright(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "longdesc" value - */ - virtual DOMString getLongdesc() =0; - - /** - * Set the "longdesc" value - */ - virtual void setLongdesc(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "port" value - */ - virtual DOMString getPort() =0; - - /** - * Set the "port" value - */ - virtual void setPort(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "readIndex" value - */ - virtual DOMString getReadIndex() =0; - - /** - * Set the "readIndex" value - */ - virtual void setReadIndex(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "rtpFormat" value - */ - virtual DOMString getRtpformat() =0; - - /** - * Set the "readIndex" value - */ - virtual void setRtpformat(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "src" value - */ - virtual DOMString getSrc() =0; - - /** - * Set the "src" value - */ - virtual void setSrc(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "stripRepeat" value - */ - virtual DOMString getStripRepeat() =0; - - /** - * Set the "stripRepeat" value - */ - virtual void setStripRepeat(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "title" value - */ - virtual DOMString getTitle() =0; - - /** - * Set the "title" value - */ - virtual void setTitle(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "transport" value - */ - virtual DOMString getTransport() =0; - - /** - * Set the "transport" value - */ - virtual void setTransport(const DOMString &val) throw (dom::DOMException) =0; - - /** - * Get the "type" value - */ - virtual DOMString getType() =0; - - /** - * Set the "type" value - */ - virtual void setType(const DOMString &val) throw (dom::DOMException) =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILMediaElement() {} - - -}; - - -/*######################################################################### -## SMILRefElement -#########################################################################*/ - -/** - * Audio, video, etc - * NOTE: need more info - */ -class SMILRefElement : virtual public SMILMediaElement -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILRefElement() {} - - -}; - - -/*######################################################################### -## SMILAnimation -#########################################################################*/ - -/** - * This interface defines the set of animation extensions for SMIL. - */ -class SMILAnimation : virtual public SMILElement, - virtual public ElementTargetAttributes, - virtual public ElementTime, - virtual public ElementTimeControl -{ -public: - - /** - * Codes for the "additive" attribute - */ - typedef enum - { - ADDITIVE_REPLACE = 0, - ADDITIVE_SUM = 1 - } AdditiveType; - - - /** - * A code representing the value of the additive attribute, as defined above. - * Default value is ADDITIVE_REPLACE. - */ - virtual unsigned short getAdditive() =0; - - /** - * Set the value above. - */ - virtual void setAdditive(unsigned short val) throw (dom::DOMException)=0; - - /** - * Codes for the 'accumulate' attribute - */ - typedef enum - { - ACCUMULATE_NONE = 0, - ACCUMULATE_SUM = 1 - } AccumulateType; - - - /** - * A code representing the value of the accumulate attribute, as defined above. - * Default value is ACCUMULATE_NONE. - */ - virtual unsigned short getAccumulate() =0; - - /** - * Set the value above - */ - virtual void setAccumulate(unsigned short val) throw (dom::DOMException)=0; - - /** - * Codes for the "calcmode" attribute - */ - typedef enum - { - CALCMODE_DISCRETE = 0, - CALCMODE_LINEAR = 1, - CALCMODE_PACED = 2, - CALCMODE_SPLINE = 3 - } CalcModeType; - - - /** - * A code representing the value of the calcMode attribute, as defined above. - */ - virtual unsigned short getCalcMode() =0; - - /** - * Set the value above. - */ - virtual void setCalcMode(unsigned short val) throw (dom::DOMException)=0; - - /** - * A DOMString representing the value of the keySplines attribute. - */ - virtual DOMString getKeySplines() =0; - - /** - * Set the value above. - */ - virtual void setKeySplines(const DOMString &val) throw (dom::DOMException)=0; - - /** - * Get a list of the time values of the keyTimes attribute. - */ - virtual TimeList getKeyTimes() =0; - - /** - * Set the list of the time value of the keyTimes attribute. - */ - virtual void setKeyTimes(const TimeList &val) throw (dom::DOMException)=0; - - /** - * Get a DOMString representing the value of the values attribute. - */ - virtual DOMString getValues() =0; - - /** - * Set the DOMString representing the value of the values attribute. - */ - virtual void setValues(const DOMString &val) throw (dom::DOMException)=0; - - /** - * Get a DOMString representing the value of the from attribute. - */ - virtual DOMString getFrom() =0; - - /** - * Set the DOMString representing the value of the from attribute. - */ - virtual void setFrom(const DOMString &val) throw (dom::DOMException)=0; - - /** - * Get a DOMString representing the value of the to attribute. - */ - virtual DOMString getTo() =0; - - /** - * Set the DOMString representing the value of the to attribute. - */ - virtual void setTo(const DOMString &val) throw (dom::DOMException)=0; - - /** - * Get a DOMString representing the value of the by attribute. - */ - virtual DOMString getBy() =0; - - /** - * Set the DOMString representing the value of the by attribute. - */ - virtual void setBy(const DOMString &val) throw (dom::DOMException)=0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILAnimation() {} - - -}; - - -/*######################################################################### -## SMILAnimateElement -#########################################################################*/ - -/** - * This interface represents the SMIL animate element. - */ -class SMILAnimateElement : virtual public SMILAnimation -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILAnimateElement() {} - - -}; - - -/*######################################################################### -## SMILSetElement -#########################################################################*/ - -/** - * This interface represents the set element. - */ -class SMILSetElement : virtual public ElementTimeControl, - virtual public ElementTime, - virtual public ElementTargetAttributes, - virtual public SMILElement -{ -public: - - /** - * Specifies the value for the attribute during the duration of this element. - */ - virtual DOMString getTo() =0; - - /** - * Set the value above. - */ - virtual void setTo(const DOMString &val) =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILSetElement() {} - - -}; - - -/*######################################################################### -## SMILAnimateMotionElement -#########################################################################*/ - -/** - * This interface present the animationMotion element in SMIL. - */ -class SMILAnimateMotionElement : virtual public SMILAnimateElement -{ -public: - - /** - * Specifies the curve that describes the attribute value as a function of time. - */ - virtual DOMString getPath() =0; - - /** - * Specifies the curve that describes the attribute value as a function of time. - */ - virtual void setPath(const DOMString &val) throw(dom::DOMException) =0; - - /** - * Specifies the origin of motion for the animation. - */ - virtual DOMString getOrigin() =0; - - /** - * Specifies the origin of motion for the animation. - */ - virtual void setOrigin(const DOMString &val) throw(dom::DOMException) =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILAnimateMotionElement() {} - - -}; - - -/*######################################################################### -## SMILAnimateColorElement -#########################################################################*/ - -/** - * This interface represents the SMIL animateColor element. - */ -class SMILAnimateColorElement : virtual public SMILAnimation -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILAnimateColorElement() {} - - -}; - - - - - -/*######################################################################### -## SMILSwitchElement -#########################################################################*/ - -/** - * Defines a block of content control. See: - * http://www.w3.org/TR/2000/WD-smil-boston-20000225/content.html#ContentControlNS-SwitchElement - */ -class SMILSwitchElement : virtual public SMILElement -{ -public: - - /** - * Returns the slected element at runtime. null if the selected element - * is not yet available. - */ - virtual ElementPtr getSelectedElement() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILSwitchElement() {} - - -}; - - - - - -} //namespace smil -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_SMIL_H - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/smilimpl.cpp b/src/dom/smilimpl.cpp deleted file mode 100644 index 94726ee61..000000000 --- a/src/dom/smilimpl.cpp +++ /dev/null @@ -1,855 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "smilimpl.h" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace smil -{ - - -/*######################################################################### -## SMILDocumentImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILDocumentImpl::SMILDocumentImpl() : DocumentImpl(NULL, "", "", NULL) -{ -} - -/** - * - */ -SMILDocumentImpl::~SMILDocumentImpl() -{ -} - - - - -/*######################################################################### -## SMILElementImpl -#########################################################################*/ - -/** - * - */ -DOMString SMILElementImpl::getId() -{ - return DOMString(""); -} - -/** - * - */ -void SMILElementImpl::setId(const DOMString &/*val*/) throw (dom::DOMException) -{ -} - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILElementImpl::~SMILElementImpl() -{ -} - - - - -/*######################################################################### -## SMILLayoutElementImpl -#########################################################################*/ - -/** - * - */ -DOMString SMILLayoutElementImpl::getType() -{ - return DOMString(""); -} - -/** - * - */ -bool SMILLayoutElementImpl::getResolved() -{ - return false; -} - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILLayoutElementImpl::~SMILLayoutElementImpl() -{ -} - - - - -/*######################################################################### -## SMILTopLayoutElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILTopLayoutElementImpl::~SMILTopLayoutElementImpl() -{ -} - - - - -/*######################################################################### -## SMILRootLayoutElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILRootLayoutElementImpl::~SMILRootLayoutElementImpl() -{ -} - - - - -/*######################################################################### -## SMILRegionElementImpl -#########################################################################*/ - -/** - * - */ -DOMString SMILRegionElementImpl::getFit() -{ - return DOMString(""); -} - -/** - * - */ -void SMILRegionElementImpl::setFit(const DOMString &/*val*/) throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILRegionElementImpl::getTop() -{ - return DOMString(""); -} - -/** - * - */ -void SMILRegionElementImpl::setTop(const DOMString &/*val*/) throw (dom::DOMException) -{ -} - -/** - * - */ -long SMILRegionElementImpl::getZIndex() -{ - return 0L; -} - -/** - * - */ -void SMILRegionElementImpl::setZIndex(long /*val*/) throw (dom::DOMException) -{ -} - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILRegionElementImpl::~SMILRegionElementImpl() -{ -} - - - - -/*######################################################################### -## SMILMediaElementImpl -#########################################################################*/ - -/** - * - */ -DOMString SMILMediaElementImpl::getAbstractAttr() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setAbstractAttr(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getAlt() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setAlt(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getAuthor() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setAuthor(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getClipBegin() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setClipBegin(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getClipEnd() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setClipEnd(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getCopyright() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setCopyright(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getLongdesc() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setLongdesc(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getPort() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setPort(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getReadIndex() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setReadIndex(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getRtpformat() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setRtpformat(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getSrc() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setSrc(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getStripRepeat() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setStripRepeat(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getTitle() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setTitle(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getTransport() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setTransport(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILMediaElementImpl::getType() -{ - return DOMString(""); -} - -/** - * - */ -void SMILMediaElementImpl::setType(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILMediaElementImpl::~SMILMediaElementImpl() -{ -} - - - - -/*######################################################################### -## SMILRefElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILRefElementImpl::~SMILRefElementImpl() -{ -} - - - - -/*######################################################################### -## SMILAnimationImpl -#########################################################################*/ - - -/** - * - */ -unsigned short SMILAnimationImpl::getAdditive() -{ - return 0; -} - -/** - * - */ -void SMILAnimationImpl::setAdditive(unsigned short /*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -unsigned short SMILAnimationImpl::getAccumulate() -{ - return 0; -} - -/** - * - */ -void SMILAnimationImpl::setAccumulate(unsigned short /*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -unsigned short SMILAnimationImpl::getCalcMode() -{ - return 0; -} - -/** - * - */ -void SMILAnimationImpl::setCalcMode(unsigned short /*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILAnimationImpl::getKeySplines() -{ - return DOMString(""); -} - -/** - * - */ -void SMILAnimationImpl::setKeySplines(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -TimeList SMILAnimationImpl::getKeyTimes() -{ - return keyTimes; -} - -/** - * - */ -void SMILAnimationImpl::setKeyTimes(const TimeList &val) - throw (dom::DOMException) -{ - keyTimes = val; -} - -/** - * - */ -DOMString SMILAnimationImpl::getValues() -{ - return DOMString(""); -} - -/** - * - */ -void SMILAnimationImpl::setValues(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILAnimationImpl::getFrom() -{ - return DOMString(""); -} - -/** - * - */ -void SMILAnimationImpl::setFrom(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILAnimationImpl::getTo() -{ - return DOMString(""); -} - -/** - * - */ -void SMILAnimationImpl::setTo(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILAnimationImpl::getBy() -{ - return DOMString(""); -} - -/** - * - */ -void SMILAnimationImpl::setBy(const DOMString &/*val*/) - throw (dom::DOMException) -{ -} - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILAnimationImpl::~SMILAnimationImpl() -{ -} - - - - -/*######################################################################### -## SMILAnimateElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILAnimateElementImpl::~SMILAnimateElementImpl() -{ -} - - - - -/*######################################################################### -## SMILSetElementImpl -#########################################################################*/ - -/** - * - */ -DOMString SMILSetElementImpl::getTo() -{ - return DOMString(""); -} - -/** - * - */ -void SMILSetElementImpl::setTo(const DOMString &/*val*/) -{ -} - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILSetElementImpl::~SMILSetElementImpl() -{ -} - - - - -/*######################################################################### -## SMILAnimateMotionElementImpl -#########################################################################*/ - -/** - * - */ -DOMString SMILAnimateMotionElementImpl::getPath() -{ - return DOMString(""); -} - -/** - * - */ -void SMILAnimateMotionElementImpl::setPath(const DOMString &/*val*/) - throw(dom::DOMException) -{ -} - -/** - * - */ -DOMString SMILAnimateMotionElementImpl::getOrigin() -{ - return DOMString(""); -} - -/** - * - */ -void SMILAnimateMotionElementImpl::setOrigin(const DOMString &/*val*/) - throw(dom::DOMException) -{ -} - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILAnimateMotionElementImpl::~SMILAnimateMotionElementImpl() -{ -} - - - - -/*######################################################################### -## SMILAnimateColorElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILAnimateColorElementImpl::~SMILAnimateColorElementImpl() -{ -} - - - - - - - -/*######################################################################### -## SMILSwitchElementImpl -#########################################################################*/ - - -/** - * - */ -ElementPtr SMILSwitchElementImpl::getSelectedElement() -{ - ElementPtr ptr; - return ptr; -} - -//################## -//# Non-API methods -//################## - -/** - * - */ -SMILSwitchElementImpl::~SMILSwitchElementImpl() -{ -} - - - - - - - - - - -} //namespace smil -} //namespace dom -} //namespace w3c -} //namespace org - - - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/smilimpl.h b/src/dom/smilimpl.h deleted file mode 100644 index d71df020a..000000000 --- a/src/dom/smilimpl.h +++ /dev/null @@ -1,766 +0,0 @@ -#ifndef SEEN_SMILIMPL_H -#define SEEN_SMILIMPL_H -/** - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "smil.h" -#include "domimpl.h" -#include "views.h" -#include "events.h" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace smil -{ - - -/*######################################################################### -## SMILDocumentImpl -#########################################################################*/ - -/** - * - */ -class SMILDocumentImpl : virtual public SMILDocument, - virtual public DocumentImpl -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SMILDocumentImpl(); - - /** - * - */ - virtual ~SMILDocumentImpl(); - - -}; - - -/*######################################################################### -## SMILElementImpl -#########################################################################*/ - -/** - * - */ -class SMILElementImpl : virtual public SMILElement, - public ElementImpl -{ -public: - - /** - * - */ - virtual DOMString getId(); - - /** - * - */ - virtual void setId(const DOMString &val) throw (dom::DOMException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILElementImpl(); - - -}; - - -/*######################################################################### -## SMILLayoutElementImpl -#########################################################################*/ - -/** - * - */ -class SMILLayoutElementImpl : virtual public SMILLayoutElement, - public SMILElementImpl -{ -public: - - /** - * - */ - virtual DOMString getType(); - - /** - * - */ - virtual bool getResolved(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILLayoutElementImpl(); - - -}; - - -/*######################################################################### -## SMILTopLayoutElementImpl -#########################################################################*/ - -/** - * - */ -class SMILTopLayoutElementImpl : virtual public SMILTopLayoutElement, - public SMILElementImpl -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILTopLayoutElementImpl(); - - -}; - - -/*######################################################################### -## SMILRootLayoutElementImpl -#########################################################################*/ - -/** - * - */ -class SMILRootLayoutElementImpl : virtual public SMILRootLayoutElement, - public SMILElementImpl -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILRootLayoutElementImpl(); - - -}; - - -/*######################################################################### -## SMILRegionElementImpl -#########################################################################*/ - -/** - * - */ -class SMILRegionElementImpl : virtual public SMILRegionElement, - public SMILElementImpl -{ -public: - - - /** - * - */ - virtual DOMString getFit(); - - /** - * - */ - virtual void setFit(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getTop(); - - /** - * - */ - virtual void setTop(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual long getZIndex(); - - /** - * - */ - virtual void setZIndex(long val) throw (dom::DOMException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILRegionElementImpl(); - - -}; - - - - - -/*######################################################################### -## SMILMediaElementImpl -#########################################################################*/ - -/** - * - */ -class SMILMediaElementImpl : virtual public SMILMediaElement, - public SMILElementImpl -{ -public: - - - /** - * - */ - virtual DOMString getAbstractAttr(); - - /** - * - */ - virtual void setAbstractAttr(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getAlt(); - - /** - * - */ - virtual void setAlt(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getAuthor(); - - /** - * - */ - virtual void setAuthor(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getClipBegin(); - - /** - * - */ - virtual void setClipBegin(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getClipEnd(); - - /** - * - */ - virtual void setClipEnd(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getCopyright(); - - /** - * - */ - virtual void setCopyright(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getLongdesc(); - - /** - * - */ - virtual void setLongdesc(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getPort(); - - /** - * - */ - virtual void setPort(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getReadIndex(); - - /** - * - */ - virtual void setReadIndex(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getRtpformat(); - - /** - * - */ - virtual void setRtpformat(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getSrc(); - - /** - * - */ - virtual void setSrc(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getStripRepeat(); - - /** - * - */ - virtual void setStripRepeat(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getTitle(); - - /** - * - */ - virtual void setTitle(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getTransport(); - - /** - * - */ - virtual void setTransport(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getType(); - - /** - * - */ - virtual void setType(const DOMString &val) throw (dom::DOMException); - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILMediaElementImpl(); - - -}; - - -/*######################################################################### -## SMILRefElementImpl -#########################################################################*/ - -/** - * - */ -class SMILRefElementImpl : virtual public SMILRefElement, - public SMILMediaElementImpl -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILRefElementImpl(); - - -}; - - -/*######################################################################### -## SMILAnimationImpl -#########################################################################*/ - -/** - * - */ -class SMILAnimationImpl : virtual public SMILAnimation, - public SMILElementImpl -{ -public: - - /** - * - */ - virtual unsigned short getAdditive(); - - /** - * - */ - virtual void setAdditive(unsigned short val) throw (dom::DOMException); - - /** - * - */ - virtual unsigned short getAccumulate(); - - /** - * - */ - virtual void setAccumulate(unsigned short val) throw (dom::DOMException); - - /** - * - */ - virtual unsigned short getCalcMode(); - - /** - * - */ - virtual void setCalcMode(unsigned short val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getKeySplines(); - - /** - * - */ - virtual void setKeySplines(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual TimeList getKeyTimes(); - - /** - * - */ - virtual void setKeyTimes(const TimeList &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getValues(); - - /** - * - */ - virtual void setValues(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getFrom(); - - /** - * - */ - virtual void setFrom(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getTo(); - - /** - * - */ - virtual void setTo(const DOMString &val) throw (dom::DOMException); - - /** - * - */ - virtual DOMString getBy(); - - /** - * - */ - virtual void setBy(const DOMString &val) throw (dom::DOMException); - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILAnimationImpl(); - -protected: - - TimeList keyTimes; - - -}; - - -/*######################################################################### -## SMILAnimateElementImpl -#########################################################################*/ - -/** - * - */ -class SMILAnimateElementImpl : virtual public SMILAnimateElement, - public SMILAnimationImpl -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILAnimateElementImpl(); - - -}; - - -/*######################################################################### -## SMILSetElementImpl -#########################################################################*/ - -/** - * - */ -class SMILSetElementImpl : virtual public SMILSetElement, - public SMILElementImpl -{ -public: - - /** - * - */ - virtual DOMString getTo(); - - /** - * - */ - virtual void setTo(const DOMString &val); - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILSetElementImpl(); - - -}; - - -/*######################################################################### -## SMILAnimateMotionElementImpl -#########################################################################*/ - -/** - * - */ -class SMILAnimateMotionElementImpl : virtual public SMILAnimateMotionElement, - public SMILAnimateElementImpl -{ -public: - - /** - * - */ - virtual DOMString getPath(); - - /** - * - */ - virtual void setPath(const DOMString &val) throw(dom::DOMException); - - /** - * - */ - virtual DOMString getOrigin(); - - /** - * - */ - virtual void setOrigin(const DOMString &val) throw(dom::DOMException); - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILAnimateMotionElementImpl(); - - -}; - - -/*######################################################################### -## SMILAnimateColorElementImpl -#########################################################################*/ - -/** - * - */ -class SMILAnimateColorElementImpl : virtual public SMILAnimateColorElement, - public SMILAnimationImpl -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILAnimateColorElementImpl(); - - -}; - - - - - -/*######################################################################### -## SMILSwitchElementImpl -#########################################################################*/ - -/** - * - */ -class SMILSwitchElementImpl : virtual public SMILSwitchElement, - public SMILElementImpl -{ -public: - - /** - * - */ - virtual ElementPtr getSelectedElement(); - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SMILSwitchElementImpl(); - - -}; - - - - - -} //namespace smil -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_SMILIMPL_H - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/stylesheets.h b/src/dom/stylesheets.h deleted file mode 100644 index 2903b96d9..000000000 --- a/src/dom/stylesheets.h +++ /dev/null @@ -1,597 +0,0 @@ -#ifndef SEEN_STYLESHEETS_H -#define SEEN_STYLESHEETS_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ========================================================================= - * NOTES - * - * Views, Stylesheets and CSS are DOM Level 2 for the purposes of supporting - * SVG. Be prepared in the future when they make Level 3 and SVG is likewise - * updated. The API here and many of the comments come from this document: - * http://www.w3.org/TR/DOM-Level-2-Style/stylesheets.html - */ - - -#include "dom.h" - -#include <vector> - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace stylesheets -{ - - - -//Make local definitions -typedef dom::DOMString DOMString; -typedef dom::Node Node; - - - -/*######################################################################### -## MediaList -#########################################################################*/ - -/** - * The MediaList interface provides the abstraction of an ordered collection of - * media, without defining or constraining how this collection is implemented. An - * empty list is the same as a list that contains the medium "all". - * - * The items in the MediaList are accessible via an integral index, starting from - * 0. - */ -class MediaList -{ -public: - - /** - * The parsable textual representation of the media list. This is a - * comma-separated list of media. - */ - virtual DOMString getMediaText() - { - return mediaText; - } - - /** - * The parsable textual representation of the media list. This is a - * comma-separated list of media. - */ - virtual void setMediaText(const DOMString &val) throw (dom::DOMException) - { - mediaText = val; - } - - /** - * The number of media in the list. The range of valid media is 0 to - * length-1 inclusive. - */ - virtual unsigned long getLength() - { - return items.size(); - } - - /** - * Returns the indexth in the list. If index is greater than or equal to - * the number of media in the list, this returns null. - */ - virtual DOMString item(unsigned long index) - { - if (index >= items.size()) - return ""; - return items[index]; - } - - /** - * Deletes the medium indicated by oldMedium from the list. - */ - virtual void deleteMedium(const DOMString& oldMedium) - throw (dom::DOMException) - { - std::vector<DOMString>::iterator iter; - for (iter=items.begin() ; iter!=items.end() ; ){ - if (*iter == oldMedium){ - iter = items.erase(iter); - } - else{ - ++iter; - } - } - } - - /** - * Adds the medium newMedium to the end of the list. If the newMedium - * is already used, it is first removed. - */ - virtual void appendMedium(const DOMString& newMedium) - throw (dom::DOMException) - { - items.push_back(newMedium); - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - MediaList() {} - - - /** - * - */ - MediaList(const MediaList &other) - { - assign(other); - } - - /** - * - */ - MediaList &operator=(const MediaList &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const MediaList &other) - { - mediaText = other.mediaText; - items = other.items; - } - - /** - * - */ - virtual ~MediaList() {} - -protected: - - DOMString mediaText; - - std::vector<DOMString>items; -}; - - - -/*######################################################################### -## StyleSheet -#########################################################################*/ - -/** - * The StyleSheet interface is the abstract base interface for any type of style - * sheet. It represents a single style sheet associated with a structured - * document. In HTML, the StyleSheet interface represents either an external - * style sheet, included via the HTML LINK element, or an inline STYLE element. - * In XML, this interface represents an external style sheet, included via a - * style sheet processing instruction. - */ -class StyleSheet -{ -public: - - /** - * This specifies the style sheet language for this style sheet. The style sheet - * language is specified as a content type (e.g. "text/css"). The content type is - * often specified in the ownerNode. Also see the type attribute definition for - * the LINK element in HTML 4.0, and the type pseudo-attribute for the XML style - * sheet processing instruction. - */ - virtual DOMString getType() - { - return type; - } - - /** - * false if the style sheet is applied to the document. true if it is not. - * Modifying this attribute may cause a new resolution of style for the document. - * A stylesheet only applies if both an appropriate medium definition is present - * and the disabled attribute is false. So, if the media doesn't apply to the - * current user agent, the disabled attribute is ignored. - */ - virtual bool getDisabled() - { - return disabled; - } - - /** - * Sets the value above. - */ - virtual void setDisabled(bool val) - { - disabled = val; - } - - /** - * The node that associates this style sheet with the document. For HTML, this - * may be the corresponding LINK or STYLE element. For XML, it may be the linking - * processing instruction. For style sheets that are included by other style - * sheets, the value of this attribute is null. - */ - virtual NodePtr getOwnerNode() - { - return ownerNode; - } - - /** - * For style sheet languages that support the concept of style sheet inclusion, - * this attribute represents the including style sheet, if one exists. If the - * style sheet is a top-level style sheet, or the style sheet language does not - * support inclusion, the value of this attribute is null. - */ - virtual StyleSheet *getParentStyleSheet() - { - return parentStylesheet; - } - - /** - * If the style sheet is a linked style sheet, the value of its attribute is its - * location. For inline style sheets, the value of this attribute is null. See - * the href attribute definition for the LINK element in HTML 4.0, and the href - * pseudo-attribute for the XML style sheet processing instruction. - */ - virtual DOMString getHref() - { - return href; - } - - /** - * The advisory title. The title is often specified in the ownerNode. See the - * title attribute definition for the LINK element in HTML 4.0, and the title - * pseudo-attribute for the XML style sheet processing instruction. - */ - virtual DOMString getTitle() - { - return title; - } - - /** - * The intended destination media for style information. The media is often - * specified in the ownerNode. If no media has been specified, the MediaList will - * be empty. See the media attribute definition for the LINK element in HTML 4.0, - * and the media pseudo-attribute for the XML style sheet processing - * instruction . Modifying the media list may cause a change to the attribute - * disabled. - */ - virtual MediaList &getMedia() - { - MediaList &mediaListRef = mediaList; - return mediaListRef; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - StyleSheet() - : type(""), - disabled (false), - ownerNode (NULL), - parentStylesheet (NULL), - href (""), - title (""), - mediaList () - { - } - - - /** - * - */ - StyleSheet(const StyleSheet &other) - { - assign(other); - } - - /** - * - */ - StyleSheet &operator=(const StyleSheet &other) - { - assign(other); - return *this; - } - - /** - * - */ - void assign(const StyleSheet &other) - { - type = other.type; - disabled = other.disabled; - ownerNode = other.ownerNode; - parentStylesheet = other.parentStylesheet; - href = other.href; - title = other.title; - mediaList = other.mediaList; - } - - /** - * - */ - virtual ~StyleSheet() {} - -protected: - - DOMString type; - - bool disabled; - - NodePtr ownerNode; - - StyleSheet *parentStylesheet; - - DOMString href; - - DOMString title; - - MediaList mediaList; -}; - - - - -/*######################################################################### -## StyleSheetList -#########################################################################*/ - -/** - * The StyleSheetList interface provides the abstraction of an ordered collection - * of style sheets. - * - * The items in the StyleSheetList are accessible via an integral index, starting - * from 0. - */ -class StyleSheetList -{ -public: - - /** - * The number of StyleSheets in the list. The range of valid child stylesheet - * indices is 0 to length-1 inclusive. - */ - virtual unsigned long getLength() - { - return sheets.size(); - } - - /** - * Used to retrieve a style sheet by ordinal index. If index is greater than or - * equal to the number of style sheets in the list, this returns null. - */ - virtual StyleSheet *item(unsigned long index) - { - if (index >= sheets.size()) - return NULL; - return sheets[index]; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - StyleSheetList() {} - - /** - * - */ - StyleSheetList(const StyleSheetList &other) - : sheets (other.sheets) - { - } - - /** - * - */ - StyleSheetList &operator=(const StyleSheetList &other) - { - sheets = other.sheets; - return *this; - } - - /** - * - */ - virtual ~StyleSheetList() {} - -protected: - - std::vector<StyleSheet *>sheets; - -}; - - - - - -/*######################################################################### -## LinkStyle -#########################################################################*/ - -/** - * The LinkStyle interface provides a mechanism by which a style sheet can be - * retrieved from the node responsible for linking it into a document. An - * instance of the LinkStyle interface can be obtained using binding-specific - * casting methods on an instance of a linking node (HTMLLinkElement, - * HTMLStyleElement or ProcessingInstruction in DOM Level 2). - */ -class LinkStyle -{ -public: - - /** - * The style sheet. - */ - virtual StyleSheet &getSheet() - { - StyleSheet &sheetRef = sheet; - return sheetRef; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - LinkStyle() - { - } - - /** - * - */ - LinkStyle(const LinkStyle &other) - : sheet (other.sheet) - { - } - - /** - * - */ - LinkStyle &operator=(const LinkStyle &other) - { - sheet = other.sheet; - return *this; - } - - /** - * - */ - virtual ~LinkStyle() {} - -protected: - - StyleSheet sheet; - -}; - - - - -/*######################################################################### -## DocumentStyle -#########################################################################*/ - -/** - * The DocumentStyle interface provides a mechanism by which the style sheets - * embedded in a document can be retrieved. The expectation is that an instance - * of the DocumentStyle interface can be obtained by using binding-specific - * casting methods on an instance of the Document interface. - */ -class DocumentStyle -{ -public: - - /** - * A list containing all the style sheets explicitly linked into or embedded in a - * document. For HTML documents, this includes external style sheets, included - * via the HTML LINK element, and inline STYLE elements. In XML, this includes - * external style sheets, included via style sheet processing instructions (see - * [XML-StyleSheet]). - */ - virtual StyleSheetList &getStyleSheets() - { - StyleSheetList &listRef = styleSheets; - return listRef; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - DocumentStyle() {} - - /** - * - */ - DocumentStyle(const DocumentStyle &other) - : styleSheets (other.styleSheets) - { - } - - /** - * - */ - DocumentStyle &operator=(const DocumentStyle &other) - { - styleSheets = other.styleSheets; - return *this; - } - - /** - * - */ - virtual ~DocumentStyle() {} - -protected: - - StyleSheetList styleSheets; -}; - - - - - -} //namespace stylesheets -} //namespace dom -} //namespace w3c -} //namespace org - - -#endif // SEEN_STYLESHEETS_H -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/svg.h b/src/dom/svg.h deleted file mode 100644 index 09754055d..000000000 --- a/src/dom/svg.h +++ /dev/null @@ -1,4758 +0,0 @@ -#ifndef SEEN_SVG_H -#define SEEN_SVG_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES - * - * This API follows: - * http://www.w3.org/TR/SVG11/svgdom.html - * - * This file defines the main SVG-DOM Node types. Other non-Node types are - * defined in svgtypes.h. - * - */ - - -// For access to DOM2 core -#include "dom/dom.h" - -// For access to DOM2 events -#include "dom/events.h" - -// For access to those parts from DOM2 CSS OM used by SVG DOM. -#include "dom/css.h" - -// For access to those parts from DOM2 Views OM used by SVG DOM. -#include "dom/views.h" - -// For access to the SMIL OM used by SVG DOM. -#include "dom/smil.h" - - - -#include "svgtypes.h" - -#include <math.h> - -#define SVG_NAMESPACE "http://www.w3.org/2000/svg" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace svg -{ - - -//local definitions -typedef dom::DOMString DOMString; -typedef dom::DOMException DOMException; -typedef dom::Element Element; -typedef dom::ElementPtr ElementPtr; -typedef dom::Document Document; -typedef dom::DocumentPtr DocumentPtr; -typedef dom::NodeList NodeList; - - - - -class SVGElement; -typedef Ptr<SVGElement> SVGElementPtr; -class SVGSVGElement; -typedef Ptr<SVGSVGElement> SVGSVGElementPtr; -class SVGDocument; -typedef Ptr<SVGDocument> SVGDocumentPtr; - - -/*######################################################################### -## SVGElement -#########################################################################*/ - -/** - * All of the SVG DOM interfaces that correspond directly to elements in the SVG - * language (e.g., the SVGPathElement interface corresponds directly to the - * 'path' element in the language) are derivative from base class SVGElement. - */ -class SVGElement : virtual public Element -{ -public: - - /** - * Get the value of the id attribute on the given element. - */ - virtual DOMString getId() =0; - - /** - * Set the value of the id attribute on the given element. - */ - virtual void setId(const DOMString &val) - throw (DOMException) =0; - - /** - * Corresponds to attribute xml:base on the given element. - */ - virtual DOMString getXmlBase() = 0; - - /** - * Corresponds to attribute xml:base on the given element. - */ - virtual void setXmlBase(const DOMString &val) - throw (DOMException) = 0; - - /** - * The nearest ancestor 'svg' element. Null if the given element is the - * outermost 'svg' element. - */ - virtual SVGSVGElementPtr getOwnerSVGElement() = 0; - - /** - * The element which established the current viewport. Often, the nearest - * ancestor 'svg' element. Null if the given element is the outermost 'svg' - * element. - */ - virtual SVGElementPtr getViewportElement() = 0; - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~SVGElement() {} - - -}; - - - -/*######################################################################### -## SVGDocument -#########################################################################*/ - -/** - * When an 'svg' element is embedded inline as a component of a document from - * another namespace, such as when an 'svg' element is embedded inline within an - * XHTML document [XHTML], then an SVGDocument object will not exist; instead, - * the root object in the document object hierarchy will be a Document object of - * a different type, such as an HTMLDocument object. - * - * However, an SVGDocument object will indeed exist when the root element of the - * XML document hierarchy is an 'svg' element, such as when viewing a stand-alone - * SVG file (i.e., a file with MIME type "image/svg+xml"). In this case, the - * SVGDocument object will be the root object of the document object model - * hierarchy. - * - * In the case where an SVG document is embedded by reference, such as when an - * XHTML document has an 'object' element whose href attribute references an SVG - * document (i.e., a document whose MIME type is "image/svg+xml" and whose root - * element is thus an 'svg' element), there will exist two distinct DOM - * hierarchies. The first DOM hierarchy will be for the referencing document - * (e.g., an XHTML document). The second DOM hierarchy will be for the referenced - * SVG document. In this second DOM hierarchy, the root object of the document - * object model hierarchy is an SVGDocument object. - */ -class SVGDocument : virtual public Document, - virtual public events::DocumentEvent -{ -public: - - - /** - * The title of a document as specified by the title sub-element of the 'svg' - * root element (i.e., <svg><title>Here is the title</title>...</svg>) - */ - virtual DOMString getTitle() =0; - - /** - * Returns the URI of the page that linked to this page. The value is an empty - * string if the user navigated to the page directly (not through a link, but, - * for example, via a bookmark). - */ - virtual DOMString getReferrer() =0; - - /** - * The domain name of the server that served the document, or a null string if - * the server cannot be identified by a domain name. - */ - virtual DOMString getDomain() =0; - - /** - * The complete URI of the document. - */ - virtual DOMString getURL() =0; - - /** - * The root 'svg' element in the document hierarchy. - */ - virtual SVGSVGElementPtr getRootElement() =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGDocument() {} - -}; - - - -/*######################################################################### -## SVGSVGElement -#########################################################################*/ - -/** - * A key interface definition is the SVGSVGElement interface, which is the - * interface that corresponds to the 'svg' element. This interface contains - * various miscellaneous commonly-used utility methods, such as matrix operations - * and the ability to control the time of redraw on visual rendering devices. - * - * SVGSVGElement extends ViewCSS and DocumentCSS to provide access to the - * computed values of properties and the override style sheet as described in DOM2. - */ -class SVGSVGElement : virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGLocatable, - public SVGFitToViewBox, - public SVGZoomAndPan, - public events::EventTarget, - public events::DocumentEvent, - public css::ViewCSS, - public css::DocumentCSS -{ -public: - - /** - * Corresponds to attribute x on the given 'svg' element. - */ - virtual SVGAnimatedLength getX() =0; - - /** - * Corresponds to attribute y on the given 'svg' element. - */ - virtual SVGAnimatedLength getY() =0; - - /** - * Corresponds to attribute width on the given 'svg' element. - */ - virtual SVGAnimatedLength getWidth() =0; - - /** - * Corresponds to attribute height on the given 'svg' element. - */ - virtual SVGAnimatedLength getHeight() =0; - - /** - * Get the attribute contentScriptType on the given 'svg' element. - */ - virtual DOMString getContentScriptType() =0; - - /** - * Set the attribute contentScriptType on the given 'svg' element. - */ - virtual void setContentScriptType(const DOMString &val) - throw (DOMException) =0; - - - /** - * Get the attribute contentStyleType on the given 'svg' element. - */ - virtual DOMString getContentStyleType() =0; - - /** - * Set the attribute contentStyleType on the given 'svg' element. - */ - virtual void setContentStyleType(const DOMString &val) - throw (DOMException) =0; - - /** - * The position and size of the viewport (implicit or explicit) that corresponds - * to this 'svg' element. When the user agent is actually rendering the content, - * then the position and size values represent the actual values when rendering. - * The position and size values are unitless values in the coordinate system of - * the parent element. If no parent element exists (i.e., 'svg' element - * represents the root of the document tree), if this SVG document is embedded as - * part of another document (e.g., via the HTML 'object' element), then the - * position and size are unitless values in the coordinate system of the parent - * document. (If the parent uses CSS or XSL layout, then unitless values - * represent pixel units for the current CSS or XSL viewport, as described in the - * CSS2 specification.) If the parent element does not have a coordinate system, - * then the user agent should provide reasonable default values for this attribute. - * */ - virtual SVGRect getViewport() =0; - - /** - * Size of a pixel units (as defined by CSS2) along the x-axis of the viewport, - * which represents a unit somewhere in the range of 70dpi to 120dpi, and, on - * systems that support this, might actually match the characteristics of the - * target medium. On systems where it is impossible to know the size of a pixel, - * a suitable default pixel size is provided. - */ - virtual double getPixelUnitToMillimeterX() =0; - - /** - * Corresponding size of a pixel unit along the y-axis of the viewport. - */ - virtual double getPixelUnitToMillimeterY() =0; - - /** - * User interface (UI) events in DOM Level 2 indicate the screen positions at - * which the given UI event occurred. When the user agent actually knows the - * physical size of a "screen unit", this attribute will express that information; - * otherwise, user agents will provide a suitable default value such as .28mm. - */ - virtual double getScreenPixelToMillimeterX() =0; - - /** - * Corresponding size of a screen pixel along the y-axis of the viewport. - */ - virtual double getScreenPixelToMillimeterY() =0; - - - /** - * The initial view (i.e., before magnification and panning) of the current - * innermost SVG document fragment can be either the "standard" view (i.e., based - * on attributes on the 'svg' element such as fitBoxToViewport) or to a "custom" - * view (i.e., a hyperlink into a particular 'view' or other element - see - * Linking into SVG content: URI fragments and SVG views). If the initial view is - * the "standard" view, then this attribute is false. If the initial view is a - * "custom" view, then this attribute is true. - */ - virtual bool getUseCurrentView() =0; - - /** - * Set the value above - */ - virtual void setUseCurrentView(bool val) throw (DOMException) =0; - - /** - * The definition of the initial view (i.e., before magnification and panning) of - * the current innermost SVG document fragment. The meaning depends on the - * situation: - * - * * If the initial view was a "standard" view, then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will match the values for the corresponding DOM attributes that - * are on SVGSVGElement directly - * o the values for transform and viewTarget within currentView will be null - * * If the initial view was a link into a 'view' element, then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will correspond to the corresponding attributes for the given - * 'view' element - * o the values for transform and viewTarget within currentView will be null - * * If the initial view was a link into another element (i.e., other than a - * 'view'), then: - * o the values for viewBox, preserveAspectRatio and zoomAndPan within - * currentView will match the values for the corresponding DOM attributes that - * are on SVGSVGElement directly for the closest ancestor 'svg' element - * o the values for transform within currentView will be null - * o the viewTarget within currentView will represent the target of the link - * * If the initial view was a link into the SVG document fragment using an SVG - * view specification fragment identifier (i.e., #svgView(...)), then: - * o the values for viewBox, preserveAspectRatio, zoomAndPan, transform and - * viewTarget within currentView will correspond to the values from the SVG view - * specification fragment identifier - * - */ - virtual SVGViewSpec getCurrentView() =0; - - - /** - * This attribute indicates the current scale factor relative to the initial view - * to take into account user magnification and panning operations, as described - * under Magnification and panning. DOM attributes currentScale and - * currentTranslate are equivalent to the 2x3 matrix [a b c d e f] = - * [currentScale 0 0 currentScale currentTranslate.x currentTranslate.y]. If - * "magnification" is enabled (i.e., zoomAndPan="magnify"), then the effect is as - * if an extra transformation were placed at the outermost level on the SVG - * document fragment (i.e., outside the outermost 'svg' element). - */ - virtual double getCurrentScale() =0; - - /** - * Set the value above. - */ - virtual void setCurrentScale(double val) - throw (DOMException) =0; - - - /** - * The corresponding translation factor that takes into account - * user "magnification". - */ - virtual SVGPoint getCurrentTranslate() =0; - - - /** - * Takes a time-out value which indicates that redraw shall not occur until: (a) - * the corresponding unsuspendRedraw(suspend_handle_id) call has been made, (b) - * an unsuspendRedrawAll() call has been made, or (c) its timer has timed out. In - * environments that do not support interactivity (e.g., print media), then - * redraw shall not be suspended. suspend_handle_id = - * suspendRedraw(max_wait_milliseconds) and unsuspendRedraw(suspend_handle_id) - * must be packaged as balanced pairs. When you want to suspend redraw actions as - * a collection of SVG DOM changes occur, then precede the changes to the SVG DOM - * with a method call similar to suspend_handle_id = - * suspendRedraw(max_wait_milliseconds) and follow the changes with a method call - * similar to unsuspendRedraw(suspend_handle_id). Note that multiple - * suspendRedraw calls can be used at once and that each such method call is - * treated independently of the other suspendRedraw method calls. - */ - virtual unsigned long suspendRedraw (unsigned long max_wait_milliseconds ) =0; - - /** - * Cancels a specified suspendRedraw() by providing a unique suspend_handle_id. - */ - virtual void unsuspendRedraw (unsigned long suspend_handle_id ) - throw( DOMException ) =0; - - /** - * Cancels all currently active suspendRedraw() method calls. This method is most - * useful at the very end of a set of SVG DOM calls to ensure that all pending - * suspendRedraw() method calls have been cancelled. - */ - virtual void unsuspendRedrawAll ( ) =0; - - /** - * In rendering environments supporting interactivity, forces the user agent to - * immediately redraw all regions of the viewport that require updating. - */ - virtual void forceRedraw ( ) =0; - - /** - * Suspends (i.e., pauses) all currently running animations that are defined - * within the SVG document fragment corresponding to this 'svg' element, causing - * the animation clock corresponding to this document fragment to stand still - * until it is unpaused. - */ - virtual void pauseAnimations ( ) =0; - - /** - * Unsuspends (i.e., unpauses) currently running animations that are defined - * within the SVG document fragment, causing the animation clock to continue from - * the time at which it was suspended. - */ - virtual void unpauseAnimations ( ) =0; - - /** - * Returns true if this SVG document fragment is in a paused state. - */ - virtual bool animationsPaused ( ) =0; - - /** - * Returns the current time in seconds relative to the start time for - * the current SVG document fragment. - */ - virtual double getCurrentTime ( ) =0; - - /** - * Adjusts the clock for this SVG document fragment, establishing - * a new current time. - */ - virtual void setCurrentTime (double seconds ) =0; - - /** - * Returns the list of graphics elements whose rendered content intersects the - * supplied rectangle, honoring the 'pointer-events' property value on each - * candidate graphics element. - */ - virtual NodeList getIntersectionList(const SVGRect &rect, - const SVGElementPtr referenceElement ) =0; - - /** - * Returns the list of graphics elements whose rendered content is entirely - * contained within the supplied rectangle, honoring the 'pointer-events' - * property value on each candidate graphics element. - */ - virtual NodeList getEnclosureList (const SVGRect &rect, - const SVGElementPtr referenceElement ) =0; - - /** - * Returns true if the rendered content of the given element intersects the - * supplied rectangle, honoring the 'pointer-events' property value on each - * candidate graphics element. - */ - virtual bool checkIntersection (const SVGElementPtr element, const SVGRect &rect ) =0; - - /** - * Returns true if the rendered content of the given element is entirely - * contained within the supplied rectangle, honoring the 'pointer-events' - * property value on each candidate graphics element. - */ - virtual bool checkEnclosure (const SVGElementPtr element, const SVGRect &rect ) =0; - - /** - * Unselects any selected objects, including any selections of text - * strings and type-in bars. - */ - virtual void deselectAll ( ) =0; - - /** - * Creates an SVGNumber object outside of any document trees. The object - * is initialized to a value of zero. - */ - virtual SVGNumber createSVGNumber ( ) =0; - - /** - * Creates an SVGLength object outside of any document trees. The object - * is initialized to the value of 0 user units. - */ - virtual SVGLength createSVGLength ( ) =0; - - /** - * Creates an SVGAngle object outside of any document trees. The object - * is initialized to the value 0 degrees (unitless). - */ - virtual SVGAngle createSVGAngle ( ) =0; - - /** - * Creates an SVGPoint object outside of any document trees. The object - * is initialized to the point (0,0) in the user coordinate system. - */ - virtual SVGPoint createSVGPoint ( ) =0; - - /** - * Creates an SVGMatrix object outside of any document trees. The object - * is initialized to the identity matrix. - */ - virtual SVGMatrix createSVGMatrix ( ) =0; - - /** - * Creates an SVGRect object outside of any document trees. The object - * is initialized such that all values are set to 0 user units. - */ - virtual SVGRect createSVGRect ( ) =0; - - /** - * Creates an SVGTransform object outside of any document trees. - * The object is initialized to an identity matrix transform - * (SVG_TRANSFORM_MATRIX). - */ - virtual SVGTransform createSVGTransform ( ) =0; - - /** - * Creates an SVGTransform object outside of any document trees. - * The object is initialized to the given matrix transform - * (i.e., SVG_TRANSFORM_MATRIX). - */ - virtual SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix ) =0; - - /** - * Searches this SVG document fragment (i.e., the search is restricted to a - * subset of the document tree) for an Element whose id is given by elementId. If - * an Element is found, that Element is returned. If no such element exists, - * returns null. Behavior is not defined if more than one element has this id. - */ - virtual ElementPtr getElementById (const DOMString& elementId ) =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGSVGElement() {} - -}; - - - -/*######################################################################### -## SVGGElement -#########################################################################*/ - -/** - * The SVGGElement interface corresponds to the 'g' element. - */ -class SVGGElement : virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGGElement() {} - -}; - - - - -/*######################################################################### -## SVGDefsElement -#########################################################################*/ - -/** - * The SVGDefsElement interface corresponds to the 'defs' element. - */ -class SVGDefsElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGDefsElement() {} - -}; - - - - -/*######################################################################### -## SVGDescElement -#########################################################################*/ - -/** - * The SVGDescElement interface corresponds to the 'desc' element. - */ -class SVGDescElement : - virtual public SVGElement, - public SVGLangSpace, - public SVGStylable -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGDescElement() {} - -}; - - - - -/*######################################################################### -## SVGTitleElement -#########################################################################*/ - -/** - * The SVGTitleElement interface corresponds to the 'title' element. - */ -class SVGTitleElement : - virtual public SVGElement, - public SVGLangSpace, - public SVGStylable -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTitleElement() {} - -}; - - - - -/*######################################################################### -## SVGSymbolElement -#########################################################################*/ - -/** - * The SVGSymbolElement interface corresponds to the 'symbol' element. - */ -class SVGSymbolElement : - virtual public SVGElement, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGFitToViewBox, - public events::EventTarget -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGSymbolElement() {} - -}; - - - - -/*######################################################################### -## SVGUseElement -#########################################################################*/ - -/** - * The SVGUseElement interface corresponds to the 'use' element. - */ -class SVGUseElement : - virtual public SVGElement, - public SVGURIReference, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - - - - /** - * Corresponds to attribute x on the given 'use' element. - */ - virtual SVGAnimatedLength getX() =0; - - /** - * Corresponds to attribute y on the given 'use' element. - */ - virtual SVGAnimatedLength getY() =0; - - /** - * Corresponds to attribute width on the given 'use' element. - */ - virtual SVGAnimatedLength getWidth() =0; - - /** - * Corresponds to attribute height on the given 'use' element. - */ - virtual SVGAnimatedLength getHeight() =0; - - /** - * The root of the "instance tree". See description of SVGElementInstance for - * a discussion on the instance tree. - * */ - virtual SVGElementInstance getInstanceRoot() =0; - - /** - * If the 'href' attribute is being animated, contains the current animated root - * of the "instance tree". If the 'href' attribute is not currently being - * animated, contains the same value as 'instanceRoot'. The root of the "instance - * tree". See description of SVGElementInstance for a discussion on the instance - * tree. - */ - virtual SVGElementInstance getAnimatedInstanceRoot() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGUseElement() {} - -}; - - - - - - - -/*######################################################################### -## SVGImageElement -#########################################################################*/ - -/** - * The SVGImageElement interface corresponds to the 'image' element. - */ -class SVGImageElement : - virtual public SVGElement, - public SVGURIReference, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - - /** - * Corresponds to attribute x on the given 'image' element. - */ - virtual SVGAnimatedLength getX() =0; - - /** - * Corresponds to attribute y on the given 'image' element. - */ - virtual SVGAnimatedLength getY() =0; - - /** - * Corresponds to attribute width on the given 'image' element. - */ - virtual SVGAnimatedLength getWidth() =0; - - /** - * Corresponds to attribute height on the given 'image' element. - */ - virtual SVGAnimatedLength getHeight() =0; - - - /** - * Corresponds to attribute preserveAspectRatio on the given element. - */ - virtual SVGAnimatedPreserveAspectRatio getPreserveAspectRatio() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGImageElement() {} - -}; - - - - - - -/*######################################################################### -## SVGSwitchElement -#########################################################################*/ - -/** - * The SVGSwitchElement interface corresponds to the 'switch' element. - */ -class SVGSwitchElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGSwitchElement() {} - -}; - - - - -/*######################################################################### -## GetSVGDocument -#########################################################################*/ - -/** - * In the case where an SVG document is embedded by reference, such as when an - * XHTML document has an 'object' element whose href (or equivalent) attribute - * references an SVG document (i.e., a document whose MIME type is - * "image/svg+xml" and whose root element is thus an 'svg' element), the SVG user - * agent is required to implement the GetSVGDocument interface for the element - * which references the SVG document (e.g., the HTML 'object' or comparable - * referencing elements). - */ -class GetSVGDocument -{ -public: - - /** - * Returns the SVGDocument object for the referenced SVG document. - */ - virtual SVGDocumentPtr getSVGDocument ( ) - throw( DOMException ) =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~GetSVGDocument() {} - -}; - - - - - - -/*######################################################################### -## SVGStyleElement -#########################################################################*/ - -/** - * The SVGStyleElement interface corresponds to the 'style' element. - */ -class SVGStyleElement : virtual public SVGElement -{ -public: - - /** - * Get the attribute xml:space on the given element. - */ - virtual DOMString getXmlspace() = 0; - - /** - * Set the attribute xml:space on the given element. - */ - virtual void setXmlspace(const DOMString &val) - throw (DOMException) =0; - - /** - * Get the attribute type on the given 'style' element. - */ - virtual DOMString getType() = 0; - - /** - * Set the attribute type on the given 'style' element. - */ - virtual void setType(const DOMString &val) - throw (DOMException) =0; - - /** - * Get the attribute media on the given 'style' element. - */ - virtual DOMString getMedia() = 0; - - /** - * Set the attribute media on the given 'style' element. - */ - virtual void setMedia(const DOMString &val) - throw (DOMException) =0; - - /** - * Get the attribute title on the given 'style' element. - */ - virtual DOMString getTitle() = 0; - - /** - * Set the attribute title on the given 'style' element. - */ - virtual void setTitle(const DOMString &val) - throw (DOMException) =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGStyleElement() {} - -}; - - - - - - -/*######################################################################### -## SVGPathElement -#########################################################################*/ - -/** - * The SVGPathElement interface corresponds to the 'path' element. - */ -class SVGPathElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget, - public SVGAnimatedPathData -{ - -public: - - /** - * Corresponds to attribute pathLength on the given 'path' element. - */ - virtual SVGAnimatedNumber getPathLength() =0; - - /** - * Returns the user agent's computed value for the total length of the path using - * the user agent's distance-along-a-path algorithm, as a distance in the current - * user coordinate system. - */ - virtual double getTotalLength ( ) =0; - - /** - * Returns the (x,y) coordinate in user space which is distance units along the - * path, utilizing the user agent's distance-along-a-path algorithm. - */ - virtual SVGPoint getPointAtLength (double distance ) =0; - - /** - * Returns the index into pathSegList which is distance units along the path, - * utilizing the user agent's distance-along-a-path algorithm. - */ - virtual unsigned long getPathSegAtLength (double distance ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegClosePath object. - */ - virtual SVGPathSegClosePath - createSVGPathSegClosePath ( ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegMovetoAbs object. - */ - virtual SVGPathSegMovetoAbs - createSVGPathSegMovetoAbs (double x, double y ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegMovetoRel object. - */ - virtual SVGPathSegMovetoRel - createSVGPathSegMovetoRel (double x, double y ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoAbs object. - */ - virtual SVGPathSegLinetoAbs - createSVGPathSegLinetoAbs (double x, double y ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoRel object. - */ - virtual SVGPathSegLinetoRel - createSVGPathSegLinetoRel (double x, double y ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicAbs object. - */ - virtual SVGPathSegCurvetoCubicAbs - createSVGPathSegCurvetoCubicAbs (double x, double y, - double x1, double y1, double x2, double y2 ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicRel object. - */ - virtual SVGPathSegCurvetoCubicRel - createSVGPathSegCurvetoCubicRel (double x, double y, - double x1, double y1, double x2, double y2 ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticAbs object. - */ - virtual SVGPathSegCurvetoQuadraticAbs - createSVGPathSegCurvetoQuadraticAbs (double x, double y, - double x1, double y1 ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticRel object. - */ - virtual SVGPathSegCurvetoQuadraticRel - createSVGPathSegCurvetoQuadraticRel (double x, double y, - double x1, double y1 ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegArcAbs object. - */ - virtual SVGPathSegArcAbs - createSVGPathSegArcAbs (double x, double y, - double r1, double r2, double angle, - bool largeArcFlag, bool sweepFlag ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegArcRel object. - */ - virtual SVGPathSegArcRel - createSVGPathSegArcRel (double x, double y, double r1, - double r2, double angle, bool largeArcFlag, - bool sweepFlag ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalAbs object. - */ - virtual SVGPathSegLinetoHorizontalAbs - createSVGPathSegLinetoHorizontalAbs (double x ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoHorizontalRel object. - */ - virtual SVGPathSegLinetoHorizontalRel - createSVGPathSegLinetoHorizontalRel (double x ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoVerticalAbs object. - */ - virtual SVGPathSegLinetoVerticalAbs - createSVGPathSegLinetoVerticalAbs (double y ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegLinetoVerticalRel object. - */ - virtual SVGPathSegLinetoVerticalRel - createSVGPathSegLinetoVerticalRel (double y ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothAbs object. - */ - virtual SVGPathSegCurvetoCubicSmoothAbs - createSVGPathSegCurvetoCubicSmoothAbs (double x, double y, - double x2, double y2 ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoCubicSmoothRel object. - */ - virtual SVGPathSegCurvetoCubicSmoothRel - createSVGPathSegCurvetoCubicSmoothRel (double x, double y, - double x2, double y2 ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothAbs - * object. - */ - virtual SVGPathSegCurvetoQuadraticSmoothAbs - createSVGPathSegCurvetoQuadraticSmoothAbs (double x, double y ) =0; - - /** - * Returns a stand-alone, parentless SVGPathSegCurvetoQuadraticSmoothRel - * object. - */ - virtual SVGPathSegCurvetoQuadraticSmoothRel - createSVGPathSegCurvetoQuadraticSmoothRel (double x, double y ) =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGPathElement() {} - -}; - - - - - - -/*######################################################################### -## SVGRectElement -#########################################################################*/ - -/** - * The SVGRectElement interface corresponds to the 'rect' element. - */ -class SVGRectElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - /** - * Corresponds to attribute x on the given 'rect' element. - */ - virtual SVGAnimatedLength getX() =0; - - /** - * Corresponds to attribute y on the given 'rect' element. - */ - virtual SVGAnimatedLength getY() =0; - - /** - * Corresponds to attribute width on the given 'rect' element. - */ - virtual SVGAnimatedLength getWidth() =0; - - /** - * Corresponds to attribute height on the given 'rect' element. - */ - virtual SVGAnimatedLength getHeight() =0; - - - /** - * Corresponds to attribute rx on the given 'rect' element. - */ - virtual SVGAnimatedLength getRx() =0; - - /** - * Corresponds to attribute ry on the given 'rect' element. - */ - virtual SVGAnimatedLength getRy() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGRectElement() {} - -}; - - - - - - -/*######################################################################### -## SVGCircleElement -#########################################################################*/ - -/** - * The SVGCircleElement interface corresponds to the 'circle' element. - */ -class SVGCircleElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - /** - * Corresponds to attribute cx on the given 'circle' element. - */ - virtual SVGAnimatedLength getCx() =0; - - /** - * Corresponds to attribute cy on the given 'circle' element. - */ - virtual SVGAnimatedLength getCy() =0; - - /** - * Corresponds to attribute r on the given 'circle' element. - */ - virtual SVGAnimatedLength getR() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGCircleElement() {} - -}; - - - - - - -/*######################################################################### -## SVGEllipseElement -#########################################################################*/ - -/** - * The SVGEllipseElement interface corresponds to the 'ellipse' element. - */ -class SVGEllipseElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - /** - * Corresponds to attribute cx on the given 'ellipse' element. - */ - virtual SVGAnimatedLength getCx() =0; - - /** - * Corresponds to attribute cy on the given 'ellipse' element. - */ - virtual SVGAnimatedLength getCy() =0; - - /** - * Corresponds to attribute rx on the given 'ellipse' element. - */ - virtual SVGAnimatedLength getRx() =0; - - /** - * Corresponds to attribute ry on the given 'ellipse' element. - */ - virtual SVGAnimatedLength getRy() =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGEllipseElement() {} - -}; - - - - - - -/*######################################################################### -## SVGLineElement -#########################################################################*/ - -/** - * The SVGLineElement interface corresponds to the 'line' element. - */ -class SVGLineElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - /** - * Corresponds to attribute x1 on the given 'line' element. - */ - virtual SVGAnimatedLength getX1() =0; - - /** - * Corresponds to attribute y1 on the given 'line' element. - */ - virtual SVGAnimatedLength getY1() =0; - - /** - * Corresponds to attribute x2 on the given 'line' element. - */ - virtual SVGAnimatedLength getX2() =0; - - /** - * Corresponds to attribute y2 on the given 'line' element. - */ - virtual SVGAnimatedLength getY2() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGLineElement() {} - -}; - - - - -/*######################################################################### -## SVGPolylineElement -#########################################################################*/ - -/** - * The SVGPolylineElement interface corresponds to the 'polyline' element. - */ -class SVGPolylineElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget, - public SVGAnimatedPoints -{ - -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGPolylineElement() {} - -}; - - - - -/*######################################################################### -## SVGPolygonElement -#########################################################################*/ - -/** - * The SVGPolygonElement interface corresponds to the 'polygon' element. - */ -class SVGPolygonElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget, - public SVGAnimatedPoints -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGPolygonElement() {} - -}; - - - - -/*######################################################################### -## SVGTextContentElement -#########################################################################*/ - -/** - * The SVGTextContentElement interface is inherited by various text-related - * interfaces, such as SVGTextElement, SVGTSpanElement, SVGTRefElement, - * SVGAltGlyphElement and SVGTextPathElement. - */ -class SVGTextContentElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public events::EventTarget -{ - -public: - - /** - * lengthAdjust Types - */ - typedef enum - { - LENGTHADJUST_UNKNOWN = 0, - LENGTHADJUST_SPACING = 1, - LENGTHADJUST_SPACINGANDGLYPHS = 2 - } LengthAdjustType; - - - /** - * Corresponds to attribute textLength on the given element. - */ - virtual SVGAnimatedLength getTextLength() =0; - - - /** - * Corresponds to attribute lengthAdjust on the given element. The value must be - * one of the length adjust constants specified above. - */ - virtual SVGAnimatedEnumeration getLengthAdjust() =0; - - - /** - * Returns the total number of characters to be rendered within the current - * element. Includes characters which are included via a 'tref' reference. - */ - virtual long getNumberOfChars ( ) =0; - - /** - * The total sum of all of the advance values from rendering all of the - * characters within this element, including the advance value on the glyphs - * (horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' - * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' - * elements. For non-rendering environments, the user agent shall make reasonable - * assumptions about glyph metrics. - */ - virtual double getComputedTextLength ( ) =0; - - /** - * The total sum of all of the advance values from rendering the specified - * substring of the characters, including the advance value on the glyphs - * (horizontal or vertical), the effect of properties 'kerning', 'letter-spacing' - * and 'word-spacing' and adjustments due to attributes dx and dy on 'tspan' - * elements. For non-rendering environments, the user agent shall make reasonable - * assumptions about glyph metrics. - */ - virtual double getSubStringLength (unsigned long charnum, unsigned long nchars ) - throw( DOMException ) =0; - - /** - * Returns the current text position before rendering the character in the user - * coordinate system for rendering the glyph(s) that correspond to the specified - * character. The current text position has already taken into account the - * effects of any inter-character adjustments due to properties 'kerning', - * 'letter-spacing' and 'word-spacing' and adjustments due to attributes x, y, dx - * and dy. If multiple consecutive characters are rendered inseparably (e.g., as - * a single glyph or a sequence of glyphs), then each of the inseparable - * characters will return the start position for the first glyph. - */ - virtual SVGPoint getStartPositionOfChar (unsigned long charnum ) - throw( DOMException ) =0; - - /** - * Returns the current text position after rendering the character in the user - * coordinate system for rendering the glyph(s) that correspond to the specified - * character. This current text position does not take into account the effects - * of any inter-character adjustments to prepare for the next character, such as - * properties 'kerning', 'letter-spacing' and 'word-spacing' and adjustments due - * to attributes x, y, dx and dy. If multiple consecutive characters are rendered - * inseparably (e.g., as a single glyph or a sequence of glyphs), then each of - * the inseparable characters will return the end position for the last glyph. - */ - virtual SVGPoint getEndPositionOfChar (unsigned long charnum ) - throw( DOMException ) =0; - - /** - * Returns a tightest rectangle which defines the minimum and maximum X and Y - * values in the user coordinate system for rendering the glyph(s) that - * correspond to the specified character. The calculations assume that all glyphs - * occupy the full standard glyph cell for the font. If multiple consecutive - * characters are rendered inseparably (e.g., as a single glyph or a sequence of - * glyphs), then each of the inseparable characters will return the same extent. - */ - virtual SVGRect getExtentOfChar (unsigned long charnum ) - throw( DOMException ) =0; - - /** - * Returns the rotation value relative to the current user coordinate system used - * to render the glyph(s) corresponding to the specified character. If multiple - * glyph(s) are used to render the given character and the glyphs each have - * different rotations (e.g., due to text-on-a-path), the user agent shall return - * an average value (e.g., the rotation angle at the midpoint along the path for - * all glyphs used to render this character). The rotation value represents the - * rotation that is supplemental to any rotation due to properties - * 'glyph-orientation-horizontal' and 'glyph-orientation-vertical'; thus, any - * glyph rotations due to these properties are not included into the returned - * rotation value. If multiple consecutive characters are rendered inseparably - * (e.g., as a single glyph or a sequence of glyphs), then each of the - * inseparable characters will return the same rotation value. - */ - virtual double getRotationOfChar (unsigned long charnum ) - throw( DOMException ) =0; - - /** - * Returns the index of the character whose corresponding glyph cell bounding box - * contains the specified point. The calculations assume that all glyphs occupy - * the full standard glyph cell for the font. If no such character exists, a - * value of -1 is returned. If multiple such characters exist, the character - * within the element whose glyphs were rendered last (i.e., take into account - * any reordering such as for bidirectional text) is used. If multiple - * consecutive characters are rendered inseparably (e.g., as a single glyph or a - * sequence of glyphs), then the user agent shall allocate an equal percentage of - * the text advance amount to each of the contributing characters in determining - * which of the characters is chosen. - */ - virtual long getCharNumAtPosition (const SVGPoint &point ) =0; - - /** - * Causes the specified substring to be selected just as if the user - * selected the substring interactively. - */ - virtual void selectSubString (unsigned long charnum, unsigned long nchars ) - throw( DOMException ) =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTextContentElement() {} - -}; - - - - - - -/*######################################################################### -## SVGTextPositioningElement -#########################################################################*/ - -/** - * The SVGTextPositioningElement interface is inherited by text-related - * interfaces: SVGTextElement, SVGTSpanElement, SVGTRefElement and - * SVGAltGlyphElement. - */ -class SVGTextPositioningElement : virtual public SVGTextContentElement -{ -public: - - /** - * Corresponds to attribute x on the given element. - */ - virtual SVGAnimatedLength getX() =0; - - /** - * Corresponds to attribute y on the given element. - */ - virtual SVGAnimatedLength getY() =0; - - /** - * Corresponds to attribute dx on the given element. - */ - virtual SVGAnimatedLength getDx() =0; - - /** - * Corresponds to attribute dy on the given element. - */ - virtual SVGAnimatedLength getDy() =0; - - - /** - * Corresponds to attribute rotate on the given element. - */ - virtual SVGAnimatedNumberList getRotate() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTextPositioningElement() {} - -}; - - - - - - -/*######################################################################### -## SVGTextElement -#########################################################################*/ - -/** - * The SVGTextElement interface corresponds to the 'text' element. - */ -class SVGTextElement : virtual public SVGTextPositioningElement, - public SVGTransformable -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTextElement() {} - -}; - - - - -/*######################################################################### -## SVGTSpanElement -#########################################################################*/ - -/** - * The SVGTSpanElement interface corresponds to the 'tspan' element. - */ -class SVGTSpanElement : virtual public SVGTextPositioningElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTSpanElement() {} - -}; - - - - -/*######################################################################### -## SVGTRefElement -#########################################################################*/ - -/** - * The SVGTRefElement interface corresponds to the 'tref' element. - */ -class SVGTRefElement : - virtual public SVGTextPositioningElement, - public SVGURIReference -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTRefElement() {} - -}; - - - - -/*######################################################################### -## SVGTextPathElement -#########################################################################*/ - -/** - * The SVGTextPathElement interface corresponds to the 'textPath' element. - */ -class SVGTextPathElement : - virtual public SVGTextContentElement, - public SVGURIReference -{ -public: - - - - /** - * textPath Method Types - */ - typedef enum - { - TEXTPATH_METHODTYPE_UNKNOWN = 0, - TEXTPATH_METHODTYPE_ALIGN = 1, - TEXTPATH_METHODTYPE_STRETCH = 2 - } TextPathMethodType; - - /** - * textPath Spacing Types - */ - typedef enum - { - TEXTPATH_SPACINGTYPE_UNKNOWN = 0, - TEXTPATH_SPACINGTYPE_AUTO = 1, - TEXTPATH_SPACINGTYPE_EXACT = 2 - } TextPathSpacingType; - - - /** - * Corresponds to attribute startOffset on the given 'textPath' element. - */ - virtual SVGAnimatedLength getStartOffset() =0; - - /** - * Corresponds to attribute method on the given 'textPath' element. The value - * must be one of the method type constants specified above. - */ - virtual SVGAnimatedEnumeration getMethod() =0; - - /** - * Corresponds to attribute spacing on the given 'textPath' element. - * The value must be one of the spacing type constants specified above. - */ - virtual SVGAnimatedEnumeration getSpacing() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTextPathElement() {} - -}; - - - - - - -/*######################################################################### -## SVGAltGlyphElement -#########################################################################*/ - -/** - * The SVGAltGlyphElement interface corresponds to the 'altGlyph' element. - */ -class SVGAltGlyphElement : - virtual public SVGTextPositioningElement, - public SVGURIReference -{ -public: - - /** - * Get the attribute glyphRef on the given element. - */ - virtual DOMString getGlyphRef() =0; - - /** - * Set the attribute glyphRef on the given element. - */ - virtual void setGlyphRef(const DOMString &val) - throw (DOMException) =0; - - /** - * Get the attribute format on the given element. - */ - virtual DOMString getFormat() =0; - - /** - * Set the attribute format on the given element. - */ - virtual void setFormat(const DOMString &val) - throw (DOMException) =0; - - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAltGlyphElement() {} - -}; - - - - - - -/*######################################################################### -## SVGAltGlyphDefElement -#########################################################################*/ - -/** - * The SVGAltGlyphDefElement interface corresponds to the 'altGlyphDef' element. - */ -class SVGAltGlyphDefElement : virtual public SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAltGlyphDefElement() {} - -}; - - - - -/*######################################################################### -## SVGAltGlyphItemElement -#########################################################################*/ - -/** - * The SVGAltGlyphItemElement interface corresponds to the - * 'altGlyphItem' element. - */ -class SVGAltGlyphItemElement : virtual public SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAltGlyphItemElement() {} - -}; - - - - -/*######################################################################### -## SVGGlyphRefElement -#########################################################################*/ - -/** - * The SVGGlyphRefElement interface corresponds to the 'glyphRef' element. - */ -class SVGGlyphRefElement : virtual public SVGElement, - public SVGURIReference, - public SVGStylable -{ -public: - - /** - * Get the attribute glyphRef on the given element. - */ - virtual DOMString getGlyphRef() =0; - - /** - * Set the attribute glyphRef on the given element. - */ - virtual void setGlyphRef(const DOMString &val) - throw (DOMException) =0; - - /** - * Get the attribute format on the given element. - */ - virtual DOMString getFormat() =0; - - /** - * Set the attribute format on the given element. - */ - virtual void setFormat(const DOMString &val) - throw (DOMException) =0; - - /** - * Get the attribute x on the given element. - */ - virtual double getX() = 0; - - /** - * Set the attribute x on the given element. - */ - virtual void setX(double val) throw (DOMException) =0; - - /** - * Get the attribute y on the given element. - */ - virtual double getY() = 0; - - /** - * Set the attribute y on the given element. - */ - virtual void setY(double val) throw (DOMException) =0; - - /** - * Get the attribute dx on the given element. - */ - virtual double getDx() = 0; - - /** - * Set the attribute dx on the given element. - */ - virtual void setDx(double val) throw (DOMException) =0; - - /** - * Get the attribute dy on the given element. - */ - virtual double getDy() = 0; - - /** - * Set the attribute dy on the given element. - */ - virtual void setDy(double val) throw (DOMException) =0; - - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGGlyphRefElement() {} - -}; - - - - - -/*######################################################################### -## SVGMarkerElement -#########################################################################*/ - -/** - * The SVGMarkerElement interface corresponds to the 'marker' element. - */ -class SVGMarkerElement : - virtual public SVGElement, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGFitToViewBox -{ -public: - - - - /** - * Marker Unit Types - */ - typedef enum - { - SVG_MARKERUNITS_UNKNOWN = 0, - SVG_MARKERUNITS_USERSPACEONUSE = 1, - SVG_MARKERUNITS_STROKEWIDTH = 2 - } MarkerUnitType; - - /** - * Marker Orientation Types - */ - typedef enum - { - SVG_MARKER_ORIENT_UNKNOWN = 0, - SVG_MARKER_ORIENT_AUTO = 1, - SVG_MARKER_ORIENT_ANGLE = 2 - } MarkerOrientationType; - - - /** - * Corresponds to attribute refX on the given 'marker' element. - */ - virtual SVGAnimatedLength getRefX() =0; - - /** - * Corresponds to attribute refY on the given 'marker' element. - */ - virtual SVGAnimatedLength getRefY() =0; - - /** - * Corresponds to attribute markerUnits on the given 'marker' element. - * One of the Marker Units Types defined above. - */ - virtual SVGAnimatedEnumeration getMarkerUnits() =0; - - /** - * Corresponds to attribute markerWidth on the given 'marker' element. - */ - virtual SVGAnimatedLength getMarkerWidth() =0; - - /** - * Corresponds to attribute markerHeight on the given 'marker' element. - */ - virtual SVGAnimatedLength getMarkerHeight() =0; - - /** - * Corresponds to attribute orient on the given 'marker' element. - * One of the Marker Orientation Types defined above. - */ - virtual SVGAnimatedEnumeration getOrientType() =0; - - /** - * Corresponds to attribute orient on the given 'marker' element. - * If markerUnits is SVG_MARKER_ORIENT_ANGLE, the angle value for - * attribute orient; otherwise, it will be set to zero. - */ - virtual SVGAnimatedAngle getOrientAngle() =0; - - - /** - * Sets the value of attribute orient to 'auto'. - */ - virtual void setOrientToAuto ( ) =0; - - /** - * Sets the value of attribute orient to the given angle. - */ - virtual void setOrientToAngle (const SVGAngle &angle) =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGMarkerElement() {} - -}; - - - - - - -/*######################################################################### -## SVGColorProfileElement -#########################################################################*/ - -/** - * The SVGColorProfileElement interface corresponds to the - * 'color-profile' element. - */ -class SVGColorProfileElement : - virtual public SVGElement, - public SVGURIReference, - public SVGRenderingIntent -{ -public: - - /** - * Get the attribute local on the given element. - */ - virtual DOMString getLocal() =0; - - /** - * Set the attribute local on the given element. - */ - virtual void setLocal(const DOMString &val) - throw (DOMException) =0; - - /** - * Get the attribute name on the given element. - */ - virtual DOMString getName() =0; - - /** - * Set the attribute name on the given element. - */ - virtual void setName(const DOMString &val) - throw (DOMException) =0; - - /** - * Set the attribute rendering-intent on the given element. - * The type of rendering intent, identified by one of the - * SVGRenderingIntent constants. - */ - virtual unsigned short getRenderingIntent() =0; - - /** - * Get the attribute rendering-intent on the given element. - */ - virtual void setRenderingIntent(unsigned short val) - throw (DOMException) =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGColorProfileElement() {} - -}; - - - - -/*######################################################################### -## SVGGradientElement -#########################################################################*/ - -/** - * The SVGGradientElement interface is a base interface used by - * SVGLinearGradientElement and SVGRadialGradientElement. - */ -class SVGGradientElement : - virtual public SVGElement, - public SVGURIReference, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGUnitTypes -{ - -public: - - /** - * Spread Method Types - */ - typedef enum - { - SVG_SPREADMETHOD_UNKNOWN = 0, - SVG_SPREADMETHOD_PAD = 1, - SVG_SPREADMETHOD_REFLECT = 2, - SVG_SPREADMETHOD_REPEAT = 3 - } SpreadMethodType; - - - /** - * Corresponds to attribute gradientUnits on the given element. - * Takes one of the constants defined in SVGUnitTypes. - */ - virtual SVGAnimatedEnumeration getGradientUnits() =0; - - /** - * Corresponds to attribute gradientTransform on the given element. - */ - virtual SVGAnimatedTransformList getGradientTransform() =0; - - /** - * Corresponds to attribute spreadMethod on the given element. - * One of the Spread Method Types. - */ - virtual SVGAnimatedEnumeration getSpreadMethod() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGGradientElement() {} - -}; - - - - - - -/*######################################################################### -## SVGLinearGradientElement -#########################################################################*/ - -/** - * The SVGLinearGradientElement interface corresponds to the - * 'linearGradient' element. - */ -class SVGLinearGradientElement : virtual public SVGGradientElement -{ -public: - - - /** - * Corresponds to attribute x1 on the given 'linearGradient' element. - */ - virtual SVGAnimatedLength getX1() =0; - - /** - * Corresponds to attribute y1 on the given 'linearGradient' element. - */ - virtual SVGAnimatedLength getY1() =0; - - /** - * Corresponds to attribute x2 on the given 'linearGradient' element. - */ - virtual SVGAnimatedLength getX2() =0; - - /** - * Corresponds to attribute y2 on the given 'linearGradient' element. - */ - virtual SVGAnimatedLength getY2() =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGLinearGradientElement() {} - -}; - - - - - - -/*######################################################################### -## SVGRadialGradientElement -#########################################################################*/ - -/** - * The SVGRadialGradientElement interface corresponds to the - * 'radialGradient' element. - */ -class SVGRadialGradientElement : virtual public SVGGradientElement -{ - -public: - - /** - * Corresponds to attribute cx on the given 'radialGradient' element. - */ - virtual SVGAnimatedLength getCx() =0; - - - /** - * Corresponds to attribute cy on the given 'radialGradient' element. - */ - virtual SVGAnimatedLength getCy() =0; - - - /** - * Corresponds to attribute r on the given 'radialGradient' element. - */ - virtual SVGAnimatedLength getR() =0; - - - /** - * Corresponds to attribute fx on the given 'radialGradient' element. - */ - virtual SVGAnimatedLength getFx() =0; - - - /** - * Corresponds to attribute fy on the given 'radialGradient' element. - */ - virtual SVGAnimatedLength getFy() =0; - - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGRadialGradientElement() {} - -}; - - - - - - -/*######################################################################### -## SVGStopElement -#########################################################################*/ - -/** - * The SVGStopElement interface corresponds to the 'stop' element. - */ -class SVGStopElement : - virtual public SVGElement, - public SVGStylable -{ -public: - - /** - * Corresponds to attribute offset on the given 'stop' element. - */ - virtual SVGAnimatedNumber getOffset() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGStopElement() {} - -}; - - - - - - -/*######################################################################### -## SVGPatternElement -#########################################################################*/ - -/** - * The SVGPatternElement interface corresponds to the 'pattern' element. - */ -class SVGPatternElement : - virtual public SVGElement, - public SVGURIReference, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGFitToViewBox, - public SVGUnitTypes -{ - -public: - - /** - * Corresponds to attribute patternUnits on the given 'pattern' element. Takes - * one of the constants defined in SVGUnitTypes. - */ - virtual SVGAnimatedEnumeration getPatternUnits() =0; - - /** - * Corresponds to attribute patternContentUnits on the given 'pattern' - * element. Takes one of the constants defined in SVGUnitTypes. - */ - virtual SVGAnimatedEnumeration getPatternContentUnits() =0; - - /** - * Corresponds to attribute patternTransform on the given 'pattern' element. - */ - virtual SVGAnimatedTransformList getPatternTransform() =0; - - /** - * Corresponds to attribute x on the given 'pattern' element. - */ - virtual SVGAnimatedLength getX() =0; - - /** - * - */ - virtual SVGAnimatedLength getY() =0; - - /** - * Corresponds to attribute width on the given 'pattern' element. - */ - virtual SVGAnimatedLength getWidth() =0; - - /** - * Corresponds to attribute height on the given 'pattern' element. - */ - virtual SVGAnimatedLength getHeight() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGPatternElement() {} - -}; - - - - - - -/*######################################################################### -## SVGClipPathElement -#########################################################################*/ - -/** - * The SVGClipPathElement interface corresponds to the 'clipPath' element. - */ -class SVGClipPathElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public SVGUnitTypes -{ - -public: - - /** - * Corresponds to attribute clipPathUnits on the given 'clipPath' element. - * Takes one of the constants defined in SVGUnitTypes. - */ - virtual SVGAnimatedEnumeration getClipPathUnits() =0; - - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGClipPathElement() {} - -}; - - - - - - -/*######################################################################### -## SVGMaskElement -#########################################################################*/ - -/** - * The SVGMaskElement interface corresponds to the 'mask' element. - */ -class SVGMaskElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGUnitTypes -{ -public: - - - - /** - * Corresponds to attribute maskUnits on the given 'mask' element. Takes one of - * the constants defined in SVGUnitTypes. - */ - virtual SVGAnimatedEnumeration getMaskUnits() =0; - - /** - * Corresponds to attribute maskContentUnits on the given 'mask' element. Takes - * one of the constants defined in SVGUnitTypes. - */ - virtual SVGAnimatedEnumeration getMaskContentUnits() =0; - - /** - * Corresponds to attribute x on the given 'mask' element. - */ - virtual SVGAnimatedLength getX() =0; - - /** - * Corresponds to attribute y on the given 'mask' element. - */ - virtual SVGAnimatedLength getY() =0; - - /** - * Corresponds to attribute width on the given 'mask' element. - */ - virtual SVGAnimatedLength getWidth() =0; - - /** - * Corresponds to attribute height on the given 'mask' element. - */ - virtual SVGAnimatedLength getHeight() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGMaskElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFilterElement -#########################################################################*/ - -/** - * The SVGFilterElement interface corresponds to the 'filter' element. - */ -class SVGFilterElement : - virtual public SVGElement, - public SVGURIReference, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGUnitTypes -{ - -public: - - /** - * Corresponds to attribute filterUnits on the given 'filter' element. Takes one - * of the constants defined in SVGUnitTypes. - */ - virtual SVGAnimatedEnumeration getFilterUnits() =0; - - /** - * Corresponds to attribute primitiveUnits on the given 'filter' element. Takes - * one of the constants defined in SVGUnitTypes. - */ - virtual SVGAnimatedEnumeration getPrimitiveUnits() =0; - - /** - * - */ - virtual SVGAnimatedLength getX() =0; - - /** - * Corresponds to attribute x on the given 'filter' element. - */ - virtual SVGAnimatedLength getY() =0; - - /** - * Corresponds to attribute y on the given 'filter' element. - */ - virtual SVGAnimatedLength getWidth() =0; - - /** - * Corresponds to attribute height on the given 'filter' element. - */ - virtual SVGAnimatedLength getHeight() =0; - - - /** - * Corresponds to attribute filterRes on the given 'filter' element. - * Contains the X component of attribute filterRes. - */ - virtual SVGAnimatedInteger getFilterResX() =0; - - /** - * Corresponds to attribute filterRes on the given 'filter' element. - * Contains the Y component (possibly computed automatically) - * of attribute filterRes. - */ - virtual SVGAnimatedInteger getFilterResY() =0; - - /** - * Sets the values for attribute filterRes. - */ - virtual void setFilterRes (unsigned long filterResX, - unsigned long filterResY ) =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFilterElement() {} - -}; - - - - - -/*######################################################################### -## SVGFEBlendElement -#########################################################################*/ - -/** - * The SVGFEBlendElement interface corresponds to the 'feBlend' element. - */ -class SVGFEBlendElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - - /** - * Blend Mode Types - */ - typedef enum - { - SVG_FEBLEND_MODE_UNKNOWN = 0, - SVG_FEBLEND_MODE_NORMAL = 1, - SVG_FEBLEND_MODE_MULTIPLY = 2, - SVG_FEBLEND_MODE_SCREEN = 3, - SVG_FEBLEND_MODE_DARKEN = 4, - SVG_FEBLEND_MODE_LIGHTEN = 5 - } BlendModeType; - - /** - * Corresponds to attribute in on the given 'feBlend' element. - */ - virtual SVGAnimatedString getIn1() =0; - - /** - * Corresponds to attribute in2 on the given 'feBlend' element. - */ - virtual SVGAnimatedString getIn2() =0; - - /** - * Corresponds to attribute mode on the given 'feBlend' element. - * Takes one of the Blend Mode Types. - */ - virtual SVGAnimatedEnumeration getMode() =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEBlendElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEColorMatrixElement -#########################################################################*/ - -/** - * The SVGFEColorMatrixElement interface corresponds to the - * 'feColorMatrix' element. - */ -class SVGFEColorMatrixElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ - -public: - - /** - * Color Matrix Types - */ - typedef enum - { - SVG_FECOLORMATRIX_TYPE_UNKNOWN = 0, - SVG_FECOLORMATRIX_TYPE_MATRIX = 1, - SVG_FECOLORMATRIX_TYPE_SATURATE = 2, - SVG_FECOLORMATRIX_TYPE_HUEROTATE = 3, - SVG_FECOLORMATRIX_TYPE_LUMINANCETOALPHA = 4 - } ColorMatrixType; - - - /** - * Corresponds to attribute in on the given 'feColorMatrix' element. - */ - virtual SVGAnimatedString getIn1() =0; - - /** - * Corresponds to attribute type on the given 'feColorMatrix' element. - * Takes one of the Color Matrix Types. - */ - virtual SVGAnimatedEnumeration getType() =0; - - /** - * Corresponds to attribute values on the given 'feColorMatrix' element. - * Provides access to the contents of the values attribute. - */ - virtual SVGAnimatedNumberList getValues() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEColorMatrixElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEComponentTransferElement -#########################################################################*/ - -/** - * The SVGFEComponentTransferElement interface corresponds to - * the 'feComponentTransfer' element. - */ -class SVGFEComponentTransferElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - /** - * Corresponds to attribute in on the given 'feComponentTransfer' element. - */ - virtual SVGAnimatedString getIn1() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEComponentTransferElement() {} - -}; - - - - - - -/*######################################################################### -## SVGComponentTransferFunctionElement -#########################################################################*/ - -/** - * This interface defines a base interface used by the component - * transfer function interfaces. - */ -class SVGComponentTransferFunctionElement : virtual public SVGElement -{ -public: - - - /** - * Component Transfer Types - */ - typedef enum - { - SVG_FECOMPONENTTRANSFER_TYPE_UNKNOWN = 0, - SVG_FECOMPONENTTRANSFER_TYPE_IDENTITY = 1, - SVG_FECOMPONENTTRANSFER_TYPE_TABLE = 2, - SVG_FECOMPONENTTRANSFER_TYPE_DISCRETE = 3, - SVG_FECOMPONENTTRANSFER_TYPE_LINEAR = 4, - SVG_FECOMPONENTTRANSFER_TYPE_GAMMA = 5 - } ComponentTransferType; - - - /** - * Corresponds to attribute type on the given element. Takes one\ - * of the Component Transfer Types. - */ - virtual SVGAnimatedEnumeration getType() =0; - - /** - * Corresponds to attribute tableValues on the given element. - */ - virtual SVGAnimatedNumberList getTableValues() =0; - - /** - * Corresponds to attribute slope on the given element. - */ - virtual SVGAnimatedNumber getSlope() =0; - - /** - * Corresponds to attribute intercept on the given element. - */ - virtual SVGAnimatedNumber getIntercept() =0; - - /** - * Corresponds to attribute amplitude on the given element. - */ - virtual SVGAnimatedNumber getAmplitude() =0; - - /** - * Corresponds to attribute exponent on the given element. - */ - virtual SVGAnimatedNumber getExponent() =0; - - /** - * Corresponds to attribute offset on the given element. - */ - virtual SVGAnimatedNumber getOffset() =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGComponentTransferFunctionElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEFuncRElement -#########################################################################*/ - -/** - * The SVGFEFuncRElement interface corresponds to the 'feFuncR' element. - */ -class SVGFEFuncRElement : virtual public SVGComponentTransferFunctionElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEFuncRElement() {} - -}; - - - - -/*######################################################################### -## SVGFEFuncGElement -#########################################################################*/ - -/** - * The SVGFEFuncGElement interface corresponds to the 'feFuncG' element. - */ -class SVGFEFuncGElement : public virtual SVGComponentTransferFunctionElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEFuncGElement() {} - -}; - - - - -/*######################################################################### -## SVGFEFuncBElement -#########################################################################*/ - -/** - * The SVGFEFuncBElement interface corresponds to the 'feFuncB' element. - */ -class SVGFEFuncBElement : virtual public SVGComponentTransferFunctionElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEFuncBElement() {} - -}; - - - - -/*######################################################################### -## SVGFEFuncAElement -#########################################################################*/ - -/** - * The SVGFEFuncAElement interface corresponds to the 'feFuncA' element. - */ -class SVGFEFuncAElement : virtual public SVGComponentTransferFunctionElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEFuncAElement() {} - -}; - - - - -/*######################################################################### -## SVGFECompositeElement -#########################################################################*/ - -/** - * The SVGFECompositeElement interface corresponds to the 'feComposite' element. - */ -class SVGFECompositeElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - - - /** - * Composite Operators - */ - typedef enum - { - SVG_FECOMPOSITE_OPERATOR_UNKNOWN = 0, - SVG_FECOMPOSITE_OPERATOR_OVER = 1, - SVG_FECOMPOSITE_OPERATOR_IN = 2, - SVG_FECOMPOSITE_OPERATOR_OUT = 3, - SVG_FECOMPOSITE_OPERATOR_ATOP = 4, - SVG_FECOMPOSITE_OPERATOR_XOR = 5, - SVG_FECOMPOSITE_OPERATOR_ARITHMETIC = 6 - } CompositeOperatorType; - - /** - * Corresponds to attribute in on the given 'feComposite' element. - */ - virtual SVGAnimatedString getIn1() =0; - - /** - * Corresponds to attribute in2 on the given 'feComposite' element. - */ - virtual SVGAnimatedString getIn2() =0; - - /** - * Corresponds to attribute operator on the given 'feComposite' element. - * Takes one of the Composite Operators. - */ - virtual SVGAnimatedEnumeration getOperator() =0; - - /** - * Corresponds to attribute k1 on the given 'feComposite' element. - */ - virtual SVGAnimatedNumber getK1() =0; - - /** - * Corresponds to attribute k2 on the given 'feComposite' element. - */ - virtual SVGAnimatedNumber getK2() =0; - - /** - * Corresponds to attribute k3 on the given 'feComposite' element. - */ - virtual SVGAnimatedNumber getK3() =0; - - /** - * Corresponds to attribute k4 on the given 'feComposite' element. - */ - virtual SVGAnimatedNumber getK4() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFECompositeElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEConvolveMatrixElement -#########################################################################*/ - -/** - * The SVGFEConvolveMatrixElement interface corresponds to - * the 'feConvolveMatrix' element. - */ -class SVGFEConvolveMatrixElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ - -public: - - /** - * Edge Mode Values - */ - typedef enum - { - SVG_EDGEMODE_UNKNOWN = 0, - SVG_EDGEMODE_DUPLICATE = 1, - SVG_EDGEMODE_WRAP = 2, - SVG_EDGEMODE_NONE = 3 - } EdgeModeType; - - - /** - * Corresponds to attribute order on the given 'feConvolveMatrix' element. - */ - virtual SVGAnimatedInteger getOrderX() =0; - - /** - * Corresponds to attribute order on the given 'feConvolveMatrix' element. - */ - virtual SVGAnimatedInteger getOrderY() =0; - - /** - * Corresponds to attribute kernelMatrix on the given element. - */ - virtual SVGAnimatedNumberList getKernelMatrix() =0; - - /** - * Corresponds to attribute divisor on the given 'feConvolveMatrix' element. - */ - virtual SVGAnimatedNumber getDivisor() =0; - - /** - * Corresponds to attribute bias on the given 'feConvolveMatrix' element. - */ - virtual SVGAnimatedNumber getBias() =0; - - /** - * Corresponds to attribute targetX on the given 'feConvolveMatrix' element. - */ - virtual SVGAnimatedInteger getTargetX() =0; - - /** - * Corresponds to attribute targetY on the given 'feConvolveMatrix' element. - */ - virtual SVGAnimatedInteger getTargetY() =0; - - /** - * Corresponds to attribute edgeMode on the given 'feConvolveMatrix' - * element. Takes one of the Edge Mode Types. - */ - virtual SVGAnimatedEnumeration getEdgeMode() =0; - - /** - * Corresponds to attribute kernelUnitLength on the - * given 'feConvolveMatrix' element. - */ - virtual SVGAnimatedLength getKernelUnitLengthX() =0; - - /** - * Corresponds to attribute kernelUnitLength on the given - * 'feConvolveMatrix' element. - */ - virtual SVGAnimatedLength getKernelUnitLengthY() =0; - - /** - * Corresponds to attribute preserveAlpha on the - * given 'feConvolveMatrix' element. - */ - virtual SVGAnimatedBoolean getPreserveAlpha() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEConvolveMatrixElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEDiffuseLightingElement -#########################################################################*/ - -/** - * The SVGFEDiffuseLightingElement interface corresponds to the - * 'feDiffuseLighting' element. - */ -class SVGFEDiffuseLightingElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - /** - * Corresponds to attribute in on the given 'feDiffuseLighting' element. - */ - virtual SVGAnimatedString getIn1() =0; - - /** - * Corresponds to attribute surfaceScale on the given - * 'feDiffuseLighting' element. - */ - virtual SVGAnimatedNumber getSurfaceScale() =0; - - /** - * Corresponds to attribute diffuseConstant on the given - * 'feDiffuseLighting' element. - */ - virtual SVGAnimatedNumber getDiffuseConstant() =0; - - /** - * Corresponds to attribute kernelUnitLength on the given - * 'feDiffuseLighting' element. - */ - virtual SVGAnimatedNumber getKernelUnitLengthX() =0; - - /** - * Corresponds to attribute kernelUnitLength on the given - * 'feDiffuseLighting' element. - */ - virtual SVGAnimatedNumber getKernelUnitLengthY() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEDiffuseLightingElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEDistantLightElement -#########################################################################*/ - -/** - * The SVGFEDistantLightElement interface corresponds to the - * 'feDistantLight' element. - */ -class SVGFEDistantLightElement : virtual public SVGElement -{ -public: - - /** - * Corresponds to attribute azimuth on the given 'feDistantLight' element. - */ - virtual SVGAnimatedNumber getAzimuth() =0; - - - /** - * Corresponds to attribute elevation on the given 'feDistantLight' - * element - */ - virtual SVGAnimatedNumber getElevation() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEDistantLightElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEPointLightElement -#########################################################################*/ - -/** - * The SVGFEPointLightElement interface corresponds to the 'fePointLight' element. - */ -class SVGFEPointLightElement : virtual public SVGElement -{ -public: - - /** - * Corresponds to attribute x on the given 'fePointLight' element. - */ - virtual SVGAnimatedNumber getX() =0; - - /** - * Corresponds to attribute y on the given 'fePointLight' element. - */ - virtual SVGAnimatedNumber getY() =0; - - /** - * Corresponds to attribute z on the given 'fePointLight' element. - */ - virtual SVGAnimatedNumber getZ() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEPointLightElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFESpotLightElement -#########################################################################*/ - -/** - * The SVGFESpotLightElement interface corresponds to the 'feSpotLight' element. - */ -class SVGFESpotLightElement : virtual public SVGElement -{ -public: - - /** - * Corresponds to attribute x on the given 'feSpotLight' element. - */ - virtual SVGAnimatedNumber getX() =0; - - /** - * Corresponds to attribute y on the given 'feSpotLight' element. - */ - virtual SVGAnimatedNumber getY() =0; - - /** - * Corresponds to attribute z on the given 'feSpotLight' element. - */ - virtual SVGAnimatedNumber getZ() =0; - - /** - * Corresponds to attribute pointsAtX on the given 'feSpotLight' element. - */ - virtual SVGAnimatedNumber getPointsAtX() =0; - - /** - * Corresponds to attribute pointsAtY on the given 'feSpotLight' element. - */ - virtual SVGAnimatedNumber getPointsAtY() =0; - - /** - * Corresponds to attribute pointsAtZ on the given 'feSpotLight' element. - */ - virtual SVGAnimatedNumber getPointsAtZ() =0; - - /** - * Corresponds to attribute specularExponent on the - * given 'feSpotLight' element. - */ - virtual SVGAnimatedNumber getSpecularExponent() =0; - - /** - * Corresponds to attribute limitingConeAngle on the - * given 'feSpotLight' element. - */ - virtual SVGAnimatedNumber getLimitingConeAngle() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFESpotLightElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEDisplacementMapElement -#########################################################################*/ - -/** - * - */ -class SVGFEDisplacementMapElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - - - /** - * Channel Selectors - */ - typedef enum - { - SVG_CHANNEL_UNKNOWN = 0, - SVG_CHANNEL_R = 1, - SVG_CHANNEL_G = 2, - SVG_CHANNEL_B = 3, - SVG_CHANNEL_A = 4 - } ChannelSelector; - - /** - * - */ - virtual SVGAnimatedString getIn1() =0; - - /** - * - */ - virtual SVGAnimatedString getIn2() =0; - - - /** - * - */ - virtual SVGAnimatedNumber getScale() =0; - - /** - * - */ - virtual SVGAnimatedEnumeration getXChannelSelector() =0; - - /** - * - */ - virtual SVGAnimatedEnumeration getYChannelSelector() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEDisplacementMapElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEFloodElement -#########################################################################*/ - -/** - * - */ -class SVGFEFloodElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - /** - * - */ - virtual SVGAnimatedString getIn1() =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEFloodElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEGaussianBlurElement -#########################################################################*/ - -/** - * - */ -class SVGFEGaussianBlurElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - /** - * - */ - virtual SVGAnimatedString getIn1() =0; - - - /** - * - */ - virtual SVGAnimatedNumber getStdDeviationX() =0; - - /** - * - */ - virtual SVGAnimatedNumber getStdDeviationY() =0; - - - /** - * - */ - virtual void setStdDeviation (double stdDeviationX, double stdDeviationY ) =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEGaussianBlurElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEImageElement -#########################################################################*/ - -/** - * - */ -class SVGFEImageElement : - virtual public SVGElement, - public SVGURIReference, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEImageElement() {} - -}; - - - - -/*######################################################################### -## SVGFEMergeElement -#########################################################################*/ - -/** - * - */ -class SVGFEMergeElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEMergeElement() {} - -}; - - - - -/*######################################################################### -## SVGFEMergeNodeElement -#########################################################################*/ - -/** - * - */ -class SVGFEMergeNodeElement : virtual public SVGElement -{ -public: - /** - * - */ - virtual SVGAnimatedString getIn1() =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEMergeNodeElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEMorphologyElement -#########################################################################*/ - -/** - * - */ -class SVGFEMorphologyElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - - - /** - * Morphology Operators - */ - typedef enum - { - SVG_MORPHOLOGY_OPERATOR_UNKNOWN = 0, - SVG_MORPHOLOGY_OPERATOR_ERODE = 1, - SVG_MORPHOLOGY_OPERATOR_DILATE = 2 - } MorphologyOperatorType; - - - /** - * - */ - virtual SVGAnimatedString getIn1() =0; - - - /** - * - */ - virtual SVGAnimatedEnumeration getOperator() =0; - - /** - * - */ - virtual SVGAnimatedLength getRadiusX() =0; - - /** - * - */ - virtual SVGAnimatedLength getRadiusY() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEMorphologyElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFEOffsetElement -#########################################################################*/ - -/** - * - */ -class SVGFEOffsetElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - - - /** - * - */ - virtual SVGAnimatedString getIn1() =0; - - /** - * - */ - virtual SVGAnimatedLength getDx() =0; - - /** - * - */ - virtual SVGAnimatedLength getDy() =0; - - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEOffsetElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFESpecularLightingElement -#########################################################################*/ - -/** - * - */ -class SVGFESpecularLightingElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - /** - * - */ - virtual SVGAnimatedString getIn1() =0; - - /** - * - */ - virtual SVGAnimatedNumber getSurfaceScale() =0; - - /** - * - */ - virtual SVGAnimatedNumber getSpecularConstant() =0; - - /** - * - */ - virtual SVGAnimatedNumber getSpecularExponent() =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFESpecularLightingElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFETileElement -#########################################################################*/ - -/** - * - */ -class SVGFETileElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - - /** - * - */ - virtual SVGAnimatedString getIn1() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFETileElement() {} - -}; - - - - - - -/*######################################################################### -## SVGFETurbulenceElement -#########################################################################*/ - -/** - * - */ -class SVGFETurbulenceElement : - virtual public SVGElement, - public SVGFilterPrimitiveStandardAttributes -{ -public: - - - - /** - * Turbulence Types - */ - typedef enum - { - SVG_TURBULENCE_TYPE_UNKNOWN = 0, - SVG_TURBULENCE_TYPE_FRACTALNOISE = 1, - SVG_TURBULENCE_TYPE_TURBULENCE = 2 - } TurbulenceType; - - /** - * Stitch Options - */ - typedef enum - { - SVG_STITCHTYPE_UNKNOWN = 0, - SVG_STITCHTYPE_STITCH = 1, - SVG_STITCHTYPE_NOSTITCH = 2 - } StitchOption; - - - - /** - * - */ - virtual SVGAnimatedNumber getBaseFrequencyX() =0; - - /** - * - */ - virtual SVGAnimatedNumber getBaseFrequencyY() =0; - - /** - * - */ - virtual SVGAnimatedInteger getNumOctaves() =0; - - /** - * - */ - virtual SVGAnimatedNumber getSeed() =0; - - /** - * - */ - virtual SVGAnimatedEnumeration getStitchTiles() =0; - - /** - * - */ - virtual SVGAnimatedEnumeration getType() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFETurbulenceElement() {} - -}; - - - - - - -/*######################################################################### -## SVGCursorElement -#########################################################################*/ - -/** - * - */ -class SVGCursorElement : - virtual public SVGElement, - public SVGURIReference, - public SVGTests, - public SVGExternalResourcesRequired -{ -public: - /** - * - */ - virtual SVGAnimatedLength getX() =0; - - /** - * - */ - virtual SVGAnimatedLength getY() =0; - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGCursorElement() {} - -}; - - - - - - -/*######################################################################### -## SVGAElement -#########################################################################*/ - -/** - * - */ -class SVGAElement : virtual public SVGElement, - public SVGURIReference, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - /** - * - */ - virtual SVGAnimatedString getTarget() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAElement() {} - -}; - - - - - - -/*######################################################################### -## SVGViewElement -#########################################################################*/ - -/** - * - */ -class SVGViewElement : virtual public SVGElement, - public SVGExternalResourcesRequired, - public SVGFitToViewBox, - public SVGZoomAndPan -{ -public: - - /** - * - */ - virtual SVGStringList getViewTarget() =0; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGViewElement() {} - -}; - - - - - - -/*######################################################################### -## SVGScriptElement -#########################################################################*/ - -/** - * - */ -class SVGScriptElement : - virtual public SVGElement, - public SVGURIReference, - public SVGExternalResourcesRequired -{ -public: - - /** - * - */ - virtual DOMString getType() =0; - - /** - * - */ - virtual void setType(const DOMString &val) - throw (DOMException) =0; - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGScriptElement() {} - -}; - - - - - -/*######################################################################### -## SVGAnimationElement -#########################################################################*/ - -/** - * - */ -class SVGAnimationElement : - virtual public SVGElement, - public SVGTests, - public SVGExternalResourcesRequired, - public smil::ElementTimeControl, - public events::EventTarget -{ -public: - - - /** - * - */ - virtual SVGElementPtr getTargetElement() =0; - - - /** - * - */ - virtual double getStartTime ( ) =0; - - /** - * - */ - virtual double getCurrentTime ( ) =0; - - /** - * - */ - virtual double getSimpleDuration ( ) - throw( DOMException ) =0; -; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAnimationElement() {} - -}; - - - - - - -/*######################################################################### -## SVGAnimateElement -#########################################################################*/ - -/** - * - */ -class SVGAnimateElement : virtual public SVGAnimationElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAnimateElement() {} - -}; - - - - -/*######################################################################### -## SVGSetElement -#########################################################################*/ - -/** - * - */ -class SVGSetElement : virtual public SVGAnimationElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGSetElement() {} - -}; - - - - -/*######################################################################### -## SVGAnimateMotionElement -#########################################################################*/ - -/** - * - */ -class SVGAnimateMotionElement : virtual public SVGAnimationElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAnimateMotionElement() {} - -}; - - - - -/*######################################################################### -## SVGMPathElement -#########################################################################*/ - -/** - * - */ -class SVGMPathElement : - virtual public SVGElement, - public SVGURIReference, - public SVGExternalResourcesRequired -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGMPathElement() {} - -}; - - - - -/*######################################################################### -## SVGAnimateColorElement -#########################################################################*/ - -/** - * - */ -class SVGAnimateColorElement : virtual public SVGAnimationElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAnimateColorElement() {} - -}; - - - - -/*######################################################################### -## SVGAnimateTransformElement -#########################################################################*/ - -/** - * - */ -class SVGAnimateTransformElement : virtual public SVGAnimationElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAnimateTransformElement() {} - -}; - - - - -/*######################################################################### -## SVGFontElement -#########################################################################*/ - -/** - * - */ -class SVGFontElement : virtual public SVGElement, - public SVGExternalResourcesRequired, - public SVGStylable -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontElement() {} - -}; - - - - -/*######################################################################### -## SVGGlyphElement -#########################################################################*/ - -/** - * - */ -class SVGGlyphElement : virtual public SVGElement, - public SVGStylable -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGGlyphElement() {} - -}; - - - - -/*######################################################################### -## SVGMissingGlyphElement -#########################################################################*/ - -/** - * - */ -class SVGMissingGlyphElement : - virtual public SVGElement, - public SVGStylable -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGMissingGlyphElement() {} - -}; - - - - -/*######################################################################### -## SVGHKernElement -#########################################################################*/ - -/** - * - */ -class SVGHKernElement : virtual public SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGHKernElement() {} - -}; - - - - -/*######################################################################### -## SVGVKernElement -#########################################################################*/ - -/** - * - */ -class SVGVKernElement : public virtual SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGVKernElement() {} - -}; - - - - -/*######################################################################### -## SVGFontFaceElement -#########################################################################*/ - -/** - * - */ -class SVGFontFaceElement : virtual public SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontFaceElement() {} - -}; - - - - -/*######################################################################### -## SVGFontFaceSrcElement -#########################################################################*/ - -/** - * - */ -class SVGFontFaceSrcElement : virtual public SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontFaceSrcElement() {} - -}; - - - - -/*######################################################################### -## SVGFontFaceUriElement -#########################################################################*/ - -/** - * - */ -class SVGFontFaceUriElement : virtual public SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontFaceUriElement() {} - -}; - - - - -/*######################################################################### -## SVGFontFaceFormatElement -#########################################################################*/ - -/** - * - */ -class SVGFontFaceFormatElement : virtual public SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontFaceFormatElement() {} - -}; - - - - -/*######################################################################### -## SVGFontFaceNameElement -#########################################################################*/ - -/** - * - */ -class SVGFontFaceNameElement : virtual public SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontFaceNameElement() {} - -}; - - - - -/*######################################################################### -## SVGDefinitionSrcElement -#########################################################################*/ - -/** - * - */ -class SVGDefinitionSrcElement : virtual public SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGDefinitionSrcElement() {} - -}; - - - - -/*######################################################################### -## SVGMetadataElement -#########################################################################*/ - -/** - * - */ -class SVGMetadataElement : virtual public SVGElement -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGMetadataElement() {} - -}; - - - -/*######################################################################### -## SVGForeignObjectElement -#########################################################################*/ - -/** - * - */ -class SVGForeignObjectElement : - virtual public SVGElement, - public SVGTests, - public SVGLangSpace, - public SVGExternalResourcesRequired, - public SVGStylable, - public SVGTransformable, - public events::EventTarget -{ -public: - - - /** - * - */ - virtual SVGAnimatedLength getX() =0; - - /** - * - */ - virtual SVGAnimatedLength getY() =0; - - /** - * - */ - virtual SVGAnimatedLength getWidth() =0; - - /** - * - */ - virtual SVGAnimatedLength getHeight() =0; - - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~SVGForeignObjectElement() {} - -}; - - - - - -} //namespace svg -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_SVG_H -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/svgimpl.cpp b/src/dom/svgimpl.cpp deleted file mode 100644 index 0f420dc87..000000000 --- a/src/dom/svgimpl.cpp +++ /dev/null @@ -1,2563 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "svgimpl.h" -#include <cstring> -using std::strcmp; - -/** - * This is the .cpp side of the SVG implementations classes. Note that many - * of the sections for each of the classes is empty. This is because that class - * has been implemented totally in svgimpl.h - */ - -namespace org -{ -namespace w3c -{ -namespace dom -{ -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 -#########################################################################*/ - -/** - * Used for mapping name->enum and enum->name. - * For SVG element and interface types. - */ -typedef struct -{ - const char *name; - unsigned int type; -} SVGTableEntry; - - - -SVGTableEntry interfaceTable[] = -{ - { "SVGAngle", SVG_ANGLE }, - { "SVGAnimatedAngle", SVG_ANIMATED_ANGLE }, - { "SVGAnimatedBoolean", SVG_ANIMATED_BOOLEAN }, - { "SVGAnimatedEnumeration", SVG_ANIMATED_ENUMERATION }, - { "SVGAnimatedInteger", SVG_ANIMATED_INTEGER }, - { "SVGAnimatedLength", SVG_ANIMATED_LENGTH }, - { "SVGAnimatedLengthList", SVG_ANIMATED_LENGTH_LIST }, - { "SVGAnimatedNumber", SVG_ANIMATED_NUMBER }, - { "SVGAnimatedNumberList", SVG_ANIMATED_NUMBER_LIST }, - { "SVGAnimatedRect", SVG_ANIMATED_RECT }, - { "SVGAnimatedString", SVG_ANIMATED_STRING }, - { "SVGColor", SVG_COLOR }, - { "SVGCSSRule", SVG_CSS_RULE }, - { "SVGExternalResourcesRequired", SVG_EXTERNAL_RESOURCES_REQUIRED }, - { "SVGFitToViewBox", SVG_FIT_TO_VIEWBOX }, - { "SVGICCColor", SVG_ICCCOLOR }, - { "SVGLangSpace", SVG_LANG_SPACE }, - { "SVGLength", SVG_LENGTH }, - { "SVGLengthList", SVG_LENGTH_LIST }, - { "SVGLocatable", SVG_LOCATABLE }, - { "SVGNumber", SVG_NUMBER }, - { "SVGNumberList", SVG_NUMBER_LIST }, - { "SVGRect", SVG_RECT }, - { "SVGRenderingIntent", SVG_RENDERING_INTENT }, - { "SVGStringList", SVG_STRING_LIST }, - { "SVGStylable", SVG_STYLABLE }, - { "SVGTests", SVG_TESTS }, - { "SVGTransformable", SVG_TRANSFORMABLE }, - { "SVGUnitTypes", SVG_UNIT_TYPES }, - { "SVGURIReference", SVG_URI_REFERENCE }, - { "SVGViewSpec", SVG_VIEW_SPEC }, - { "SVGZoomAndPan", SVG_ZOOM_AND_PAN } -}; - - -SVGTableEntry elementTable[] = -{ - { "a", SVG_A_ELEMENT }, - { "altGlyph", SVG_ALTGLYPH_ELEMENT }, - { "altGlyphDef", SVG_ALTGLYPHDEF_ELEMENT }, - { "altGlyphItem", SVG_ALTGLYPHITEM_ELEMENT }, - { "animate", SVG_ANIMATE_ELEMENT }, - { "animateColor", SVG_ANIMATECOLOR_ELEMENT }, - { "animateMotion", SVG_ANIMATEMOTION_ELEMENT }, - { "animateTransform", SVG_ANIMATETRANSFORM_ELEMENT }, - { "circle", SVG_CIRCLE_ELEMENT }, - { "clipPath", SVG_CLIPPATH_ELEMENT }, - { "color-profile", SVG_COLOR_PROFILE_ELEMENT }, - { "cursor", SVG_CURSOR_ELEMENT }, - { "definition-src", SVG_DEFINITION_SRC_ELEMENT }, - { "defs", SVG_DEFS_ELEMENT }, - { "desc", SVG_DESC_ELEMENT }, - { "ellipse", SVG_ELLIPSE_ELEMENT }, - { "feBlend", SVG_FEBLEND_ELEMENT }, - { "feColorMatrix", SVG_FECOLORMATRIX_ELEMENT }, - { "feComponentTransfer", SVG_FECOMPONENTTRANSFER_ELEMENT }, - { "feComposite", SVG_FECOMPOSITE_ELEMENT }, - { "feConvolveMatrix", SVG_FECONVOLVEMATRIX_ELEMENT }, - { "feDiffuseLighting", SVG_FEDIFFUSELIGHTING_ELEMENT }, - { "feDisplacementMap", SVG_FEDISPLACEMENTMAP_ELEMENT }, - { "feDistantLight", SVG_FEDISTANTLIGHT_ELEMENT }, - { "feFlood", SVG_FEFLOOD_ELEMENT }, - { "feFuncA", SVG_FEFUNCA_ELEMENT }, - { "feFuncB", SVG_FEFUNCB_ELEMENT }, - { "feFuncG", SVG_FEFUNCG_ELEMENT }, - { "feFuncR", SVG_FEFUNCR_ELEMENT }, - { "feGaussianBlur", SVG_FEGAUSSIANBLUR_ELEMENT }, - { "feImage", SVG_FEIMAGE_ELEMENT }, - { "feMerge", SVG_FEMERGE_ELEMENT }, - { "feMergeNode", SVG_FEMERGENODE_ELEMENT }, - { "feMorphology", SVG_FEMORPHOLOGY_ELEMENT }, - { "feOffset", SVG_FEOFFSET_ELEMENT }, - { "fePointLight", SVG_FEPOINTLIGHT_ELEMENT }, - { "feSpecularLighting", SVG_FESPECULARLIGHTING_ELEMENT }, - { "feSpotLight", SVG_FESPOTLIGHT_ELEMENT }, - { "feTile", SVG_FETILE_ELEMENT }, - { "feTurbulence", SVG_FETURBULENCE_ELEMENT }, - { "filter", SVG_FILTER_ELEMENT }, - { "font", SVG_FONT_ELEMENT }, - { "font-face", SVG_FONT_FACE_ELEMENT }, - { "font-face-format", SVG_FONT_FACE_FORMAT_ELEMENT }, - { "font-face-name", SVG_FONT_FACE_NAME_ELEMENT }, - { "font-face-src", SVG_FONT_FACE_SRC_ELEMENT }, - { "font-face-uri", SVG_FONT_FACE_URI_ELEMENT }, - { "foreignObject", SVG_FOREIGNOBJECT_ELEMENT }, - { "g", SVG_G_ELEMENT }, - { "glyph", SVG_GLYPH_ELEMENT }, - { "glyphRef", SVG_GLYPHREF_ELEMENT }, - { "hkern", SVG_HKERN_ELEMENT }, - { "image", SVG_IMAGE_ELEMENT }, - { "line", SVG_LINE_ELEMENT }, - { "linearGradient", SVG_LINEARGRADIENT_ELEMENT }, - { "marker", SVG_MARKER_ELEMENT }, - { "mask", SVG_MASK_ELEMENT }, - { "metadata", SVG_METADATA_ELEMENT }, - { "missing-glyph", SVG_MISSING_GLYPH_ELEMENT }, - { "mpath", SVG_MPATH_ELEMENT }, - { "path", SVG_PATH_ELEMENT }, - { "pattern", SVG_PATTERN_ELEMENT }, - { "polygon", SVG_POLYGON_ELEMENT }, - { "polyline", SVG_POLYLINE_ELEMENT }, - { "radialGradient", SVG_RADIALGRADIENT_ELEMENT }, - { "rect", SVG_RECT_ELEMENT }, - { "script", SVG_SCRIPT_ELEMENT }, - { "set", SVG_SET_ELEMENT }, - { "stop", SVG_STOP_ELEMENT }, - { "style", SVG_STYLE_ELEMENT }, - { "svg", SVG_SVG_ELEMENT }, - { "switch", SVG_SWITCH_ELEMENT }, - { "symbol", SVG_SYMBOL_ELEMENT }, - { "text", SVG_TEXT_ELEMENT }, - { "textPath", SVG_TEXTPATH_ELEMENT }, - { "title", SVG_TITLE_ELEMENT }, - { "tref", SVG_TREF_ELEMENT }, - { "tspan", SVG_TSPAN_ELEMENT }, - { "use", SVG_USE_ELEMENT }, - { "view", SVG_VIEW_ELEMENT }, - { "vkern", SVG_VKERN_ELEMENT } -}; - - -static int _entryComparison(const void *vkey, const void *ventry) -{ - const char *key = (const char *)vkey; - const SVGTableEntry *entry = (const SVGTableEntry *)ventry; - return strcmp(key, entry->name); -} - -/** - * Look up the SVG Element type enum for a given string - * Return -1 if not found - */ -int svgElementStrToEnum(const char *str) -{ - if (!str) - return -1; - SVGTableEntry *entry = - (SVGTableEntry *)bsearch(str, elementTable, - SVG_MAX_ELEMENT, sizeof(SVGTableEntry), _entryComparison); - if (!entry) - return -1; - return entry->type; -} - - -/** - * Return the string corresponding to a given SVG element type enum - * Return "unknown" if not found - */ -const char *svgElementEnumToStr(int type) -{ - if (type < 0 || type >= SVG_MAX_ELEMENT) - return "unknown"; - return elementTable[type].name; -} - - -/** - * Look up the SVG Interface type enum for a given string - * Return -1 if not found - */ -int svgInterfaceStrToEnum(const char *str) -{ - if (!str) - return -1; - SVGTableEntry *entry = - (SVGTableEntry *)bsearch(str, interfaceTable, - SVG_NR_INTERFACES, sizeof(SVGTableEntry), _entryComparison); - if (!entry) - return -1; - return entry->type; -} - - -/** - * Return the string corresponding to a given SVG element type enum - * Return "unknown" if not found - */ -const char *svgInterfaceEnumToStr(unsigned int type) -{ - if (type < 1 || type > SVG_ZOOM_AND_PAN) - return "unknown"; - SVGTableEntry *entry = interfaceTable; - for (int i = 0 ; i < SVG_NR_INTERFACES ; i++) - { - if (entry->type == type) - return entry->name; - entry++; - } - return "unknown"; -} - - -/*######################################################################### -## SVGElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - - - - -/*######################################################################### -## SVGDocumentImpl -#########################################################################*/ - - - -//#################################################### -//# Overload some createXXX() methods from DocumentImpl, -//# To create our SVG-DOM types -//#################################################### - -/** - * - */ -ElementPtr SVGDocumentImpl::createElement(const DOMString& tagName) - throw(DOMException) -{ - ElementPtr elem; - int elementType = svgElementStrToEnum(tagName.c_str()); - switch (elementType) - { - case SVG_A_ELEMENT: - { - elem = new SVGAElementImpl(); - break; - } - case SVG_ALTGLYPH_ELEMENT: - { - elem = new SVGAltGlyphElementImpl(); - break; - } - case SVG_ALTGLYPHDEF_ELEMENT: - { - elem = new SVGAltGlyphDefElementImpl(); - break; - } - case SVG_ALTGLYPHITEM_ELEMENT: - { - elem = new SVGAltGlyphItemElementImpl(); - break; - } - case SVG_ANIMATE_ELEMENT: - { - elem = new SVGAnimateElementImpl(); - break; - } - case SVG_ANIMATECOLOR_ELEMENT: - { - elem = new SVGAnimateColorElementImpl(); - break; - } - case SVG_ANIMATEMOTION_ELEMENT: - { - elem = new SVGAnimateMotionElementImpl(); - break; - } - case SVG_ANIMATETRANSFORM_ELEMENT: - { - elem = new SVGAnimateTransformElementImpl(); - break; - } - case SVG_CIRCLE_ELEMENT: - { - elem = new SVGCircleElementImpl(); - break; - } - case SVG_CLIPPATH_ELEMENT: - { - elem = new SVGClipPathElementImpl(); - break; - } - case SVG_COLOR_PROFILE_ELEMENT: - { - elem = new SVGColorProfileElementImpl(); - break; - } - case SVG_CURSOR_ELEMENT: - { - elem = new SVGCursorElementImpl(); - break; - } - case SVG_DEFINITION_SRC_ELEMENT: - { - elem = new SVGDefinitionSrcElementImpl(); - break; - } - case SVG_DEFS_ELEMENT: - { - elem = new SVGDefsElementImpl(); - break; - } - case SVG_DESC_ELEMENT: - { - elem = new SVGDescElementImpl(); - break; - } - case SVG_ELLIPSE_ELEMENT: - { - elem = new SVGEllipseElementImpl(); - break; - } - case SVG_FEBLEND_ELEMENT: - { - elem = new SVGFEBlendElementImpl(); - break; - } - case SVG_FECOLORMATRIX_ELEMENT: - { - elem = new SVGFEColorMatrixElementImpl(); - break; - } - case SVG_FECOMPONENTTRANSFER_ELEMENT: - { - elem = new SVGFEComponentTransferElementImpl(); - break; - } - case SVG_FECOMPOSITE_ELEMENT: - { - elem = new SVGFECompositeElementImpl(); - break; - } - case SVG_FECONVOLVEMATRIX_ELEMENT: - { - elem = new SVGFEConvolveMatrixElementImpl(); - break; - } - case SVG_FEDIFFUSELIGHTING_ELEMENT: - { - elem = new SVGFEDiffuseLightingElementImpl(); - break; - } - case SVG_FEDISPLACEMENTMAP_ELEMENT: - { - elem = new SVGFEDisplacementMapElementImpl(); - break; - } - case SVG_FEDISTANTLIGHT_ELEMENT: - { - elem = new SVGFEDistantLightElementImpl(); - break; - } - case SVG_FEFLOOD_ELEMENT: - { - elem = new SVGFEFloodElementImpl(); - break; - } - case SVG_FEFUNCA_ELEMENT: - { - elem = new SVGFEFuncAElementImpl(); - break; - } - case SVG_FEFUNCB_ELEMENT: - { - elem = new SVGFEFuncBElementImpl(); - break; - } - case SVG_FEFUNCG_ELEMENT: - { - elem = new SVGFEFuncGElementImpl(); - break; - } - case SVG_FEFUNCR_ELEMENT: - { - elem = new SVGFEFuncRElementImpl(); - break; - } - case SVG_FEGAUSSIANBLUR_ELEMENT: - { - elem = new SVGFEGaussianBlurElementImpl(); - break; - } - case SVG_FEIMAGE_ELEMENT: - { - elem = new SVGFEImageElementImpl(); - break; - } - case SVG_FEMERGE_ELEMENT: - { - elem = new SVGFEMergeElementImpl(); - break; - } - case SVG_FEMERGENODE_ELEMENT: - { - elem = new SVGFEMergeNodeElementImpl(); - break; - } - case SVG_FEMORPHOLOGY_ELEMENT: - { - elem = new SVGFEMorphologyElementImpl(); - break; - } - case SVG_FEOFFSET_ELEMENT: - { - elem = new SVGFEOffsetElementImpl(); - break; - } - case SVG_FEPOINTLIGHT_ELEMENT: - { - elem = new SVGFEPointLightElementImpl(); - break; - } - case SVG_FESPECULARLIGHTING_ELEMENT: - { - elem = new SVGFESpecularLightingElementImpl(); - break; - } - case SVG_FESPOTLIGHT_ELEMENT: - { - elem = new SVGFESpotLightElementImpl(); - break; - } - case SVG_FETILE_ELEMENT: - { - elem = new SVGFETileElementImpl(); - break; - } - case SVG_FETURBULENCE_ELEMENT: - { - elem = new SVGFETurbulenceElementImpl(); - break; - } - case SVG_FILTER_ELEMENT: - { - elem = new SVGFilterElementImpl(); - break; - } - case SVG_FONT_ELEMENT: - { - elem = new SVGAElementImpl(); - break; - } - case SVG_FONT_FACE_ELEMENT: - { - elem = new SVGFontElementImpl(); - break; - } - case SVG_FONT_FACE_FORMAT_ELEMENT: - { - elem = new SVGFontFaceFormatElementImpl(); - break; - } - case SVG_FONT_FACE_NAME_ELEMENT: - { - elem = new SVGFontFaceNameElementImpl(); - break; - } - case SVG_FONT_FACE_SRC_ELEMENT: - { - elem = new SVGFontFaceSrcElementImpl(); - break; - } - case SVG_FONT_FACE_URI_ELEMENT: - { - elem = new SVGFontFaceUriElementImpl(); - break; - } - case SVG_FOREIGNOBJECT_ELEMENT: - { - elem = new SVGForeignObjectElementImpl(); - break; - } - case SVG_G_ELEMENT: - { - elem = new SVGGElementImpl(); - break; - } - case SVG_GLYPH_ELEMENT: - { - elem = new SVGGlyphElementImpl(); - break; - } - case SVG_GLYPHREF_ELEMENT: - { - elem = new SVGGlyphRefElementImpl(); - break; - } - case SVG_HKERN_ELEMENT: - { - elem = new SVGHKernElementImpl(); - break; - } - case SVG_IMAGE_ELEMENT: - { - elem = new SVGImageElementImpl(); - break; - } - case SVG_LINE_ELEMENT: - { - elem = new SVGLineElementImpl(); - break; - } - case SVG_LINEARGRADIENT_ELEMENT: - { - elem = new SVGLinearGradientElementImpl(); - break; - } - case SVG_MARKER_ELEMENT: - { - elem = new SVGMarkerElementImpl(); - break; - } - case SVG_MASK_ELEMENT: - { - elem = new SVGMaskElementImpl(); - break; - } - case SVG_METADATA_ELEMENT: - { - elem = new SVGMetadataElementImpl(); - break; - } - case SVG_MISSING_GLYPH_ELEMENT: - { - elem = new SVGMissingGlyphElementImpl(); - break; - } - case SVG_MPATH_ELEMENT: - { - elem = new SVGMPathElementImpl(); - break; - } - case SVG_PATH_ELEMENT: - { - elem = new SVGPathElementImpl(); - break; - } - case SVG_PATTERN_ELEMENT: - { - elem = new SVGPatternElementImpl(); - break; - } - case SVG_POLYGON_ELEMENT: - { - elem = new SVGPolygonElementImpl(); - break; - } - case SVG_POLYLINE_ELEMENT: - { - elem = new SVGPolylineElementImpl(); - break; - } - case SVG_RADIALGRADIENT_ELEMENT: - { - elem = new SVGRadialGradientElementImpl(); - break; - } - case SVG_RECT_ELEMENT: - { - elem = new SVGRectElementImpl(); - break; - } - case SVG_SCRIPT_ELEMENT: - { - elem = new SVGScriptElementImpl(); - break; - } - case SVG_SET_ELEMENT: - { - elem = new SVGSetElementImpl(); - break; - } - case SVG_STOP_ELEMENT: - { - elem = new SVGStopElementImpl(); - break; - } - case SVG_STYLE_ELEMENT: - { - elem = new SVGStyleElementImpl(); - break; - } - case SVG_SVG_ELEMENT: - { - elem = new SVGSVGElementImpl(); - break; - } - case SVG_SWITCH_ELEMENT: - { - elem = new SVGSwitchElementImpl(); - break; - } - case SVG_SYMBOL_ELEMENT: - { - elem = new SVGSymbolElementImpl(); - break; - } - case SVG_TEXT_ELEMENT: - { - elem = new SVGTextElementImpl(); - break; - } - case SVG_TEXTPATH_ELEMENT: - { - elem = new SVGTextPathElementImpl(); - break; - } - case SVG_TITLE_ELEMENT: - { - elem = new SVGTitleElementImpl(); - break; - } - case SVG_TREF_ELEMENT: - { - elem = new SVGTRefElementImpl(); - break; - } - case SVG_TSPAN_ELEMENT: - { - elem = new SVGTSpanElementImpl(); - break; - } - case SVG_USE_ELEMENT: - { - elem = new SVGUseElementImpl(); - break; - } - case SVG_VIEW_ELEMENT: - { - elem = new SVGViewElementImpl(); - break; - } - case SVG_VKERN_ELEMENT: - { - elem = new SVGVKernElementImpl(); - break; - } - default: - { - } - } - return elem; -} - - -/** - * - */ -ElementPtr SVGDocumentImpl::createElementNS(const DOMString& namespaceURI, - const DOMString& qualifiedName) - throw(DOMException) -{ - ElementPtr elem; - if (namespaceURI == SVG_NAMESPACE) - elem = createElement(qualifiedName); - else - elem = new SVGElementImpl(this, namespaceURI, qualifiedName); - return elem; -} - - - -//################## -//# Non-API methods -//################## - -void SVGDocumentImpl::init() -{ - title = ""; - referrer = ""; - domain = ""; - rootElement = new SVGSVGElementImpl(); -} - - - - - - -/*######################################################################### -## SVGSVGElementImpl -#########################################################################*/ - - -/** - * 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 = SVGElementImpl::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)); - SVGElementImpl::setAttribute(name, value); -} - - -/** - * - */ -unsigned long SVGSVGElementImpl::suspendRedraw(unsigned long /*max_wait_milliseconds*/ ) -{ - return 0L; -} - -/** - * - */ -void SVGSVGElementImpl::unsuspendRedraw(unsigned long /*suspend_handle_id*/ ) - throw ( DOMException ) -{ -} - - -/** - * - */ -void SVGSVGElementImpl::unsuspendRedrawAll( ) -{ -} - -/** - * - */ -void SVGSVGElementImpl::forceRedraw( ) -{ -} - -/** - * - */ -void SVGSVGElementImpl::pauseAnimations( ) -{ -} - -/** - * - */ -void SVGSVGElementImpl::unpauseAnimations( ) -{ -} - -/** - * - */ -bool SVGSVGElementImpl::animationsPaused( ) -{ - return false; -} - - -/** - * - */ -NodeList SVGSVGElementImpl::getIntersectionList(const SVGRect &/*rect*/, - const SVGElementPtr /*referenceElement*/ ) -{ - NodeList list; - return list; -} - -/** - * - */ -NodeList SVGSVGElementImpl::getEnclosureList(const SVGRect &/*rect*/, - const SVGElementPtr /*referenceElement*/ ) -{ - NodeList list; - return list; -} - -/** - * - */ -bool SVGSVGElementImpl::checkIntersection(const SVGElementPtr /*element*/, - const SVGRect &/*rect*/ ) -{ - return false; -} - -/** - * - */ -bool SVGSVGElementImpl::checkEnclosure(const SVGElementPtr /*element*/, - const SVGRect &/*rect*/ ) -{ - return false; -} - -/** - * - */ -void SVGSVGElementImpl::deselectAll( ) -{ -} - -/** - * - */ -ElementPtr SVGSVGElementImpl::getElementById(const DOMString& /*elementId*/ ) -{ - return NULL; -} - - - -//################## -//# Non-API methods -//################## - - - - - -/*######################################################################### -## SVGGElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - - - - - - -/*######################################################################### -## SVGDefsElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - -/*######################################################################### -## SVGDescElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - -/*######################################################################### -## SVGTitleElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - -/*######################################################################### -## SVGSymbolElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - -/*######################################################################### -## SVGUseElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGImageElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGSwitchElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - -/*######################################################################### -## GetSVGDocumentImpl -#########################################################################*/ - -/** - * - */ -SVGDocumentPtr GetSVGDocumentImpl::getSVGDocument( ) - throw ( DOMException ) -{ - return NULL; -} - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGStyleElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - -/*######################################################################### -## SVGPathElementImpl -#########################################################################*/ - -/** - * - */ -SVGAnimatedNumber SVGPathElementImpl::getPathLength() -{ - SVGAnimatedNumber ret; - return ret; -} - -/** - * - */ -double SVGPathElementImpl::getTotalLength( ) -{ - return 0.0; -} - -/** - * - */ -SVGPoint SVGPathElementImpl::getPointAtLength(double /*distance*/ ) -{ - SVGPoint ret; - return ret; -} - -/** - * - */ -unsigned long SVGPathElementImpl::getPathSegAtLength(double /*distance*/ ) -{ - return 0L; -} - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGRectElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGCircleElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGEllipseElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGLineElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGPolylineElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - -/*######################################################################### -## SVGPolygonElementImpl -#########################################################################*/ - - - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGTextContentElementImpl -#########################################################################*/ - -/** - * - */ -SVGAnimatedLength SVGTextContentElementImpl::getTextLength() -{ - SVGAnimatedLength ret; - return ret; -} - - -/** - * - */ -SVGAnimatedEnumeration SVGTextContentElementImpl::getLengthAdjust() -{ - SVGAnimatedEnumeration ret; - return ret; -} - - -/** - * - */ -long SVGTextContentElementImpl::getNumberOfChars( ) -{ - return 0L; -} - -/** - * - */ -double SVGTextContentElementImpl::getComputedTextLength( ) -{ - return 0.0; -} - -/** - * - */ -double SVGTextContentElementImpl::getSubStringLength(unsigned long /*charnum*/, unsigned long /*nchars*/ ) - throw ( DOMException ) -{ - return 0.0; -} - -/** - * - */ -SVGPoint SVGTextContentElementImpl::getStartPositionOfChar(unsigned long /*charnum*/ ) - throw ( DOMException ) -{ - SVGPoint ret; - return ret; -} - -/** - * - */ -SVGPoint SVGTextContentElementImpl::getEndPositionOfChar(unsigned long /*charnum*/ ) - throw ( DOMException ) -{ - SVGPoint ret; - return ret; -} - -/** - * - */ -SVGRect SVGTextContentElementImpl::getExtentOfChar(unsigned long /*charnum*/ ) - throw ( DOMException ) -{ - SVGRect ret; - return ret; -} - -/** - * - */ -double SVGTextContentElementImpl::getRotationOfChar(unsigned long /*charnum*/ ) - throw ( DOMException ) -{ - return 0.0; -} - -/** - * - */ -long SVGTextContentElementImpl::getCharNumAtPosition(const SVGPoint &/*point*/ ) -{ - return 0L; -} - -/** - * - */ -void SVGTextContentElementImpl::selectSubString(unsigned long /*charnum*/, - unsigned long /*nchars*/ ) - throw ( DOMException ) -{ -} - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGTextPositioningElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGTextElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGTSpanElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - -/*######################################################################### -## SVGTRefElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGTextPathElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGAltGlyphElementImpl -#########################################################################*/ - - - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGAltGlyphDefElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGAltGlyphItemElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGGlyphRefElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGMarkerElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGColorProfileElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGGradientElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGLinearGradientElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGRadialGradientElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGStopElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGPatternElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGClipPathElementImpl -#########################################################################*/ - - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGMaskElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFilterElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFEBlendElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGFEColorMatrixElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFEComponentTransferElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - - -/*######################################################################### -## SVGComponentTransferFunctionElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFEFuncRElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGFEFuncGElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGFEFuncBElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGFEFuncAElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGFECompositeElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGFEConvolveMatrixElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGFEDiffuseLightingElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - -/*######################################################################### -## SVGFEDistantLightElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFEPointLightElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFESpotLightElementImpl -#########################################################################*/ - - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFEDisplacementMapElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFEFloodElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFEGaussianBlurElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFEImageElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGFEMergeElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGFEMergeNodeElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGFEMorphologyElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGFEOffsetElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - -/*######################################################################### -## SVGFESpecularLightingElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFETileElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGFETurbulenceElementImpl -#########################################################################*/ - - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGCursorElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGAElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGViewElementImpl -#########################################################################*/ - - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - -/*######################################################################### -## SVGScriptElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGAnimationElementImpl -#########################################################################*/ - - - - - -//################## -//# Non-API methods -//################## - - - - - - - - - -/*######################################################################### -## SVGAnimateElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGSetElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGAnimateMotionElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGMPathElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGAnimateColorElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGAnimateTransformElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGFontElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGGlyphElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGMissingGlyphElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGHKernElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGVKernElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGFontFaceElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGFontFaceSrcElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGFontFaceUriElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - -/*######################################################################### -## SVGFontFaceFormatElementImpl -#########################################################################*/ - - - - -//################## -//# Non-API methods -//################## - - - - - - -/*######################################################################### -## SVGFontFaceNameElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGDefinitionSrcElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - -/*######################################################################### -## SVGMetadataElementImpl -#########################################################################*/ - - -//################## -//# Non-API methods -//################## - - - - - -/*######################################################################### -## SVGForeignObjectElementImpl -#########################################################################*/ - - - -//################## -//# Non-API methods -//################## - - - - - - - - - - - - -} //namespace svg -} //namespace dom -} //namespace w3c -} //namespace org - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/svgimpl.h b/src/dom/svgimpl.h deleted file mode 100644 index 2ee5c8bc7..000000000 --- a/src/dom/svgimpl.h +++ /dev/null @@ -1,5543 +0,0 @@ -#ifndef SEEN_SVGIMPL_H -#define SEEN_SVGIMPL_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "svg.h" -#include "dom/domimpl.h" -#include "dom/smilimpl.h" - -#include <math.h> - - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace svg -{ - - -//local definitions -typedef dom::DOMString DOMString; -typedef dom::DOMException DOMException; -typedef dom::Element Element; -typedef dom::Document Document; -typedef dom::NodeList NodeList; - - - -class SVGSVGElementImpl; -typedef Ptr<SVGSVGElementImpl> SVGSVGElementImplPtr; -class SVGElementImpl; -typedef Ptr<SVGElementImpl> SVGElementImplPtr; -class SVGDocumentImpl; -typedef Ptr<SVGDocumentImpl> SVGDocumentImplPtr; - -/*######################################################################### -## Types -#########################################################################*/ -/** - * Bitmasks for has_an interface for SVGElement - */ -#define SVG_ANGLE 0x00000001 -#define SVG_ANIMATED_ANGLE 0x00000002 -#define SVG_ANIMATED_BOOLEAN 0x00000004 -#define SVG_ANIMATED_ENUMERATION 0x00000008 -#define SVG_ANIMATED_INTEGER 0x00000010 -#define SVG_ANIMATED_LENGTH 0x00000020 -#define SVG_ANIMATED_LENGTH_LIST 0x00000040 -#define SVG_ANIMATED_NUMBER 0x00000080 -#define SVG_ANIMATED_NUMBER_LIST 0x00000100 -#define SVG_ANIMATED_RECT 0x00000200 -#define SVG_ANIMATED_STRING 0x00000400 -#define SVG_COLOR 0x00000800 -#define SVG_CSS_RULE 0x00001000 -#define SVG_EXTERNAL_RESOURCES_REQUIRED 0x00002000 -#define SVG_FIT_TO_VIEWBOX 0x00004000 -#define SVG_ICCCOLOR 0x00008000 -#define SVG_LANG_SPACE 0x00010000 -#define SVG_LENGTH 0x00020000 -#define SVG_LENGTH_LIST 0x00040000 -#define SVG_LOCATABLE 0x00080000 -#define SVG_NUMBER 0x00100000 -#define SVG_NUMBER_LIST 0x00200000 -#define SVG_RECT 0x00400000 -#define SVG_RENDERING_INTENT 0x00800000 -#define SVG_STRING_LIST 0x01000000 -#define SVG_STYLABLE 0x02000000 -#define SVG_TESTS 0x04000000 -#define SVG_TRANSFORMABLE 0x08000000 -#define SVG_UNIT_TYPES 0x10000000 -#define SVG_URI_REFERENCE 0x20000000 -#define SVG_VIEW_SPEC 0x40000000 -#define SVG_ZOOM_AND_PAN 0x80000000 - -/** - * How many above? Quite handy - */ -#define SVG_NR_INTERFACES 32 - - -/** - * Enumerations for SVGElement types - */ -typedef enum -{ -/** - * Defines a hyperlink - */ -SVG_A_ELEMENT = 0, -/** - * Allows control over glyphs used to render particular character - * data (e.g. for music symbols or Asian text) - */ -SVG_ALTGLYPH_ELEMENT, -/** - * Defines a set of glyph substitutions (e.g. for music symbols or Asian text) - */ -SVG_ALTGLYPHDEF_ELEMENT, -/** - * Defines a candidate set of glyph substitutions (e.g. for music symbols - * or Asian text) - */ -SVG_ALTGLYPHITEM_ELEMENT, -/** - * Animates an attribute or property over time - */ -SVG_ANIMATE_ELEMENT, -/** - * Specifies a color transformation over time - */ -SVG_ANIMATECOLOR_ELEMENT, -/** - * Causes an element to move along a motion path - */ -SVG_ANIMATEMOTION_ELEMENT, -/** - * Animates a transformation attribute on an element - */ -SVG_ANIMATETRANSFORM_ELEMENT, -/** - * Defines a circle - */ -SVG_CIRCLE_ELEMENT, -/** - * - */ -SVG_CLIPPATH_ELEMENT, -/** - * Specifies a color profile description - */ -SVG_COLOR_PROFILE_ELEMENT, -/** - * Defines a platform-independent cursor - */ -SVG_CURSOR_ELEMENT, -/** - * Defines a separate font definition resource - */ -SVG_DEFINITION_SRC_ELEMENT, -/** - * A container for referenced elements - */ -SVG_DEFS_ELEMENT, -/** - * A text-only description for elements in SVG - not displayed as part - * of the graphics. User agents may display the text as a tooltip - */ -SVG_DESC_ELEMENT, -/** - * Defines an ellipse - */ -SVG_ELLIPSE_ELEMENT, -/** - * SVG filter. Composites two objects together using different blending modes - */ -SVG_FEBLEND_ELEMENT, -/** - * SVG filter. Applies a matrix transformation - */ -SVG_FECOLORMATRIX_ELEMENT, -/** - * SVG filter. Performs component-wise remapping of data - */ -SVG_FECOMPONENTTRANSFER_ELEMENT, -/** - * SVG filter. - */ -SVG_FECOMPOSITE_ELEMENT, -/** - * SVG filter. - */ -SVG_FECONVOLVEMATRIX_ELEMENT, -/** - * SVG filter. - */ -SVG_FEDIFFUSELIGHTING_ELEMENT, -/** - * SVG filter. - */ -SVG_FEDISPLACEMENTMAP_ELEMENT, -/** - * SVG filter. Defines a light source - */ -SVG_FEDISTANTLIGHT_ELEMENT, -/** - * SVG filter. - */ -SVG_FEFLOOD_ELEMENT, -/** - * SVG filter. Sub-element to feComponentTransfer - */ -SVG_FEFUNCA_ELEMENT, -/** - * SVG filter. Sub-element to feComponentTransfer - */ -SVG_FEFUNCB_ELEMENT, -/** - * SVG filter. Sub-element to feComponentTransfer - */ -SVG_FEFUNCG_ELEMENT, -/** - * SVG filter. Sub-element to feComponentTransfer - */ -SVG_FEFUNCR_ELEMENT, -/** - * SVG filter. Performs a Gaussian blur on the image - */ -SVG_FEGAUSSIANBLUR_ELEMENT, -/** - * SVG filter. - */ -SVG_FEIMAGE_ELEMENT, -/** - * SVG filter. Creates image layers on top of each other - */ -SVG_FEMERGE_ELEMENT, -/** - * SVG filter. Sub-element to feMerge - */ -SVG_FEMERGENODE_ELEMENT, -/** - * SVG filter. Performs a "fattening" or "thinning" on a source graphic - */ -SVG_FEMORPHOLOGY_ELEMENT, -/** - * SVG filter. Moves an image relative to its current position - */ -SVG_FEOFFSET_ELEMENT, -/** - * SVG filter. - */ -SVG_FEPOINTLIGHT_ELEMENT, -/** - * SVG filter. - */ -SVG_FESPECULARLIGHTING_ELEMENT, -/** - * SVG filter. - */ -SVG_FESPOTLIGHT_ELEMENT, -/** - * SVG filter. - */ -SVG_FETILE_ELEMENT, -/** - * SVG filter. - */ -SVG_FETURBULENCE_ELEMENT, -/** - * Container for filter effects - */ -SVG_FILTER_ELEMENT, -/** - * Defines a font - */ -SVG_FONT_ELEMENT, -/** - * Describes the characteristics of a font - */ -SVG_FONT_FACE_ELEMENT, -/** - * - */ -SVG_FONT_FACE_FORMAT_ELEMENT, -/** - * - */ -SVG_FONT_FACE_NAME_ELEMENT, -/** - * - */ -SVG_FONT_FACE_SRC_ELEMENT, -/** - * - */ -SVG_FONT_FACE_URI_ELEMENT, -/** - * - */ -SVG_FOREIGNOBJECT_ELEMENT, -/** - * A container element for grouping together related elements - */ -SVG_G_ELEMENT, -/** - * Defines the graphics for a given glyph - */ -SVG_GLYPH_ELEMENT, -/** - * Defines a possible glyph to use - */ -SVG_GLYPHREF_ELEMENT, -/** - * - */ -SVG_HKERN_ELEMENT, -/** - * - */ -SVG_IMAGE_ELEMENT, -/** - * Defines a line - */ -SVG_LINE_ELEMENT, -/** - * Defines a linear gradient - */ -SVG_LINEARGRADIENT_ELEMENT, -/** - * - */ -SVG_MARKER_ELEMENT, -/** - * - */ -SVG_MASK_ELEMENT, -/** - * Specifies metadata - */ -SVG_METADATA_ELEMENT, -/** - * - */ -SVG_MISSING_GLYPH_ELEMENT, -/** - * - */ -SVG_MPATH_ELEMENT, -/** - * Defines a path - */ -SVG_PATH_ELEMENT, -/** - * - */ -SVG_PATTERN_ELEMENT, -/** - * Defines a closed shape that consists of a set of connected straight lines - */ -SVG_POLYGON_ELEMENT, -/** - * Defines a set of connected straight lines - */ -SVG_POLYLINE_ELEMENT, -/** - * Defines a radial gradient - */ -SVG_RADIALGRADIENT_ELEMENT, -/** - * Defines a rectangle - */ -SVG_RECT_ELEMENT, -/** - * Container for scripts (e.g., ECMAScript) - */ -SVG_SCRIPT_ELEMENT, -/** - * Sets the value of an attribute for a specified duration - */ -SVG_SET_ELEMENT, -/** - * - */ -SVG_STOP_ELEMENT, -/** - * Allows style sheets to be embedded directly within SVG content - */ -SVG_STYLE_ELEMENT, -/** - * Defines an SVG document fragment - */ -SVG_SVG_ELEMENT, -/** - * - */ -SVG_SWITCH_ELEMENT, -/** - * - */ -SVG_SYMBOL_ELEMENT, -/** - * - */ -SVG_TEXT_ELEMENT, -/** - * - */ -SVG_TEXTPATH_ELEMENT, -/** - * A text-only description for elements in SVG - not displayed as part of - * the graphics. User agents may display the text as a tooltip - */ -SVG_TITLE_ELEMENT, -/** - * - */ -SVG_TREF_ELEMENT, -/** - * - */ -SVG_TSPAN_ELEMENT, -/** - * - */ -SVG_USE_ELEMENT, -/** - * - */ -SVG_VIEW_ELEMENT, -/** - * - */ -SVG_VKERN_ELEMENT, -/** - * - */ -SVG_MAX_ELEMENT - -} SVGElementType; - - - - -/** - * Look up the SVG Element type enum for a given string - * Return -1 if not found - */ -int svgElementStrToEnum(const char *str); - - -/** - * Return the string corresponding to a given SVG element type enum - * Return "unknown" if not found - */ -const char *svgElementEnumToStr(int type); - - -/*######################################################################### -## SVGDocumentImpl -#########################################################################*/ - -/** - * - */ -class SVGDocumentImpl : virtual public SVGDocument, public DocumentImpl -{ -public: - - - /** - * - */ - virtual DOMString getTitle() - { return title; } - - /** - * - */ - virtual DOMString getReferrer() - { return referrer; } - - /** - * - */ - virtual DOMString getDomain() - { return domain; } - - /** - * - */ - virtual DOMString getURL() - { return url; } - - /** - * - */ - virtual SVGSVGElementPtr getRootElement() - { return rootElement; } - - - //#################################################### - //# Overload some createXXX() methods from DocumentImpl, - //# To create our SVG-DOM types (in .cpp) - //#################################################### - - /** - * - */ - virtual ElementPtr createElement(const DOMString& tagName) - throw(DOMException); - - - /** - * - */ - virtual ElementPtr createElementNS(const DOMString& namespaceURI, - const DOMString& qualifiedName) - throw(DOMException); - - //################## - //# Non-API methods - //################## - - SVGDocumentImpl(const DOMImplementation *domImpl, - const DOMString &namespaceURI, - const DOMString &qualifiedName, - const DocumentTypePtr doctype) - : DocumentImpl(domImpl, namespaceURI, - qualifiedName, doctype) - { - init(); - } - - - /** - * - */ - virtual ~SVGDocumentImpl() - { - } - -protected: - -friend class SvgParser; - - void init(); - - DOMString title; - DOMString referrer; - DOMString domain; - DOMString url; - SVGSVGElementImplPtr rootElement; -}; - - - -/*######################################################################### -## SVGElementImpl -#########################################################################*/ - -/** - * - */ -class SVGElementImpl : virtual public SVGElement, - public ElementImpl -{ -public: - - /** - * - */ - virtual DOMString getId() - { return id; } - - /** - * - */ - virtual void setId(const DOMString &val) - throw (DOMException) - { id = val; } - - /** - * - */ - virtual DOMString getXmlBase() - { return xmlBase; } - - /** - * - */ - virtual void setXmlBase(const DOMString &val) - throw (DOMException) - { xmlBase = val; } - - /** - * - */ - virtual SVGSVGElementPtr getOwnerSVGElement() - { return ownerSvgElement; } - - /** - * - */ - virtual SVGElementPtr getViewportElement() - { return viewportElement; } - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGElementImpl() - {} - - /** - * - */ - SVGElementImpl(SVGDocumentImplPtr owner, const DOMString &tagName) - : ElementImpl(owner, tagName) - { init(); } - - /** - * - */ - SVGElementImpl(SVGDocumentImplPtr owner, - const DOMString &namespaceURI, - const DOMString &tagName) - : ElementImpl(owner, namespaceURI, tagName) - { init(); } - - - /** - * - */ - virtual ~SVGElementImpl() - {} - -protected: - - void init() - { - id = ""; - xmlBase = ""; - ownerSvgElement = NULL; - viewportElement = NULL; - } - - DOMString id; - DOMString xmlBase; - SVGSVGElementPtr ownerSvgElement; - SVGElementPtr viewportElement; - -}; - - - -/*######################################################################### -## SVGSVGElementImpl -#########################################################################*/ - -/** - * - */ -class SVGSVGElementImpl : virtual public SVGSVGElement, - public SVGElementImpl -{ -public: - - /** - * Retrieves an attribute value by name. - */ - virtual DOMString getAttribute(const DOMString& name); - - /** - * Sets an attribute value - */ - virtual void setAttribute(const DOMString& name, - const DOMString& value) - throw(DOMException); - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedLength getWidth() - { return width; } - - /** - * - */ - virtual SVGAnimatedLength getHeight() - { return height; } - - /** - * - */ - virtual DOMString getContentScriptType() - { return contentScriptType; } - - /** - * - */ - virtual void setContentScriptType(const DOMString &val) - throw (DOMException) - { contentScriptType = val; } - - - /** - * - */ - virtual DOMString getContentStyleType() - { return contentStyleType; } - - /** - * - */ - virtual void setContentStyleType(const DOMString &val) - throw (DOMException) - { contentStyleType = val; } - - /** - * - */ - virtual SVGRect getViewport() - { return viewport; } - - /** - * - */ - virtual double getPixelUnitToMillimeterX() - { return pixelUnitToMillimeterX; } - - /** - * - */ - virtual double getPixelUnitToMillimeterY() - { return pixelUnitToMillimeterY; } - - /** - * - */ - virtual double getScreenPixelToMillimeterX() - { return screenPixelToMillimeterX; } - - /** - * - */ - virtual double getScreenPixelToMillimeterY() - { return screenPixelToMillimeterY; } - - - /** - * - */ - virtual bool getUseCurrentView() - { return useCurrentView; } - - /** - * - */ - virtual void setUseCurrentView(bool val) throw (DOMException) - { useCurrentView = val; } - - /** - * - */ - virtual SVGViewSpec getCurrentView() - { return currentView; } - - - /** - * - */ - virtual double getCurrentScale() - { return currentScale; } - - /** - * - */ - virtual void setCurrentScale(double val) throw (DOMException) - { currentScale = val; } - - - /** - * - */ - virtual SVGPoint getCurrentTranslate() - { return currentTranslate; } - - - /** - * - */ - virtual unsigned long suspendRedraw (unsigned long max_wait_milliseconds ); - - /** - * - */ - virtual void unsuspendRedraw (unsigned long suspend_handle_id ) - throw( DOMException ); - - /** - * - */ - virtual void unsuspendRedrawAll ( ); - - /** - * - */ - virtual void forceRedraw ( ); - - /** - * - */ - virtual void pauseAnimations ( ); - - /** - * - */ - virtual void unpauseAnimations ( ); - - /** - * - */ - virtual bool animationsPaused ( ); - - /** - * - */ - virtual double getCurrentTime ( ) - { return currentTime; } - - /** - * - */ - virtual void setCurrentTime (double seconds ) - { currentTime = seconds; } - - /** - * - */ - virtual NodeList getIntersectionList (const SVGRect &rect, - const SVGElementPtr referenceElement ); - - /** - * - */ - virtual NodeList getEnclosureList (const SVGRect &rect, - const SVGElementPtr referenceElement ); - - /** - * - */ - virtual bool checkIntersection (const SVGElementPtr element, const SVGRect &rect ); - - /** - * - */ - virtual bool checkEnclosure (const SVGElementPtr element, const SVGRect &rect ); - - /** - * - */ - virtual void deselectAll ( ); - - /** - * - */ - virtual SVGNumber createSVGNumber ( ) - { - SVGNumber ret; - return ret; - } - - /** - * - */ - virtual SVGLength createSVGLength ( ) - { - SVGLength ret; - return ret; - } - - /** - * - */ - virtual SVGAngle createSVGAngle ( ) - { - SVGAngle ret; - return ret; - } - - /** - * - */ - virtual SVGPoint createSVGPoint ( ) - { - SVGPoint ret; - return ret; - } - - /** - * - */ - virtual SVGMatrix createSVGMatrix ( ) - { - SVGMatrix ret; - return ret; - } - - /** - * - */ - virtual SVGRect createSVGRect ( ) - { - SVGRect ret; - return ret; - } - - /** - * - */ - virtual SVGTransform createSVGTransform ( ) - { - SVGTransform ret; - return ret; - } - - /** - * - */ - virtual SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix ) - { - SVGTransform ret; - ret.setMatrix(matrix); - return ret; - } - - - /** - * - */ - virtual ElementPtr getElementById (const DOMString& elementId ); - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGSVGElementImpl() : SVGElementImpl(), - pixelUnitToMillimeterX(0), - pixelUnitToMillimeterY(0), - screenPixelToMillimeterX(0), - screenPixelToMillimeterY(0), - useCurrentView(false), - currentScale(0), - currentTime(0) - {} - - - - /** - * - */ - virtual ~SVGSVGElementImpl() {} - -protected: - - SVGAnimatedLength x; - SVGAnimatedLength y; - SVGAnimatedLength width; - SVGAnimatedLength height; - DOMString contentScriptType; - DOMString contentStyleType; - SVGRect viewport; - double pixelUnitToMillimeterX; - double pixelUnitToMillimeterY; - double screenPixelToMillimeterX; - double screenPixelToMillimeterY; - bool useCurrentView; - SVGViewSpec currentView; - double currentScale; - SVGPoint currentTranslate; - - double currentTime; - -}; - - - -/*######################################################################### -## SVGGElementImpl -#########################################################################*/ - -/** - * - */ -class SVGGElementImpl : virtual public SVGGElement, public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGGElementImpl() {} - - /** - * - */ - virtual ~SVGGElementImpl() {} - -protected: - - -}; - - - - -/*######################################################################### -## SVGDefsElementImpl -#########################################################################*/ - -/** - * - */ -class SVGDefsElementImpl : virtual public SVGDefsElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGDefsElementImpl() {} - - /** - * - */ - virtual ~SVGDefsElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGDescElementImpl -#########################################################################*/ - -/** - * - */ -class SVGDescElementImpl : virtual public SVGDescElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGDescElementImpl() {} - - /** - * - */ - virtual ~SVGDescElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGTitleElementImpl -#########################################################################*/ - -/** - * - */ -class SVGTitleElementImpl : virtual public SVGTitleElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTitleElementImpl() {} - - /** - * - */ - virtual ~SVGTitleElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGSymbolElementImpl -#########################################################################*/ - -/** - * - */ -class SVGSymbolElementImpl : virtual public SVGSymbolElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGSymbolElementImpl() {} - - /** - * - */ - virtual ~SVGSymbolElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGUseElementImpl -#########################################################################*/ - -/** - * - */ -class SVGUseElementImpl : public SVGElementImpl -{ -public: - - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedLength getWidth() - { return width; } - - /** - * - */ - virtual SVGAnimatedLength getHeight() - { return height; } - - /** - * - */ - virtual SVGElementInstance getInstanceRoot() - { return instanceRoot; } - - /** - * - */ - virtual SVGElementInstance getAnimatedInstanceRoot() - { return animatedInstanceRoot; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGUseElementImpl() {} - - /** - * - */ - virtual ~SVGUseElementImpl() {} - -protected: - - SVGAnimatedLength x; - SVGAnimatedLength y; - SVGAnimatedLength width; - SVGAnimatedLength height; - SVGElementInstance instanceRoot; - SVGElementInstance animatedInstanceRoot; -}; - - - - - - - -/*######################################################################### -## SVGImageElementImpl -#########################################################################*/ - -/** - * - */ -class SVGImageElementImpl : virtual public SVGImageElement, - public SVGElementImpl -{ -public: - - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedLength getWidth() - { return width; } - - /** - * - */ - virtual SVGAnimatedLength getHeight() - { return height; } - - - /** - * - */ - virtual SVGAnimatedPreserveAspectRatio getPreserveAspectRatio() - { return preserveAspectRatio; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGImageElementImpl() {} - - /** - * - */ - virtual ~SVGImageElementImpl() {} - -protected: - - SVGAnimatedLength x; - SVGAnimatedLength y; - SVGAnimatedLength width; - SVGAnimatedLength height; - SVGAnimatedPreserveAspectRatio preserveAspectRatio; -}; - - - - - - -/*######################################################################### -## SVGSwitchElementImpl -#########################################################################*/ - -/** - * - */ -class SVGSwitchElementImpl : virtual public SVGSwitchElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGSwitchElementImpl() {} - - /** - * - */ - virtual ~SVGSwitchElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## GetSVGDocumentImpl -#########################################################################*/ - -/** - * - */ -class GetSVGDocumentImpl : public virtual GetSVGDocument -{ -public: - - /** - * - */ - virtual SVGDocumentPtr getSVGDocument ( ) - throw( DOMException ); - - //################## - //# Non-API methods - //################## - - /** - * - */ - GetSVGDocumentImpl() {} - - /** - * - */ - virtual ~GetSVGDocumentImpl() {} - -protected: - - -}; - - - - - - - -/*######################################################################### -## SVGStyleElementImpl -#########################################################################*/ - -/** - * - */ -class SVGStyleElementImpl : virtual public SVGStyleElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual DOMString getXmlspace() - { return xmlSpace; } - - /** - * - */ - virtual void setXmlspace(const DOMString &val) - throw (DOMException) - { xmlSpace = val; } - - /** - * - */ - virtual DOMString getType() - { return type; } - - /** - * - */ - virtual void setType(const DOMString &val) - throw (DOMException) - { type = val; } - - /** - * - */ - virtual DOMString getMedia() - { return media; } - - /** - * - */ - virtual void setMedia(const DOMString &val) - throw (DOMException) - { media = val; } - - /** - * - */ - virtual DOMString getTitle() - { return title; } - - /** - * - */ - virtual void setTitle(const DOMString &val) - throw (DOMException) - { title = val; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGStyleElementImpl() {} - - /** - * - */ - virtual ~SVGStyleElementImpl() {} - -protected: - - DOMString xmlSpace; - DOMString type; - DOMString media; - DOMString title; - -}; - - - - - - -/*######################################################################### -## SVGPathElementImpl -#########################################################################*/ - -/** - * - */ -class SVGPathElementImpl : virtual public SVGPathElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedNumber getPathLength(); - - /** - * - */ - virtual double getTotalLength ( ); - - /** - * - */ - virtual SVGPoint getPointAtLength (double distance ); - - /** - * - */ - virtual unsigned long getPathSegAtLength (double distance ); - - /** - * - */ - virtual SVGPathSegClosePath - createSVGPathSegClosePath ( ) - { - SVGPathSegClosePath ret; - return ret; - } - - /** - * - */ - virtual SVGPathSegMovetoAbs - createSVGPathSegMovetoAbs (double x, double y ) - { - SVGPathSegMovetoAbs ret(x, y); - return ret; - } - - /** - * - */ - virtual SVGPathSegMovetoRel - createSVGPathSegMovetoRel (double x, double y ) - { - SVGPathSegMovetoRel ret(x, y); - return ret; - } - - /** - * - */ - virtual SVGPathSegLinetoAbs - createSVGPathSegLinetoAbs (double x, double y ) - { - SVGPathSegLinetoAbs ret(x, y); - return ret; - } - - /** - * - */ - virtual SVGPathSegLinetoRel - createSVGPathSegLinetoRel (double x, double y ) - { - SVGPathSegLinetoRel ret(x, y); - return ret; - } - - /** - * - */ - virtual SVGPathSegCurvetoCubicAbs - createSVGPathSegCurvetoCubicAbs (double x, double y, - double x1, double y1, double x2, double y2 ) - { - SVGPathSegCurvetoCubicAbs ret(x, y, x1, y1, x2, y2); - return ret; - } - - /** - * - */ - virtual SVGPathSegCurvetoCubicRel - createSVGPathSegCurvetoCubicRel (double x, double y, - double x1, double y1, double x2, double y2 ) - { - SVGPathSegCurvetoCubicRel ret(x, y, x1, y1, x2, y2); - return ret; - } - - /** - * - */ - virtual SVGPathSegCurvetoQuadraticAbs - createSVGPathSegCurvetoQuadraticAbs (double x, double y, - double x1, double y1 ) - { - SVGPathSegCurvetoQuadraticAbs ret(x, y, x1, y1); - return ret; - } - - /** - * - */ - virtual SVGPathSegCurvetoQuadraticRel - createSVGPathSegCurvetoQuadraticRel (double x, double y, - double x1, double y1 ) - { - SVGPathSegCurvetoQuadraticRel ret(x, y, x1, y1); - return ret; - } - - /** - * - */ - virtual SVGPathSegArcAbs - createSVGPathSegArcAbs (double x, double y, - double r1, double r2, double angle, - bool largeArcFlag, bool sweepFlag ) - { - SVGPathSegArcAbs ret(x, y, r1, r2, angle, largeArcFlag, sweepFlag); - return ret; - } - - /** - * - */ - virtual SVGPathSegArcRel - createSVGPathSegArcRel (double x, double y, double r1, - double r2, double angle, bool largeArcFlag, - bool sweepFlag ) - { - SVGPathSegArcRel ret(x, y, r1, r2, angle, largeArcFlag, sweepFlag); - return ret; - } - - /** - * - */ - virtual SVGPathSegLinetoHorizontalAbs - createSVGPathSegLinetoHorizontalAbs (double x ) - { - SVGPathSegLinetoHorizontalAbs ret(x); - return ret; - } - - /** - * - */ - virtual SVGPathSegLinetoHorizontalRel - createSVGPathSegLinetoHorizontalRel (double x ) - { - SVGPathSegLinetoHorizontalRel ret(x); - return ret; - } - - /** - * - */ - virtual SVGPathSegLinetoVerticalAbs - createSVGPathSegLinetoVerticalAbs (double y ) - { - SVGPathSegLinetoVerticalAbs ret(y); - return ret; - } - - /** - * - */ - virtual SVGPathSegLinetoVerticalRel - createSVGPathSegLinetoVerticalRel (double y ) - { - SVGPathSegLinetoVerticalRel ret(y); - return ret; - } - - /** - * - */ - virtual SVGPathSegCurvetoCubicSmoothAbs - createSVGPathSegCurvetoCubicSmoothAbs (double x, double y, - double x2, double y2 ) - { - SVGPathSegCurvetoCubicSmoothAbs ret(x, y, x2, y2); - return ret; - } - - /** - * - */ - virtual SVGPathSegCurvetoCubicSmoothRel - createSVGPathSegCurvetoCubicSmoothRel (double x, double y, - double x2, double y2 ) - { - SVGPathSegCurvetoCubicSmoothRel ret(x, y, x2, y2); - return ret; - } - - /** - * - */ - virtual SVGPathSegCurvetoQuadraticSmoothAbs - createSVGPathSegCurvetoQuadraticSmoothAbs (double x, double y ) - { - SVGPathSegCurvetoQuadraticSmoothAbs ret(x, y); - return ret; - } - - /** - * - */ - virtual SVGPathSegCurvetoQuadraticSmoothRel - createSVGPathSegCurvetoQuadraticSmoothRel (double x, double y ) - { - SVGPathSegCurvetoQuadraticSmoothRel ret(x, y); - return ret; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathElementImpl() {} - - - /** - * - */ - virtual ~SVGPathElementImpl() {} - -protected: - - -}; - - - - - - - -/*######################################################################### -## SVGRectElementImpl -#########################################################################*/ - -/** - * - */ -class SVGRectElementImpl : virtual public SVGRectElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedLength getWidth() - { return width; } - - /** - * - */ - virtual SVGAnimatedLength getHeight() - { return height; } - - - /** - * - */ - virtual SVGAnimatedLength getRx() - { return rx; } - - /** - * - */ - virtual SVGAnimatedLength getRy() - { return ry; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGRectElementImpl() {} - - /** - * - */ - virtual ~SVGRectElementImpl() {} - -protected: - - SVGAnimatedLength x; - SVGAnimatedLength y; - SVGAnimatedLength width; - SVGAnimatedLength height; - SVGAnimatedLength rx; - SVGAnimatedLength ry; - -}; - - - - - - -/*######################################################################### -## SVGCircleElementImpl -#########################################################################*/ - -/** - * - */ -class SVGCircleElementImpl : virtual public SVGCircleElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedLength getCx() - { return cx; } - - /** - * - */ - virtual SVGAnimatedLength getCy() - { return cy; } - - /** - * - */ - virtual SVGAnimatedLength getR() - { return r; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGCircleElementImpl() {} - - /** - * - */ - virtual ~SVGCircleElementImpl() {} - -protected: - - SVGAnimatedLength cx; - SVGAnimatedLength cy; - SVGAnimatedLength r; -}; - - - - - - -/*######################################################################### -## SVGEllipseElementImpl -#########################################################################*/ - -/** - * - */ -class SVGEllipseElementImpl : virtual public SVGEllipseElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedLength getCx() - { return cx; } - - /** - * - */ - virtual SVGAnimatedLength getCy() - { return cy; } - - /** - * - */ - virtual SVGAnimatedLength getRx() - { return rx; } - - /** - * - */ - virtual SVGAnimatedLength getRy() - { return ry; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGEllipseElementImpl() {} - - /** - * - */ - virtual ~SVGEllipseElementImpl() {} - -protected: - - SVGAnimatedLength cx; - SVGAnimatedLength cy; - SVGAnimatedLength rx; - SVGAnimatedLength ry; -}; - - - - - - -/*######################################################################### -## SVGLineElement -#########################################################################*/ - -/** - * - */ -class SVGLineElementImpl : virtual public SVGLineElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedLength getX1() - { return x1; } - - /** - * - */ - virtual SVGAnimatedLength getY1() - { return y1; } - - /** - * - */ - virtual SVGAnimatedLength getX2() - { return x2; } - - /** - * - */ - virtual SVGAnimatedLength getY2() - { return y2; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGLineElementImpl() {} - -protected: - - SVGAnimatedLength x1; - SVGAnimatedLength x2; - SVGAnimatedLength y1; - SVGAnimatedLength y2; -}; - - - - -/*######################################################################### -## SVGPolylineElement -#########################################################################*/ - -/** - * - */ -class SVGPolylineElementImpl : virtual public SVGPolylineElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGPolylineElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGPolygonElementImpl -#########################################################################*/ - -/** - * - */ -class SVGPolygonElementImpl : virtual public SVGPolygonElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGPolygonElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGTextContentElement -#########################################################################*/ - -/** - * - */ -class SVGTextContentElementImpl : virtual public SVGTextContentElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedLength getTextLength(); - - - /** - * - */ - virtual SVGAnimatedEnumeration getLengthAdjust(); - - - /** - * - */ - virtual long getNumberOfChars( ); - - /** - * - */ - virtual double getComputedTextLength( ); - - /** - * - */ - virtual double getSubStringLength(unsigned long charnum, - unsigned long nchars ) - throw( DOMException ); - - /** - * - */ - virtual SVGPoint getStartPositionOfChar(unsigned long charnum ) - throw( DOMException ); - - /** - * - */ - virtual SVGPoint getEndPositionOfChar(unsigned long charnum ) - throw( DOMException ); - - /** - * - */ - virtual SVGRect getExtentOfChar(unsigned long charnum ) - throw( DOMException ); - - /** - * - */ - virtual double getRotationOfChar(unsigned long charnum ) - throw( DOMException ); - - /** - * - */ - virtual long getCharNumAtPosition(const SVGPoint &point ); - - /** - * - */ - virtual void selectSubString(unsigned long charnum, unsigned long nchars ) - throw( DOMException ); - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTextContentElementImpl() {} - -protected: - - -}; - - - - - - -/*######################################################################### -## SVGTextPositioningElementImpl -#########################################################################*/ - -/** - * - */ -class SVGTextPositioningElementImpl : virtual public SVGTextPositioningElement, - public SVGTextContentElementImpl -{ -public: - - - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedLength getDx() - { return dx; } - - /** - * - */ - virtual SVGAnimatedLength getDy() - { return dy; } - - - /** - * - */ - virtual SVGAnimatedNumberList getRotate() - { return rotate; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTextPositioningElementImpl() {} - -protected: - - SVGAnimatedLength x; - SVGAnimatedLength y; - SVGAnimatedLength dx; - SVGAnimatedLength dy; - SVGAnimatedNumberList rotate; - -}; - - - - - - - -/*######################################################################### -## SVGTextElement -#########################################################################*/ - -/** - * - */ -class SVGTextElementImpl : virtual public SVGTextElement, - public SVGTextPositioningElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTextElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGTSpanElement -#########################################################################*/ - -/** - * - */ -class SVGTSpanElementImpl : virtual public SVGTSpanElement, - public SVGTextPositioningElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTSpanElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGTRefElement -#########################################################################*/ - -/** - * - */ -class SVGTRefElementImpl : virtual public SVGTRefElement, - public SVGTextPositioningElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTRefElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGTextPathElement -#########################################################################*/ - -/** - * - */ -class SVGTextPathElementImpl : virtual public SVGTextPathElement, - public SVGTextContentElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedLength getStartOffset() - { return startOffset; } - - /** - * - */ - virtual SVGAnimatedEnumeration getMethod() - { return method; } - - /** - * - */ - virtual SVGAnimatedEnumeration getSpacing() - { return spacing; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGTextPathElementImpl() {} - -protected: - - SVGAnimatedLength startOffset; - SVGAnimatedEnumeration method; - SVGAnimatedEnumeration spacing; -}; - - - - - - - -/*######################################################################### -## SVGAltGlyphElement -#########################################################################*/ - -/** - * - */ -class SVGAltGlyphElementImpl : virtual public SVGAltGlyphElement, - public SVGTextPositioningElementImpl -{ -public: - - /** - * - */ - virtual DOMString getGlyphRef() - { return glyphRef; } - - /** - * - */ - virtual void setGlyphRef(const DOMString &val) - throw (DOMException) - { glyphRef = val; } - - /** - * - */ - virtual DOMString getFormat() - { return format; } - - /** - * - */ - virtual void setFormat(const DOMString &val) - throw (DOMException) - { format = val; } - - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAltGlyphElementImpl() {} - -protected: - - DOMString glyphRef; - DOMString format; - -}; - - - - - - - -/*######################################################################### -## SVGAltGlyphDefElementImpl -#########################################################################*/ - -/** - * - */ -class SVGAltGlyphDefElementImpl : virtual public SVGAltGlyphDefElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAltGlyphDefElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGAltGlyphItemElementImpl -#########################################################################*/ - -/** - * - */ -class SVGAltGlyphItemElementImpl : virtual public SVGAltGlyphItemElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAltGlyphItemElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGGlyphRefElementImpl -#########################################################################*/ - -/** - * - */ -class SVGGlyphRefElementImpl : virtual public SVGGlyphRefElement, - public SVGElementImpl -{ -public: - /** - * - */ - virtual DOMString getGlyphRef() - { return glyphRef; } - - /** - * - */ - virtual void setGlyphRef(const DOMString &val) throw (DOMException) - { glyphRef = val; } - - /** - * - */ - virtual DOMString getFormat() - { return format; } - - /** - * - */ - virtual void setFormat(const DOMString &val) throw (DOMException) - { format = val; } - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - /** - * - */ - virtual double getDx() - { return dx; } - - /** - * - */ - virtual void setDx(double val) throw (DOMException) - { dx = val; } - - /** - * - */ - virtual double getDy() - { return dy; } - - /** - * - */ - virtual void setDy(double val) throw (DOMException) - { dy = val; } - - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGGlyphRefElementImpl() {} - -protected: - - DOMString glyphRef; - DOMString format; - double x, y, dx, dy; - -}; - - - - - - -/*######################################################################### -## SVGMarkerElementImpl -#########################################################################*/ - -/** - * - */ -class SVGMarkerElementImpl : virtual public SVGMarkerElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedLength getRefX() - { return refX; } - - /** - * - */ - virtual SVGAnimatedLength getRefY() - { return refY; } - - /** - * - */ - virtual SVGAnimatedEnumeration getMarkerUnits() - { return markerUnits; } - - /** - * - */ - virtual SVGAnimatedLength getMarkerWidth() - { return markerWidth; } - - /** - * - */ - virtual SVGAnimatedLength getMarkerHeight() - { return markerHeight; } - - /** - * - */ - virtual SVGAnimatedEnumeration getOrientType() - { return orientType; } - - /** - * - */ - virtual SVGAnimatedAngle getOrientAngle() - { return orientAngle; } - - - /** - * - */ - virtual void setOrientToAuto ( ) - { orientAuto = true; } - - /** - * - */ - virtual void setOrientToAngle (const SVGAngle &angle) - { - orientAuto = false; - orientAngle = SVGAnimatedAngle(angle); - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGMarkerElementImpl() {} - -protected: - - SVGAnimatedLength refX; - SVGAnimatedLength refY; - SVGAnimatedEnumeration markerUnits; - SVGAnimatedLength markerWidth; - SVGAnimatedLength markerHeight; - SVGAnimatedEnumeration orientType; - SVGAnimatedAngle orientAngle; - bool orientAuto; - - -}; - - - - - - - -/*######################################################################### -## SVGColorProfileElementImpl -#########################################################################*/ - -/** - * - */ -class SVGColorProfileElementImpl : virtual public SVGColorProfileElement, - public SVGElementImpl -{ -public: - /** - * - */ - virtual DOMString getLocal() - { return local; } - - /** - * - */ - virtual void setLocal(const DOMString &val) throw (DOMException) - { local = val; } - - /** - * - */ - virtual DOMString getName() - { return name; } - - /** - * - */ - virtual void setName(const DOMString &val) throw (DOMException) - { name = val; } - - /** - * - */ - virtual unsigned short getRenderingIntent() - { return renderingIntent; } - - /** - * - */ - virtual void setRenderingIntent(unsigned short val) throw (DOMException) - { renderingIntent = val; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGColorProfileElementImpl() {} - -protected: - - DOMString local; - DOMString name; - unsigned short renderingIntent; - -}; - - - - - -/*######################################################################### -## SVGGradientElementImpl -#########################################################################*/ - -/** - * - */ -class SVGGradientElementImpl : virtual public SVGGradientElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedEnumeration getGradientUnits() - { return gradientUnits; } - - /** - * - */ - virtual SVGAnimatedTransformList getGradientTransform() - { return gradientTransform; } - - /** - * - */ - virtual SVGAnimatedEnumeration getSpreadMethod() - { return spreadMethod; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGGradientElementImpl() {} - -protected: - - - SVGAnimatedEnumeration gradientUnits; - SVGAnimatedTransformList gradientTransform; - SVGAnimatedEnumeration spreadMethod; -}; - - - - - - - -/*######################################################################### -## SVGLinearGradientElementImpl -#########################################################################*/ - -/** - * - */ -class SVGLinearGradientElementImpl : virtual public SVGLinearGradientElement, - public SVGGradientElementImpl -{ -public: - - - /** - * - */ - virtual SVGAnimatedLength getX1() - { return x1; } - - /** - * - */ - virtual SVGAnimatedLength getY1() - { return y1; } - - /** - * - */ - virtual SVGAnimatedLength getX2() - { return x2; } - - /** - * - */ - virtual SVGAnimatedLength getY2() - { return y2; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGLinearGradientElementImpl() {} - -protected: - - SVGAnimatedLength x1, x2, y1, y2; - -}; - - - - - - - -/*######################################################################### -## SVGRadialGradientElementImpl -#########################################################################*/ - -/** - * - */ -class SVGRadialGradientElementImpl : virtual public SVGRadialGradientElement, - public SVGGradientElementImpl -{ -public: - - - /** - * - */ - virtual SVGAnimatedLength getCx() - { return cx; } - - - /** - * - */ - virtual SVGAnimatedLength getCy() - { return cy; } - - - /** - * - */ - virtual SVGAnimatedLength getR() - { return r; } - - - /** - * - */ - virtual SVGAnimatedLength getFx() - { return fx; } - - - /** - * - */ - virtual SVGAnimatedLength getFy() - { return fy; } - - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGRadialGradientElementImpl() {} - -protected: - - SVGAnimatedLength cx, cy, r, fx, fy; - -}; - - - - - - - -/*######################################################################### -## SVGStopElementImpl -#########################################################################*/ - -/** - * - */ -class SVGStopElementImpl : virtual public SVGStopElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedNumber getOffset() - { return offset; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGStopElementImpl() {} - -protected: - - SVGAnimatedNumber offset; - -}; - - - - - - - -/*######################################################################### -## SVGPatternElementImpl -#########################################################################*/ - -/** - * - */ -class SVGPatternElementImpl : virtual public SVGPatternElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedEnumeration getPatternUnits() - { return patternUnits; } - - /** - * - */ - virtual SVGAnimatedEnumeration getPatternContentUnits() - { return patternContentUnits; } - - /** - * - */ - virtual SVGAnimatedTransformList getPatternTransform() - { return patternTransform; } - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedLength getWidth() - { return width; } - - /** - * - */ - virtual SVGAnimatedLength getHeight() - { return height; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGPatternElementImpl() {} - -protected: - - - SVGAnimatedEnumeration patternUnits; - SVGAnimatedEnumeration patternContentUnits; - SVGAnimatedTransformList patternTransform; - SVGAnimatedLength x; - SVGAnimatedLength y; - SVGAnimatedLength width; - SVGAnimatedLength height; -}; - - - - - - - -/*######################################################################### -## SVGClipPathElementImpl -#########################################################################*/ - -/** - * - */ -class SVGClipPathElementImpl : virtual public SVGClipPathElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedEnumeration getClipPathUnits() - { return clipPathUnits; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGClipPathElementImpl() {} - -protected: - - SVGAnimatedEnumeration clipPathUnits; - -}; - - - - - - - -/*######################################################################### -## SVGMaskElementImpl -#########################################################################*/ - -/** - * - */ -class SVGMaskElementImpl : virtual public SVGMaskElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedEnumeration getMaskUnits() - { return maskUnits; } - - /** - * - */ - virtual SVGAnimatedEnumeration getMaskContentUnits() - { return maskContentUnits; } - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedLength getWidth() - { return width; } - - /** - * - */ - virtual SVGAnimatedLength getHeight() - { return height; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGMaskElementImpl() {} - -protected: - - - SVGAnimatedEnumeration maskUnits; - SVGAnimatedEnumeration maskContentUnits; - SVGAnimatedLength x; - SVGAnimatedLength y; - SVGAnimatedLength width; - SVGAnimatedLength height; -}; - - - - - - - -/*######################################################################### -## SVGFilterElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFilterElementImpl : virtual public SVGFilterElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedEnumeration getFilterUnits() - { return filterUnits; } - - /** - * - */ - virtual SVGAnimatedEnumeration getPrimitiveUnits() - { return filterUnits; } - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedLength getWidth() - { return width; } - - /** - * - */ - virtual SVGAnimatedLength getHeight() - { return height; } - - /** - * - */ - virtual SVGAnimatedInteger getFilterResX() - { return filterResX; } - - /** - * - */ - virtual SVGAnimatedInteger getFilterResY() - { return filterResY; } - - /** - * - */ - virtual void setFilterRes (unsigned long filterResXArg, - unsigned long filterResYArg ) - { - filterResX = filterResXArg; - filterResY = filterResYArg; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFilterElementImpl() {} - -protected: - - SVGAnimatedEnumeration filterUnits; - SVGAnimatedEnumeration primitiveUnits; - SVGAnimatedLength x; - SVGAnimatedLength y; - SVGAnimatedLength width; - SVGAnimatedLength height; - SVGAnimatedInteger filterResX; - SVGAnimatedInteger filterResY; - -}; - - - - - - -/*######################################################################### -## SVGFEBlendElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEBlendElementImpl : virtual public SVGFEBlendElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - /** - * - */ - virtual SVGAnimatedString getIn2() - { return in2; } - - /** - * - */ - virtual SVGAnimatedEnumeration getMode() - { return mode; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEBlendElementImpl() {} - -protected: - - SVGAnimatedString in1, in2; - SVGAnimatedEnumeration mode; -}; - - - - - - - -/*######################################################################### -## SVGFEColorMatrixElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEColorMatrixElementImpl : virtual public SVGFEColorMatrixElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - /** - * - */ - virtual SVGAnimatedEnumeration getType() - { return type; } - - /** - * - */ - virtual SVGAnimatedNumberList getValues() - { return values; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEColorMatrixElementImpl() {} - -protected: - - SVGAnimatedString in1; - SVGAnimatedEnumeration type; - SVGAnimatedNumberList values; - -}; - - - - - - - -/*######################################################################### -## SVGFEComponentTransferElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEComponentTransferElementImpl : - virtual public SVGFEComponentTransferElement, - public SVGElementImpl -{ -public: - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEComponentTransferElementImpl() {} - -protected: - - SVGAnimatedString in1; - -}; - - - - - - - -/*######################################################################### -## SVGComponentTransferFunctionElementImpl -#########################################################################*/ - -/** - * - */ -class SVGComponentTransferFunctionElementImpl : - virtual public SVGComponentTransferFunctionElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedEnumeration getType() - { return type; } - - /** - * - */ - virtual SVGAnimatedNumberList getTableValues() - { return tableValues; } - - /** - * - */ - virtual SVGAnimatedNumber getSlope() - { return slope; } - - /** - * - */ - virtual SVGAnimatedNumber getIntercept() - { return intercept; } - - /** - * - */ - virtual SVGAnimatedNumber getAmplitude() - { return amplitude; } - - /** - * - */ - virtual SVGAnimatedNumber getExponent() - { return exponent; } - - /** - * - */ - virtual SVGAnimatedNumber getOffset() - { return offset; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGComponentTransferFunctionElementImpl() {} - -protected: - - SVGAnimatedEnumeration type; - SVGAnimatedNumberList tableValues; - SVGAnimatedNumber slope; - SVGAnimatedNumber intercept; - SVGAnimatedNumber amplitude; - SVGAnimatedNumber exponent; - SVGAnimatedNumber offset; - -}; - - - - - - - -/*######################################################################### -## SVGFEFuncRElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEFuncRElementImpl : - virtual public SVGFEFuncRElement, - public SVGComponentTransferFunctionElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEFuncRElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFEFuncGElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEFuncGElementImpl : virtual public SVGFEFuncGElement, - public SVGComponentTransferFunctionElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEFuncGElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFEFuncBElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEFuncBElementImpl : virtual public SVGFEFuncBElement, - public SVGComponentTransferFunctionElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEFuncBElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFEFuncAElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEFuncAElementImpl : virtual public SVGFEFuncAElement, - public SVGComponentTransferFunctionElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEFuncAElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFECompositeElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFECompositeElementImpl : virtual public SVGFECompositeElement, - public SVGElementImpl -{ -public: - - - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - /** - * - */ - virtual SVGAnimatedString getIn2() - { return in2; } - - /** - * - */ - virtual SVGAnimatedEnumeration getOperator() - { return ae_operator; } - - /** - * - */ - virtual SVGAnimatedNumber getK1() - { return k1; } - - /** - * - */ - virtual SVGAnimatedNumber getK2() - { return k2; } - - /** - * - */ - virtual SVGAnimatedNumber getK3() - { return k3; } - - /** - * - */ - virtual SVGAnimatedNumber getK4() - { return k4; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFECompositeElementImpl() {} - -protected: - - - SVGAnimatedString in1; - SVGAnimatedString in2; - SVGAnimatedEnumeration ae_operator; - SVGAnimatedNumber k1; - SVGAnimatedNumber k2; - SVGAnimatedNumber k3; - SVGAnimatedNumber k4; - -}; - - - - - - - -/*######################################################################### -## SVGFEConvolveMatrixElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEConvolveMatrixElementImpl : virtual public SVGFEConvolveMatrixElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedInteger getOrderX() - { return orderX; } - - /** - * - */ - virtual SVGAnimatedInteger getOrderY() - { return orderY; } - - /** - * - */ - virtual SVGAnimatedNumberList getKernelMatrix() - { return kernelMatrix; } - - /** - * - */ - virtual SVGAnimatedNumber getDivisor() - { return divisor; } - - /** - * - */ - virtual SVGAnimatedNumber getBias() - { return bias; } - - /** - * - */ - virtual SVGAnimatedInteger getTargetX() - { return targetX; } - - /** - * - */ - virtual SVGAnimatedInteger getTargetY() - { return targetY; } - - /** - * - */ - virtual SVGAnimatedEnumeration getEdgeMode() - { return edgeMode; } - - /** - * - */ - virtual SVGAnimatedLength getKernelUnitLengthX() - { return kernelUnitLengthX; } - - /** - * - */ - virtual SVGAnimatedLength getKernelUnitLengthY() - { return kernelUnitLengthY; } - - /** - * - */ - virtual SVGAnimatedBoolean getPreserveAlpha() - { return preserveAlpha; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEConvolveMatrixElementImpl() {} - -protected: - - SVGAnimatedInteger orderX; - SVGAnimatedInteger orderY; - SVGAnimatedNumberList kernelMatrix; - SVGAnimatedNumber divisor; - SVGAnimatedNumber bias; - SVGAnimatedInteger targetX; - SVGAnimatedInteger targetY; - SVGAnimatedEnumeration edgeMode; - SVGAnimatedLength kernelUnitLengthX; - SVGAnimatedLength kernelUnitLengthY; - SVGAnimatedBoolean preserveAlpha; - -}; - - - - - - - -/*######################################################################### -## SVGFEDiffuseLightingElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEDiffuseLightingElementImpl : virtual public SVGFEDiffuseLightingElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - /** - * - */ - virtual SVGAnimatedNumber getSurfaceScale() - { return surfaceScale; } - - /** - * - */ - virtual SVGAnimatedNumber getDiffuseConstant() - { return diffuseConstant; } - - /** - * - */ - virtual SVGAnimatedNumber getKernelUnitLengthX() - { return kernelUnitLengthX; } - - /** - * - */ - virtual SVGAnimatedNumber getKernelUnitLengthY() - { return kernelUnitLengthY; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEDiffuseLightingElementImpl() {} - -protected: - - SVGAnimatedString in1; - SVGAnimatedNumber surfaceScale; - SVGAnimatedNumber diffuseConstant; - SVGAnimatedNumber kernelUnitLengthX; - SVGAnimatedNumber kernelUnitLengthY; - -}; - - - - - - - -/*######################################################################### -## SVGFEDistantLightElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEDistantLightElementImpl : virtual public SVGFEDistantLightElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedNumber getAzimuth() - { return azimuth; } - - - /** - * - */ - virtual SVGAnimatedNumber getElevation() - { return elevation; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEDistantLightElementImpl() {} - -protected: - - SVGAnimatedNumber azimuth; - SVGAnimatedNumber elevation; - -}; - - - - - - - -/*######################################################################### -## SVGFEPointLightElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEPointLightElementImpl : public virtual SVGFEPointLightElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedNumber getX() - { return x; } - - - /** - * - */ - virtual SVGAnimatedNumber getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedNumber getZ() - { return z; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEPointLightElementImpl() {} - -protected: - - SVGAnimatedNumber x, y, z; - -}; - - - - - - - -/*######################################################################### -## SVGFESpotLightElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFESpotLightElementImpl : virtual public SVGFESpotLightElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedNumber getX() - { return x; } - - - /** - * - */ - virtual SVGAnimatedNumber getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedNumber getZ() - { return z; } - - /** - * - */ - virtual SVGAnimatedNumber getPointsAtX() - { return pointsAtX; } - - /** - * - */ - virtual SVGAnimatedNumber getPointsAtY() - { return pointsAtY; } - - /** - * - */ - virtual SVGAnimatedNumber getPointsAtZ() - { return pointsAtZ; } - - /** - * - */ - virtual SVGAnimatedNumber getSpecularExponent() - { return specularExponent; } - - /** - * - */ - virtual SVGAnimatedNumber getLimitingConeAngle() - { return limitingConeAngle; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFESpotLightElementImpl() {} - -protected: - - SVGAnimatedNumber x, y, z; - SVGAnimatedNumber pointsAtX, pointsAtY, pointsAtZ; - SVGAnimatedNumber specularExponent; - SVGAnimatedNumber limitingConeAngle; -}; - - - - - - - -/*######################################################################### -## SVGFEDisplacementMapElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEDisplacementMapElementImpl : virtual public SVGFEDisplacementMapElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - /** - * - */ - virtual SVGAnimatedString getIn2() - { return in2; } - - - /** - * - */ - virtual SVGAnimatedNumber getScale() - { return scale; } - - /** - * - */ - virtual SVGAnimatedEnumeration getXChannelSelector() - { return xChannelSelector; } - - /** - * - */ - virtual SVGAnimatedEnumeration getYChannelSelector() - { return yChannelSelector; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEDisplacementMapElementImpl() {} - -protected: - - SVGAnimatedString in1; - SVGAnimatedString in2; - SVGAnimatedNumber scale; - SVGAnimatedEnumeration xChannelSelector; - SVGAnimatedEnumeration yChannelSelector; - -}; - - - - - - - -/*######################################################################### -## SVGFEFloodElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEFloodElementImpl : virtual public SVGFEFloodElement, - public SVGElementImpl -{ -public: - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEFloodElementImpl() {} - -protected: - - SVGAnimatedString in1; - -}; - - - - - - - -/*######################################################################### -## SVGFEGaussianBlurElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEGaussianBlurElementImpl : virtual public SVGFEGaussianBlurElement, - public SVGElementImpl -{ -public: - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - - /** - * - */ - virtual SVGAnimatedNumber getStdDeviationX() - { return stdDeviationX; } - - /** - * - */ - virtual SVGAnimatedNumber getStdDeviationY() - { return stdDeviationY; } - - - /** - * - */ - virtual void setStdDeviation (double stdDeviationXArg, double stdDeviationYArg ) - { - stdDeviationX = stdDeviationXArg; - stdDeviationY = stdDeviationYArg; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEGaussianBlurElementImpl() {} - -protected: - - SVGAnimatedString in1; - SVGAnimatedNumber stdDeviationX, stdDeviationY; - -}; - - - - - - - -/*######################################################################### -## SVGFEImageElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEImageElementImpl : virtual public SVGFEImageElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEImageElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFEMergeElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEMergeElementImpl : virtual public SVGFEMergeElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEMergeElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFEMergeNodeElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEMergeNodeElementImpl : virtual public SVGFEMergeNodeElement, - public SVGElementImpl -{ -public: - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEMergeNodeElementImpl() {} - -protected: - - SVGAnimatedString in1; - -}; - - - - - - - -/*######################################################################### -## SVGFEMorphologyElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEMorphologyElementImpl : virtual public SVGFEMorphologyElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - - /** - * - */ - virtual SVGAnimatedEnumeration getOperator() - { return me_operator; } - - /** - * - */ - virtual SVGAnimatedLength getRadiusX() - { return radiusX; } - - /** - * - */ - virtual SVGAnimatedLength getRadiusY() - { return radiusY; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEMorphologyElementImpl() {} - -protected: - - SVGAnimatedString in1; - SVGAnimatedEnumeration me_operator; - SVGAnimatedLength radiusX; - SVGAnimatedLength radiusY; - -}; - - - - - - - -/*######################################################################### -## SVGFEOffsetElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFEOffsetElementImpl : virtual public SVGFEOffsetElement, - public SVGElementImpl -{ -public: - - - - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - /** - * - */ - virtual SVGAnimatedLength getDx() - { return dx; } - - /** - * - */ - virtual SVGAnimatedLength getDy() - { return dy; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFEOffsetElementImpl() {} - -protected: - - SVGAnimatedString in1; - SVGAnimatedLength dx, dy; - -}; - - - - - - - -/*######################################################################### -## SVGFESpecularLightingElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFESpecularLightingElementImpl : - virtual public SVGFESpecularLightingElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - /** - * - */ - virtual SVGAnimatedNumber getSurfaceScale() - { return surfaceScale; } - - /** - * - */ - virtual SVGAnimatedNumber getSpecularConstant() - { return specularConstant; } - - /** - * - */ - virtual SVGAnimatedNumber getSpecularExponent() - { return specularExponent; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFESpecularLightingElementImpl() {} - -protected: - - SVGAnimatedString in1; - SVGAnimatedNumber surfaceScale; - SVGAnimatedNumber specularConstant; - SVGAnimatedNumber specularExponent; -}; - - - - - - - -/*######################################################################### -## SVGFETileElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFETileElementImpl : virtual public SVGFETileElement, - public SVGElementImpl -{ -public: - - - /** - * - */ - virtual SVGAnimatedString getIn1() - { return in1; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFETileElementImpl() {} - -protected: - - SVGAnimatedString in1; - -}; - - - - - - - -/*######################################################################### -## SVGFETurbulenceElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFETurbulenceElementImpl : virtual public SVGFETurbulenceElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedNumber getBaseFrequencyX() - { return baseFrequencyX; } - - /** - * - */ - virtual SVGAnimatedNumber getBaseFrequencyY() - { return baseFrequencyY; } - - /** - * - */ - virtual SVGAnimatedInteger getNumOctaves() - { return numOctaves; } - - /** - * - */ - virtual SVGAnimatedNumber getSeed() - { return seed; } - - /** - * - */ - virtual SVGAnimatedEnumeration getStitchTiles() - { return stitchTiles; } - - /** - * - */ - virtual SVGAnimatedEnumeration getType() - { return type; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFETurbulenceElementImpl() {} - -protected: - - SVGAnimatedNumber baseFrequencyX; - SVGAnimatedNumber baseFrequencyY; - SVGAnimatedInteger numOctaves; - SVGAnimatedNumber seed; - SVGAnimatedEnumeration stitchTiles; - SVGAnimatedEnumeration type; - -}; - - - - - - - -/*######################################################################### -## SVGCursorElementImpl -#########################################################################*/ - -/** - * - */ -class SVGCursorElementImpl : virtual public SVGCursorElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return x; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGCursorElementImpl() {} - -protected: - - SVGAnimatedLength x, y; -}; - - - - - - - -/*######################################################################### -## SVGAElementImpl -#########################################################################*/ - -/** - * - */ -class SVGAElementImpl : virtual public SVGAElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGAnimatedString getTarget() - { return target; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAElementImpl() {} - -protected: - - SVGAnimatedString target; -}; - - - - - - - -/*######################################################################### -## SVGViewElementImpl -#########################################################################*/ - -/** - * - */ -class SVGViewElementImpl : virtual public SVGViewElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual SVGStringList getViewTarget() - { return viewTarget; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGViewElementImpl() {} - -protected: - - SVGStringList viewTarget; -}; - - - - - - - -/*######################################################################### -## SVGScriptElementImpl -#########################################################################*/ - -/** - * - */ -class SVGScriptElementImpl : virtual public SVGScriptElement, - public SVGElementImpl -{ -public: - - /** - * - */ - virtual DOMString getType() - { return type; } - - /** - * - */ - virtual void setType(const DOMString &val) throw (DOMException) - { type = val; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGScriptElementImpl() {} - -protected: - - DOMString type; -}; - - - - - - -/*######################################################################### -## SVGAnimationElementImpl -#########################################################################*/ - -/** - * - */ -class SVGAnimationElementImpl : virtual public SVGAnimationElement, - public SVGElementImpl -{ -public: - - - /** - * - */ - virtual SVGElementPtr getTargetElement() - { return targetElement; } - - - /** - * - */ - virtual double getStartTime ( ) - { return startTime; } - - /** - * - */ - virtual double getCurrentTime ( ) - { return currentTime; } - - /** - * - */ - virtual double getSimpleDuration ( ) throw( DOMException ) - { return simpleDuration; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAnimationElementImpl() {} - -protected: - - SVGElementPtr targetElement; - double startTime, currentTime, simpleDuration; -}; - - - - - - - -/*######################################################################### -## SVGAnimateElementImpl -#########################################################################*/ - -/** - * - */ -class SVGAnimateElementImpl : virtual public SVGAnimateElement, - public SVGAnimationElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAnimateElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGSetElementImpl -#########################################################################*/ - -/** - * - */ -class SVGSetElementImpl : virtual public SVGSetElement, - public SVGAnimationElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGSetElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGAnimateMotionElementImpl -#########################################################################*/ - -/** - * - */ -class SVGAnimateMotionElementImpl : virtual public SVGAnimateMotionElement, - public SVGAnimationElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAnimateMotionElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGMPathElementImpl -#########################################################################*/ - -/** - * - */ -class SVGMPathElementImpl : virtual public SVGMPathElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGMPathElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGAnimateColorElementImpl -#########################################################################*/ - -/** - * - */ -class SVGAnimateColorElementImpl : virtual public SVGAnimateColorElement, - public SVGAnimationElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAnimateColorElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGAnimateTransformElementImpl -#########################################################################*/ - -/** - * - */ -class SVGAnimateTransformElementImpl : virtual public SVGAnimateTransformElement, - public SVGAnimationElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGAnimateTransformElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFontElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFontElementImpl : virtual public SVGFontElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGGlyphElementImpl -#########################################################################*/ - -/** - * - */ -class SVGGlyphElementImpl : virtual public SVGGlyphElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGGlyphElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGMissingGlyphElementImpl -#########################################################################*/ - -/** - * - */ -class SVGMissingGlyphElementImpl : virtual public SVGMissingGlyphElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGMissingGlyphElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGHKernElementImpl -#########################################################################*/ - -/** - * - */ -class SVGHKernElementImpl : virtual public SVGHKernElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGHKernElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGVKernElementImpl -#########################################################################*/ - -/** - * - */ -class SVGVKernElementImpl : virtual public SVGVKernElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGVKernElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFontFaceElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFontFaceElementImpl : virtual public SVGFontFaceElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontFaceElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFontFaceSrcElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFontFaceSrcElementImpl : virtual public SVGFontFaceSrcElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontFaceSrcElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFontFaceUriElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFontFaceUriElementImpl : virtual public SVGFontFaceUriElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontFaceUriElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFontFaceFormatElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFontFaceFormatElementImpl : virtual public SVGFontFaceFormatElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontFaceFormatElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGFontFaceNameElementImpl -#########################################################################*/ - -/** - * - */ -class SVGFontFaceNameElementImpl : virtual public SVGFontFaceNameElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGFontFaceNameElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGDefinitionSrcElementImpl -#########################################################################*/ - -/** - * - */ -class SVGDefinitionSrcElementImpl : virtual public SVGDefinitionSrcElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGDefinitionSrcElementImpl() {} - -protected: - - -}; - - - - - -/*######################################################################### -## SVGMetadataElementImpl -#########################################################################*/ - -/** - * - */ -class SVGMetadataElementImpl : virtual public SVGMetadataElement, - public SVGElementImpl -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - virtual ~SVGMetadataElementImpl() {} - -protected: - - -}; - - - - -/*######################################################################### -## SVGForeignObjectElementImpl -#########################################################################*/ - -/** - * - */ -class SVGForeignObjectElementImpl : virtual public SVGForeignObjectElement, - public SVGElementImpl -{ -public: - - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedLength getWidth() - { return width; } - - /** - * - */ - virtual SVGAnimatedLength getHeight() - { return height; } - - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - virtual ~SVGForeignObjectElementImpl() {} - -protected: - - SVGAnimatedLength x, y, width, height; -}; - - - - - - -} //namespace svg -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_SVGIMPL_H -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/svgreader.cpp b/src/dom/svgreader.cpp deleted file mode 100644 index 932fcec58..000000000 --- a/src/dom/svgreader.cpp +++ /dev/null @@ -1,750 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES - * - * - */ - - -#include "svgreader.h" -#include "dom/cssreader.h" -#include "dom/ucd.h" -#include "xmlreader.h" - -#include <cstdio> -#include <stdarg.h> - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace svg -{ - - -//######################################################################### -//# M E S S A G E S -//######################################################################### - - -/** - * - */ -void SVGReader::error(char const *fmt, ...) -{ - va_list args; - fprintf(stderr, "SVGReader:error: "); - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args) ; - fprintf(stderr, "\n"); -} - - -/** - * - */ -void SVGReader::trace(char const *fmt, ...) -{ - va_list args; - fprintf(stdout, "SVGReader: "); - va_start(args, fmt); - vfprintf(stdout, fmt, args); - va_end(args) ; - fprintf(stdout, "\n"); -} - - - -//######################################################################### -//# P A R S I N G -//######################################################################### - - - -/** - * Get the character at the position and record the fact - */ -XMLCh SVGReader::get(int p) -{ - if (p >= parselen) - return 0; - XMLCh ch = parsebuf[p]; - //printf("%c", ch); - lastPosition = p; - return ch; -} - - - -/** - * Test if the given substring exists at the given position - * in parsebuf. Use get() in case of out-of-bounds - */ -bool SVGReader::match(int pos, char const *str) -{ - while (*str) - { - if (get(pos++) != (XMLCh) *str++) - return false; - } - return true; -} - -/** - * - */ -int SVGReader::skipwhite(int p) -{ - while (p < parselen) - { - //# XML COMMENT - if (match(p, "<!--")) - { - p+=4; - bool done=false; - while (p<parselen) - { - if (match(p, "-->")) - { - p+=3; - done=true; - break; - } - p++; - } - lastPosition = p; - if (!done) - { - error("unterminated <!-- .. --> comment"); - return -1; - } - } - //# C comment - else if (match(p, "/*")) - { - p+=2; - bool done=false; - while (p<parselen) - { - if (match(p, "*/")) - { - p+=2; - done=true; - break; - } - p++; - } - lastPosition = p; - if (!done) - { - error("unterminated /* .. */ comment"); - return -1; - } - } - else if (!uni_is_space(get(p))) - break; - else - p++; - } - lastPosition = p; - return p; -} - -/** - * get a word from the buffer - */ -int SVGReader::getWord(int p, DOMString &result) -{ - XMLCh ch = get(p); - if (!uni_is_letter(ch)) - return p; - DOMString str; - str.push_back(ch); - p++; - - while (p < parselen) - { - ch = get(p); - if (uni_is_letter_or_digit(ch) || ch=='-' || ch=='_') - { - str.push_back(ch); - p++; - } - else if (ch == '\\') - { - p+=2; - } - else - break; - } - result = str; - return p; -} - - -# if 0 -/** - * get a word from the buffer - */ -int SVGReader::getNumber(int p0, double &result) -{ - int p=p0; - - DOMString str; - - //allow sign - if (get(p) == '-') - { - p++; - } - - while (p < parselen) - { - XMLCh ch = get(p); - if (ch<'0' || ch>'9') - break; - str.push_back(ch); - p++; - } - if (get(p) == '.' && get(p+1)>='0' && get(p+1)<='9') - { - p++; - str.push_back('.'); - while (p < parselen) - { - XMLCh ch = get(p); - if (ch<'0' || ch>'9') - break; - str.push_back(ch); - p++; - } - } - if (p>p0) - { - char *start = (char *)str.c_str(); - char *end = NULL; - double val = strtod(start, &end); - if (end > start) - { - result = val; - return p; - } - } - - //not a number - return p0; -} -#endif - - -/** - * get a word from the buffer - */ -int SVGReader::getNumber(int p0, double &result) -{ - int p=p0; - - char buf[64]; - - int i; - for (i=0 ; i<63 && p<parselen ; i++) - { - buf[i] = (char) get(p++); - } - buf[i] = '\0'; - - char *start = buf; - char *end = NULL; - double val = strtod(start, &end); - if (end > start) - { - result = val; - int count = (int)(end - start); - p = p0 + count; - return p; - } - - //not a number - return p0; -} - - -bool SVGReader::parseTransform(const DOMString &str) -{ - parsebuf = str; - parselen = str.size(); - - //printf("transform:%s\n", str.c_str()); - - SVGTransformList transformList; - - int p = 0; - - while (p < parselen) - { - p = skipwhite(p); - DOMString name; - int p2 = getWord(p, name); - if (p2<0) - return false; - if (p2<=p) - { - error("transform: need transform name"); - //return false; - break; - } - p = p2; - //printf("transform name:%s\n", name.c_str()); - - //######### MATRIX - if (name == "matrix") - { - p = skipwhite(p); - if (get(p++) != '(') - { - error("matrix transform needs opening '('"); - return false; - } - int nrVals = 0; - double vals[6]; - bool seenBrace = false; - while (p < parselen && nrVals < 6) - { - p = skipwhite(p); - double val = 0.0; - p2 = getNumber(p, val); - if (p2<0) - return false; - if (p2<=p) - { - error("matrix() expected number"); - return false; - } - vals[nrVals++] = val; - p = skipwhite(p2); - XMLCh ch = get(p); - if (ch == ',') - { - p++; - p = skipwhite(p); - ch = get(p); - } - if (ch == ')') - { - seenBrace = true; - p++; - break; - } - } - if (!seenBrace) - { - error("matrix() needs closing brace"); - return false; - } - if (nrVals != 6) - { - error("matrix() requires exactly 6 arguments"); - return false; - } - //We got our arguments - //printf("translate: %f %f %f %f %f %f\n", - // vals[0], vals[1], vals[2], vals[3], vals[4], vals[5]); - SVGMatrix matrix(vals[0], vals[1], vals[2], - vals[3], vals[4], vals[5]); - SVGTransform transform; - transform.setMatrix(matrix); - transformList.appendItem(transform); - } - - //######### TRANSLATE - else if (name == "translate") - { - p = skipwhite(p); - if (get(p++) != '(') - { - error("matrix transform needs opening '('"); - return false; - } - p = skipwhite(p); - double x = 0.0; - p2 = getNumber(p, x); - if (p2<0) - return false; - if (p2<=p) - { - error("translate() expected 'x' value"); - return false; - } - p = skipwhite(p2); - if (get(p) == ',') - { - p++; - p = skipwhite(p); - } - double y = 0.0; - p2 = getNumber(p, y); - if (p2<0) - return false; - if (p2<=p) //no y specified. use default - y = 0.0; - p = skipwhite(p2); - if (get(p++) != ')') - { - error("translate() needs closing ')'"); - return false; - } - //printf("translate: %f %f\n", x, y); - SVGTransform transform; - transform.setTranslate(x, y); - transformList.appendItem(transform); - } - - //######### SCALE - else if (name == "scale") - { - p = skipwhite(p); - if (get(p++) != '(') - { - error("scale transform needs opening '('"); - return false; - } - p = skipwhite(p); - double x = 0.0; - p2 = getNumber(p, x); - if (p2<0) - return false; - if (p2<=p) - { - error("scale() expected 'x' value"); - return false; - } - p = skipwhite(p2); - if (get(p) == ',') - { - p++; - p = skipwhite(p); - } - double y = 0.0; - p2 = getNumber(p, y); - if (p2<0) - return false; - if (p2<=p) //no y specified. use default - y = x; // y is same as x. uniform scaling - p = skipwhite(p2); - if (get(p++) != ')') - { - error("scale() needs closing ')'"); - return false; - } - //printf("scale: %f %f\n", x, y); - SVGTransform transform; - transform.setScale(x, y); - transformList.appendItem(transform); - } - - //######### ROTATE - else if (name == "rotate") - { - p = skipwhite(p); - if (get(p++) != '(') - { - error("rotate transform needs opening '('"); - return false; - } - p = skipwhite(p); - double angle = 0.0; - p2 = getNumber(p, angle); - if (p2<0) - return false; - if (p2<=p) - { - error("rotate() expected 'angle' value"); - return false; - } - p = skipwhite(p2); - if (get(p) == ',') - { - p++; - p = skipwhite(p); - } - double cx = 0.0; - double cy = 0.0; - p2 = getNumber(p, cx); - if (p2>p) - { - p = skipwhite(p2); - if (get(p) == ',') - { - p++; - p = skipwhite(p); - } - p2 = getNumber(p, cy); - if (p2<0) - return false; - if (p2<=p) - { - error("rotate() arguments should be either rotate(angle) or rotate(angle, cx, cy)"); - return false; - } - p = skipwhite(p2); - } - if (get(p++) != ')') - { - error("rotate() needs closing ')'"); - return false; - } - //printf("rotate: %f %f %f\n", angle, cx, cy); - SVGTransform transform; - transform.setRotate(angle, cx, cy); - transformList.appendItem(transform); - } - - //######### SKEWX - else if (name == "skewX") - { - p = skipwhite(p); - if (get(p++) != '(') - { - error("skewX transform needs opening '('"); - return false; - } - p = skipwhite(p); - double x = 0.0; - p2 = getNumber(p, x); - if (p2<0) - return false; - if (p2<=p) - { - error("skewX() expected 'x' value"); - return false; - } - p = skipwhite(p2); - if (get(p++) != ')') - { - error("skewX() needs closing ')'"); - return false; - } - //printf("skewX: %f\n", x); - SVGTransform transform; - transform.setSkewX(x); - transformList.appendItem(transform); - } - - //######### SKEWY - else if (name == "skewY") - { - p = skipwhite(p); - if (get(p++) != '(') - { - error("skewY transform needs opening '('"); - return false; - } - p = skipwhite(p); - double y = 0.0; - p2 = getNumber(p, y); - if (p2<0) - return false; - if (p2<=p) - { - error("skewY() expected 'y' value"); - return false; - } - p = skipwhite(p2); - if (get(p++) != ')') - { - error("skewY() needs closing ')'"); - return false; - } - //printf("skewY: %f\n", y); - SVGTransform transform; - transform.setSkewY(y); - transformList.appendItem(transform); - } - - //### NONE OF THE ABOVE - else - { - error("unknown transform type:'%s'", name.c_str()); - } - - p = skipwhite(p); - XMLCh ch = get(p); - if (ch == ',') - { - p++; - p = skipwhite(p); - } - - }//WHILE p<parselen - - return true; -} - - -/** - * - */ -bool SVGReader::parseElement(SVGElementImplPtr parent, - ElementImplPtr sourceElem) -{ - if (!parent) - { - error("NULL dest element"); - return false; - } - if (!sourceElem) - { - error("NULL source element"); - return false; - } - - DOMString namespaceURI = sourceElem->getNamespaceURI(); - //printf("namespaceURI:%s\n", namespaceURI.c_str()); - DOMString tagName = sourceElem->getTagName(); - printf("tag name:%s\n", tagName.c_str()); - ElementPtr newElement = doc->createElementNS(namespaceURI, tagName); - if (!newElement) - { - return false; - } - NamedNodeMap &attrs = sourceElem->getAttributes(); - for (unsigned int i=0 ; i<attrs.getLength() ; i++) - { - NodePtr n = attrs.item(i); - newElement->setAttribute(n->getNodeName(), n->getNodeValue());//should be exception here - } - parent->appendChild(newElement); - - - NodeList children = sourceElem->getChildNodes(); - int nodeCount = children.getLength(); - for (int i=0 ; i<nodeCount ; i++) - { - NodePtr child = children.item(i); - int typ = child->getNodeType(); - if (typ == Node::TEXT_NODE) - { - NodePtr newNode = doc->createTextNode(child->getNodeValue()); - parent->appendChild(newNode); - } - else if (typ == Node::CDATA_SECTION_NODE) - { - NodePtr newNode = doc->createCDATASection(child->getNodeValue()); - parent->appendChild(newNode); - } - else if (newElement.get() && typ == Node::ELEMENT_NODE) - { - //ElementImplPtr childElement = dynamic_cast<ElementImpl *>(child.get()); - //parseElement(newElement, childElement); - } - } - return true; -} - - -/** - * - */ -SVGDocumentPtr SVGReader::parse(const DocumentPtr src) -{ - if (!src) - { - error("NULL source document"); - return NULL; - } - - DOMImplementationImpl impl; - doc = new SVGDocumentImpl(&impl, SVG_NAMESPACE, "svg" , NULL); - - SVGElementImplPtr destElem = dynamic_pointer_cast<SVGElementImpl, SVGElement>(doc->getRootElement()); - ElementImplPtr srcElem = dynamic_pointer_cast<ElementImpl, Element>(src->getDocumentElement()); - if (!parseElement(destElem, srcElem)) - { - return NULL; - } - - return doc; -} - - - -/** - * - */ -SVGDocumentPtr SVGReader::parse(const DOMString &buf) -{ - /* remember, smartptrs are null-testable*/ - SVGDocumentPtr svgdoc; - XmlReader parser; - DocumentPtr doc = parser.parse(buf); - if (!doc) - { - return svgdoc; - } - svgdoc = parse(doc); - return svgdoc; -} - - - -/** - * - */ -SVGDocumentPtr SVGReader::parseFile(const DOMString &fileName) -{ - /* remember, smartptrs are null-testable*/ - SVGDocumentPtr svgdoc; - XmlReader parser; - DocumentPtr doc = parser.parseFile(fileName); - if (!doc) - { - error("Could not load xml doc"); - return svgdoc; - } - svgdoc = parse(doc); - return svgdoc; -} - - - - -} //namespace svg -} //namespace dom -} //namespace w3c -} //namespace org - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/svgreader.h b/src/dom/svgreader.h deleted file mode 100644 index 3178293fd..000000000 --- a/src/dom/svgreader.h +++ /dev/null @@ -1,187 +0,0 @@ -#ifndef SEEN_SVGREADER_H -#define SEEN_SVGREADER_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES - * - * This parser takes an XML document, as a file, string, or DOM Document, - * and attempts to parse it as an SVG-DOM SVGDocument. - * - * Look in svg.h and svgtypes.h for the classes which are the target of this - * parser. - * - * They loosely follow the specification: - * http://www.w3.org/TR/SVG11/svgdom.html - * - */ - - -#include "svgimpl.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace svg -{ - - -class SVGReader -{ -public: - - /** - * - */ - SVGReader() : - parsebuf(), - parselen(0), - lastPosition(0), - doc(0) - { - } - - /** - * - */ - virtual ~SVGReader() - { - } - - /** - * - */ - SVGDocumentPtr parse(const DocumentPtr /*sourceDoc*/); - - /** - * - */ - SVGDocumentPtr parse(const DOMString &/*buffer*/); - - /** - * - */ - SVGDocumentPtr parseFile(const DOMString &/*fileName*/); - - - - -private: - - /** - * Get the next character in the parse buf, 0 if out - * of range - */ - XMLCh get(int p); - - /** - * Test if the given substring exists at the given position - * in parsebuf. Use get() in case of out-of-bounds - */ - bool match(int pos, char const *str); - - /** - * - */ - int skipwhite(int p); - - /** - * get a word from the buffer - */ - int getWord(int p, DOMString &result); - - /** - * get a word from the buffer - */ - int getNumber(int p0, double &result); - - - /** - * - */ - bool parseTransform(const DOMString &str); - - - /** - * - */ - bool parseElement(SVGElementImplPtr destElem, - ElementImplPtr sourceElem); - - - /** - * - */ - void error(char const *format, ...) - #ifdef G_GNUC_PRINTF - G_GNUC_PRINTF(2, 3) - #endif - ; - - /** - * - */ - void trace(char const *format, ...) - #ifdef G_GNUC_PRINTF - G_GNUC_PRINTF(2, 3) - #endif - ; - - - - DOMString parsebuf; - int parselen; - int lastPosition; - - SVGDocumentImplPtr doc; - -}; - - - - - -} //namespace svg -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_SVGREADER_H -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - diff --git a/src/dom/svgtypes.h b/src/dom/svgtypes.h deleted file mode 100644 index bb828571f..000000000 --- a/src/dom/svgtypes.h +++ /dev/null @@ -1,6900 +0,0 @@ -#ifndef SEEN_SVGTYPES_H -#define SEEN_SVGTYPES_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES - * - * This API follows: - * http://www.w3.org/TR/SVG11/svgdom.html - * - * This file contains the definitions of the non-Node SVG classes. DOM Nodes - * for SVG are defined in svg.h. - * - */ - - -// For access to DOM2 core -#include "dom/dom.h" - -// For access to DOM2 events -#include "dom/events.h" - -// For access to those parts from DOM2 CSS OM used by SVG DOM. -#include "dom/css.h" - -// For access to those parts from DOM2 Views OM used by SVG DOM. -#include "dom/views.h" - -// For access to the SMIL OM used by SVG DOM. -#include "dom/smil.h" - - -#include <cstdio> -#include <math.h> - - - -namespace org { -namespace w3c { -namespace dom { -namespace svg { - - - - -//local definitions -typedef dom::DOMString DOMString; - -class SVGElement; -typedef Ptr<SVGElement> SVGElementPtr; -class SVGUseElement; -typedef Ptr<SVGUseElement> SVGUseElementPtr; -class SVGAnimatedPreserveAspectRatio; - - -/*######################################################################### -## SVGException -#########################################################################*/ - -/** - * - */ -class SVGException -{ -public: - // unsigned short code; //inherited -}; - - /** - * SVGExceptionCode - */ - typedef enum - { - SVG_WRONG_TYPE_ERR = 0, - SVG_INVALID_VALUE_ERR = 1, - SVG_MATRIX_NOT_INVERTABLE = 2 - } SVGExceptionCode; - - - - - -/*######################################################################### -## SVGMatrix -#########################################################################*/ - -/** - * In SVG, a Matrix is defined like this: - * - * | a c e | - * | b d f | - * | 0 0 1 | - * - */ -class SVGMatrix -{ -public: - - - /** - * - */ - virtual double getA() - { return a; } - - /** - * - */ - virtual void setA(double val) throw (DOMException) - { a = val; } - - /** - * - */ - virtual double getB() - { return b; } - - /** - * - */ - virtual void setB(double val) throw (DOMException) - { b = val; } - - /** - * - */ - virtual double getC() - { return c; } - - /** - * - */ - virtual void setC(double val) throw (DOMException) - { c = val; } - - /** - * - */ - virtual double getD() - { return d; } - - /** - * - */ - virtual void setD(double val) throw (DOMException) - { d = val; } - /** - * - */ - virtual double getE() - { return e; } - - /** - * - */ - virtual void setE(double val) throw (DOMException) - { e = val; } - /** - * - */ - virtual double getF() - { return f; } - - /** - * - */ - virtual void setF(double val) throw (DOMException) - { f = val; } - - - /** - * Return the result of postmultiplying this matrix with another. - */ - virtual SVGMatrix multiply(const SVGMatrix &other) - { - SVGMatrix result; - result.a = a * other.a + c * other.b; - result.b = b * other.a + d * other.b; - result.c = a * other.c + c * other.d; - result.d = b * other.c + d * other.d; - result.e = a * other.e + c * other.f + e; - result.f = b * other.e + d * other.f + f; - return result; - } - - /** - * Calculate the inverse of this matrix - * - */ - virtual SVGMatrix inverse( ) throw( SVGException ) - { - /*########################################### - The determinant of a 3x3 matrix E - (let's use our own notation for a bit) - - A B C - D E F - G H I - is - AEI - AFH - BDI + BFG + CDH - CEG - - Since in our affine transforms, G and H==0 and I==1, - this reduces to: - AE - BD - In SVG's naming scheme, that is: a * d - c * b . SIMPLE! - - In a similar method of attack, SVG's adjunct matrix is: - - d -c cf-ed - -b a eb-af - 0 0 ad-cb - - To get the inverse matrix, we divide the adjunct matrix by - the determinant. Notice that (ad-cb)/(ad-cb)==1. Very cool. - So what we end up with is this: - - a = d/(ad-cb) c = -c/(ad-cb) e = (cf-ed)/(ad-cb) - b = -b/(ad-cb) d = a/(ad-cb) f = (eb-af)/(ad-cb) - - (Since this would be in all SVG-DOM implementations, - somebody needed to document this! ^^ ) - #############################################*/ - - SVGMatrix result; - double determinant = a * d - c * b; - if (determinant < 1.0e-18)//invertible? - { - result.identity();//cop out - return result; - } - - double idet = 1.0 / determinant; - result.a = d * idet; - result.b = -b * idet; - result.c = -c * idet; - result.d = a * idet; - result.e = (c*f - e*d) * idet; - result.f = (e*b - a*f) * idet; - return result; - } - - /** - * Equivalent to multiplying by: - * | 1 0 x | - * | 0 1 y | - * | 0 0 1 | - * - */ - virtual SVGMatrix translate(double x, double y ) - { - SVGMatrix result; - result.a = a; - result.b = b; - result.c = c; - result.d = d; - result.e = a * x + c * y + e; - result.f = b * x + d * y + f; - return result; - } - - /** - * Equivalent to multiplying by: - * | scale 0 0 | - * | 0 scale 0 | - * | 0 0 1 | - * - */ - virtual SVGMatrix scale(double scale) - { - SVGMatrix result; - result.a = a * scale; - result.b = b * scale; - result.c = c * scale; - result.d = d * scale; - result.e = e; - result.f = f; - return result; - } - - /** - * Equivalent to multiplying by: - * | scaleX 0 0 | - * | 0 scaleY 0 | - * | 0 0 1 | - * - */ - virtual SVGMatrix scaleNonUniform(double scaleX, - double scaleY ) - { - SVGMatrix result; - result.a = a * scaleX; - result.b = b * scaleX; - result.c = c * scaleY; - result.d = d * scaleY; - result.e = e; - result.f = f; - return result; - } - - /** - * Equivalent to multiplying by: - * | cos(a) -sin(a) 0 | - * | sin(a) cos(a) 0 | - * | 0 0 1 | - * - */ - virtual SVGMatrix rotate (double angle) - { - double sina = sin(angle); - double msina = -sina; - double cosa = cos(angle); - SVGMatrix result; - result.a = a * cosa + c * sina; - result.b = b * cosa + d + sina; - result.c = a * msina + c * cosa; - result.d = b * msina + d * cosa; - result.e = e; - result.f = f; - return result; - } - - /** - * Equivalent to multiplying by: - * | cos(a) -sin(a) 0 | - * | sin(a) cos(a) 0 | - * | 0 0 1 | - * In this case, angle 'a' is computed as the artangent - * of the slope y/x . It is negative if the slope is negative. - */ - virtual SVGMatrix rotateFromVector(double x, double y) - throw( SVGException ) - { - double angle = atan(y / x); - if (y < 0.0) - angle = -angle; - SVGMatrix result; - double sina = sin(angle); - double msina = -sina; - double cosa = cos(angle); - result.a = a * cosa + c * sina; - result.b = b * cosa + d + sina; - result.c = a * msina + c * cosa; - result.d = b * msina + d * cosa; - result.e = e; - result.f = f; - return result; - } - - /** - * Equivalent to multiplying by: - * | -1 0 0 | - * | 0 1 0 | - * | 0 0 1 | - * - */ - virtual SVGMatrix flipX( ) - { - SVGMatrix result; - result.a = -a; - result.b = -b; - result.c = c; - result.d = d; - result.e = e; - result.f = f; - return result; - } - - /** - * Equivalent to multiplying by: - * | 1 0 0 | - * | 0 -1 0 | - * | 0 0 1 | - * - */ - virtual SVGMatrix flipY( ) - { - SVGMatrix result; - result.a = a; - result.b = b; - result.c = -c; - result.d = -d; - result.e = e; - result.f = f; - return result; - } - - /** - * | 1 tan(a) 0 | - * | 0 1 0 | - * | 0 0 1 | - * - */ - virtual SVGMatrix skewX(double angle) - { - double tana = tan(angle); - SVGMatrix result; - result.a = a; - result.b = b; - result.c = a * tana + c; - result.d = b * tana + d; - result.e = e; - result.f = f; - return result; - } - - /** - * Equivalent to multiplying by: - * | 1 0 0 | - * | tan(a) 1 0 | - * | 0 0 1 | - * - */ - virtual SVGMatrix skewY(double angle) - { - double tana = tan(angle); - SVGMatrix result; - result.a = a + c * tana; - result.b = b + d * tana; - result.c = c; - result.d = d; - result.e = e; - result.f = f; - return result; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGMatrix() - { - identity(); - } - - /** - * - */ - SVGMatrix(double aArg, double bArg, double cArg, - double dArg, double eArg, double fArg ) - { - a = aArg; b = bArg; c = cArg; - d = dArg; e = eArg; f = fArg; - } - - /** - * Copy constructor - */ - SVGMatrix(const SVGMatrix &other) - { - a = other.a; - b = other.b; - c = other.c; - d = other.d; - e = other.e; - f = other.f; - } - - - - /** - * - */ - virtual ~SVGMatrix() {} - -protected: - -friend class SVGTransform; - - /* - * Set to the identify matrix - */ - void identity() - { - a = 1.0; - b = 0.0; - c = 0.0; - d = 1.0; - e = 0.0; - f = 0.0; - } - - double a, b, c, d, e, f; - -}; - - -/*######################################################################### -## SVGTransform -#########################################################################*/ - -/** - * - */ -class SVGTransform -{ -public: - - /** - * Transform Types - */ - typedef enum - { - SVG_TRANSFORM_UNKNOWN = 0, - SVG_TRANSFORM_MATRIX = 1, - SVG_TRANSFORM_TRANSLATE = 2, - SVG_TRANSFORM_SCALE = 3, - SVG_TRANSFORM_ROTATE = 4, - SVG_TRANSFORM_SKEWX = 5, - SVG_TRANSFORM_SKEWY = 6, - } TransformType; - - /** - * - */ - virtual unsigned short getType() - { return type; } - - - /** - * - */ - virtual SVGMatrix getMatrix() - { - return matrix; - } - - /** - * - */ - virtual double getAngle() - { - return angle; - } - - - /** - * - */ - virtual void setMatrix(const SVGMatrix &matrixArg) - { - type = SVG_TRANSFORM_MATRIX; - matrix = matrixArg; - } - - /** - * - */ - virtual void setTranslate (double tx, double ty ) - { - type = SVG_TRANSFORM_TRANSLATE; - matrix.setA(1.0); - matrix.setB(0.0); - matrix.setC(0.0); - matrix.setD(1.0); - matrix.setE(tx); - matrix.setF(ty); - } - - /** - * - */ - virtual void setScale (double sx, double sy ) - { - type = SVG_TRANSFORM_SCALE; - matrix.setA(sx); - matrix.setB(0.0); - matrix.setC(0.0); - matrix.setD(sy); - matrix.setE(0.0); - matrix.setF(0.0); - } - - /** - * - */ - virtual void setRotate (double angleArg, double cx, double cy) - { - angle = angleArg; - setTranslate(cx, cy); - type = SVG_TRANSFORM_ROTATE; - matrix.rotate(angle); - } - - /** - * - */ - virtual void setSkewX (double angleArg) - { - angle = angleArg; - type = SVG_TRANSFORM_SKEWX; - matrix.identity(); - matrix.skewX(angle); - } - - /** - * - */ - virtual void setSkewY (double angleArg) - { - angle = angleArg; - type = SVG_TRANSFORM_SKEWY; - matrix.identity(); - matrix.skewY(angle); - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTransform() : - type (SVG_TRANSFORM_UNKNOWN), - angle (0.0) - { - } - - /** - * - */ - SVGTransform(const SVGTransform &other) : - type (other.type), - angle (other.angle), - matrix (other.matrix) - { - } - - /** - * - */ - virtual ~SVGTransform() - {} - -protected: - - int type; - double angle; - - SVGMatrix matrix; -}; - - - - - - -/*######################################################################### -## SVGTransformList -#########################################################################*/ - -/** - * - */ -class SVGTransformList -{ -public: - - - /** - * - */ - virtual unsigned long getNumberOfItems() - { return items.size(); } - - - /** - * - */ - virtual void clear( ) throw( DOMException ) - { items.clear(); } - - /** - * - */ - virtual SVGTransform initialize (const SVGTransform &newItem) - throw( DOMException, SVGException ) - { - items.clear(); - items.push_back(newItem); - return newItem; - } - - /** - * - */ - virtual SVGTransform getItem (unsigned long index ) - throw( DOMException ) - { - if (index>=items.size()) - { - SVGTransform transform; - return transform; - } - return items[index]; - } - - /** - * - */ - virtual SVGTransform insertItemBefore (const SVGTransform &newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index > items.size()) - items.push_back(newItem); - else - { - std::vector<SVGTransform>::iterator iter = items.begin() + index; - items.insert(iter, newItem); - } - return newItem; - } - - /** - * - */ - virtual SVGTransform replaceItem (const SVGTransform &newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index>=items.size()) - { - SVGTransform transform; - return transform; - } - else - { - std::vector<SVGTransform>::iterator iter = items.begin() + index; - *iter = newItem; - } - return newItem; - } - - /** - * - */ - virtual SVGTransform removeItem (unsigned long index ) - throw( DOMException ) - { - if (index>=items.size()) - { - SVGTransform transform; - return transform; - } - std::vector<SVGTransform>::iterator iter = items.begin() + index; - SVGTransform oldItem = *iter; - items.erase(iter); - return oldItem; - } - - /** - * - */ - virtual SVGTransform appendItem (const SVGTransform &newItem) - throw( DOMException, SVGException ) - { - items.push_back(newItem); - return newItem; - } - - /** - * - */ - virtual SVGTransform createSVGTransformFromMatrix(const SVGMatrix &matrix) - { - SVGTransform transform; - transform.setMatrix(matrix); - return transform; - } - - /** - * - */ - virtual SVGTransform consolidate() - { - SVGMatrix matrix; - for (unsigned int i=0 ; i<items.size() ; i++) - matrix = matrix.multiply(items[i].getMatrix()); - SVGTransform transform; - transform.setMatrix(matrix); - items.clear(); - items.push_back(transform); - return transform; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTransformList() - {} - - /** - * - */ - SVGTransformList(const SVGTransformList &other) : - items (other.items) - { - } - - /** - * - */ - virtual ~SVGTransformList() {} - -protected: - - std::vector<SVGTransform> items; - -}; - - - - - - -/*######################################################################### -## SVGAnimatedTransformList -#########################################################################*/ - -/** - * - */ -class SVGAnimatedTransformList -{ -public: - - /** - * - */ - virtual SVGTransformList getBaseVal() - { return baseVal; } - - /** - * - */ - virtual SVGTransformList getAnimVal() - { return animVal; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedTransformList() - {} - - /** - * - */ - SVGAnimatedTransformList(const SVGAnimatedTransformList &other) : - baseVal (other.baseVal), - animVal (other.animVal) - { - } - - /** - * - */ - virtual ~SVGAnimatedTransformList() {} - -protected: - - SVGTransformList baseVal; - SVGTransformList animVal; - -}; - - - - -/*######################################################################### -## SVGAnimatedBoolean -#########################################################################*/ - -/** - * - */ -class SVGAnimatedBoolean -{ -public: - - /** - * - */ - virtual bool getBaseVal() - { - return baseVal; - } - - /** - * - */ - virtual void setBaseVal(bool val) throw (DOMException) - { - baseVal = val; - } - - /** - * - */ - virtual bool getAnimVal() - { - return animVal; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedBoolean() - { - baseVal = animVal = false; - } - - /** - * - */ - SVGAnimatedBoolean(const SVGAnimatedBoolean &other) - { - baseVal = other.baseVal; - animVal = other.animVal; - } - - /** - * - */ - virtual ~SVGAnimatedBoolean() {} - -protected: - - bool baseVal, animVal; - -}; - - - - -/*######################################################################### -## SVGAnimatedString -#########################################################################*/ - -/** - * - */ -class SVGAnimatedString -{ -public: - - /** - * - */ - virtual DOMString getBaseVal() - { - return baseVal; - } - - /** - * - */ - virtual void setBaseVal(const DOMString &val) - throw (DOMException) - { - baseVal = val; - } - - /** - * - */ - virtual DOMString getAnimVal() - { - return animVal; - } - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGAnimatedString() - { - baseVal = ""; - animVal = ""; - } - - /** - * - */ - SVGAnimatedString(const SVGAnimatedString &other) - { - baseVal = other.baseVal; - animVal = other.animVal; - } - - /** - * - */ - virtual ~SVGAnimatedString() {} - -protected: - - DOMString baseVal, animVal; - -}; - - - - - -/*######################################################################### -## SVGStringList -#########################################################################*/ - -/** - * - */ -class SVGStringList -{ -public: - - - /** - * - */ - virtual unsigned long getNumberOfItems() - { - return items.size(); - } - - /** - * - */ - virtual void clear () throw( DOMException ) - { - items.clear(); - } - - /** - * - */ - virtual DOMString initialize ( const DOMString& newItem ) - throw( DOMException, SVGException ) - { - items.clear(); - items.push_back(newItem); - return newItem; - } - - /** - * - */ - virtual DOMString getItem ( unsigned long index ) - throw( DOMException ) - { - if (index >= items.size()) - return ""; - return items[index]; - } - - /** - * - */ - virtual DOMString insertItemBefore ( const DOMString& newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index>=items.size()) - { - items.push_back(newItem); - } - else - { - std::vector<DOMString>::iterator iter = items.begin() + index; - items.insert(iter, newItem); - } - return newItem; - } - - /** - * - */ - virtual DOMString replaceItem ( const DOMString& newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index>=items.size()) - return ""; - std::vector<DOMString>::iterator iter = items.begin() + index; - *iter = newItem; - return newItem; - } - - /** - * - */ - virtual DOMString removeItem ( unsigned long index ) - throw( DOMException ) - { - if (index>=items.size()) - return ""; - std::vector<DOMString>::iterator iter = items.begin() + index; - DOMString oldstr = *iter; - items.erase(iter); - return oldstr; - } - - /** - * - */ - virtual DOMString appendItem ( const DOMString& newItem ) - throw( DOMException, SVGException ) - { - items.push_back(newItem); - return newItem; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGStringList() {} - - /** - * - */ - SVGStringList(const SVGStringList &other) : - items (other.items) - { - } - - /** - * - */ - virtual ~SVGStringList() {} - -protected: - - std::vector<DOMString>items; - -}; - - - - - -/*######################################################################### -## SVGAnimatedEnumeration -#########################################################################*/ - -/** - * - */ -class SVGAnimatedEnumeration -{ -public: - - /** - * - */ - virtual unsigned short getBaseVal() - { - return baseVal; - } - - /** - * - */ - virtual void setBaseVal(unsigned short val) - throw (DOMException) - { - baseVal = val; - } - - /** - * - */ - virtual unsigned short getAnimVal() - { - return animVal; - } - - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGAnimatedEnumeration() - { - baseVal = animVal = 0; - } - - /** - * - */ - SVGAnimatedEnumeration(const SVGAnimatedEnumeration &other) - { - baseVal = other.baseVal; - animVal = other.animVal; - } - - /** - * - */ - virtual ~SVGAnimatedEnumeration() {} - -protected: - - int baseVal, animVal; - -}; - - - - - -/*######################################################################### -## SVGAnimatedInteger -#########################################################################*/ - -/** - * - */ -class SVGAnimatedInteger -{ -public: - - - /** - * - */ - virtual long getBaseVal() - { - return baseVal; - } - - /** - * - */ - virtual void setBaseVal(long val) throw (DOMException) - { - baseVal = val; - } - - /** - * - */ - virtual long getAnimVal() - { - return animVal; - } - - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGAnimatedInteger() - { baseVal = animVal = 0L;} - - - /** - * - */ - SVGAnimatedInteger(long value) - { - baseVal = value; - animVal = 0L; - } - - /** - * - */ - SVGAnimatedInteger(long baseValArg, long animValArg) - { - baseVal = baseValArg; - animVal = animValArg; - } - - - /** - * - */ - SVGAnimatedInteger(const SVGAnimatedInteger &other) - { - baseVal = other.baseVal; - animVal = other.animVal; - } - - /** - * - */ - virtual ~SVGAnimatedInteger() {} - -protected: - - long baseVal, animVal; - -}; - - - - - -/*######################################################################### -## SVGNumber -#########################################################################*/ - -/** - * - */ -class SVGNumber -{ -public: - - - /** - * - */ - virtual double getValue() - { - return value; - } - - /** - * - */ - virtual void setValue(double val) throw (DOMException) - { - value = val; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGNumber() - { - value = 0.0; - } - - /** - * - */ - SVGNumber(const SVGNumber &other) - { - value = other.value; - } - - /** - * - */ - virtual ~SVGNumber() {} - -protected: - - double value; - -}; - - - - - -/*######################################################################### -## SVGAnimatedNumber -#########################################################################*/ - -/** - * - */ -class SVGAnimatedNumber -{ -public: - - - - /** - * - */ - virtual double getBaseVal() - { - return baseVal; - } - - /** - * - */ - virtual void setBaseVal(double val) throw (DOMException) - { - baseVal = val; - } - - /** - * - */ - virtual double getAnimVal() - { - return animVal; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedNumber() - { - baseVal = animVal = 0.0; - } - - - /** - * - */ - SVGAnimatedNumber(double val) - { - baseVal = val; - animVal = 0.0; - } - - - /** - * - */ - SVGAnimatedNumber(double baseValArg, double animValArg) - { - baseVal = baseValArg; - animVal = animValArg; - } - - /** - * - */ - SVGAnimatedNumber(const SVGAnimatedNumber &other) - { - baseVal = other.baseVal; - animVal = other.animVal; - } - - /** - * - */ - virtual ~SVGAnimatedNumber() {} - -protected: - - double baseVal, animVal; - -}; - - - - - -/*######################################################################### -## SVGNumberList -#########################################################################*/ - -/** - * - */ -class SVGNumberList -{ -public: - - /** - * - */ - virtual unsigned long getNumberOfItems() - { - return items.size(); - } - - - /** - * - */ - virtual void clear() throw( DOMException ) - { - items.clear(); - } - - /** - * - */ - virtual SVGNumber initialize (const SVGNumber &newItem) - throw( DOMException, SVGException ) - { - items.clear(); - items.push_back(newItem); - return newItem; - } - - /** - * - */ - virtual SVGNumber getItem ( unsigned long index ) - throw( DOMException ) - { - if (index>=items.size()) - { - SVGNumber num; - return num; - } - return items[index]; - } - - /** - * - */ - virtual SVGNumber insertItemBefore ( const SVGNumber &newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index>=items.size()) - { - items.push_back(newItem); - } - else - { - std::vector<SVGNumber>::iterator iter = items.begin() + index; - items.insert(iter, newItem); - } - return newItem; - } - - /** - * - */ - virtual SVGNumber replaceItem ( const SVGNumber &newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index>=items.size()) - { - SVGNumber num; - return num; - } - std::vector<SVGNumber>::iterator iter = items.begin() + index; - *iter = newItem; - return newItem; - } - - /** - * - */ - virtual SVGNumber removeItem ( unsigned long index ) - throw( DOMException ) - { - if (index>=items.size()) - { - SVGNumber num; - return num; - } - std::vector<SVGNumber>::iterator iter = items.begin() + index; - SVGNumber oldval = *iter; - items.erase(iter); - return oldval; - } - - /** - * - */ - virtual SVGNumber appendItem ( const SVGNumber &newItem ) - throw( DOMException, SVGException ) - { - items.push_back(newItem); - return newItem; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGNumberList() {} - - /** - * - */ - SVGNumberList(const SVGNumberList &other) : - items (other.items) - { - } - - /** - * - */ - virtual ~SVGNumberList() {} - -protected: - - std::vector<SVGNumber>items; - -}; - - - - - -/*######################################################################### -## SVGAnimatedNumberList -#########################################################################*/ - -/** - * - */ -class SVGAnimatedNumberList -{ -public: - - - /** - * - */ - virtual SVGNumberList &getBaseVal() - { - return baseVal; - } - - /** - * - */ - virtual SVGNumberList &getAnimVal() - { - return animVal; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedNumberList() {} - - /** - * - */ - SVGAnimatedNumberList(const SVGAnimatedNumberList &other) : - baseVal (other.baseVal), - animVal (other.animVal) - { - } - - /** - * - */ - virtual ~SVGAnimatedNumberList() {} - -protected: - - SVGNumberList baseVal; - SVGNumberList animVal; - -}; - - - - - - -/*######################################################################### -## SVGLength -#########################################################################*/ - -/** - * - */ -class SVGLength -{ -public: - - /** - * Length Unit Types - */ - typedef enum - { - SVG_LENGTHTYPE_UNKNOWN = 0, - SVG_LENGTHTYPE_NUMBER = 1, - SVG_LENGTHTYPE_PERCENTAGE = 2, - SVG_LENGTHTYPE_EMS = 3, - SVG_LENGTHTYPE_EXS = 4, - SVG_LENGTHTYPE_PX = 5, - SVG_LENGTHTYPE_CM = 6, - SVG_LENGTHTYPE_MM = 7, - SVG_LENGTHTYPE_IN = 8, - SVG_LENGTHTYPE_PT = 9, - SVG_LENGTHTYPE_PC = 10 - } LengthUnitType; - - - /** - * - */ - virtual unsigned short getUnitType( ) - { - return unitType; - } - - /** - * - */ - virtual double getValue( ) - { - return value; - } - - /** - * - */ - virtual void setValue( double val ) throw (DOMException) - { - value = val; - } - - /** - * - */ - virtual double getValueInSpecifiedUnits( ) - { - double result = 0.0; - //fill this in - return result; - } - - /** - * - */ - virtual void setValueInSpecifiedUnits( double /*val*/ ) - throw (DOMException) - { - //fill this in - } - - /** - * - */ - virtual DOMString getValueAsString( ) - { - DOMString ret; - char buf[32]; - snprintf(buf, 31, "%f", value); - ret.append(buf); - return ret; - } - - /** - * - */ - virtual void setValueAsString( const DOMString& /*val*/ ) - throw (DOMException) - { - } - - - /** - * - */ - virtual void newValueSpecifiedUnits ( unsigned short /*unitType*/, double /*val*/ ) - { - } - - /** - * - */ - virtual void convertToSpecifiedUnits ( unsigned short /*unitType*/ ) - { - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGLength() - { - unitType = SVG_LENGTHTYPE_UNKNOWN; - value = 0.0; - } - - - /** - * - */ - SVGLength(const SVGLength &other) - { - unitType = other.unitType; - value = other.value; - } - - /** - * - */ - virtual ~SVGLength() {} - -protected: - - int unitType; - - double value; - -}; - - - - - - -/*######################################################################### -## SVGAnimatedLength -#########################################################################*/ - -/** - * - */ -class SVGAnimatedLength -{ -public: - - /** - * - */ - virtual SVGLength &getBaseVal() - { - return baseVal; - } - - /** - * - */ - virtual SVGLength &getAnimVal() - { - return animVal; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedLength() {} - - /** - * - */ - SVGAnimatedLength(const SVGAnimatedLength &other) : - baseVal (other.baseVal), - animVal (other.animVal) - { - } - - /** - * - */ - virtual ~SVGAnimatedLength() {} - -protected: - - SVGLength baseVal, animVal; - -}; - - - - - - -/*######################################################################### -## SVGLengthList -#########################################################################*/ - -/** - * - */ -class SVGLengthList -{ -public: - - /** - * - */ - virtual unsigned long getNumberOfItems() - { - return items.size(); - } - - - /** - * - */ - virtual void clear ( ) throw( DOMException ) - { - items.clear(); - } - - /** - * - */ - virtual SVGLength initialize (const SVGLength &newItem ) - throw( DOMException, SVGException ) - { - items.clear(); - items.push_back(newItem); - return newItem; - } - - /** - * - */ - virtual SVGLength getItem (unsigned long index) - throw( DOMException ) - { - if (index>=items.size()) - { - SVGLength ret; - return ret; - } - return items[index]; - } - - /** - * - */ - virtual SVGLength insertItemBefore (const SVGLength &newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index>=items.size()) - { - items.push_back(newItem); - } - else - { - std::vector<SVGLength>::iterator iter = items.begin() + index; - items.insert(iter, newItem); - } - return newItem; - } - - /** - * - */ - virtual SVGLength replaceItem (const SVGLength &newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index>=items.size()) - { - SVGLength ret; - return ret; - } - std::vector<SVGLength>::iterator iter = items.begin() + index; - *iter = newItem; - return newItem; - } - - /** - * - */ - virtual SVGLength removeItem (unsigned long index ) - throw( DOMException ) - { - if (index>=items.size()) - { - SVGLength ret; - return ret; - } - std::vector<SVGLength>::iterator iter = items.begin() + index; - SVGLength oldval = *iter; - items.erase(iter); - return oldval; - } - - /** - * - */ - virtual SVGLength appendItem (const SVGLength &newItem ) - throw( DOMException, SVGException ) - { - items.push_back(newItem); - return newItem; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGLengthList() {} - - /** - * - */ - SVGLengthList(const SVGLengthList &other) : - items (other.items) - { - } - - /** - * - */ - virtual ~SVGLengthList() {} - -protected: - - std::vector<SVGLength>items; - -}; - - - - - - -/*######################################################################### -## SVGAnimatedLengthList -#########################################################################*/ - -/** - * - */ -class SVGAnimatedLengthList -{ -public: - - /** - * - */ - virtual SVGLengthList &getBaseVal() - { - return baseVal; - } - - /** - * - */ - virtual SVGLengthList &getAnimVal() - { - return animVal; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedLengthList() {} - - /** - * - */ - SVGAnimatedLengthList(const SVGAnimatedLengthList &other) : - baseVal (other.baseVal), - animVal (other.animVal) - { - } - - /** - * - */ - virtual ~SVGAnimatedLengthList() {} - -protected: - - SVGLengthList baseVal, animVal; - -}; - - - - - - -/*######################################################################### -## SVGAngle -#########################################################################*/ - -/** - * - */ -class SVGAngle -{ -public: - - /** - * Angle Unit Types - */ - typedef enum - { - SVG_ANGLETYPE_UNKNOWN = 0, - SVG_ANGLETYPE_UNSPECIFIED = 1, - SVG_ANGLETYPE_DEG = 2, - SVG_ANGLETYPE_RAD = 3, - SVG_ANGLETYPE_GRAD = 4 - } AngleUnitType; - - - - /** - * - */ - virtual unsigned short getUnitType() - { - return unitType; - } - - /** - * - */ - virtual double getValue() - { - return value; - } - - /** - * - */ - virtual void setValue(double val) throw (DOMException) - { - value = val; - } - - /** - * - */ - virtual double getValueInSpecifiedUnits() - { - double result = 0.0; - //convert here - return result; - } - - /** - * - */ - virtual void setValueInSpecifiedUnits(double /*val*/) - throw (DOMException) - { - //do conversion - } - - /** - * - */ - virtual DOMString getValueAsString() - { - DOMString result; - char buf[32]; - snprintf(buf, 31, "%f", value); - result.append(buf); - return result; - } - - /** - * - */ - virtual void setValueAsString(const DOMString &/*val*/) - throw (DOMException) - { - //convert here - } - - - /** - * - */ - virtual void newValueSpecifiedUnits (unsigned short /*unitType*/, - double /*valueInSpecifiedUnits*/ ) - { - //convert here - } - - /** - * - */ - virtual void convertToSpecifiedUnits (unsigned short /*unitType*/ ) - { - //convert here - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAngle() - { - unitType = SVG_ANGLETYPE_UNKNOWN; - value = 0.0; - } - - /** - * - */ - SVGAngle(const SVGAngle &other) - { - unitType = other.unitType; - value = other.value; - } - - /** - * - */ - virtual ~SVGAngle() {} - -protected: - - int unitType; - - double value; - -}; - - - - - - -/*######################################################################### -## SVGAnimatedAngle -#########################################################################*/ - -/** - * - */ -class SVGAnimatedAngle -{ -public: - - /** - * - */ - virtual SVGAngle getBaseVal() - { - return baseVal; - } - - /** - * - */ - virtual SVGAngle getAnimVal() - { - return animVal; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedAngle() {} - - /** - * - */ - SVGAnimatedAngle(const SVGAngle &angle) : - baseVal (angle) - {} - - /** - * - */ - SVGAnimatedAngle(const SVGAnimatedAngle &other) : - baseVal (other.baseVal), - animVal (other.animVal) - { - } - - /** - * - */ - virtual ~SVGAnimatedAngle() {} - -protected: - - SVGAngle baseVal, animVal; - -}; - - - - - - -/*######################################################################### -## SVGICCColor -#########################################################################*/ - -/** - * - */ -class SVGICCColor -{ -public: - - /** - * - */ - virtual DOMString getColorProfile() - { - return colorProfile; - } - - /** - * - */ - virtual void setColorProfile(const DOMString &val) throw (DOMException) - { - colorProfile = val; - } - - /** - * - */ - virtual SVGNumberList &getColors() - { - return colors; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGICCColor() {} - - /** - * - */ - SVGICCColor(const SVGICCColor &other) : - colorProfile (other.colorProfile), - colors (other.colors) - { - } - - /** - * - */ - virtual ~SVGICCColor() {} - -protected: - - DOMString colorProfile; - SVGNumberList colors; - -}; - - -/*######################################################################### -## SVGColor -#########################################################################*/ - -/** - * - */ -class SVGColor : virtual public css::CSSValue -{ -public: - - - /** - * Color Types - */ - typedef enum - { - SVG_COLORTYPE_UNKNOWN = 0, - SVG_COLORTYPE_RGBCOLOR = 1, - SVG_COLORTYPE_RGBCOLOR_ICCCOLOR = 2, - SVG_COLORTYPE_CURRENTCOLOR = 3 - } ColorType; - - - /** - * - */ - virtual unsigned short getColorType() - { - return colorType; - } - - /** - * - */ - virtual css::RGBColor getRgbColor() - { - css::RGBColor col; - return col; - } - - /** - * - */ - virtual SVGICCColor getIccColor() - { - SVGICCColor col; - return col; - } - - - /** - * - */ - virtual void setRGBColor (const DOMString& /*rgbColor*/ ) - throw( SVGException ) - { - } - - /** - * - */ - virtual void setRGBColorICCColor (const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/ ) - throw( SVGException ) - { - } - - /** - * - */ - virtual void setColor (unsigned short /*colorType*/, - const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/ ) - throw( SVGException ) - { - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGColor() - { - colorType = SVG_COLORTYPE_UNKNOWN; - } - - /** - * - */ - SVGColor(const SVGColor &other) : css::CSSValue(other) - { - colorType = other.colorType; - } - - /** - * - */ - virtual ~SVGColor() {} - -protected: - - int colorType; - -}; - - - - - - - - - - -/*######################################################################### -## SVGRect -#########################################################################*/ - -/** - * - */ -class SVGRect -{ -public: - - /** - * - */ - virtual double getX() - { - return x; - } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { - x = val; - } - - /** - * - */ - virtual double getY() - { - return y; - } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { - y = val; - } - - /** - * - */ - virtual double getWidth() - { - return width; - } - - /** - * - */ - virtual void setWidth(double val) throw (DOMException) - { - width = val; - } - - /** - * - */ - virtual double getHeight() - { - return height; - } - - /** - * - */ - virtual void setHeight(double val) throw (DOMException) - { - height = val; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGRect() - { - x = y = width = height = 0.0; - } - - /** - * - */ - SVGRect(const SVGRect &other) - { - x = other.x; - y = other.y; - width = other.width; - height = other.height; - } - - /** - * - */ - virtual ~SVGRect() {} - -protected: - - double x, y, width, height; - -}; - - - - - - -/*######################################################################### -## SVGAnimatedRect -#########################################################################*/ - -/** - * - */ -class SVGAnimatedRect -{ -public: - - /** - * - */ - virtual SVGRect &getBaseVal() - { - return baseVal; - } - - /** - * - */ - virtual SVGRect &getAnimVal() - { - return animVal; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedRect() - { - } - - /** - * - */ - SVGAnimatedRect(const SVGAnimatedRect &other) : - baseVal (other.baseVal), - animVal (other.animVal) - { - } - - /** - * - */ - virtual ~SVGAnimatedRect() {} - -protected: - - SVGRect baseVal, animVal; - -}; - - - -/*######################################################################### -## SVGPoint -#########################################################################*/ - -/** - * - */ -class SVGPoint -{ -public: - - - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - /** - * - */ - virtual SVGPoint matrixTransform(const SVGMatrix &/*matrix*/) - { - SVGPoint point; - return point; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPoint() - { x = y = 0; } - - /** - * - */ - SVGPoint(const SVGPoint &other) - { - x = other.x; - y = other.y; - } - - /** - * - */ - virtual ~SVGPoint() {} - -protected: - - double x, y; -}; - - - - - - -/*######################################################################### -## SVGPointList -#########################################################################*/ - -/** - * - */ -class SVGPointList -{ -public: - - /** - * - */ - virtual unsigned long getNumberOfItems() - { return items.size(); } - - /** - * - */ - virtual void clear() throw( DOMException ) - { items.clear(); } - - /** - * - */ - virtual SVGPoint initialize(const SVGPoint &newItem) - throw( DOMException, SVGException ) - { - items.clear(); - items.push_back(newItem); - return newItem; - } - - /** - * - */ - virtual SVGPoint getItem(unsigned long index ) - throw( DOMException ) - { - if (index >= items.size()) - { - SVGPoint point; - return point; - } - return items[index]; - } - - /** - * - */ - virtual SVGPoint insertItemBefore(const SVGPoint &newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index >= items.size()) - items.push_back(newItem); - else - { - std::vector<SVGPoint>::iterator iter = items.begin() + index; - items.insert(iter, newItem); - } - return newItem; - } - - /** - * - */ - virtual SVGPoint replaceItem(const SVGPoint &newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index >= items.size()) - { - SVGPoint point; - return point; - } - std::vector<SVGPoint>::iterator iter = items.begin() + index; - *iter = newItem; - return newItem; - } - - /** - * - */ - virtual SVGPoint removeItem(unsigned long index ) - throw( DOMException ) - { - if (index >= items.size()) - { - SVGPoint point; - return point; - } - std::vector<SVGPoint>::iterator iter = items.begin() + index; - SVGPoint oldItem = *iter; - items.erase(iter); - return oldItem; - } - - /** - * - */ - virtual SVGPoint appendItem(const SVGPoint &newItem) - throw( DOMException, SVGException ) - { - items.push_back(newItem); - return newItem; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPointList() {} - - - /** - * - */ - SVGPointList(const SVGPointList &other) : - items (other.items) - { - } - - - /** - * - */ - virtual ~SVGPointList() {} - -protected: - - std::vector<SVGPoint> items; - -}; - - - - -/*######################################################################### -## SVGUnitTypes -#########################################################################*/ - -/** - * - */ -class SVGUnitTypes -{ -public: - - /** - * Unit Types - */ - typedef enum - { - SVG_UNIT_TYPE_UNKNOWN = 0, - SVG_UNIT_TYPE_USERSPACEONUSE = 1, - SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2 - } UnitType; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGUnitTypes() {} - - /** - * - */ - virtual ~SVGUnitTypes() {} - -}; - - - - - - -/*######################################################################### -## SVGStylable -#########################################################################*/ - -/** - * - */ -class SVGStylable -{ -public: - - /** - * - */ - virtual SVGAnimatedString getClassName() - { - return className; - } - - /** - * - */ - virtual css::CSSStyleDeclaration getStyle() - { - return style; - } - - - /** - * - */ - virtual css::CSSValue getPresentationAttribute (const DOMString& /*name*/ ) - { - css::CSSValue val; - //perform a lookup - return val; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGStylable() {} - - /** - * - */ - SVGStylable(const SVGStylable &other) : - className (other.className), - style (other.style) - { - } - - /** - * - */ - virtual ~SVGStylable() {} - -protected: - - SVGAnimatedString className; - css::CSSStyleDeclaration style; - -}; - - -/*######################################################################### -## SVGLocatable -#########################################################################*/ - -/** - * - */ -class SVGLocatable -{ -public: - - /** - * - */ - virtual SVGElementPtr getNearestViewportElement() - { - SVGElementPtr result; - return result; - } - - /** - * - */ - virtual SVGElementPtr getFarthestViewportElement() - { - SVGElementPtr result; - return result; - } - - /** - * - */ - virtual SVGRect getBBox ( ) - { - return bbox; - } - - /** - * - */ - virtual SVGMatrix getCTM ( ) - { - return ctm; - } - - /** - * - */ - virtual SVGMatrix getScreenCTM ( ) - { - return screenCtm; - } - - /** - * - */ - virtual SVGMatrix getTransformToElement (const SVGElement &/*element*/) - throw( SVGException ) - { - SVGMatrix result; - //do calculations - return result; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGLocatable() {} - - /** - * - */ - SVGLocatable(const SVGLocatable &/*other*/) : - bbox(), - ctm(), - screenCtm() - { - } - - /** - * - */ - virtual ~SVGLocatable() {} - -protected: - - SVGRect bbox; - SVGMatrix ctm; - SVGMatrix screenCtm; - -}; - - - - - - -/*######################################################################### -## SVGTransformable -#########################################################################*/ - -/** - * - */ -class SVGTransformable : public SVGLocatable -{ -public: - - - /** - * - */ - virtual SVGAnimatedTransformList &getTransform() - { - return transforms; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTransformable() {} - - /** - * - */ - SVGTransformable(const SVGTransformable &other) : SVGLocatable(other), - transforms (other.transforms) - { - } - - /** - * - */ - virtual ~SVGTransformable() {} - -protected: - - SVGAnimatedTransformList transforms; -}; - - - - - - -/*######################################################################### -## SVGTests -#########################################################################*/ - -/** - * - */ -class SVGTests -{ -public: - - - /** - * - */ - virtual SVGStringList &getRequiredFeatures() - { - return requiredFeatures; - } - - /** - * - */ - virtual SVGStringList &getRequiredExtensions() - { - return requiredExtensions; - } - - /** - * - */ - virtual SVGStringList &getSystemLanguage() - { - return systemLanguage; - } - - - /** - * - */ - virtual bool hasExtension (const DOMString& /*extension*/ ) - { - return false; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGTests() {} - - /** - * - */ - SVGTests(const SVGTests &other) : - requiredFeatures (other.requiredFeatures), - requiredExtensions (other.requiredExtensions), - systemLanguage (other.systemLanguage) - { - } - - /** - * - */ - virtual ~SVGTests() {} - -protected: - - SVGStringList requiredFeatures; - SVGStringList requiredExtensions; - SVGStringList systemLanguage; - -}; - - - - - - -/*######################################################################### -## SVGLangSpace -#########################################################################*/ - -/** - * - */ -class SVGLangSpace -{ -public: - - - /** - * - */ - virtual DOMString getXmllang() - { - return xmlLang; - } - - /** - * - */ - virtual void setXmllang(const DOMString &val) - throw (DOMException) - { - xmlLang = val; - } - - /** - * - */ - virtual DOMString getXmlspace() - { - return xmlSpace; - } - - /** - * - */ - virtual void setXmlspace(const DOMString &val) - throw (DOMException) - { - xmlSpace = val; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGLangSpace() {} - - /** - * - */ - SVGLangSpace(const SVGLangSpace &other) - { - xmlLang = other.xmlLang; - xmlSpace = other.xmlSpace; - } - - /** - * - */ - virtual ~SVGLangSpace() {} - -protected: - - DOMString xmlLang; - DOMString xmlSpace; - -}; - - - - - - -/*######################################################################### -## SVGExternalResourcesRequired -#########################################################################*/ - -/** - * - */ -class SVGExternalResourcesRequired -{ -public: - - - /** - * - */ - virtual SVGAnimatedBoolean getExternalResourcesRequired() - { return required; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGExternalResourcesRequired() - { } - - - /** - * - */ - SVGExternalResourcesRequired(const SVGExternalResourcesRequired &other) : - required (other.required) - { - } - - /** - * - */ - virtual ~SVGExternalResourcesRequired() {} - -protected: - - SVGAnimatedBoolean required; - -}; - - - - - - -/*######################################################################### -## SVGPreserveAspectRatio -#########################################################################*/ - -/** - * - */ -class SVGPreserveAspectRatio -{ -public: - - - /** - * Alignment Types - */ - typedef enum - { - SVG_PRESERVEASPECTRATIO_UNKNOWN = 0, - SVG_PRESERVEASPECTRATIO_NONE = 1, - SVG_PRESERVEASPECTRATIO_XMINYMIN = 2, - SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3, - SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4, - SVG_PRESERVEASPECTRATIO_XMINYMID = 5, - SVG_PRESERVEASPECTRATIO_XMIDYMID = 6, - SVG_PRESERVEASPECTRATIO_XMAXYMID = 7, - SVG_PRESERVEASPECTRATIO_XMINYMAX = 8, - SVG_PRESERVEASPECTRATIO_XMIDYMAX = 9, - SVG_PRESERVEASPECTRATIO_XMAXYMAX = 10 - } AlignmentType; - - - /** - * Meet-or-slice Types - */ - typedef enum - { - SVG_MEETORSLICE_UNKNOWN = 0, - SVG_MEETORSLICE_MEET = 1, - SVG_MEETORSLICE_SLICE = 2 - } MeetOrSliceType; - - - /** - * - */ - virtual unsigned short getAlign() - { return align; } - - /** - * - */ - virtual void setAlign(unsigned short val) throw (DOMException) - { align = val; } - - /** - * - */ - virtual unsigned short getMeetOrSlice() - { return meetOrSlice; } - - /** - * - */ - virtual void setMeetOrSlice(unsigned short val) throw (DOMException) - { meetOrSlice = val; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPreserveAspectRatio() - { - align = SVG_PRESERVEASPECTRATIO_UNKNOWN; - meetOrSlice = SVG_MEETORSLICE_UNKNOWN; - } - - /** - * - */ - SVGPreserveAspectRatio(const SVGPreserveAspectRatio &other) - { - align = other.align; - meetOrSlice = other.meetOrSlice; - } - - /** - * - */ - virtual ~SVGPreserveAspectRatio() {} - -protected: - - unsigned short align; - unsigned short meetOrSlice; - -}; - - - - - - -/*######################################################################### -## SVGAnimatedPreserveAspectRatio -#########################################################################*/ - -/** - * - */ -class SVGAnimatedPreserveAspectRatio -{ -public: - - - /** - * - */ - virtual SVGPreserveAspectRatio getBaseVal() - { return baseVal; } - - /** - * - */ - virtual SVGPreserveAspectRatio getAnimVal() - { return animVal; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedPreserveAspectRatio() {} - - /** - * - */ - SVGAnimatedPreserveAspectRatio(const SVGAnimatedPreserveAspectRatio &other) : - baseVal (other.baseVal), - animVal (other.animVal) - { - } - - /** - * - */ - virtual ~SVGAnimatedPreserveAspectRatio() {} - -protected: - - SVGPreserveAspectRatio baseVal; - SVGPreserveAspectRatio animVal; - -}; - - - - -/*######################################################################### -## SVGFitToViewBox -#########################################################################*/ - -/** - * - */ -class SVGFitToViewBox -{ -public: - - /** - * - */ - virtual SVGAnimatedRect getViewBox() - { return viewBox; } - - /** - * - */ - virtual SVGAnimatedPreserveAspectRatio getPreserveAspectRatio() - { return preserveAspectRatio; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGFitToViewBox() - {} - - /** - * - */ - - SVGFitToViewBox(const SVGFitToViewBox &other) : - viewBox (other.viewBox), - preserveAspectRatio (other.preserveAspectRatio) - { - } - - /** - * - */ - virtual ~SVGFitToViewBox() {} - -protected: - - SVGAnimatedRect viewBox; - SVGAnimatedPreserveAspectRatio preserveAspectRatio; - -}; - - -/*######################################################################### -## SVGZoomAndPan -#########################################################################*/ - -/** - * - */ -class SVGZoomAndPan -{ -public: - - - /** - * Zoom and Pan Types - */ - typedef enum - { - SVG_ZOOMANDPAN_UNKNOWN = 0, - SVG_ZOOMANDPAN_DISABLE = 1, - SVG_ZOOMANDPAN_MAGNIFY = 2 - } ZoomAndPanType; - - - /** - * - */ - virtual unsigned short getZoomAndPan() - { return zoomAndPan; } - - /** - * - */ - virtual void setZoomAndPan(unsigned short val) throw (DOMException) - { zoomAndPan = val; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGZoomAndPan() - { zoomAndPan = SVG_ZOOMANDPAN_UNKNOWN; } - - /** - * - */ - SVGZoomAndPan(const SVGZoomAndPan &other) - { zoomAndPan = other.zoomAndPan; } - - /** - * - */ - virtual ~SVGZoomAndPan() {} - -protected: - - unsigned short zoomAndPan; - -}; - - - - - - -/*######################################################################### -## SVGViewSpec -#########################################################################*/ - -/** - * - */ -class SVGViewSpec : public SVGZoomAndPan, - public SVGFitToViewBox -{ -public: - - /** - * - */ - virtual SVGTransformList getTransform() - { return transform; } - - /** - * - */ - virtual SVGElementPtr getViewTarget() - { return viewTarget; } - - /** - * - */ - virtual DOMString getViewBoxString() - { - DOMString ret; - return ret; - } - - /** - * - */ - virtual DOMString getPreserveAspectRatioString() - { - DOMString ret; - return ret; - } - - /** - * - */ - virtual DOMString getTransformString() - { - DOMString ret; - return ret; - } - - /** - * - */ - virtual DOMString getViewTargetString() - { - DOMString ret; - return ret; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGViewSpec() : - viewTarget (NULL), - transform () - { - } - - /** - * - */ - SVGViewSpec(const SVGViewSpec &other) : SVGZoomAndPan(other), SVGFitToViewBox(other), - viewTarget (other.viewTarget), - transform (other.transform) - { - } - - /** - * - */ - virtual ~SVGViewSpec() {} - -protected: - - SVGElementPtr viewTarget; - SVGTransformList transform; -}; - - - - - - -/*######################################################################### -## SVGURIReference -#########################################################################*/ - -/** - * - */ -class SVGURIReference -{ -public: - - /** - * - */ - virtual SVGAnimatedString getHref() - { return href; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGURIReference() : - href () - {} - - /** - * - */ - SVGURIReference(const SVGURIReference &other) : - href (other.href) - { - } - - /** - * - */ - virtual ~SVGURIReference() {} - -protected: - - SVGAnimatedString href; - -}; - - - - - - -/*######################################################################### -## SVGCSSRule -#########################################################################*/ - -/** - * - */ -class SVGCSSRule : public css::CSSRule -{ -public: - - - /** - * Additional CSS RuleType to support ICC color specifications - */ - typedef enum - { - COLOR_PROFILE_RULE = 7 - } ColorProfileRuleType; - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGCSSRule() - { type = COLOR_PROFILE_RULE; } - - /** - * - */ - SVGCSSRule(const SVGCSSRule &other) : css::CSSRule(other) - { type = COLOR_PROFILE_RULE; } - - /** - * - */ - virtual ~SVGCSSRule() {} - -}; - - - -/*######################################################################### -## SVGRenderingIntent -#########################################################################*/ - -/** - * - */ -class SVGRenderingIntent -{ -public: - - /** - * Rendering Intent Types - */ - typedef enum - { - RENDERING_INTENT_UNKNOWN = 0, - RENDERING_INTENT_AUTO = 1, - RENDERING_INTENT_PERCEPTUAL = 2, - RENDERING_INTENT_RELATIVE_COLORIMETRIC = 3, - RENDERING_INTENT_SATURATION = 4, - RENDERING_INTENT_ABSOLUTE_COLORIMETRIC = 5 - } RenderingIntentType; - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGRenderingIntent() - { - renderingIntentType = RENDERING_INTENT_UNKNOWN; - } - - /** - * - */ - SVGRenderingIntent(const SVGRenderingIntent &other) - { - renderingIntentType = other.renderingIntentType; - } - - /** - * - */ - virtual ~SVGRenderingIntent() {} - -protected: - - unsigned short renderingIntentType; -}; - - - - - - - -/*######################################################################### -########################################################################### -## P A T H S E G M E N T S -########################################################################### -#########################################################################*/ - -static char const *const pathSegLetters[] = -{ - "@", // PATHSEG_UNKNOWN, - "z", // PATHSEG_CLOSEPATH - "M", // PATHSEG_MOVETO_ABS - "m", // PATHSEG_MOVETO_REL, - "L", // PATHSEG_LINETO_ABS - "l", // PATHSEG_LINETO_REL - "C", // PATHSEG_CURVETO_CUBIC_ABS - "c", // PATHSEG_CURVETO_CUBIC_REL - "Q", // PATHSEG_CURVETO_QUADRATIC_ABS, - "q", // PATHSEG_CURVETO_QUADRATIC_REL - "A", // PATHSEG_ARC_ABS - "a", // PATHSEG_ARC_REL, - "H", // PATHSEG_LINETO_HORIZONTAL_ABS, - "h", // PATHSEG_LINETO_HORIZONTAL_REL - "V", // PATHSEG_LINETO_VERTICAL_ABS - "v", // PATHSEG_LINETO_VERTICAL_REL - "S", // PATHSEG_CURVETO_CUBIC_SMOOTH_ABS - "s", // PATHSEG_CURVETO_CUBIC_SMOOTH_REL - "T", // PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS - "t" // PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL -}; - -/*######################################################################### -## SVGPathSeg -#########################################################################*/ - -/** - * - */ -class SVGPathSeg -{ -public: - - - - /** - * Path Segment Types - */ - typedef enum - { - PATHSEG_UNKNOWN = 0, - PATHSEG_CLOSEPATH = 1, - PATHSEG_MOVETO_ABS = 2, - PATHSEG_MOVETO_REL = 3, - PATHSEG_LINETO_ABS = 4, - PATHSEG_LINETO_REL = 5, - PATHSEG_CURVETO_CUBIC_ABS = 6, - PATHSEG_CURVETO_CUBIC_REL = 7, - PATHSEG_CURVETO_QUADRATIC_ABS = 8, - PATHSEG_CURVETO_QUADRATIC_REL = 9, - PATHSEG_ARC_ABS = 10, - PATHSEG_ARC_REL = 11, - PATHSEG_LINETO_HORIZONTAL_ABS = 12, - PATHSEG_LINETO_HORIZONTAL_REL = 13, - PATHSEG_LINETO_VERTICAL_ABS = 14, - PATHSEG_LINETO_VERTICAL_REL = 15, - PATHSEG_CURVETO_CUBIC_SMOOTH_ABS = 16, - PATHSEG_CURVETO_CUBIC_SMOOTH_REL = 17, - PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS = 18, - PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL = 19 - } PathSegmentType; - - /** - * - */ - virtual unsigned short getPathSegType() - { return type; } - - /** - * - */ - virtual DOMString getPathSegTypeAsLetter() - { - int typ = type; - if (typ<0 || typ>PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL) - typ = PATHSEG_UNKNOWN; - char const *ch = pathSegLetters[typ]; - DOMString letter = ch; - return letter; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSeg() - { type = PATHSEG_UNKNOWN; } - - /** - * - */ - SVGPathSeg(const SVGPathSeg &other) - { - type = other.type; - } - - /** - * - */ - virtual ~SVGPathSeg() {} - -protected: - - int type; - -}; - - - - - - -/*######################################################################### -## SVGPathSegClosePath -#########################################################################*/ - -/** - * - */ -class SVGPathSegClosePath : public SVGPathSeg -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegClosePath() - { - type = PATHSEG_CLOSEPATH; - } - - /** - * - */ - SVGPathSegClosePath(const SVGPathSegClosePath &other) : SVGPathSeg(other) - { - type = PATHSEG_CLOSEPATH; - } - - /** - * - */ - virtual ~SVGPathSegClosePath() {} - -}; - - - - -/*######################################################################### -## SVGPathSegMovetoAbs -#########################################################################*/ - -/** - * - */ -class SVGPathSegMovetoAbs : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegMovetoAbs() - { - type = PATHSEG_MOVETO_ABS; - x = y = 0.0; - } - - /** - * - */ - SVGPathSegMovetoAbs(double xArg, double yArg) - { - type = PATHSEG_MOVETO_ABS; - x = xArg; y = yArg; - } - - /** - * - */ - SVGPathSegMovetoAbs(const SVGPathSegMovetoAbs &other) : SVGPathSeg(other) - { - type = PATHSEG_MOVETO_ABS; - x = other.x; y = other.y; - } - - /** - * - */ - virtual ~SVGPathSegMovetoAbs() {} - -protected: - - double x,y; - -}; - - - - - - -/*######################################################################### -## SVGPathSegMovetoRel -#########################################################################*/ - -/** - * - */ -class SVGPathSegMovetoRel : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegMovetoRel() - { - type = PATHSEG_MOVETO_REL; - x = y = 0.0; - } - - - /** - * - */ - SVGPathSegMovetoRel(double xArg, double yArg) - { - type = PATHSEG_MOVETO_REL; - x = xArg; y = yArg; - } - - /** - * - */ - SVGPathSegMovetoRel(const SVGPathSegMovetoRel &other) : SVGPathSeg(other) - { - type = PATHSEG_MOVETO_REL; - x = other.x; y = other.y; - } - - /** - * - */ - virtual ~SVGPathSegMovetoRel() {} - -protected: - - double x,y; -}; - - - - - - -/*######################################################################### -## SVGPathSegLinetoAbs -#########################################################################*/ - -/** - * - */ -class SVGPathSegLinetoAbs : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegLinetoAbs() - { - type = PATHSEG_LINETO_ABS; - x = y = 0.0; - } - - - /** - * - */ - SVGPathSegLinetoAbs(double xArg, double yArg) - { - type = PATHSEG_LINETO_ABS; - x = xArg; y = yArg; - } - - /** - * - */ - SVGPathSegLinetoAbs(const SVGPathSegLinetoAbs &other) : SVGPathSeg(other) - { - type = PATHSEG_LINETO_ABS; - x = other.x; y = other.y; - } - - /** - * - */ - virtual ~SVGPathSegLinetoAbs() {} - -protected: - - double x,y; -}; - - - - - - -/*######################################################################### -## SVGPathSegLinetoRel -#########################################################################*/ - -/** - * - */ -class SVGPathSegLinetoRel : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegLinetoRel() - { - type = PATHSEG_LINETO_REL; - x = y = 0.0; - } - - - /** - * - */ - SVGPathSegLinetoRel(double xArg, double yArg) - { - type = PATHSEG_LINETO_REL; - x = xArg; y = yArg; - } - - /** - * - */ - SVGPathSegLinetoRel(const SVGPathSegLinetoRel &other) : SVGPathSeg(other) - { - type = PATHSEG_LINETO_REL; - x = other.x; y = other.y; - } - - /** - * - */ - virtual ~SVGPathSegLinetoRel() {} - -protected: - - double x,y; -}; - - - - - - -/*######################################################################### -## SVGPathSegCurvetoCubicAbs -#########################################################################*/ - -/** - * - */ -class SVGPathSegCurvetoCubicAbs : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - /** - * - */ - virtual double getX1() - { return x1; } - - /** - * - */ - virtual void setX1(double val) throw (DOMException) - { x1 = val; } - - /** - * - */ - virtual double getY1() - { return y1; } - - /** - * - */ - virtual void setY1(double val) throw (DOMException) - { y1 = val; } - - - /** - * - */ - virtual double getX2() - { return x2; } - - /** - * - */ - virtual void setX2(double val) throw (DOMException) - { x2 = val; } - - /** - * - */ - virtual double getY2() - { return y2; } - - /** - * - */ - virtual void setY2(double val) throw (DOMException) - { y2 = val; } - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGPathSegCurvetoCubicAbs() - { - type = PATHSEG_CURVETO_CUBIC_ABS; - x = y = x1 = y1 = x2 = y2 = 0.0; - } - - /** - * - */ - SVGPathSegCurvetoCubicAbs(double xArg, double yArg, - double x1Arg, double y1Arg, - double x2Arg, double y2Arg) - { - type = PATHSEG_CURVETO_CUBIC_ABS; - x = xArg; y = yArg; - x1 = x1Arg; y1 = y1Arg; - x2 = x2Arg; y2 = y2Arg; - } - - /** - * - */ - SVGPathSegCurvetoCubicAbs(const SVGPathSegCurvetoCubicAbs &other) - : SVGPathSeg(other) - { - type = PATHSEG_CURVETO_CUBIC_ABS; - x = other.x; y = other.y; - x1 = other.x1; y1 = other.y1; - x2 = other.x2; y2 = other.y2; - } - - /** - * - */ - virtual ~SVGPathSegCurvetoCubicAbs() {} - -protected: - - double x, y, x1, y1, x2, y2; - -}; - - - - - - -/*######################################################################### -## SVGPathSegCurvetoCubicRel -#########################################################################*/ - -/** - * - */ -class SVGPathSegCurvetoCubicRel : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - /** - * - */ - virtual double getX1() - { return x1; } - - /** - * - */ - virtual void setX1(double val) throw (DOMException) - { x1 = val; } - - /** - * - */ - virtual double getY1() - { return y1; } - - /** - * - */ - virtual void setY1(double val) throw (DOMException) - { y1 = val; } - - - /** - * - */ - virtual double getX2() - { return x2; } - - /** - * - */ - virtual void setX2(double val) throw (DOMException) - { x2 = val; } - - /** - * - */ - virtual double getY2() - { return y2; } - - /** - * - */ - virtual void setY2(double val) throw (DOMException) - { y2 = val; } - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGPathSegCurvetoCubicRel() - { - type = PATHSEG_CURVETO_CUBIC_REL; - x = y = x1 = y1 = x2 = y2 = 0.0; - } - - - /** - * - */ - SVGPathSegCurvetoCubicRel(double xArg, double yArg, - double x1Arg, double y1Arg, - double x2Arg, double y2Arg) - { - type = PATHSEG_CURVETO_CUBIC_REL; - x = xArg; y = yArg; - x1 = x1Arg; y1 = y1Arg; - x2 = x2Arg; y2 = y2Arg; - } - - /** - * - */ - SVGPathSegCurvetoCubicRel(const SVGPathSegCurvetoCubicRel &other) - : SVGPathSeg(other) - { - type = PATHSEG_CURVETO_CUBIC_REL; - x = other.x; y = other.y; - x1 = other.x1; y1 = other.y1; - x2 = other.x2; y2 = other.y2; - } - - /** - * - */ - virtual ~SVGPathSegCurvetoCubicRel() {} - -protected: - - double x, y, x1, y1, x2, y2; - -}; - - - - - - -/*######################################################################### -## SVGPathSegCurvetoQuadraticAbs -#########################################################################*/ - -/** - * - */ -class SVGPathSegCurvetoQuadraticAbs : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - /** - * - */ - virtual double getX1() - { return x1; } - - /** - * - */ - virtual void setX1(double val) throw (DOMException) - { x1 = val; } - - /** - * - */ - virtual double getY1() - { return y1; } - - /** - * - */ - virtual void setY1(double val) throw (DOMException) - { y1 = val; } - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGPathSegCurvetoQuadraticAbs() - { - type = PATHSEG_CURVETO_QUADRATIC_ABS; - x = y = x1 = y1 = 0.0; - } - - /** - * - */ - SVGPathSegCurvetoQuadraticAbs(double xArg, double yArg, - double x1Arg, double y1Arg) - { - type = PATHSEG_CURVETO_QUADRATIC_ABS; - x = xArg; y = yArg; - x1 = x1Arg; y1 = y1Arg; - } - - /** - * - */ - SVGPathSegCurvetoQuadraticAbs(const SVGPathSegCurvetoQuadraticAbs &other) - : SVGPathSeg(other) - { - type = PATHSEG_CURVETO_QUADRATIC_ABS; - x = other.x; y = other.y; - x1 = other.x1; y1 = other.y1; - } - - /** - * - */ - virtual ~SVGPathSegCurvetoQuadraticAbs() {} - -protected: - - double x, y, x1, y1; - -}; - - - - - - -/*######################################################################### -## SVGPathSegCurvetoQuadraticRel -#########################################################################*/ - -/** - * - */ -class SVGPathSegCurvetoQuadraticRel : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - /** - * - */ - virtual double getX1() - { return x1; } - - /** - * - */ - virtual void setX1(double val) throw (DOMException) - { x1 = val; } - - /** - * - */ - virtual double getY1() - { return y1; } - - /** - * - */ - virtual void setY1(double val) throw (DOMException) - { y1 = val; } - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGPathSegCurvetoQuadraticRel() - { - type = PATHSEG_CURVETO_QUADRATIC_REL; - x = y = x1 = y1 = 0.0; - } - - - /** - * - */ - SVGPathSegCurvetoQuadraticRel(double xArg, double yArg, - double x1Arg, double y1Arg) - { - type = PATHSEG_CURVETO_QUADRATIC_REL; - x = xArg; y = yArg; - x1 = x1Arg; y1 = y1Arg; - } - - /** - * - */ - SVGPathSegCurvetoQuadraticRel(const SVGPathSegCurvetoQuadraticRel &other) - : SVGPathSeg(other) - { - type = PATHSEG_CURVETO_QUADRATIC_REL; - x = other.x; y = other.y; - x1 = other.x1; y1 = other.y1; - } - - /** - * - */ - virtual ~SVGPathSegCurvetoQuadraticRel() {} - -protected: - - double x, y, x1, y1; - -}; - - - - - - -/*######################################################################### -## SVGPathSegArcAbs -#########################################################################*/ - -/** - * - */ -class SVGPathSegArcAbs : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - /** - * - */ - virtual double getR1() - { return r1; } - - /** - * - */ - virtual void setR1(double val) throw (DOMException) - { r1 = val; } - - /** - * - */ - virtual double getR2() - { return r2; } - - /** - * - */ - virtual void setR2(double val) throw (DOMException) - { r2 = val; } - - /** - * - */ - virtual double getAngle() - { return angle; } - - /** - * - */ - virtual void setAngle(double val) throw (DOMException) - { angle = val; } - - /** - * - */ - virtual bool getLargeArcFlag() - { return largeArcFlag; } - - /** - * - */ - virtual void setLargeArcFlag(bool val) throw (DOMException) - { largeArcFlag = val; } - - /** - * - */ - virtual bool getSweepFlag() - { return sweepFlag; } - - /** - * - */ - virtual void setSweepFlag(bool val) throw (DOMException) - { sweepFlag = val; } - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGPathSegArcAbs() - { - type = PATHSEG_ARC_ABS; - x = y = r1 = r2 = angle = 0.0; - largeArcFlag = sweepFlag = false; - } - - /** - * - */ - SVGPathSegArcAbs(double xArg, double yArg, - double r1Arg, double r2Arg, - double angleArg, - bool largeArcFlagArg, - bool sweepFlagArg ) - - { - type = PATHSEG_ARC_ABS; - x = xArg; y = yArg; - r1 = r1Arg; r2 = r2Arg; - angle = angleArg; - largeArcFlag = largeArcFlagArg; - sweepFlag = sweepFlagArg; - } - - /** - * - */ - SVGPathSegArcAbs(const SVGPathSegArcAbs &other) - : SVGPathSeg(other) - { - type = PATHSEG_ARC_ABS; - x = other.x; y = other.y; - r1 = other.r1; r2 = other.r2; - angle = other.angle; - largeArcFlag = other.largeArcFlag; - sweepFlag = other.sweepFlag; - } - - /** - * - */ - virtual ~SVGPathSegArcAbs() {} - -protected: - - double x, y, r1, r2, angle; - bool largeArcFlag; - bool sweepFlag; - -}; - - - -/*######################################################################### -## SVGPathSegArcRel -#########################################################################*/ - -/** - * - */ -class SVGPathSegArcRel : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - /** - * - */ - virtual double getR1() - { return r1; } - - /** - * - */ - virtual void setR1(double val) throw (DOMException) - { r1 = val; } - - /** - * - */ - virtual double getR2() - { return r2; } - - /** - * - */ - virtual void setR2(double val) throw (DOMException) - { r2 = val; } - - /** - * - */ - virtual double getAngle() - { return angle; } - - /** - * - */ - virtual void setAngle(double val) throw (DOMException) - { angle = val; } - - /** - * - */ - virtual bool getLargeArcFlag() - { return largeArcFlag; } - - /** - * - */ - virtual void setLargeArcFlag(bool val) throw (DOMException) - { largeArcFlag = val; } - - /** - * - */ - virtual bool getSweepFlag() - { return sweepFlag; } - - /** - * - */ - virtual void setSweepFlag(bool val) throw (DOMException) - { sweepFlag = val; } - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGPathSegArcRel() - { - type = PATHSEG_ARC_REL; - x = y = r1 = r2 = angle = 0.0; - largeArcFlag = sweepFlag = false; - } - - - /** - * - */ - SVGPathSegArcRel(double xArg, double yArg, - double r1Arg, double r2Arg, - double angleArg, - bool largeArcFlagArg, - bool sweepFlagArg ) - - { - type = PATHSEG_ARC_REL; - x = xArg; y = yArg; - r1 = r1Arg; r2 = r2Arg; - angle = angleArg; - largeArcFlag = largeArcFlagArg; - sweepFlag = sweepFlagArg; - } - - /** - * - */ - SVGPathSegArcRel(const SVGPathSegArcRel &other) - : SVGPathSeg(other) - { - type = PATHSEG_ARC_REL; - x = other.x; y = other.y; - r1 = other.r1; r2 = other.r2; - angle = other.angle; - largeArcFlag = other.largeArcFlag; - sweepFlag = other.sweepFlag; - } - - /** - * - */ - virtual ~SVGPathSegArcRel() {} - -protected: - - double x, y, r1, r2, angle; - bool largeArcFlag; - bool sweepFlag; - -}; - - - - - - -/*######################################################################### -## SVGPathSegLinetoHorizontalAbs -#########################################################################*/ - -/** - * - */ -class SVGPathSegLinetoHorizontalAbs : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegLinetoHorizontalAbs() - { - type = PATHSEG_LINETO_HORIZONTAL_ABS; - x = 0.0; - } - - - /** - * - */ - SVGPathSegLinetoHorizontalAbs(double xArg) - { - type = PATHSEG_LINETO_HORIZONTAL_ABS; - x = xArg; - } - - /** - * - */ - SVGPathSegLinetoHorizontalAbs(const SVGPathSegLinetoHorizontalAbs &other) - : SVGPathSeg(other) - { - type = PATHSEG_LINETO_HORIZONTAL_ABS; - x = other.x; - } - - /** - * - */ - virtual ~SVGPathSegLinetoHorizontalAbs() {} - -protected: - - double x; - -}; - - - - - - -/*######################################################################### -## SVGPathSegLinetoHorizontalRel -#########################################################################*/ - -/** - * - */ -class SVGPathSegLinetoHorizontalRel : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegLinetoHorizontalRel() - { - type = PATHSEG_LINETO_HORIZONTAL_REL; - x = 0.0; - } - - - /** - * - */ - SVGPathSegLinetoHorizontalRel(double xArg) - { - type = PATHSEG_LINETO_HORIZONTAL_REL; - x = xArg; - } - - /** - * - */ - SVGPathSegLinetoHorizontalRel(const SVGPathSegLinetoHorizontalRel &other) - : SVGPathSeg(other) - { - type = PATHSEG_LINETO_HORIZONTAL_REL; - x = other.x; - } - - /** - * - */ - virtual ~SVGPathSegLinetoHorizontalRel() {} - -protected: - - double x; - -}; - - - -/*######################################################################### -## SVGPathSegLinetoVerticalAbs -#########################################################################*/ - -/** - * - */ -class SVGPathSegLinetoVerticalAbs : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegLinetoVerticalAbs() - { - type = PATHSEG_LINETO_VERTICAL_ABS; - y = 0.0; - } - - - /** - * - */ - SVGPathSegLinetoVerticalAbs(double yArg) - { - type = PATHSEG_LINETO_VERTICAL_ABS; - y = yArg; - } - - /** - * - */ - SVGPathSegLinetoVerticalAbs(const SVGPathSegLinetoVerticalAbs &other) - : SVGPathSeg(other) - { - type = PATHSEG_LINETO_VERTICAL_ABS; - y = other.y; - } - - /** - * - */ - virtual ~SVGPathSegLinetoVerticalAbs() {} - -protected: - - double y; - -}; - - - -/*######################################################################### -## SVGPathSegLinetoVerticalRel -#########################################################################*/ - -/** - * - */ -class SVGPathSegLinetoVerticalRel : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegLinetoVerticalRel() - { - type = PATHSEG_LINETO_VERTICAL_REL; - y = 0.0; - } - - - /** - * - */ - SVGPathSegLinetoVerticalRel(double yArg) - { - type = PATHSEG_LINETO_VERTICAL_REL; - y = yArg; - } - - /** - * - */ - SVGPathSegLinetoVerticalRel(const SVGPathSegLinetoVerticalRel &other) - : SVGPathSeg(other) - { - type = PATHSEG_LINETO_VERTICAL_REL; - y = other.y; - } - - /** - * - */ - virtual ~SVGPathSegLinetoVerticalRel() {} - -protected: - - double y; - -}; - - - - - - -/*######################################################################### -## SVGPathSegCurvetoCubicSmoothAbs -#########################################################################*/ - -/** - * - */ -class SVGPathSegCurvetoCubicSmoothAbs : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - /** - * - */ - virtual double getX2() - { return x2; } - - /** - * - */ - virtual void setX2(double val) throw (DOMException) - { x2 = val; } - - /** - * - */ - virtual double getY2() - { return y2; } - - /** - * - */ - virtual void setY2(double val) throw (DOMException) - { y2 = val; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegCurvetoCubicSmoothAbs() - { - type = PATHSEG_CURVETO_CUBIC_SMOOTH_ABS; - x = y = x2 = y2 = 0.0; - } - - - /** - * - */ - SVGPathSegCurvetoCubicSmoothAbs(double xArg, double yArg, - double x2Arg, double y2Arg) - { - type = PATHSEG_CURVETO_CUBIC_SMOOTH_ABS; - x = xArg; y = yArg; - x2 = x2Arg; y2 = y2Arg; - } - - /** - * - */ - SVGPathSegCurvetoCubicSmoothAbs(const SVGPathSegCurvetoCubicSmoothAbs &other) - : SVGPathSeg(other) - { - type = PATHSEG_CURVETO_CUBIC_SMOOTH_ABS; - x = other.x; y = other.y; - x2 = other.x2; y2 = other.y2; - } - - /** - * - */ - virtual ~SVGPathSegCurvetoCubicSmoothAbs() {} - -protected: - - double x, y, x2, y2; - -}; - - - -/*######################################################################### -## SVGPathSegCurvetoCubicSmoothRel -#########################################################################*/ - -/** - * - */ -class SVGPathSegCurvetoCubicSmoothRel : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - /** - * - */ - virtual double getX2() - { return x2; } - - /** - * - */ - virtual void setX2(double val) throw (DOMException) - { x2 = val; } - - /** - * - */ - virtual double getY2() - { return y2; } - - /** - * - */ - virtual void setY2(double val) throw (DOMException) - { y2 = val; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegCurvetoCubicSmoothRel() - { - type = PATHSEG_CURVETO_CUBIC_SMOOTH_REL; - x = y = x2 = y2 = 0.0; - } - - - /** - * - */ - SVGPathSegCurvetoCubicSmoothRel(double xArg, double yArg, - double x2Arg, double y2Arg) - { - type = PATHSEG_CURVETO_CUBIC_SMOOTH_REL; - x = xArg; y = yArg; - x2 = x2Arg; y2 = y2Arg; - } - - /** - * - */ - SVGPathSegCurvetoCubicSmoothRel(const SVGPathSegCurvetoCubicSmoothRel &other) - : SVGPathSeg(other) - { - type = PATHSEG_CURVETO_CUBIC_SMOOTH_REL; - x = other.x; y = other.y; - x2 = other.x2; y2 = other.y2; - } - - /** - * - */ - virtual ~SVGPathSegCurvetoCubicSmoothRel() {} - -protected: - - double x, y, x2, y2; - -}; - - - - - - -/*######################################################################### -## SVGPathSegCurvetoQuadraticSmoothAbs -#########################################################################*/ - -/** - * - */ -class SVGPathSegCurvetoQuadraticSmoothAbs : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegCurvetoQuadraticSmoothAbs() - { - type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS; - x = y = 0.0; - } - - - /** - * - */ - SVGPathSegCurvetoQuadraticSmoothAbs(double xArg, double yArg) - { - type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS; - x = xArg; y = yArg; - } - - /** - * - */ - SVGPathSegCurvetoQuadraticSmoothAbs(const SVGPathSegCurvetoQuadraticSmoothAbs &other) - : SVGPathSeg(other) - { - type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_ABS; - x = y = 0.0; - } - - /** - * - */ - virtual ~SVGPathSegCurvetoQuadraticSmoothAbs() {} - -protected: - - double x, y; - -}; - - - - - - -/*######################################################################### -## SVGPathSegCurvetoQuadraticSmoothRel -#########################################################################*/ - -/** - * - */ -class SVGPathSegCurvetoQuadraticSmoothRel : public SVGPathSeg -{ -public: - - /** - * - */ - virtual double getX() - { return x; } - - /** - * - */ - virtual void setX(double val) throw (DOMException) - { x = val; } - - /** - * - */ - virtual double getY() - { return y; } - - /** - * - */ - virtual void setY(double val) throw (DOMException) - { y = val; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegCurvetoQuadraticSmoothRel() - { - type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL; - x = y = 0.0; - } - - - /** - * - */ - SVGPathSegCurvetoQuadraticSmoothRel(double xArg, double yArg) - { - type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL; - x = xArg; y = yArg; - } - - /** - * - */ - SVGPathSegCurvetoQuadraticSmoothRel(const SVGPathSegCurvetoQuadraticSmoothRel &other) - : SVGPathSeg(other) - { - type = PATHSEG_CURVETO_QUADRATIC_SMOOTH_REL; - x = y = 0.0; - } - - /** - * - */ - virtual ~SVGPathSegCurvetoQuadraticSmoothRel() {} - -protected: - - double x, y; - -}; - - - - - - -/*######################################################################### -## SVGPathSegList -#########################################################################*/ - -/** - * - */ -class SVGPathSegList -{ -public: - - /** - * - */ - virtual unsigned long getNumberOfItems() - { return items.size(); } - - - /** - * - */ - virtual void clear () throw( DOMException ) - { items.clear(); } - - /** - * - */ - virtual SVGPathSeg initialize (const SVGPathSeg &newItem) - throw( DOMException, SVGException ) - { - items.clear(); - items.push_back(newItem); - return newItem; - } - - /** - * - */ - virtual SVGPathSeg getItem (unsigned long index) - throw( DOMException ) - { - if (index >= items.size()) - { - SVGPathSeg seg; - return seg; - } - return items[index]; - } - - /** - * - */ - virtual SVGPathSeg insertItemBefore(const SVGPathSeg &newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index >= items.size()) - items.push_back(newItem); - else - { - std::vector<SVGPathSeg>::iterator iter = items.begin() + index; - items.insert(iter, newItem); - } - return newItem; - } - - /** - * - */ - virtual SVGPathSeg replaceItem(const SVGPathSeg &newItem, - unsigned long index ) - throw( DOMException, SVGException ) - { - if (index >= items.size()) - { - SVGPathSeg seg; - return seg; - } - std::vector<SVGPathSeg>::iterator iter = items.begin() + index; - *iter = newItem; - return newItem; - } - - /** - * - */ - virtual SVGPathSeg removeItem (unsigned long index) - throw (DOMException) - { - if (index >= items.size()) - { - SVGPathSeg seg; - return seg; - } - std::vector<SVGPathSeg>::iterator iter = items.begin() + index; - SVGPathSeg olditem = *iter; - items.erase(iter); - return olditem; - } - - /** - * - */ - virtual SVGPathSeg appendItem (const SVGPathSeg &newItem) - throw( DOMException, SVGException ) - { - items.push_back(newItem); - return newItem; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPathSegList() {} - - - /** - * - */ - SVGPathSegList(const SVGPathSegList &other) : - items (other.items) - { - } - - - /** - * - */ - virtual ~SVGPathSegList() {} - -protected: - - std::vector<SVGPathSeg> items; - -}; - - - - - - -/*######################################################################### -## SVGAnimatedPathData -#########################################################################*/ - -/** - * - */ -class SVGAnimatedPathData -{ -public: - - /** - * - */ - virtual SVGPathSegList getPathSegList() - { - SVGPathSegList list; - return list; - } - - /** - * - */ - virtual SVGPathSegList getNormalizedPathSegList() - { - SVGPathSegList list; - return list; - } - - /** - * - */ - virtual SVGPathSegList getAnimatedPathSegList() - { - SVGPathSegList list; - return list; - } - - /** - * - */ - virtual SVGPathSegList getAnimatedNormalizedPathSegList() - { - SVGPathSegList list; - return list; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedPathData() - {} - - /** - * - */ - SVGAnimatedPathData(const SVGAnimatedPathData &/*other*/) - { - } - - /** - * - */ - virtual ~SVGAnimatedPathData() {} - -}; - - - - - - -/*######################################################################### -## SVGAnimatedPoints -#########################################################################*/ - -/** - * - */ -class SVGAnimatedPoints -{ -public: - - /** - * - */ - virtual SVGPointList getPoints() - { return points; } - - /** - * - */ - virtual SVGPointList getAnimatedPoints() - { return animatedPoints; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGAnimatedPoints() {} - - /** - * - */ - SVGAnimatedPoints(const SVGAnimatedPoints &other) : - points (other.points), - animatedPoints (other.animatedPoints) - { - } - - /** - * - */ - virtual ~SVGAnimatedPoints() {} - -protected: - - SVGPointList points; - SVGPointList animatedPoints; - -}; - - - - - -/*######################################################################### -## SVGPaint -#########################################################################*/ - -/** - * - */ -class SVGPaint : public SVGColor -{ -public: - - - /** - * Paint Types - */ - typedef enum - { - SVG_PAINTTYPE_UNKNOWN = 0, - SVG_PAINTTYPE_RGBCOLOR = 1, - SVG_PAINTTYPE_RGBCOLOR_ICCCOLOR = 2, - SVG_PAINTTYPE_NONE = 101, - SVG_PAINTTYPE_CURRENTCOLOR = 102, - SVG_PAINTTYPE_URI_NONE = 103, - SVG_PAINTTYPE_URI_CURRENTCOLOR = 104, - SVG_PAINTTYPE_URI_RGBCOLOR = 105, - SVG_PAINTTYPE_URI_RGBCOLOR_ICCCOLOR = 106, - SVG_PAINTTYPE_URI = 107 - } PaintType; - - - /** - * - */ - virtual unsigned short getPaintType() - { return paintType; } - - /** - * - */ - virtual DOMString getUri() - { return uri; } - - /** - * - */ - virtual void setUri (const DOMString& uriArg ) - { uri = uriArg; } - - /** - * - */ - virtual void setPaint (unsigned short paintTypeArg, - const DOMString& uriArg, - const DOMString& /*rgbColor*/, - const DOMString& /*iccColor*/ ) - throw( SVGException ) - { - paintType = paintTypeArg; - uri = uriArg; - //do something with rgbColor - //do something with iccColor; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGPaint() : - paintType (SVG_PAINTTYPE_UNKNOWN), - uri ("") - { - } - - /** - * - */ - SVGPaint(const SVGPaint &other) : css::CSSValue(other), SVGColor(other), - paintType (SVG_PAINTTYPE_UNKNOWN), - uri ("") - { - } - - /** - * - */ - virtual ~SVGPaint() {} - -protected: - - unsigned int paintType; - DOMString uri; - -}; - - - - -/*######################################################################### -## SVGColorProfileRule -#########################################################################*/ - -/** - * - */ -class SVGColorProfileRule : public SVGCSSRule, - public SVGRenderingIntent -{ - -public: - /** - * - */ - virtual DOMString getSrc() - { return src; } - - /** - * - */ - virtual void setSrc(const DOMString &val) throw (DOMException) - { src = val; } - - /** - * - */ - virtual DOMString getName() - { return name; } - - /** - * - */ - virtual void setName(const DOMString &val) throw (DOMException) - { name = val; } - - /** - * - */ - virtual unsigned short getRenderingIntent() - { return renderingIntent; } - - /** - * - */ - virtual void setRenderingIntent(unsigned short val) throw (DOMException) - { renderingIntent = val; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGColorProfileRule() : - renderingIntent(0) - {} - - /** - * - */ - SVGColorProfileRule(const SVGColorProfileRule &other) - : SVGCSSRule(other), SVGRenderingIntent(other), - renderingIntent (other.renderingIntent), - src (other.src), - name (other.name) - { - } - - /** - * - */ - virtual ~SVGColorProfileRule() {} - -protected: - - unsigned short renderingIntent; - DOMString src; - DOMString name; - -}; - - - -/*######################################################################### -## SVGFilterPrimitiveStandardAttributes -#########################################################################*/ - -/** - * - */ -class SVGFilterPrimitiveStandardAttributes : public SVGStylable -{ -public: - - - - /** - * - */ - virtual SVGAnimatedLength getX() - { return x; } - - /** - * - */ - virtual SVGAnimatedLength getY() - { return y; } - - /** - * - */ - virtual SVGAnimatedLength getWidth() - { return width; } - - /** - * - */ - virtual SVGAnimatedLength getHeight() - { return height; } - - /** - * - */ - virtual SVGAnimatedString getResult() - { return result; } - - - - //################## - //# Non-API methods - //################## - - - /** - * - */ - SVGFilterPrimitiveStandardAttributes() - {} - - /** - * - */ - SVGFilterPrimitiveStandardAttributes(const SVGFilterPrimitiveStandardAttributes &other) - : SVGStylable(other), - x (other.x), - y (other.y), - width (other.width), - height (other.height), - result (other.result) - { - } - - /** - * - */ - virtual ~SVGFilterPrimitiveStandardAttributes() {} - -protected: - - SVGAnimatedLength x; - SVGAnimatedLength y; - SVGAnimatedLength width; - SVGAnimatedLength height; - SVGAnimatedString result; - -}; - - - - -/*######################################################################### -## SVGEvent -#########################################################################*/ - -/** - * - */ -class SVGEvent : events::Event -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGEvent() {} - - /** - * - */ - SVGEvent(const SVGEvent &other) : events::Event(other) - {} - - /** - * - */ - virtual ~SVGEvent() {} - -}; - - - - -/*######################################################################### -## SVGZoomEvent -#########################################################################*/ - -/** - * - */ -class SVGZoomEvent : events::UIEvent -{ -public: - - /** - * - */ - virtual SVGRect getZoomRectScreen() - { return zoomRectScreen; } - - /** - * - */ - virtual double getPreviousScale() - { return previousScale; } - - /** - * - */ - virtual SVGPoint getPreviousTranslate() - { return previousTranslate; } - - /** - * - */ - virtual double getNewScale() - { return newScale; } - - /** - * - */ - virtual SVGPoint getNewTranslate() - { return newTranslate; } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGZoomEvent(): - zoomRectScreen(), - previousScale(0), - previousTranslate(), - newScale(0), - newTranslate() - {} - - /** - * - */ - SVGZoomEvent(const SVGZoomEvent &other) : - events::Event(other), - events::UIEvent(other), - zoomRectScreen(other.zoomRectScreen), - previousScale(other.previousScale), - previousTranslate(other.previousTranslate), - newScale(other.newScale), - newTranslate(other.newTranslate) - { - } - - /** - * - */ - virtual ~SVGZoomEvent() {} - -protected: - - SVGRect zoomRectScreen; - double previousScale; - SVGPoint previousTranslate; - double newScale; - SVGPoint newTranslate; - -}; - - - -/*######################################################################### -## SVGElementInstance -#########################################################################*/ - -/** - * - */ -class SVGElementInstance : public events::EventTarget -{ -public: - - /** - * - */ - virtual SVGElementPtr getCorrespondingElement() - { return correspondingElement; } - - /** - * - */ - virtual SVGUseElementPtr getCorrespondingUseElement() - { return correspondingUseElement; } - - /** - * - */ - virtual SVGElementInstance getParentNode() - { - SVGElementInstance ret; - return ret; - } - - /** - * Since we are using stack types and this is a circular definition, - * we will instead implement this as a global function below: - * SVGElementInstanceList getChildNodes(const SVGElementInstance instance); - */ - //virtual SVGElementInstanceList getChildNodes(); - - /** - * - */ - virtual SVGElementInstance getFirstChild() - { - SVGElementInstance ret; - return ret; - } - - /** - * - */ - virtual SVGElementInstance getLastChild() - { - SVGElementInstance ret; - return ret; - } - - /** - * - */ - virtual SVGElementInstance getPreviousSibling() - { - SVGElementInstance ret; - return ret; - } - - /** - * - */ - virtual SVGElementInstance getNextSibling() - { - SVGElementInstance ret; - return ret; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGElementInstance() : - correspondingElement(NULL), - correspondingUseElement(NULL) - {} - - /** - * - */ - SVGElementInstance(const SVGElementInstance &other) - : events::EventTarget(other), - correspondingElement(NULL), - correspondingUseElement(NULL) - { - } - - /** - * - */ - virtual ~SVGElementInstance() {} - -protected: - - SVGElementPtr correspondingElement; - SVGUseElementPtr correspondingUseElement; - -}; - - - - - - -/*######################################################################### -## SVGElementInstanceList -#########################################################################*/ - -/** - * - */ -class SVGElementInstanceList -{ -public: - - - /** - * - */ - virtual unsigned long getLength() - { return items.size(); } - - /** - * - */ - virtual SVGElementInstance item (unsigned long index ) - { - if (index >= items.size()) - { - SVGElementInstance ret; - return ret; - } - return items[index]; - } - - /** - * This static method replaces the circular definition of: - * SVGElementInstanceList SVGElementInstance::getChildNodes() - * - */ - static SVGElementInstanceList getChildNodes(const SVGElementInstance &/*instance*/) - { - SVGElementInstanceList list; - return list; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - SVGElementInstanceList() {} - - /** - * - */ - SVGElementInstanceList(const SVGElementInstanceList &other) : - items (other.items) - { - } - - /** - * - */ - virtual ~SVGElementInstanceList() {} - -protected: - - std::vector<SVGElementInstance> items; - - -}; - - - -} //namespace svg -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_SVGTYPES_H -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/traversal.h b/src/dom/traversal.h deleted file mode 100644 index 302ac2b1f..000000000 --- a/src/dom/traversal.h +++ /dev/null @@ -1,609 +0,0 @@ -#ifndef SEEN_TRAVERSAL_H -#define SEEN_TRAVERSAL_H -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ========================================================================== - * NOTES - * - * This interface is described here: - * http://www.w3.org/TR/2000/REC-DOM-Level-2-Traversal-Range-20001113 - */ - - -#include "dom.h" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace traversal -{ - - -//Local aliases -typedef dom::Node Node; - - - - - -/*######################################################################### -## NodeFilter -#########################################################################*/ - -/** - * Filters are objects that know how to "filter out" nodes. If a NodeIterator or - * TreeWalker is given a NodeFilter, it applies the filter before it returns the - * next node. If the filter says to accept the node, the traversal logic returns - * it; otherwise, traversal looks for the next node and pretends that the node - * that was rejected was not there. - * - * The DOM does not provide any filters. NodeFilter is just an interface that - * users can implement to provide their own filters. - * - * NodeFilters do not need to know how to traverse from node to node, nor do they - * need to know anything about the data structure that is being traversed. This - * makes it very easy to write filters, since the only thing they have to know - * how to do is evaluate a single node. One filter may be used with a number of - * different kinds of traversals, encouraging code reuse. - * - * Note: - * The spec is slightly vague on this interface, for instance, setting the - * whatToShow value. - */ -class NodeFilter -{ -public: - - /** - * The following constants are returned by the acceptNode() method - */ - typedef enum - { - FILTER_ACCEPT = 1, - FILTER_REJECT = 2, - FILTER_SKIP = 3 - } AcceptNodeType; - - /** - * Test whether a specified node is visible in the logical view of a TreeWalker - * or NodeIterator. This function will be called by the implementation of - * TreeWalker and NodeIterator; it is not normally called directly from user - * code. (Though you could do so if you wanted to use the same filter to guide - * your own application logic.) - */ - virtual short acceptNode(const NodePtr /*n*/) - { - return 0; - } - - - /** - * These are the available values for the whatToShow parameter used in - * TreeWalkers and NodeIterators. They are the same as the set of possible types - * for Node, and their values are derived by using a bit position corresponding - * to the value of nodeType for the equivalent node type. If a bit in whatToShow - * is set false, that will be taken as a request to skip over this type of node; - * the behavior in that case is similar to that of FILTER_SKIP. - * - * Note that if node types greater than 32 are ever introduced, they may not be - * individually testable via whatToShow. If that need should arise, it can be - * handled by selecting SHOW_ALL together with an appropriate NodeFilter. - */ - typedef enum - { - SHOW_ALL = 0xFFFFFFFF, - SHOW_ELEMENT = 0x00000001, - SHOW_ATTRIBUTE = 0x00000002, - SHOW_TEXT = 0x00000004, - SHOW_CDATA_SECTION = 0x00000008, - SHOW_ENTITY_REFERENCE = 0x00000010, - SHOW_ENTITY = 0x00000020, - SHOW_PROCESSING_INSTRUCTION = 0x00000040, - SHOW_COMMENT = 0x00000080, - SHOW_DOCUMENT = 0x00000100, - SHOW_DOCUMENT_TYPE = 0x00000200, - SHOW_DOCUMENT_FRAGMENT = 0x00000400, - SHOW_NOTATION = 0x00000800 - } WhatToShowType; - - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - NodeFilter() : whatToShow(SHOW_ALL) - {} - - /** - * - */ - NodeFilter(int whatToShowArg) : whatToShow(whatToShowArg) - {} - - - /** - * - */ - NodeFilter(const NodeFilter &other) - { - whatToShow = other.whatToShow; - } - - /** - * - */ - NodeFilter& operator=(const NodeFilter &other) - { - whatToShow = other.whatToShow; - return *this; - } - - /** - * - */ - virtual ~NodeFilter() {} - - - int whatToShow; - -}; - - - -/*######################################################################### -## NodeIterator -#########################################################################*/ - -/** - * Iterators are used to step through a set of nodes, e.g. the set of nodes in a - * NodeList, the document subtree governed by a particular Node, the results of a - * query, or any other set of nodes. The set of nodes to be iterated is - * determined by the implementation of the NodeIterator. DOM Level 2 specifies a - * single NodeIterator implementation for document-order traversal of a document - * subtree. Instances of these iterators are created by calling - * DocumentTraversal .createNodeIterator(). - */ -class NodeIterator -{ -public: - - /** - * The root node of the NodeIterator, as specified when it was created. - */ - virtual NodePtr getRoot() - { - NodePtr ptr; - return ptr; - } - - /** - * This attribute determines which node types are presented via the iterator. The - * available set of constants is defined in the NodeFilter interface. Nodes not - * accepted by whatToShow will be skipped, but their children may still be - * considered. Note that this skip takes precedence over the filter, if any. - */ - virtual unsigned long getWhatToShow() - { return whatToShow; } - - /** - * The NodeFilter used to screen nodes. - */ - virtual NodeFilter getFilter() - { return filter; } - - /** - * The value of this flag determines whether the children of entity reference - * nodes are visible to the iterator. If false, they and their descendants will - * be rejected. Note that this rejection takes precedence over whatToShow and the - * filter. Also note that this is currently the only situation where - * NodeIterators may reject a complete subtree rather than skipping individual - * nodes. - * - * To produce a view of the document that has entity references expanded and does - * not expose the entity reference node itself, use the whatToShow flags to hide - * the entity reference node and set expandEntityReferences to true when creating - * the iterator. To produce a view of the document that has entity reference - * nodes but no entity expansion, use the whatToShow flags to show the entity - * reference node and set expandEntityReferences to false. - */ - virtual bool getExpandEntityReferences() - { return expandEntityReferences; } - - /** - * Returns the next node in the set and advances the position of the iterator in - * the set. After a NodeIterator is created, the first call to nextNode() returns - * the first node in the set. - */ - virtual NodePtr nextNode() throw(dom::DOMException) - { - NodePtr ptr; - return ptr; - } - - /** - * Returns the previous node in the set and moves the position of the - * NodeIterator backwards in the set. - */ - virtual NodePtr previousNode() throw(dom::DOMException) - { - NodePtr ptr; - return ptr; - } - - /** - * Detaches the NodeIterator from the set which it iterated over, releasing any - * computational resources and placing the iterator in the INVALID state. After - * detach has been invoked, calls to nextNode or previousNode will raise the - * exception INVALID_STATE_ERR. - */ - virtual void detach() - { - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - NodeIterator() : - whatToShow(0), - filter(), - expandEntityReferences(0) - {} - - /** - * - */ - NodeIterator(const NodeIterator &other) : - whatToShow (other.whatToShow), - filter (other.filter), - expandEntityReferences (other.expandEntityReferences) - { - } - - /** - * - */ - virtual ~NodeIterator() {} - -protected: - - unsigned long whatToShow; - NodeFilter filter; - bool expandEntityReferences; - - -}; - - - -/*######################################################################### -## TreeWalker -#########################################################################*/ - -/** - * TreeWalker objects are used to navigate a document tree or subtree using the - * view of the document defined by their whatToShow flags and filter (if any). - * Any function which performs navigation using a TreeWalker will automatically - * support any view defined by a TreeWalker. - * - * Omitting nodes from the logical view of a subtree can result in a structure - * that is substantially different from the same subtree in the complete, - * unfiltered document. Nodes that are siblings in the TreeWalker view may be - * children of different, widely separated nodes in the original view. For - * instance, consider a NodeFilter that skips all nodes except for Text nodes and - * the root node of a document. In the logical view that results, all text nodes - * will be siblings and appear as direct children of the root node, no matter how - * deeply nested the structure of the original document. - */ -class TreeWalker -{ -public: - - - /** - * The root node of the TreeWalker, as specified when it was created. - */ - virtual NodePtr getRoot() - { - NodePtr ptr; - return ptr; - } - - /** - * This attribute determines which node types are presented via the TreeWalker. - * The available set of constants is defined in the NodeFilter interface. Nodes - * not accepted by whatToShow will be skipped, but their children may still be - * considered. Note that this skip takes precedence over the filter, if any. - */ - virtual unsigned long getWhatToShow() - { return whatToShow; } - - /** - * The filter used to screen nodes. - */ - virtual NodeFilter getFilter() - { return filter; } - - /** - * The value of this flag determines whether the children of entity reference - * nodes are visible to the TreeWalker. If false, they and their descendants will - * be rejected. Note that this rejection takes precedence over whatToShow and the - * filter, if any. To produce a view of the document that has entity references - * expanded and does not expose the entity reference node itself, use the - * whatToShow flags to hide the entity reference node and set - * expandEntityReferences to true when creating the TreeWalker. To produce a view - * of the document that has entity reference nodes but no entity expansion, use - * the whatToShow flags to show the entity reference node and set - * expandEntityReferences to false. - */ - virtual bool getExpandEntityReferences() - { return expandEntityReferences; } - - /** - * The node at which the TreeWalker is currently positioned. Alterations to the - * DOM tree may cause the current node to no longer be accepted by the - * TreeWalker's associated filter. currentNode may also be explicitly set to any - * node, whether or not it is within the subtree specified by the root node or - * would be accepted by the filter and whatToShow flags. Further traversal occurs - * relative to currentNode even if it is not part of the current view, by - * applying the filters in the requested direction; if no traversal is possible, - * currentNode is not changed. - */ - virtual NodePtr getCurrentNode() - { return currentNode; } - - /** - * Sets the value above. - */ - virtual void setCurrentNode(const NodePtr val) throw(dom::DOMException) - { currentNode = val; } - - /** - * Moves to and returns the closest visible ancestor node of the current node. If - * the search for parentNode attempts to step upward from the TreeWalker's root - * node, or if it fails to find a visible ancestor node, this method retains the - * current position and returns null. - */ - virtual NodePtr parentNode() - { - NodePtr ptr; - return ptr; - } - - /** - * Moves the TreeWalker to the first visible child of the current node, and - * returns the new node. If the current node has no visible children, returns - * null, and retains the current node. - */ - virtual NodePtr firstChild() - { - NodePtr ptr; - return ptr; - } - - /** - * Moves the TreeWalker to the last visible child of the current node, and - * returns the new node. If the current node has no visible children, returns - * null, and retains the current node. - */ - virtual NodePtr lastChild() - { - NodePtr ptr; - return ptr; - } - - /** - * Moves the TreeWalker to the previous sibling of the current node, and returns - * the new node. If the current node has no visible previous sibling, returns - * null, and retains the current node. - */ - virtual NodePtr previousSibling() - { - NodePtr ptr; - return ptr; - } - - /** - * Moves the TreeWalker to the next sibling of the current node, and returns the - * new node. If the current node has no visible next sibling, returns null, and - * retains the current node. - */ - virtual NodePtr nextSibling() - { - NodePtr ptr; - return ptr; - } - - /** - * Moves the TreeWalker to the previous visible node in document order relative - * to the current node, and returns the new node. If the current node has no - * previous node, or if the search for previousNode attempts to step upward from - * the TreeWalker's root node, returns null, and retains the current node. - */ - virtual NodePtr previousNode() - { - NodePtr ptr; - return ptr; - } - - /** - * Moves the TreeWalker to the next visible node in document order relative to - * the current node, and returns the new node. If the current node has no next - * node, or if the search for nextNode attempts to step upward from the - * TreeWalker's root node, returns null, and retains the current node. - */ - virtual NodePtr nextNode() - { - NodePtr ptr; - return ptr; - } - - - - //################## - //# Non-API methods - //################## - - /** - * - */ - TreeWalker() : - whatToShow(0), - filter(), - expandEntityReferences(0), - currentNode(0) - {} - - /** - * - */ - TreeWalker(const TreeWalker &other) : - whatToShow (other.whatToShow), - filter (other.filter), - expandEntityReferences (other.expandEntityReferences), - currentNode (other.currentNode) - { - } - - /** - * - */ - virtual ~TreeWalker() {} - - -protected: - - unsigned long whatToShow; - NodeFilter filter; - bool expandEntityReferences; - NodePtr currentNode; - -}; - - - - -/*######################################################################### -## DocumentTraversal -#########################################################################*/ - -/** - * DocumentTraversal contains methods that create iterators and tree-walkers to - * traverse a node and its children in document order (depth first, pre-order - * traversal, which is equivalent to the order in which the start tags occur in - * the text representation of the document). In DOMs which support the Traversal - * feature, DocumentTraversal will be implemented by the same objects that - * implement the Document interface. - */ -class DocumentTraversal -{ -public: - - /** - * Create a new NodeIterator over the subtree rooted at the specified node. - */ - virtual NodeIterator createNodeIterator(const NodePtr /*root*/, - unsigned long /*whatToShow*/, - const NodeFilter/*filter*/, - bool /*entityReferenceExpansion*/) - throw (dom::DOMException) - { - NodeIterator ret; - return ret; - } - - /** - * Create a new TreeWalker over the subtree rooted at the specified node. - */ - virtual TreeWalker createTreeWalker(const NodePtr/*root*/, - unsigned long /*whatToShow*/, - const NodeFilter/*filter*/, - bool /*entityReferenceExpansion*/) - throw (dom::DOMException) - { - TreeWalker ret; - return ret; - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - DocumentTraversal() {} - - /** - * - */ - DocumentTraversal(const DocumentTraversal &/*other*/) - {} - - /** - * - */ - virtual ~DocumentTraversal() {} - -}; - - - - - - -} //namespace traversal -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_TRAVERSAL_H - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/ucd.cpp b/src/dom/ucd.cpp deleted file mode 100644 index f74af3956..000000000 --- a/src/dom/ucd.cpp +++ /dev/null @@ -1,2539 +0,0 @@ -/* - * Generated by UcdReader at:Mon Jun 30 13:52:41 GMT-06:00 2008 - * block table size:2 (4 bytes) - * plane table size:6 (64 bytes) - * - * - * This table reflects information gleaned from the Unicode Character - * Database. All codepoints are included. - * - * You might notice that this table is larger than some other implementations. - * This is because we included the entire UCD set of codepoints, rather than - * truncating it at 16 bits for UTF-16. It is similar to Java's and JS's, but - * this is our own implementation. - * - * This lookup table should be compared to the raw unfolded table lookup - * to make sure that no bits are lost in compression. This is done internally - * before this file is generated (else it would not -be- generated). However, - * you should also do this in the target compiler. - * - * The character properties are currently encoded into 32 bits in the - * following manner: - * - * ----------------------------------------------------------------- - * |3|3|2|2|2|2|2|2|2|2|2|2|1|1|1|1|1|1|1|1|1|1|0|0|0|0|0|0|0|0|0|0| - * |1|0|9|8|7|6|5|4|3|2|1|0|9|8|7|6|5|4|3|2|1|0|9|8|7|6|5|4|3|2|1|0| - * |-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-|-| - * |A|B|B|B|B|C|C|C|C|C|C|C|C|C|D|E|F|G|G|G|H|H|I|I|I|I|I|J|J|J|J|J| - * ----------------------------------------------------------------- - * - * A 1 bit mirrored property - * B 4 bits directionality property - * C 9 bits signed offset used for converting case - * D 1 bit if 1, adding the signed offset converts the character to - * lowercase - * E 1 bit if 1, subtracting the signed offset converts the character to - * uppercase - * F 1 bit if 1, character has a titlecase equivalent (possibly itself) - * G 3 bits This field is for storing our own lexical information, in addition - * to that given by the UCD. The fields are as follows: - * 0 may not be part of an identifier - * 1 ignorable control; may continue a Unicode identifier or C - * identifier - * 2 may continue a C identifier but not a Unicode identifier - * (unused) - * 3 may continue a Unicode identifier or C identifier - * 4 is a C whitespace character - * 5 may start or continue a C identifier; - * may continue but not start a Unicode identifier (_) - * 6 may start or continue a C identifier but not a Unicode - * identifier ($) - * 7 may start or continue a Unicode identifier or C identifier - * Thus: - * 5, 6, 7 may start a C identifier - * 1, 2, 3, 5, 6, 7 may continue a C identifier - * 7 may start a Unicode identifier - * 1, 3, 5, 7 may continue a Unicode identifier - * 1 is ignorable within an identifier - * 4 is C whitespace - * H 2 bits This field is for storing additional information regarding this - * codepoint's numeric properties. The values are: - * 0 this character has no numeric property - * 1 adding the digit offset to the character code and then - * masking with 0x1F will produce the desired numeric value - * 2 this character has a 'strange' numeric value - * 3 a JS supradecimal digit: adding the digit offset to the - * character code, then masking with 0x1F, then adding 10 - * will produce the desired numeric value - * I 5 bits digit offset - * J 5 bits character type - */ - - - -/** - * Look for comments in ucd.h - */ -#include "ucd.h" - - -static UcdBlockData ucd_blocks[] = -{ - { 0x000000, 0x00007f, "Basic Latin" }, - { 0x000080, 0x0000ff, "Latin-1 Supplement" }, - { 0x000100, 0x00017f, "Latin Extended-A" }, - { 0x000180, 0x00024f, "Latin Extended-B" }, - { 0x000250, 0x0002af, "IPA Extensions" }, - { 0x0002b0, 0x0002ff, "Spacing Modifier Letters" }, - { 0x000300, 0x00036f, "Combining Diacritical Marks" }, - { 0x000370, 0x0003ff, "Greek and Coptic" }, - { 0x000400, 0x0004ff, "Cyrillic" }, - { 0x000500, 0x00052f, "Cyrillic Supplement" }, - { 0x000530, 0x00058f, "Armenian" }, - { 0x000590, 0x0005ff, "Hebrew" }, - { 0x000600, 0x0006ff, "Arabic" }, - { 0x000700, 0x00074f, "Syriac" }, - { 0x000750, 0x00077f, "Arabic Supplement" }, - { 0x000780, 0x0007bf, "Thaana" }, - { 0x0007c0, 0x0007ff, "NKo" }, - { 0x000900, 0x00097f, "Devanagari" }, - { 0x000980, 0x0009ff, "Bengali" }, - { 0x000a00, 0x000a7f, "Gurmukhi" }, - { 0x000a80, 0x000aff, "Gujarati" }, - { 0x000b00, 0x000b7f, "Oriya" }, - { 0x000b80, 0x000bff, "Tamil" }, - { 0x000c00, 0x000c7f, "Telugu" }, - { 0x000c80, 0x000cff, "Kannada" }, - { 0x000d00, 0x000d7f, "Malayalam" }, - { 0x000d80, 0x000dff, "Sinhala" }, - { 0x000e00, 0x000e7f, "Thai" }, - { 0x000e80, 0x000eff, "Lao" }, - { 0x000f00, 0x000fff, "Tibetan" }, - { 0x001000, 0x00109f, "Myanmar" }, - { 0x0010a0, 0x0010ff, "Georgian" }, - { 0x001100, 0x0011ff, "Hangul Jamo" }, - { 0x001200, 0x00137f, "Ethiopic" }, - { 0x001380, 0x00139f, "Ethiopic Supplement" }, - { 0x0013a0, 0x0013ff, "Cherokee" }, - { 0x001400, 0x00167f, "Unified Canadian Aboriginal Syllabics" }, - { 0x001680, 0x00169f, "Ogham" }, - { 0x0016a0, 0x0016ff, "Runic" }, - { 0x001700, 0x00171f, "Tagalog" }, - { 0x001720, 0x00173f, "Hanunoo" }, - { 0x001740, 0x00175f, "Buhid" }, - { 0x001760, 0x00177f, "Tagbanwa" }, - { 0x001780, 0x0017ff, "Khmer" }, - { 0x001800, 0x0018af, "Mongolian" }, - { 0x001900, 0x00194f, "Limbu" }, - { 0x001950, 0x00197f, "Tai Le" }, - { 0x001980, 0x0019df, "New Tai Lue" }, - { 0x0019e0, 0x0019ff, "Khmer Symbols" }, - { 0x001a00, 0x001a1f, "Buginese" }, - { 0x001b00, 0x001b7f, "Balinese" }, - { 0x001b80, 0x001bbf, "Sundanese" }, - { 0x001c00, 0x001c4f, "Lepcha" }, - { 0x001c50, 0x001c7f, "Ol Chiki" }, - { 0x001d00, 0x001d7f, "Phonetic Extensions" }, - { 0x001d80, 0x001dbf, "Phonetic Extensions Supplement" }, - { 0x001dc0, 0x001dff, "Combining Diacritical Marks Supplement" }, - { 0x001e00, 0x001eff, "Latin Extended Additional" }, - { 0x001f00, 0x001fff, "Greek Extended" }, - { 0x002000, 0x00206f, "General Punctuation" }, - { 0x002070, 0x00209f, "Superscripts and Subscripts" }, - { 0x0020a0, 0x0020cf, "Currency Symbols" }, - { 0x0020d0, 0x0020ff, "Combining Diacritical Marks for Symbols" }, - { 0x002100, 0x00214f, "Letterlike Symbols" }, - { 0x002150, 0x00218f, "Number Forms" }, - { 0x002190, 0x0021ff, "Arrows" }, - { 0x002200, 0x0022ff, "Mathematical Operators" }, - { 0x002300, 0x0023ff, "Miscellaneous Technical" }, - { 0x002400, 0x00243f, "Control Pictures" }, - { 0x002440, 0x00245f, "Optical Character Recognition" }, - { 0x002460, 0x0024ff, "Enclosed Alphanumerics" }, - { 0x002500, 0x00257f, "Box Drawing" }, - { 0x002580, 0x00259f, "Block Elements" }, - { 0x0025a0, 0x0025ff, "Geometric Shapes" }, - { 0x002600, 0x0026ff, "Miscellaneous Symbols" }, - { 0x002700, 0x0027bf, "Dingbats" }, - { 0x0027c0, 0x0027ef, "Miscellaneous Mathematical Symbols-A" }, - { 0x0027f0, 0x0027ff, "Supplemental Arrows-A" }, - { 0x002800, 0x0028ff, "Braille Patterns" }, - { 0x002900, 0x00297f, "Supplemental Arrows-B" }, - { 0x002980, 0x0029ff, "Miscellaneous Mathematical Symbols-B" }, - { 0x002a00, 0x002aff, "Supplemental Mathematical Operators" }, - { 0x002b00, 0x002bff, "Miscellaneous Symbols and Arrows" }, - { 0x002c00, 0x002c5f, "Glagolitic" }, - { 0x002c60, 0x002c7f, "Latin Extended-C" }, - { 0x002c80, 0x002cff, "Coptic" }, - { 0x002d00, 0x002d2f, "Georgian Supplement" }, - { 0x002d30, 0x002d7f, "Tifinagh" }, - { 0x002d80, 0x002ddf, "Ethiopic Extended" }, - { 0x002de0, 0x002dff, "Cyrillic Extended-A" }, - { 0x002e00, 0x002e7f, "Supplemental Punctuation" }, - { 0x002e80, 0x002eff, "CJK Radicals Supplement" }, - { 0x002f00, 0x002fdf, "Kangxi Radicals" }, - { 0x002ff0, 0x002fff, "Ideographic Description Characters" }, - { 0x003000, 0x00303f, "CJK Symbols and Punctuation" }, - { 0x003040, 0x00309f, "Hiragana" }, - { 0x0030a0, 0x0030ff, "Katakana" }, - { 0x003100, 0x00312f, "Bopomofo" }, - { 0x003130, 0x00318f, "Hangul Compatibility Jamo" }, - { 0x003190, 0x00319f, "Kanbun" }, - { 0x0031a0, 0x0031bf, "Bopomofo Extended" }, - { 0x0031c0, 0x0031ef, "CJK Strokes" }, - { 0x0031f0, 0x0031ff, "Katakana Phonetic Extensions" }, - { 0x003200, 0x0032ff, "Enclosed CJK Letters and Months" }, - { 0x003300, 0x0033ff, "CJK Compatibility" }, - { 0x003400, 0x004dbf, "CJK Unified Ideographs Extension A" }, - { 0x004dc0, 0x004dff, "Yijing Hexagram Symbols" }, - { 0x004e00, 0x009fff, "CJK Unified Ideographs" }, - { 0x00a000, 0x00a48f, "Yi Syllables" }, - { 0x00a490, 0x00a4cf, "Yi Radicals" }, - { 0x00a500, 0x00a63f, "Vai" }, - { 0x00a640, 0x00a69f, "Cyrillic Extended-B" }, - { 0x00a700, 0x00a71f, "Modifier Tone Letters" }, - { 0x00a720, 0x00a7ff, "Latin Extended-D" }, - { 0x00a800, 0x00a82f, "Syloti Nagri" }, - { 0x00a840, 0x00a87f, "Phags-pa" }, - { 0x00a880, 0x00a8df, "Saurashtra" }, - { 0x00a900, 0x00a92f, "Kayah Li" }, - { 0x00a930, 0x00a95f, "Rejang" }, - { 0x00aa00, 0x00aa5f, "Cham" }, - { 0x00ac00, 0x00d7af, "Hangul Syllables" }, - { 0x00d800, 0x00db7f, "High Surrogates" }, - { 0x00db80, 0x00dbff, "High Private Use Surrogates" }, - { 0x00dc00, 0x00dfff, "Low Surrogates" }, - { 0x00e000, 0x00f8ff, "Private Use Area" }, - { 0x00f900, 0x00faff, "CJK Compatibility Ideographs" }, - { 0x00fb00, 0x00fb4f, "Alphabetic Presentation Forms" }, - { 0x00fb50, 0x00fdff, "Arabic Presentation Forms-A" }, - { 0x00fe00, 0x00fe0f, "Variation Selectors" }, - { 0x00fe10, 0x00fe1f, "Vertical Forms" }, - { 0x00fe20, 0x00fe2f, "Combining Half Marks" }, - { 0x00fe30, 0x00fe4f, "CJK Compatibility Forms" }, - { 0x00fe50, 0x00fe6f, "Small Form Variants" }, - { 0x00fe70, 0x00feff, "Arabic Presentation Forms-B" }, - { 0x00ff00, 0x00ffef, "Halfwidth and Fullwidth Forms" }, - { 0x00fff0, 0x00ffff, "Specials" }, - { 0x010000, 0x01007f, "Linear B Syllabary" }, - { 0x010080, 0x0100ff, "Linear B Ideograms" }, - { 0x010100, 0x01013f, "Aegean Numbers" }, - { 0x010140, 0x01018f, "Ancient Greek Numbers" }, - { 0x010190, 0x0101cf, "Ancient Symbols" }, - { 0x0101d0, 0x0101ff, "Phaistos Disc" }, - { 0x010280, 0x01029f, "Lycian" }, - { 0x0102a0, 0x0102df, "Carian" }, - { 0x010300, 0x01032f, "Old Italic" }, - { 0x010330, 0x01034f, "Gothic" }, - { 0x010380, 0x01039f, "Ugaritic" }, - { 0x0103a0, 0x0103df, "Old Persian" }, - { 0x010400, 0x01044f, "Deseret" }, - { 0x010450, 0x01047f, "Shavian" }, - { 0x010480, 0x0104af, "Osmanya" }, - { 0x010800, 0x01083f, "Cypriot Syllabary" }, - { 0x010900, 0x01091f, "Phoenician" }, - { 0x010920, 0x01093f, "Lydian" }, - { 0x010a00, 0x010a5f, "Kharoshthi" }, - { 0x012000, 0x0123ff, "Cuneiform" }, - { 0x012400, 0x01247f, "Cuneiform Numbers and Punctuation" }, - { 0x01d000, 0x01d0ff, "Byzantine Musical Symbols" }, - { 0x01d100, 0x01d1ff, "Musical Symbols" }, - { 0x01d200, 0x01d24f, "Ancient Greek Musical Notation" }, - { 0x01d300, 0x01d35f, "Tai Xuan Jing Symbols" }, - { 0x01d360, 0x01d37f, "Counting Rod Numerals" }, - { 0x01d400, 0x01d7ff, "Mathematical Alphanumeric Symbols" }, - { 0x01f000, 0x01f02f, "Mahjong Tiles" }, - { 0x01f030, 0x01f09f, "Domino Tiles" }, - { 0x020000, 0x02a6df, "CJK Unified Ideographs Extension B" }, - { 0x02f800, 0x02fa1f, "CJK Compatibility Ideographs Supplement" }, - { 0x0e0000, 0x0e007f, "Tags" }, - { 0x0e0100, 0x0e01ef, "Variation Selectors Supplement" }, - { 0x0f0000, 0x0fffff, "Supplementary Private Use Area-A" }, - { 0x100000, 0x10ffff, "Supplementary Private Use Area-B" }, - { 0x000000, 0x10FFFF, (char*)0 } /* No_Block */ -}; - - -/** - * Plane table has 4352 entries - */ -static unsigned short plane[] = -{ - 0x0000, 0x0040, 0x0080, 0x00c0, 0x0100, 0x0140, 0x0180, 0x01c0, /* 8 */ - 0x0200, 0x0240, 0x0280, 0x02c0, 0x0300, 0x0340, 0x0380, 0x03c0, /* 16 */ - 0x0400, 0x0440, 0x0480, 0x04c0, 0x0500, 0x0540, 0x0580, 0x05c0, /* 24 */ - 0x0600, 0x0640, 0x0680, 0x06c0, 0x0700, 0x0740, 0x0780, 0x07c0, /* 32 */ - 0x0800, 0x0840, 0x0880, 0x08c0, 0x0900, 0x0940, 0x0980, 0x09c0, /* 40 */ - 0x0a00, 0x0a40, 0x0a80, 0x0ac0, 0x0b00, 0x0b40, 0x0b80, 0x0bc0, /* 48 */ - 0x0c00, 0x0c40, 0x0c80, 0x0cc0, 0x0501, 0x0501, 0x0501, 0x0501, /* 56 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 64 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 72 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0d00, 0x0501, 0x0501, /* 80 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 88 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 96 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 104 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 112 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 120 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 128 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 136 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 144 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 152 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0d40, /* 160 */ - 0x0d80, 0x0501, 0x0501, 0x0501, 0x0dc0, 0x0501, 0x0e00, 0x0e40, /* 168 */ - 0x0e80, 0x0ec0, 0x0f00, 0x01ff, 0x0501, 0x0501, 0x0501, 0x0501, /* 176 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 184 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 192 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 200 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 208 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0f40, /* 216 */ - 0x0f80, 0x0fc0, 0x0f82, 0x0f82, 0x0f82, 0x0f82, 0x0f82, 0x0f82, /* 224 */ - 0x1000, 0x1040, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 232 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 240 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 248 */ - 0x1002, 0x1080, 0x10c0, 0x1100, 0x1140, 0x1180, 0x11c0, 0x1200, /* 256 */ - 0x1240, 0x1280, 0x12c0, 0x1300, 0x1340, 0x01ff, 0x01ff, 0x01ff, /* 264 */ - 0x1380, 0x13c0, 0x1400, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 272 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 280 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 288 */ - 0x0501, 0x0501, 0x0501, 0x1440, 0x1480, 0x01ff, 0x01ff, 0x01ff, /* 296 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 304 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 312 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 320 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 328 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 336 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 344 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 352 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 360 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 368 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 376 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 384 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 392 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 400 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 408 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 416 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 424 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 432 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 440 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 448 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 456 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 464 */ - 0x14c0, 0x1500, 0x1540, 0x1580, 0x15c0, 0x1600, 0x1640, 0x1680, /* 472 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 480 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 488 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 496 */ - 0x16c0, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 504 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 512 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 520 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 528 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 536 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 544 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 552 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 560 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 568 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 576 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 584 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 592 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 600 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 608 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 616 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 624 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 632 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 640 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 648 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 656 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 664 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, /* 672 */ - 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x0501, 0x1700, 0x01ff, /* 680 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 688 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 696 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 704 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 712 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 720 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 728 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 736 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 744 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 752 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 760 */ - 0x1740, 0x0501, 0x1780, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 768 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 776 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 784 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 792 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 800 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 808 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 816 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 824 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 832 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 840 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 848 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 856 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 864 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 872 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 880 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 888 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 896 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 904 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 912 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 920 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 928 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 936 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 944 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 952 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 960 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 968 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 976 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 984 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 992 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1000 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1008 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1016 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1024 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1032 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1040 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1048 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1056 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1064 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1072 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1080 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1088 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1096 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1104 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1112 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1120 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1128 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1136 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1144 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1152 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1160 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1168 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1176 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1184 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1192 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1200 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1208 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1216 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1224 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1232 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1240 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1248 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1256 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1264 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1272 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1280 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1288 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1296 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1304 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1312 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1320 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1328 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1336 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1344 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1352 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1360 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1368 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1376 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1384 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1392 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1400 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1408 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1416 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1424 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1432 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1440 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1448 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1456 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1464 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1472 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1480 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1488 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1496 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1504 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1512 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1520 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1528 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1536 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1544 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1552 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1560 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1568 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1576 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1584 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1592 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1600 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1608 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1616 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1624 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1632 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1640 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1648 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1656 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1664 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1672 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1680 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1688 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1696 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1704 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1712 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1720 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1728 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1736 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1744 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1752 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1760 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1768 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1776 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1784 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1792 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1800 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1808 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1816 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1824 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1832 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1840 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1848 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1856 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1864 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1872 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1880 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1888 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1896 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1904 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1912 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1920 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1928 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1936 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1944 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1952 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1960 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1968 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1976 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1984 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 1992 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2000 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2008 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2016 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2024 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2032 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2040 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2048 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2056 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2064 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2072 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2080 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2088 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2096 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2104 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2112 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2120 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2128 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2136 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2144 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2152 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2160 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2168 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2176 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2184 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2192 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2200 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2208 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2216 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2224 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2232 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2240 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2248 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2256 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2264 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2272 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2280 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2288 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2296 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2304 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2312 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2320 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2328 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2336 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2344 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2352 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2360 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2368 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2376 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2384 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2392 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2400 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2408 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2416 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2424 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2432 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2440 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2448 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2456 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2464 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2472 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2480 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2488 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2496 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2504 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2512 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2520 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2528 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2536 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2544 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2552 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2560 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2568 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2576 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2584 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2592 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2600 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2608 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2616 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2624 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2632 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2640 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2648 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2656 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2664 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2672 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2680 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2688 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2696 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2704 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2712 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2720 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2728 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2736 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2744 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2752 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2760 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2768 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2776 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2784 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2792 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2800 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2808 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2816 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2824 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2832 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2840 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2848 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2856 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2864 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2872 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2880 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2888 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2896 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2904 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2912 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2920 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2928 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2936 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2944 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2952 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2960 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2968 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2976 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2984 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 2992 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3000 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3008 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3016 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3024 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3032 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3040 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3048 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3056 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3064 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3072 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3080 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3088 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3096 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3104 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3112 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3120 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3128 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3136 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3144 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3152 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3160 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3168 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3176 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3184 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3192 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3200 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3208 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3216 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3224 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3232 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3240 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3248 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3256 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3264 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3272 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3280 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3288 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3296 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3304 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3312 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3320 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3328 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3336 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3344 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3352 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3360 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3368 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3376 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3384 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3392 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3400 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3408 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3416 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3424 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3432 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3440 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3448 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3456 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3464 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3472 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3480 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3488 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3496 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3504 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3512 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3520 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3528 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3536 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3544 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3552 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3560 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3568 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3576 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3584 */ - 0x17c0, 0x1800, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3592 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3600 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3608 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3616 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3624 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3632 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3640 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3648 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3656 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3664 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3672 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3680 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3688 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3696 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3704 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3712 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3720 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3728 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3736 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3744 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3752 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3760 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3768 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3776 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3784 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3792 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3800 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3808 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3816 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3824 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3832 */ - 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, 0x01ff, /* 3840 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3848 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3856 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3864 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3872 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3880 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3888 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3896 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3904 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3912 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3920 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3928 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3936 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3944 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3952 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3960 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3968 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3976 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3984 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 3992 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4000 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4008 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4016 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4024 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4032 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4040 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4048 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4056 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4064 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4072 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4080 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4088 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1840, /* 4096 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4104 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4112 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4120 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4128 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4136 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4144 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4152 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4160 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4168 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4176 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4184 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4192 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4200 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4208 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4216 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4224 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4232 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4240 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4248 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4256 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4264 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4272 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4280 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4288 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4296 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4304 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4312 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4320 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4328 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4336 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, /* 4344 */ - 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1002, 0x1880, /* 4352 */ - -}; - -/** - * Block table has 6336 entries - */ -static unsigned short block[] = -{ - 0x0000, 0x0004, 0x0008, 0x000c, 0x0000, 0x0000, 0x0000, 0x0010, /* 8 */ - 0x0014, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, 0x002c, 0x0030, /* 16 */ - 0x0034, 0x0038, 0x003c, 0x0040, 0x0044, 0x0048, 0x004c, 0x0050, /* 24 */ - 0x0054, 0x0058, 0x005c, 0x0060, 0x0064, 0x0068, 0x006c, 0x0070, /* 32 */ - 0x0000, 0x0074, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, /* 40 */ - 0x0078, 0x007c, 0x0080, 0x0084, 0x0088, 0x008c, 0x0090, 0x0094, /* 48 */ - 0x0098, 0x009c, 0x0098, 0x00a0, 0x0098, 0x00a4, 0x0098, 0x00a8, /* 56 */ - 0x00ac, 0x00b0, 0x00ac, 0x00ac, 0x00ac, 0x00b4, 0x00ac, 0x00b8, /* 64 */ - 0x00bc, 0x00c0, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 72 */ - 0x00bc, 0x00bc, 0x00c4, 0x00c2, 0x00c8, 0x00bc, 0x00cc, 0x00bd, /* 80 */ - 0x00bd, 0x00bd, 0x00d0, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 88 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00d4, 0x00ce, /* 96 */ - 0x00d8, 0x00dc, 0x00e0, 0x00e4, 0x00e8, 0x00ec, 0x00f0, 0x00f4, /* 104 */ - 0x00bc, 0x00f8, 0x00fc, 0x00f8, 0x0100, 0x0104, 0x0108, 0x010c, /* 112 */ - 0x0110, 0x0114, 0x0118, 0x011c, 0x00bd, 0x00bd, 0x00bd, 0x0120, /* 120 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x0124, 0x0128, 0x00bc, 0x00bc, /* 128 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 136 */ - 0x012c, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x0130, 0x0134, 0x0138, /* 144 */ - 0x013c, 0x0140, 0x00bc, 0x00bc, 0x0144, 0x0148, 0x014c, 0x0130, /* 152 */ - 0x0150, 0x0130, 0x0154, 0x0158, 0x015c, 0x0160, 0x0130, 0x0156, /* 160 */ - 0x0164, 0x0130, 0x0168, 0x016c, 0x0170, 0x0174, 0x0130, 0x0130, /* 168 */ - 0x0130, 0x0130, 0x0130, 0x0130, 0x0178, 0x017c, 0x0180, 0x0178, /* 176 */ - 0x0184, 0x0188, 0x018c, 0x018a, 0x0184, 0x0186, 0x0186, 0x0186, /* 184 */ - 0x0178, 0x0185, 0x0186, 0x0190, 0x0186, 0x0186, 0x0186, 0x0186, /* 192 */ - 0x0194, 0x0198, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 200 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 208 */ - 0x0194, 0x019c, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 216 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x00bc, 0x01a0, 0x01a4, 0x01a8, /* 224 */ - 0x01ac, 0x01b0, 0x01b4, 0x01b8, 0x01bc, 0x0098, 0x0098, 0x0098, /* 232 */ - 0x01c0, 0x0098, 0x0098, 0x01c4, 0x00ab, 0x00ac, 0x00ac, 0x00ac, /* 240 */ - 0x01c8, 0x00ac, 0x00ac, 0x01cc, 0x01d0, 0x01d4, 0x00bc, 0x00bc, /* 248 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x01d8, 0x01dc, 0x01e0, 0x01e4, /* 256 */ - 0x01e8, 0x01ec, 0x01e8, 0x01e8, 0x0098, 0x0098, 0x0098, 0x0098, /* 264 */ - 0x0098, 0x0098, 0x0098, 0x0098, 0x00ac, 0x00ac, 0x00ac, 0x00ac, /* 272 */ - 0x00ac, 0x00ac, 0x00ac, 0x00ac, 0x01f0, 0x01f4, 0x01f0, 0x01f0, /* 280 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 288 */ - 0x01f8, 0x0194, 0x01fc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 296 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 304 */ - 0x0200, 0x00bd, 0x00bd, 0x0204, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 312 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 320 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 328 */ - 0x00bc, 0x01ab, 0x01ab, 0x01ab, 0x0208, 0x020c, 0x0209, 0x0209, /* 336 */ - 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0210, 0x0214, 0x0218, /* 344 */ - 0x021c, 0x0220, 0x021d, 0x021d, 0x021d, 0x021d, 0x021d, 0x021d, /* 352 */ - 0x021d, 0x0224, 0x0228, 0x01ab, 0x022c, 0x0194, 0x0194, 0x0194, /* 360 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0230, /* 368 */ - 0x0234, 0x0238, 0x01ab, 0x01ab, 0x023c, 0x0240, 0x023c, 0x023c, /* 376 */ - 0x023c, 0x023c, 0x0244, 0x01ab, 0x0248, 0x024c, 0x01ab, 0x01ab, /* 384 */ - 0x0250, 0x0254, 0x0258, 0x025c, 0x0194, 0x0194, 0x0260, 0x0264, /* 392 */ - 0x0268, 0x026c, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 400 */ - 0x0270, 0x0269, 0x0274, 0x0194, 0x0194, 0x0194, 0x0194, 0x0278, /* 408 */ - 0x027c, 0x0280, 0x0284, 0x0288, 0x028c, 0x0269, 0x0269, 0x0269, /* 416 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 424 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 432 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0290, 0x0194, 0x0294, /* 440 */ - 0x0194, 0x0298, 0x029c, 0x02a0, 0x0024, 0x0028, 0x02a4, 0x02a8, /* 448 */ - 0x02ac, 0x02b0, 0x02ac, 0x02b4, 0x028b, 0x0269, 0x0269, 0x0269, /* 456 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0194, 0x0194, 0x0194, 0x0194, /* 464 */ - 0x0194, 0x0194, 0x0278, 0x0268, 0x0269, 0x0269, 0x0269, 0x0269, /* 472 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 480 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 488 */ - 0x0269, 0x0275, 0x0194, 0x0194, 0x02b8, 0x01ab, 0x01ab, 0x01ab, /* 496 */ - 0x02bc, 0x02c0, 0x02c4, 0x023c, 0x023c, 0x023c, 0x023c, 0x023c, /* 504 */ - 0x023c, 0x023c, 0x02c8, 0x0194, 0x0194, 0x02cc, 0x02d0, 0x01ab, /* 512 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 520 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 528 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 536 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 544 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 552 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 560 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 568 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 576 */ - 0x02d4, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 584 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x02d8, 0x02dc, /* 592 */ - 0x02e0, 0x0194, 0x02e4, 0x02e8, 0x02ec, 0x02f0, 0x0110, 0x0110, /* 600 */ - 0x02f4, 0x02f8, 0x02fc, 0x0300, 0x0304, 0x01ab, 0x02f1, 0x0110, /* 608 */ - 0x0308, 0x030c, 0x0110, 0x0310, 0x0314, 0x0110, 0x0110, 0x0110, /* 616 */ - 0x0110, 0x0110, 0x0318, 0x0110, 0x031c, 0x02f2, 0x02d8, 0x02dc, /* 624 */ - 0x02e0, 0x0320, 0x0324, 0x0328, 0x01ab, 0x032c, 0x01ab, 0x0317, /* 632 */ - 0x02f4, 0x0330, 0x02fc, 0x0300, 0x0334, 0x0338, 0x033c, 0x01ab, /* 640 */ - 0x02d4, 0x030c, 0x030e, 0x02f1, 0x0310, 0x0110, 0x0110, 0x0110, /* 648 */ - 0x0110, 0x0110, 0x0318, 0x0110, 0x0318, 0x0312, 0x02d8, 0x0340, /* 656 */ - 0x0344, 0x0348, 0x034c, 0x02ef, 0x031f, 0x01ab, 0x030c, 0x031c, /* 664 */ - 0x01ab, 0x0330, 0x02fc, 0x0300, 0x0350, 0x0354, 0x01ab, 0x01ab, /* 672 */ - 0x02d4, 0x030c, 0x0110, 0x0317, 0x0317, 0x0110, 0x0110, 0x0110, /* 680 */ - 0x0110, 0x0110, 0x0318, 0x0110, 0x0318, 0x030c, 0x02d8, 0x02dc, /* 688 */ - 0x02e0, 0x0358, 0x035c, 0x02e8, 0x032a, 0x01ab, 0x01ab, 0x01ab, /* 696 */ - 0x02f4, 0x0330, 0x02fc, 0x0300, 0x0360, 0x01ab, 0x01ab, 0x01ab, /* 704 */ - 0x0308, 0x030c, 0x0110, 0x0310, 0x0310, 0x0110, 0x0110, 0x0110, /* 712 */ - 0x0110, 0x0110, 0x0318, 0x0110, 0x0318, 0x030c, 0x02d8, 0x0364, /* 720 */ - 0x02e0, 0x0320, 0x0324, 0x02e8, 0x01ab, 0x0307, 0x01ab, 0x0317, /* 728 */ - 0x02f4, 0x0330, 0x02fc, 0x0300, 0x0368, 0x01ab, 0x01ab, 0x01ab, /* 736 */ - 0x02da, 0x030c, 0x030e, 0x02f2, 0x0318, 0x02d8, 0x0312, 0x0318, /* 744 */ - 0x02f1, 0x032a, 0x030e, 0x02f2, 0x0110, 0x0110, 0x02d8, 0x0321, /* 752 */ - 0x0309, 0x0321, 0x036c, 0x02e8, 0x032a, 0x032c, 0x01ab, 0x01ab, /* 760 */ - 0x01ab, 0x0330, 0x02fc, 0x0300, 0x0370, 0x0374, 0x0378, 0x01ab, /* 768 */ - 0x0341, 0x030c, 0x0110, 0x0318, 0x0318, 0x0110, 0x0110, 0x0110, /* 776 */ - 0x0110, 0x0110, 0x0318, 0x0110, 0x0110, 0x030c, 0x02d8, 0x02eb, /* 784 */ - 0x02e4, 0x037c, 0x0359, 0x02ef, 0x01ab, 0x034a, 0x02d8, 0x01ab, /* 792 */ - 0x02f4, 0x0330, 0x02fc, 0x0300, 0x01ab, 0x01ab, 0x0380, 0x0384, /* 800 */ - 0x0321, 0x030c, 0x0110, 0x0318, 0x0318, 0x0110, 0x0110, 0x0110, /* 808 */ - 0x0110, 0x0110, 0x0318, 0x0110, 0x0110, 0x030c, 0x02d8, 0x0388, /* 816 */ - 0x02e5, 0x038c, 0x036c, 0x02ef, 0x01ab, 0x0322, 0x01ab, 0x0390, /* 824 */ - 0x02f4, 0x0330, 0x02fc, 0x0300, 0x0394, 0x01ab, 0x01ab, 0x01ab, /* 832 */ - 0x0321, 0x030c, 0x0110, 0x0318, 0x0318, 0x0110, 0x0110, 0x0110, /* 840 */ - 0x0110, 0x0110, 0x0318, 0x0110, 0x0110, 0x0110, 0x02d8, 0x0398, /* 848 */ - 0x02e0, 0x0340, 0x036c, 0x02e8, 0x01ab, 0x032c, 0x01ab, 0x01ab, /* 856 */ - 0x02f4, 0x0330, 0x02fc, 0x0300, 0x039c, 0x03a0, 0x03a4, 0x0110, /* 864 */ - 0x0321, 0x030c, 0x0110, 0x0110, 0x0110, 0x030e, 0x02f2, 0x0110, /* 872 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0317, 0x0110, 0x0110, 0x0391, /* 880 */ - 0x0110, 0x030e, 0x03a8, 0x032c, 0x02df, 0x03ac, 0x02e5, 0x02e5, /* 888 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x0321, 0x03b0, 0x01ab, 0x01ab, /* 896 */ - 0x030c, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 904 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x03b4, 0x0194, 0x0278, 0x03b8, /* 912 */ - 0x0110, 0x03bc, 0x0194, 0x03c0, 0x02fa, 0x02fe, 0x03c4, 0x01ab, /* 920 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 928 */ - 0x0312, 0x0310, 0x031c, 0x0391, 0x01ab, 0x0110, 0x030c, 0x0110, /* 936 */ - 0x030c, 0x03c8, 0x02f2, 0x030c, 0x03b4, 0x0194, 0x0358, 0x0329, /* 944 */ - 0x0110, 0x03cc, 0x0194, 0x02ef, 0x02fa, 0x02fe, 0x03d0, 0x02d8, /* 952 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 960 */ - 0x03d4, 0x0216, 0x0216, 0x0216, 0x03d8, 0x03dc, 0x03e0, 0x03db, /* 968 */ - 0x02fa, 0x02fe, 0x03e4, 0x03e8, 0x03e6, 0x03ec, 0x03f0, 0x03f4, /* 976 */ - 0x0110, 0x0110, 0x030c, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 984 */ - 0x0110, 0x0110, 0x0110, 0x032a, 0x022c, 0x0194, 0x0194, 0x02e2, /* 992 */ - 0x0194, 0x03f8, 0x0110, 0x01ab, 0x0194, 0x0194, 0x022c, 0x0194, /* 1000 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x03fc, /* 1008 */ - 0x03db, 0x0400, 0x03db, 0x0404, 0x0216, 0x03b0, 0x01ab, 0x01ab, /* 1016 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1024 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1032 */ - 0x0110, 0x0110, 0x0408, 0x02e0, 0x040c, 0x0194, 0x0410, 0x0414, /* 1040 */ - 0x02fa, 0x02fe, 0x03c4, 0x0216, 0x0110, 0x0418, 0x0350, 0x02f4, /* 1048 */ - 0x02dc, 0x041c, 0x02e5, 0x041b, 0x02ec, 0x0351, 0x0110, 0x0110, /* 1056 */ - 0x0420, 0x040d, 0x02e5, 0x0424, 0x02fa, 0x02fe, 0x03d0, 0x0428, /* 1064 */ - 0x042c, 0x0430, 0x042c, 0x042c, 0x042c, 0x042c, 0x042c, 0x042c, /* 1072 */ - 0x042c, 0x0434, 0x01ab, 0x01ab, 0x0110, 0x0110, 0x0110, 0x0110, /* 1080 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0438, 0x043c, /* 1088 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1096 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1104 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x02d8, 0x02f1, /* 1112 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1120 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1128 */ - 0x030e, 0x01ab, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1136 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1144 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x02d8, 0x01ab, /* 1152 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1160 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1168 */ - 0x0110, 0x0110, 0x0318, 0x02d8, 0x0110, 0x030e, 0x0318, 0x02d8, /* 1176 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1184 */ - 0x0110, 0x0110, 0x0318, 0x02d8, 0x0110, 0x0110, 0x0110, 0x0110, /* 1192 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0318, 0x02d8, 0x0110, 0x030e, /* 1200 */ - 0x0318, 0x02d8, 0x0110, 0x0110, 0x0110, 0x030e, 0x0110, 0x0110, /* 1208 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1216 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0318, 0x02d8, 0x0110, 0x0110, /* 1224 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1232 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x030e, 0x0348, /* 1240 */ - 0x03d7, 0x0216, 0x0440, 0x0444, 0x0448, 0x044c, 0x0450, 0x0454, /* 1248 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0373, 0x0373, 0x0395, 0x01ab, /* 1256 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1264 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1272 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x032a, 0x01ab, 0x01ab, /* 1280 */ - 0x030c, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1288 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1296 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1304 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1312 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1320 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1328 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1336 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1344 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1352 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1360 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1368 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1376 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1384 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1392 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1400 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1408 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1416 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1424 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1432 */ - 0x0110, 0x0110, 0x0110, 0x0458, 0x0110, 0x030e, 0x01ab, 0x01ab, /* 1440 */ - 0x045c, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0460, 0x0464, /* 1448 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1456 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1464 */ - 0x0110, 0x0110, 0x0438, 0x0468, 0x046c, 0x01ab, 0x01ab, 0x01ab, /* 1472 */ - 0x0110, 0x0110, 0x0110, 0x0318, 0x02f4, 0x02f0, 0x01ab, 0x01ab, /* 1480 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x02f4, 0x0470, 0x01ab, 0x01ab, /* 1488 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x02f4, 0x01ab, 0x01ab, 0x01ab, /* 1496 */ - 0x0110, 0x0110, 0x0110, 0x0318, 0x0474, 0x01ab, 0x01ab, 0x01ab, /* 1504 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1512 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0478, 0x0194, 0x02e3, /* 1520 */ - 0x02e5, 0x047c, 0x02e0, 0x0194, 0x0194, 0x0480, 0x0484, 0x0354, /* 1528 */ - 0x02fa, 0x02fe, 0x03d0, 0x01ab, 0x0380, 0x0488, 0x048c, 0x01ab, /* 1536 */ - 0x0490, 0x0494, 0x0498, 0x049c, 0x02fa, 0x02fe, 0x03d0, 0x01ab, /* 1544 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1552 */ - 0x04a0, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1560 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x01ab, 0x01ab, /* 1568 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1576 */ - 0x0110, 0x0110, 0x04a4, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1584 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1592 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1600 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x032a, /* 1608 */ - 0x02e2, 0x02de, 0x02e4, 0x01ab, 0x047c, 0x02e5, 0x02e0, 0x01ab, /* 1616 */ - 0x04a8, 0x04ac, 0x02fc, 0x0300, 0x0110, 0x0110, 0x0110, 0x0110, /* 1624 */ - 0x0110, 0x0110, 0x0110, 0x02d8, 0x0110, 0x032a, 0x01ab, 0x01ab, /* 1632 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1640 */ - 0x0110, 0x0110, 0x02d8, 0x01ab, 0x02e5, 0x02e5, 0x02e5, 0x02e5, /* 1648 */ - 0x04b0, 0x0110, 0x0323, 0x01ab, 0x02fa, 0x02fe, 0x03d0, 0x048e, /* 1656 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 1664 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0352, 0x02e4, 0x0466, /* 1672 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1680 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1688 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1696 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1704 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1712 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1720 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1728 */ - 0x0194, 0x04b4, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1736 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x040c, 0x02e2, 0x02e4, /* 1744 */ - 0x047c, 0x04b0, 0x0110, 0x01ab, 0x02fa, 0x02fe, 0x03c4, 0x0216, /* 1752 */ - 0x03da, 0x03db, 0x03dd, 0x0194, 0x0194, 0x03db, 0x03db, 0x04b8, /* 1760 */ - 0x02d5, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1768 */ - 0x04bc, 0x02e3, 0x035b, 0x02f2, 0x02fa, 0x02fe, 0x03d0, 0x01ab, /* 1776 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1784 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1792 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 1800 */ - 0x0110, 0x02e5, 0x02e5, 0x0194, 0x0194, 0x02df, 0x043d, 0x0216, /* 1808 */ - 0x02fa, 0x02fe, 0x03d0, 0x030c, 0x02fa, 0x02fe, 0x04c0, 0x0110, /* 1816 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0178, 0x04c4, /* 1824 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1832 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1840 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1848 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 1856 */ - 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, /* 1864 */ - 0x0130, 0x0130, 0x0130, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, /* 1872 */ - 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, /* 1880 */ - 0x04c8, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x04cc, 0x0156, /* 1888 */ - 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0175, 0x0178, /* 1896 */ - 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, 0x0178, /* 1904 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 1912 */ - 0x0194, 0x0278, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x022b, /* 1920 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 1928 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 1936 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 1944 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 1952 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x0142, 0x04d0, 0x04d4, /* 1960 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 1968 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 1976 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 1984 */ - 0x04d8, 0x04dc, 0x04e0, 0x04e4, 0x04d8, 0x04e8, 0x04e0, 0x04ec, /* 1992 */ - 0x04d8, 0x04d8, 0x04e0, 0x04e0, 0x04d8, 0x04d8, 0x04e0, 0x04e0, /* 2000 */ - 0x04d8, 0x04e8, 0x04e0, 0x04f0, 0x04f4, 0x04f8, 0x04fc, 0x0500, /* 2008 */ - 0x04d8, 0x04d8, 0x04e0, 0x04e0, 0x0504, 0x0508, 0x050c, 0x0510, /* 2016 */ - 0x0514, 0x0518, 0x051c, 0x0520, 0x0514, 0x0514, 0x051c, 0x051c, /* 2024 */ - 0x0514, 0x0514, 0x051c, 0x051c, 0x0524, 0x0528, 0x052c, 0x0530, /* 2032 */ - 0x0534, 0x0528, 0x0538, 0x053c, 0x0524, 0x0512, 0x0540, 0x0544, /* 2040 */ - 0x0524, 0x0548, 0x054c, 0x0550, 0x0512, 0x0528, 0x0554, 0x0558, /* 2048 */ - 0x055c, 0x0560, 0x0564, 0x0568, 0x056c, 0x0570, 0x0574, 0x0578, /* 2056 */ - 0x0490, 0x0490, 0x057c, 0x0580, 0x0584, 0x0588, 0x058c, 0x0590, /* 2064 */ - 0x0594, 0x0598, 0x0490, 0x0490, 0x059c, 0x0594, 0x0490, 0x05a0, /* 2072 */ - 0x05a4, 0x05a8, 0x05ac, 0x05a4, 0x05b0, 0x05b4, 0x05b8, 0x05bc, /* 2080 */ - 0x05c0, 0x05b4, 0x05b8, 0x05c4, 0x0178, 0x043c, 0x01ab, 0x01ab, /* 2088 */ - 0x007a, 0x007a, 0x007a, 0x007a, 0x007a, 0x05c8, 0x01ab, 0x01ab, /* 2096 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x0194, 0x0194, 0x0194, 0x05cc, /* 2104 */ - 0x05d0, 0x05d4, 0x0194, 0x0194, 0x02f0, 0x01ab, 0x01ab, 0x01ab, /* 2112 */ - 0x05d8, 0x05dc, 0x05e0, 0x05e4, 0x05e3, 0x05d9, 0x05e8, 0x05ec, /* 2120 */ - 0x0373, 0x05f0, 0x05f4, 0x05f8, 0x05fc, 0x0600, 0x0604, 0x0608, /* 2128 */ - 0x060c, 0x0610, 0x0614, 0x0618, 0x061c, 0x0620, 0x061f, 0x0624, /* 2136 */ - 0x0628, 0x062c, 0x0630, 0x0634, 0x0638, 0x063c, 0x0640, 0x0644, /* 2144 */ - 0x0648, 0x064c, 0x0650, 0x01ab, 0x060d, 0x0654, 0x0658, 0x0373, /* 2152 */ - 0x065c, 0x0660, 0x0373, 0x065d, 0x0373, 0x0373, 0x0373, 0x0373, /* 2160 */ - 0x0373, 0x0373, 0x0373, 0x0658, 0x065d, 0x0654, 0x0373, 0x0373, /* 2168 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x060d, 0x060d, 0x060d, /* 2176 */ - 0x0664, 0x060c, 0x0668, 0x066c, 0x0670, 0x0674, 0x0678, 0x067c, /* 2184 */ - 0x066b, 0x0680, 0x066e, 0x0665, 0x0665, 0x060d, 0x0684, 0x0665, /* 2192 */ - 0x0665, 0x0665, 0x0665, 0x060c, 0x0678, 0x066c, 0x060d, 0x066e, /* 2200 */ - 0x0680, 0x0665, 0x0665, 0x0678, 0x0665, 0x0665, 0x0665, 0x0665, /* 2208 */ - 0x0665, 0x0665, 0x0665, 0x0682, 0x066b, 0x060d, 0x060c, 0x060d, /* 2216 */ - 0x0678, 0x0678, 0x0665, 0x0665, 0x0665, 0x0665, 0x060c, 0x0678, /* 2224 */ - 0x060d, 0x060d, 0x0664, 0x066c, 0x066c, 0x0678, 0x0665, 0x0665, /* 2232 */ - 0x0665, 0x0665, 0x0665, 0x066c, 0x0665, 0x0665, 0x0665, 0x0665, /* 2240 */ - 0x0373, 0x0373, 0x0665, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2248 */ - 0x0688, 0x0373, 0x068c, 0x0373, 0x0373, 0x0690, 0x03db, 0x03db, /* 2256 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 2264 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x0694, 0x0654, /* 2272 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0698, 0x0657, 0x060d, /* 2280 */ - 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x0373, 0x0373, 0x0373, /* 2288 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x060d, /* 2296 */ - 0x065b, 0x0373, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2304 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2312 */ - 0x0373, 0x069c, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2320 */ - 0x0373, 0x0373, 0x06a0, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2328 */ - 0x06a4, 0x0489, 0x06a8, 0x06ac, 0x06b0, 0x06a4, 0x0489, 0x06a8, /* 2336 */ - 0x06ac, 0x06b4, 0x06b8, 0x05b5, 0x06bc, 0x06c0, 0x06c4, 0x03db, /* 2344 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x06c8, 0x06cc, 0x06ca, /* 2352 */ - 0x06ca, 0x06ca, 0x06ca, 0x06ca, 0x06d0, 0x06d4, 0x06d0, 0x06d0, /* 2360 */ - 0x06d0, 0x06d0, 0x06d8, 0x06ab, 0x06af, 0x06dc, 0x0488, 0x06e0, /* 2368 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2376 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2384 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2392 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2400 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2408 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0657, 0x0373, 0x0373, /* 2416 */ - 0x0616, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2424 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x060d, 0x060d, /* 2432 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2440 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2448 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2456 */ - 0x0373, 0x0373, 0x0373, 0x0657, 0x0373, 0x0373, 0x0373, 0x0373, /* 2464 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0395, /* 2472 */ - 0x0373, 0x0373, 0x0373, 0x0699, 0x0373, 0x0373, 0x0373, 0x04a8, /* 2480 */ - 0x0373, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2488 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2496 */ - 0x069f, 0x069e, 0x0395, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2504 */ - 0x0373, 0x0373, 0x069f, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2512 */ - 0x0373, 0x0373, 0x0373, 0x06e4, 0x069c, 0x06e8, 0x0373, 0x069c, /* 2520 */ - 0x069f, 0x0373, 0x03f2, 0x03f2, 0x03f2, 0x06ec, 0x06f0, 0x06f4, /* 2528 */ - 0x06a4, 0x0489, 0x06f8, 0x06f0, 0x06f4, 0x04a8, 0x0373, 0x0373, /* 2536 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x069f, 0x0373, 0x0373, 0x069c, /* 2544 */ - 0x0682, 0x06fc, 0x0700, 0x0704, 0x066e, 0x066b, 0x060d, 0x066b, /* 2552 */ - 0x0678, 0x0708, 0x03f2, 0x03f2, 0x060d, 0x060d, 0x060d, 0x060d, /* 2560 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 2568 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 2576 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 2584 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 2592 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 2600 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 2608 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 2616 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 2624 */ - 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, /* 2632 */ - 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, /* 2640 */ - 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, /* 2648 */ - 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, /* 2656 */ - 0x070c, 0x0710, 0x0714, 0x0710, 0x0710, 0x0710, 0x0718, 0x0665, /* 2664 */ - 0x0665, 0x0665, 0x0665, 0x0665, 0x060d, 0x060d, 0x060c, 0x060d, /* 2672 */ - 0x0665, 0x066c, 0x0681, 0x0678, 0x066b, 0x066c, 0x03f2, 0x060c, /* 2680 */ - 0x0684, 0x066c, 0x066c, 0x060d, 0x060d, 0x0665, 0x066c, 0x070a, /* 2688 */ - 0x060d, 0x060d, 0x0678, 0x0665, 0x0665, 0x0665, 0x0665, 0x067d, /* 2696 */ - 0x066c, 0x0680, 0x0684, 0x066b, 0x060d, 0x066c, 0x060d, 0x066b, /* 2704 */ - 0x060d, 0x060d, 0x060d, 0x060d, 0x060d, 0x066e, 0x060c, 0x060d, /* 2712 */ - 0x060d, 0x066c, 0x0678, 0x067c, 0x0682, 0x060c, 0x0664, 0x0665, /* 2720 */ - 0x0665, 0x0665, 0x0665, 0x0665, 0x0665, 0x0665, 0x0665, 0x0665, /* 2728 */ - 0x0665, 0x0678, 0x0665, 0x067c, 0x0665, 0x0665, 0x0665, 0x0665, /* 2736 */ - 0x0665, 0x0665, 0x0665, 0x0665, 0x0665, 0x066b, 0x060d, 0x0680, /* 2744 */ - 0x0678, 0x066b, 0x060d, 0x066b, 0x066e, 0x066e, 0x0665, 0x0681, /* 2752 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2760 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x060d, 0x060d, 0x060d, 0x060d, /* 2768 */ - 0x060d, 0x065c, 0x060d, 0x071c, 0x0373, 0x04a8, 0x01ab, 0x01ab, /* 2776 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2784 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2792 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2800 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2808 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2816 */ - 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, 0x0209, /* 2824 */ - 0x0209, 0x0209, 0x0209, 0x0210, 0x021d, 0x021d, 0x021d, 0x021d, /* 2832 */ - 0x021d, 0x021d, 0x021d, 0x021d, 0x021d, 0x021d, 0x021d, 0x0720, /* 2840 */ - 0x0724, 0x0728, 0x00bd, 0x0725, 0x072c, 0x012d, 0x0130, 0x0730, /* 2848 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 2856 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 2864 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 2872 */ - 0x00bc, 0x0734, 0x069c, 0x01ab, 0x01ab, 0x01ab, 0x048f, 0x0738, /* 2880 */ - 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, 0x0514, /* 2888 */ - 0x0514, 0x073c, 0x01ab, 0x01ab, 0x0110, 0x0110, 0x0110, 0x0110, /* 2896 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 2904 */ - 0x0110, 0x02d8, 0x01ab, 0x0740, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2912 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x030e, 0x01ab, 0x01ab, /* 2920 */ - 0x0110, 0x030e, 0x0110, 0x030e, 0x0110, 0x030e, 0x0110, 0x030e, /* 2928 */ - 0x0110, 0x030e, 0x0110, 0x030e, 0x0110, 0x030e, 0x0110, 0x030e, /* 2936 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 2944 */ - 0x058b, 0x058d, 0x058c, 0x058d, 0x0490, 0x0493, 0x0494, 0x058d, /* 2952 */ - 0x0744, 0x03f2, 0x0599, 0x0748, 0x01aa, 0x01ab, 0x01ab, 0x01ab, /* 2960 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2968 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 2976 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x069d, 0x0373, /* 2984 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 2992 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3000 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x01ab, 0x01ab, 0x01ab, /* 3008 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3016 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3024 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3032 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3040 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3048 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3056 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0395, 0x01ab, 0x01ab, /* 3064 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x0373, 0x0373, 0x0373, 0x01ab, /* 3072 */ - 0x074c, 0x0750, 0x03f2, 0x03f2, 0x068d, 0x03f2, 0x03f2, 0x0754, /* 3080 */ - 0x0758, 0x075c, 0x0760, 0x0194, 0x0764, 0x0768, 0x076c, 0x0770, /* 3088 */ - 0x030c, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3096 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3104 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x030e, 0x0774, 0x0778, /* 3112 */ - 0x077c, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3120 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3128 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0780, 0x0784, /* 3136 */ - 0x01ab, 0x030c, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3144 */ - 0x0110, 0x0110, 0x0110, 0x02d8, 0x030c, 0x0110, 0x0110, 0x0110, /* 3152 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3160 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3168 */ - 0x0110, 0x0110, 0x0110, 0x030e, 0x0788, 0x078c, 0x03db, 0x03db, /* 3176 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x01ab, 0x01ab, /* 3184 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3192 */ - 0x0373, 0x01ab, 0x01ab, 0x01ab, 0x0110, 0x0110, 0x0110, 0x0110, /* 3200 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x0790, /* 3208 */ - 0x0338, 0x0445, 0x0794, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 3216 */ - 0x03db, 0x01ab, 0x01ab, 0x01ab, 0x0798, 0x079c, 0x07a0, 0x07a4, /* 3224 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x068f, /* 3232 */ - 0x0338, 0x0445, 0x0794, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 3240 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x07a8, 0x07ac, 0x07b0, 0x07b4, /* 3248 */ - 0x03db, 0x03db, 0x03db, 0x0373, 0x03db, 0x03db, 0x03db, 0x03db, /* 3256 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x07b8, /* 3264 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 3272 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 3280 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 3288 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x0694, 0x068f, 0x03db, /* 3296 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 3304 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 3312 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x0695, /* 3320 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x0694, /* 3328 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3336 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3344 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3352 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3360 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3368 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x02d8, 0x01ab, 0x01ab, /* 3376 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3384 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3392 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3400 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3408 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3416 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3424 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3432 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3440 */ - 0x0110, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3448 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3456 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x07bc, 0x0110, 0x0110, /* 3464 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3472 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3480 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3488 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3496 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3504 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3512 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3520 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3528 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3536 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3544 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3552 */ - 0x0110, 0x0110, 0x0110, 0x032a, 0x0373, 0x0373, 0x0373, 0x0373, /* 3560 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 3568 */ - 0x0373, 0x069c, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3576 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3584 */ - 0x0110, 0x0110, 0x0110, 0x07c0, 0x0110, 0x0110, 0x0110, 0x0110, /* 3592 */ - 0x02fa, 0x02fe, 0x04c0, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3600 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 3608 */ - 0x07c4, 0x00bc, 0x00bc, 0x07c8, 0x07cc, 0x01ab, 0x01ab, 0x07d0, /* 3616 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x01ab, 0x01ab, /* 3624 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3632 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3640 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3648 */ - 0x0186, 0x0186, 0x0186, 0x0186, 0x0186, 0x0187, 0x018a, 0x018a, /* 3656 */ - 0x07d4, 0x00bc, 0x00bc, 0x00bc, 0x013b, 0x00bc, 0x00bc, 0x00bc, /* 3664 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x00bc, /* 3672 */ - 0x00bc, 0x00bc, 0x00bc, 0x00bc, 0x07d8, 0x0130, 0x00cc, 0x07dc, /* 3680 */ - 0x00bc, 0x00bc, 0x07e0, 0x07e4, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3688 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3696 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3704 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x02f1, 0x0110, /* 3712 */ - 0x07e8, 0x07ec, 0x0352, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3720 */ - 0x0408, 0x040d, 0x0373, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3728 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3736 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0490, 0x01ab, 0x01ab, /* 3744 */ - 0x041b, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3752 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x02e5, 0x02e5, 0x02e5, /* 3760 */ - 0x02e5, 0x02f0, 0x01ab, 0x0466, 0x02fa, 0x02fe, 0x03d0, 0x01ab, /* 3768 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3776 */ - 0x02fa, 0x02fe, 0x04c0, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3784 */ - 0x0110, 0x02f4, 0x0194, 0x02f6, 0x0110, 0x0110, 0x0110, 0x0110, /* 3792 */ - 0x0110, 0x0352, 0x0194, 0x0194, 0x02e3, 0x01ab, 0x01ab, 0x043d, /* 3800 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3808 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3816 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3824 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3832 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3840 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3848 */ - 0x0110, 0x0110, 0x02ec, 0x02e2, 0x040d, 0x0344, 0x01ab, 0x01ab, /* 3856 */ - 0x0352, 0x0110, 0x0110, 0x07f0, 0x02fa, 0x02fe, 0x03d0, 0x0216, /* 3864 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3872 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3880 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3888 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3896 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3904 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3912 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3920 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3928 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3936 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 3944 */ - 0x0110, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3952 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3960 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 3968 */ - 0x07f4, 0x07f8, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 3976 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 3984 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 3992 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4000 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4008 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4016 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4024 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4032 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4040 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4048 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4056 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4064 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4072 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4080 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4088 */ - 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, 0x07f4, /* 4096 */ - 0x07fc, 0x0800, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4104 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4112 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4120 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4128 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4136 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4144 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4152 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4160 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4168 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4176 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4184 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4192 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4200 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4208 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4216 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 4224 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4232 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4240 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4248 */ - 0x0110, 0x0110, 0x0804, 0x0110, 0x0808, 0x0110, 0x080c, 0x0110, /* 4256 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4264 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0810, 0x0110, 0x0110, 0x0110, /* 4272 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0814, 0x0110, 0x0110, 0x0110, /* 4280 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0818, /* 4288 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4296 */ - 0x0110, 0x0110, 0x0110, 0x02d8, 0x0110, 0x0110, 0x0110, 0x0110, /* 4304 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4312 */ - 0x0110, 0x0110, 0x030e, 0x01ab, 0x0110, 0x0110, 0x0110, 0x0110, /* 4320 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4328 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4336 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x02d8, 0x01ab, /* 4344 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4352 */ - 0x0514, 0x0526, 0x01ab, 0x01ab, 0x081c, 0x0514, 0x01ab, 0x0820, /* 4360 */ - 0x023c, 0x023c, 0x0824, 0x023c, 0x023c, 0x0244, 0x023c, 0x0828, /* 4368 */ - 0x0245, 0x0246, 0x023c, 0x023c, 0x0269, 0x0269, 0x0269, 0x0269, /* 4376 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4384 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4392 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x082c, 0x01ab, 0x01ab, 0x01ab, /* 4400 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x0830, 0x0269, 0x0269, 0x0269, /* 4408 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4416 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4424 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4432 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4440 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4448 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4456 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4464 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4472 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4480 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4488 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0834, /* 4496 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x0269, 0x0269, 0x0269, 0x0269, /* 4504 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4512 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0831, 0x0269, 0x0269, 0x0269, /* 4520 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4528 */ - 0x0269, 0x0269, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4536 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x0269, 0x0269, 0x0269, 0x0838, /* 4544 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0490, 0x083c, 0x0840, 0x01ab, /* 4552 */ - 0x0194, 0x0278, 0x01ab, 0x01ab, 0x0844, 0x0848, 0x084c, 0x084a, /* 4560 */ - 0x084a, 0x0850, 0x0854, 0x0858, 0x085c, 0x0860, 0x0864, 0x0868, /* 4568 */ - 0x086c, 0x0700, 0x0870, 0x01ab, 0x0269, 0x0874, 0x0269, 0x0269, /* 4576 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4584 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4592 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, /* 4600 */ - 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0269, 0x0878, /* 4608 */ - 0x087c, 0x0018, 0x001c, 0x0020, 0x0024, 0x0028, 0x002c, 0x0030, /* 4616 */ - 0x0034, 0x0038, 0x0880, 0x0040, 0x0044, 0x0048, 0x004c, 0x0050, /* 4624 */ - 0x0054, 0x0058, 0x0884, 0x0060, 0x0064, 0x0068, 0x006c, 0x0888, /* 4632 */ - 0x088c, 0x0890, 0x0110, 0x0110, 0x0894, 0x0110, 0x0110, 0x0110, /* 4640 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x04c2, /* 4648 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x030e, /* 4656 */ - 0x02f2, 0x0110, 0x02f2, 0x0110, 0x02f2, 0x0110, 0x02f2, 0x032a, /* 4664 */ - 0x0898, 0x089c, 0x0659, 0x08a0, 0x01ab, 0x01ab, 0x08a4, 0x0395, /* 4672 */ - 0x0110, 0x0110, 0x0110, 0x030c, 0x0110, 0x0110, 0x0110, 0x0110, /* 4680 */ - 0x0110, 0x030e, 0x0110, 0x0110, 0x0110, 0x0110, 0x030e, 0x0317, /* 4688 */ - 0x0110, 0x0110, 0x0110, 0x02d8, 0x0110, 0x0110, 0x0110, 0x02d8, /* 4696 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4704 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4712 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4720 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4728 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x030e, 0x01ab, /* 4736 */ - 0x08a8, 0x08ac, 0x0442, 0x0446, 0x044a, 0x044e, 0x08b0, 0x08b4, /* 4744 */ - 0x08b8, 0x08bc, 0x08c0, 0x08c4, 0x08c8, 0x03a2, 0x03db, 0x03db, /* 4752 */ - 0x08cc, 0x08d0, 0x08d4, 0x08d8, 0x08d5, 0x08dc, 0x08e0, 0x08e4, /* 4760 */ - 0x08e8, 0x08ec, 0x08f0, 0x08f4, 0x08d8, 0x08f8, 0x08fc, 0x0373, /* 4768 */ - 0x0373, 0x0373, 0x0900, 0x01ab, 0x0373, 0x0373, 0x0373, 0x01ab, /* 4776 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4784 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x03db, 0x03db, 0x03db, 0x03db, /* 4792 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x0904, /* 4800 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4808 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4816 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4824 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4832 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x032a, /* 4840 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4848 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x032a, 0x01ab, 0x01ab, 0x01ab, /* 4856 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4864 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x030e, /* 4872 */ - 0x0908, 0x01ab, 0x01ab, 0x01ab, 0x0110, 0x0110, 0x0110, 0x0110, /* 4880 */ - 0x090c, 0x0110, 0x0910, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4888 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4896 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0914, /* 4904 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4912 */ - 0x0110, 0x01ab, 0x0110, 0x0110, 0x0918, 0x091c, 0x01ab, 0x01ab, /* 4920 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4928 */ - 0x0920, 0x0924, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, 0x0920, /* 4936 */ - 0x0920, 0x0920, 0x0928, 0x092c, 0x0928, 0x0928, 0x0928, 0x0928, /* 4944 */ - 0x0928, 0x0928, 0x0928, 0x0928, 0x0110, 0x0110, 0x0110, 0x0110, /* 4952 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 4960 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x02d8, /* 4968 */ - 0x02fa, 0x02fe, 0x03d0, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4976 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4984 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 4992 */ - 0x023c, 0x0930, 0x0246, 0x023c, 0x023c, 0x023c, 0x023c, 0x023c, /* 5000 */ - 0x023c, 0x023c, 0x023c, 0x023c, 0x023c, 0x0245, 0x0934, 0x0931, /* 5008 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5016 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5024 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5032 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5040 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5048 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5056 */ - 0x023c, 0x023c, 0x023c, 0x023c, 0x023c, 0x0938, 0x093c, 0x04a9, /* 5064 */ - 0x023c, 0x023c, 0x023c, 0x023c, 0x023c, 0x023c, 0x0930, 0x0940, /* 5072 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5080 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5088 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5096 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5104 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5112 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5120 */ - 0x0944, 0x034a, 0x01ab, 0x0194, 0x023c, 0x0247, 0x0247, 0x023c, /* 5128 */ - 0x023c, 0x023c, 0x023c, 0x023c, 0x023c, 0x01ab, 0x0278, 0x0348, /* 5136 */ - 0x0948, 0x094c, 0x01ab, 0x01ab, 0x0950, 0x0954, 0x024c, 0x01ab, /* 5144 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5152 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5160 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5168 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5176 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5184 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5192 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5200 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5208 */ - 0x0110, 0x0110, 0x0110, 0x030e, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5216 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5224 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5232 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5240 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5248 */ - 0x075a, 0x075e, 0x075b, 0x0958, 0x075d, 0x095c, 0x075c, 0x0960, /* 5256 */ - 0x0964, 0x0968, 0x075e, 0x096c, 0x0970, 0x096c, 0x0974, 0x0978, /* 5264 */ - 0x097c, 0x0980, 0x0984, 0x0988, 0x098c, 0x0990, 0x0994, 0x0998, /* 5272 */ - 0x099c, 0x01ab, 0x01ab, 0x01ab, 0x0216, 0x01ab, 0x01ab, 0x01ab, /* 5280 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5288 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5296 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5304 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5312 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5320 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5328 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5336 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5344 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5352 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5360 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5368 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x09a0, 0x01ab, 0x01ab, /* 5376 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5384 */ - 0x03db, 0x07b8, 0x03fd, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5392 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5400 */ - 0x03db, 0x09a4, 0x03e0, 0x09a8, 0x09ac, 0x05a4, 0x09b0, 0x0194, /* 5408 */ - 0x09b4, 0x09b8, 0x0194, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, /* 5416 */ - 0x03db, 0x03db, 0x03de, 0x03e0, 0x03db, 0x03db, 0x03db, 0x03db, /* 5424 */ - 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x03db, 0x09a0, /* 5432 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5440 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 5448 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 5456 */ - 0x025e, 0x09bc, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5464 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5472 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5480 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5488 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5496 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5504 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 5512 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 5520 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x069c, 0x01ab, 0x01ab, /* 5528 */ - 0x0338, 0x0445, 0x0449, 0x044d, 0x09c0, 0x01ab, 0x01ab, 0x01ab, /* 5536 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5544 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5552 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5560 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5568 */ - 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e4, 0x0130, /* 5576 */ - 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x05e9, 0x05e9, 0x05e9, /* 5584 */ - 0x05e9, 0x05e9, 0x05e9, 0x05e4, 0x0130, 0x09c4, 0x0130, 0x0130, /* 5592 */ - 0x0130, 0x0130, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, /* 5600 */ - 0x05e4, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x09c8, /* 5608 */ - 0x09cc, 0x09c9, 0x09d0, 0x09c8, 0x05e9, 0x05e4, 0x09d4, 0x09d8, /* 5616 */ - 0x0130, 0x09dc, 0x0130, 0x0130, 0x05e9, 0x05e9, 0x05e9, 0x05e9, /* 5624 */ - 0x05e9, 0x05e9, 0x05e4, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, /* 5632 */ - 0x0130, 0x09e0, 0x09e4, 0x09d0, 0x05e9, 0x09c8, 0x05e9, 0x09e8, /* 5640 */ - 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x09e0, 0x09e4, /* 5648 */ - 0x05e9, 0x09e6, 0x09cf, 0x05e9, 0x09ec, 0x0130, 0x0130, 0x0130, /* 5656 */ - 0x0130, 0x0130, 0x0130, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, /* 5664 */ - 0x05e9, 0x05e4, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, /* 5672 */ - 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e4, 0x0130, /* 5680 */ - 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x05e9, 0x05e9, 0x05e9, /* 5688 */ - 0x05e9, 0x05e9, 0x05e9, 0x05e4, 0x0130, 0x0130, 0x0130, 0x0130, /* 5696 */ - 0x0130, 0x0130, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, /* 5704 */ - 0x05e4, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x05e9, /* 5712 */ - 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e4, 0x0130, 0x0130, /* 5720 */ - 0x0130, 0x0130, 0x0130, 0x0130, 0x05e9, 0x05e9, 0x05e9, 0x05e9, /* 5728 */ - 0x05e9, 0x05e9, 0x05e4, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, /* 5736 */ - 0x0130, 0x09f0, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, /* 5744 */ - 0x09f4, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x09f8, 0x0130, /* 5752 */ - 0x0608, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x09fc, 0x0130, /* 5760 */ - 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, 0x0a00, 0x0130, 0x05e9, /* 5768 */ - 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x05e9, 0x09f4, 0x0130, 0x0130, /* 5776 */ - 0x0130, 0x0130, 0x0130, 0x09f8, 0x0130, 0x0608, 0x05e9, 0x05e9, /* 5784 */ - 0x05e9, 0x05e9, 0x05e9, 0x09fc, 0x0130, 0x0130, 0x0130, 0x0130, /* 5792 */ - 0x0130, 0x0130, 0x0a04, 0x0130, 0x05e9, 0x05e9, 0x05e9, 0x05e9, /* 5800 */ - 0x05e9, 0x05e9, 0x09f4, 0x0130, 0x0130, 0x0130, 0x0130, 0x0130, /* 5808 */ - 0x09f8, 0x0130, 0x0a08, 0x0a0c, 0x0026, 0x002a, 0x0024, 0x0028, /* 5816 */ - 0x0a10, 0x0026, 0x002a, 0x0024, 0x0028, 0x0a14, 0x0026, 0x002a, /* 5824 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 5832 */ - 0x0373, 0x0373, 0x0373, 0x01ab, 0x0373, 0x0373, 0x0373, 0x0373, /* 5840 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 5848 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, /* 5856 */ - 0x0373, 0x0373, 0x0373, 0x0373, 0x0373, 0x01ab, 0x01ab, 0x01ab, /* 5864 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5872 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5880 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5888 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5896 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5904 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5912 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5920 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5928 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5936 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x030e, 0x01ab, 0x01ab, /* 5944 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 5952 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5960 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5968 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5976 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 5984 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0a18, 0x0110, 0x0110, 0x0110, /* 5992 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 6000 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 6008 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, /* 6016 */ - 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x0110, 0x02d8, /* 6024 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6032 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6040 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6048 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6056 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6064 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6072 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6080 */ - 0x0a1c, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6088 */ - 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, /* 6096 */ - 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, /* 6104 */ - 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, 0x05a4, /* 6112 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6120 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6128 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6136 */ - 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6144 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 6152 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 6160 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 6168 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 6176 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 6184 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 6192 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, 0x0194, /* 6200 */ - 0x0194, 0x0194, 0x0194, 0x0194, 0x01ab, 0x01ab, 0x01ab, 0x01ab, /* 6208 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6216 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6224 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6232 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6240 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6248 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6256 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6264 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x0a20, /* 6272 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6280 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6288 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6296 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6304 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6312 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6320 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, /* 6328 */ - 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x07fc, 0x0a24, /* 6336 */ - -}; - -/** - * Property table has 2598 entries - */ -static unsigned int prop[] = -{ - 0x4800100f, 0x4800100f, 0x4800100f, 0x4800100f, /* 4 */ - 0x4800100f, 0x4800100f, 0x4800100f, 0x4800100f, /* 8 */ - 0x4800100f, 0x5800000f, 0x5000000f, 0x5800000f, /* 12 */ - 0x6000000f, 0x5000000f, 0x4800100f, 0x4800100f, /* 16 */ - 0x5000000f, 0x5000000f, 0x5000000f, 0x5800000f, /* 20 */ - 0x6000400c, 0x68000018, 0x68000018, 0x28000018, /* 24 */ - 0x2800501a, 0x28000018, 0x68000018, 0x68000018, /* 28 */ - 0xe8000015, 0xe8000016, 0x68000018, 0x20000019, /* 32 */ - 0x38000018, 0x20000014, 0x38000018, 0x38000018, /* 36 */ - 0x18003409, 0x18003429, 0x18003449, 0x18003469, /* 40 */ - 0x18003489, 0x180034a9, 0x180034c9, 0x180034e9, /* 44 */ - 0x18003509, 0x18003529, 0x38000018, 0x68000018, /* 48 */ - 0xe8000019, 0x68000019, 0xe8000019, 0x68000018, /* 52 */ - 0x68000018, 0x00827c01, 0x00827c21, 0x00827c41, /* 56 */ - 0x00827c61, 0x00827c81, 0x00827ca1, 0x00827cc1, /* 60 */ - 0x00827ce1, 0x07fd7d01, 0x07fd7d21, 0x00827d41, /* 64 */ - 0x00827d61, 0x00827d81, 0x00827da1, 0x00827dc1, /* 68 */ - 0x00827de1, 0x00827e01, 0x00827e21, 0x00827e41, /* 72 */ - 0x00827e61, 0x00827e81, 0x00827ea1, 0x00827ec1, /* 76 */ - 0x00827ee1, 0x00827f01, 0x00827f21, 0xe8000015, /* 80 */ - 0x68000018, 0xe8000016, 0x6800001b, 0x68002017, /* 84 */ - 0x6800001b, 0x00817c02, 0x00817c22, 0x00817c42, /* 88 */ - 0x00817c62, 0x00817c82, 0x00817ca2, 0x00817cc2, /* 92 */ - 0x00817ce2, 0x07fd7d02, 0x00817d22, 0x00817d42, /* 96 */ - 0x00817d62, 0x00817d82, 0x00817da2, 0x00817dc2, /* 100 */ - 0x00817de2, 0x00817e02, 0x00817e22, 0x00817e42, /* 104 */ - 0x00817e62, 0x00817e82, 0x00817ea2, 0x00817ec2, /* 108 */ - 0x00817ee2, 0x00817f02, 0x00817f22, 0xe8000015, /* 112 */ - 0x68000019, 0xe8000016, 0x68000019, 0x4800100f, /* 116 */ - 0x4800100f, 0x5000100f, 0x4800100f, 0x4800100f, /* 120 */ - 0x3800000c, 0x68000018, 0x2800501a, 0x2800501a, /* 124 */ - 0x2800501a, 0x2800501a, 0x6800001c, 0x6800001c, /* 128 */ - 0x6800001b, 0x6800001c, 0x00007002, 0xe800001d, /* 132 */ - 0x68000019, 0x48001010, 0x6800001c, 0x6800001b, /* 136 */ - 0x2800001c, 0x28000019, 0x1800044b, 0x1800046b, /* 140 */ - 0x6800001b, 0x07fd7002, 0x6800001c, 0x68000018, /* 144 */ - 0x6800001b, 0x1800042b, 0x00007002, 0xe800001e, /* 148 */ - 0x68000beb, 0x68000beb, 0x68000beb, 0x68000018, /* 152 */ - 0x00827001, 0x00827001, 0x00827001, 0x00827001, /* 156 */ - 0x00827001, 0x00827001, 0x00827001, 0x00827001, /* 160 */ - 0x07fd7001, 0x07fd7001, 0x00827001, 0x00827001, /* 164 */ - 0x00827001, 0x00827001, 0x00827001, 0x68000019, /* 168 */ - 0x00827001, 0x00827001, 0x00827001, 0x07fd7002, /* 172 */ - 0x00817002, 0x00817002, 0x00817002, 0x00817002, /* 176 */ - 0x00817002, 0x00817002, 0x00817002, 0x00817002, /* 180 */ - 0x00817002, 0x00817002, 0x00817002, 0x68000019, /* 184 */ - 0x00817002, 0x00817002, 0x00817002, 0x061d7002, /* 188 */ - 0x00067001, 0x00057002, 0x00067001, 0x00057002, /* 192 */ - 0x00067001, 0x00057002, 0x00067001, 0x00057002, /* 196 */ - 0x07fd7001, 0x00057002, 0x00067001, 0x00057002, /* 200 */ - 0x07fd7001, 0x03a17002, 0x00067001, 0x00057002, /* 204 */ - 0x00007002, 0x00067001, 0x00057002, 0x00067001, /* 208 */ - 0x00057002, 0x07fd7002, 0x00067001, 0x00057002, /* 212 */ - 0x061e7001, 0x00067001, 0x00057002, 0x00067001, /* 216 */ - 0x04f57002, 0x034a7001, 0x00067001, 0x00057002, /* 220 */ - 0x00067001, 0x00057002, 0x033a7001, 0x00067001, /* 224 */ - 0x00057002, 0x03367001, 0x03367001, 0x00067001, /* 228 */ - 0x00057002, 0x00007002, 0x013e7001, 0x032a7001, /* 232 */ - 0x032e7001, 0x00067001, 0x00057002, 0x03367001, /* 236 */ - 0x033e7001, 0x067d7002, 0x034e7001, 0x03467001, /* 240 */ - 0x00067001, 0x00057002, 0x05757002, 0x00007002, /* 244 */ - 0x034e7001, 0x03567001, 0x05f97002, 0x035a7001, /* 248 */ - 0x00067001, 0x00057002, 0x036a7001, 0x00067001, /* 252 */ - 0x00057002, 0x036a7001, 0x00007002, 0x00007002, /* 256 */ - 0x00057002, 0x03667001, 0x03667001, 0x00067001, /* 260 */ - 0x00057002, 0x00067001, 0x00057002, 0x036e7001, /* 264 */ - 0x00067001, 0x00057002, 0x00007002, 0x00007005, /* 268 */ - 0x00067001, 0x00057002, 0x00007002, 0x07217002, /* 272 */ - 0x00007005, 0x00007005, 0x00007005, 0x00007005, /* 276 */ - 0x000af001, 0x0007f003, 0x0009f002, 0x000af001, /* 280 */ - 0x0007f003, 0x0009f002, 0x000af001, 0x0007f003, /* 284 */ - 0x0009f002, 0x00067001, 0x00057002, 0x00067001, /* 288 */ - 0x00057002, 0x013d7002, 0x00067001, 0x00057002, /* 292 */ - 0x07fd7002, 0x000af001, 0x0007f003, 0x0009f002, /* 296 */ - 0x00067001, 0x00057002, 0x067e7001, 0x07227001, /* 300 */ - 0x05fa7001, 0x00007002, 0x00067001, 0x00057002, /* 304 */ - 0x00007002, 0x00007002, 0x00007002, 0x00007002, /* 308 */ - 0x00007002, 0x00007002, 0x07fe7001, 0x00067001, /* 312 */ - 0x00057002, 0x05767001, 0x07fe7001, 0x00007002, /* 316 */ - 0x00007002, 0x00067001, 0x00057002, 0x04f67001, /* 320 */ - 0x01167001, 0x011e7001, 0x00067001, 0x00057002, /* 324 */ - 0x07fd7002, 0x07fd7002, 0x00007002, 0x03497002, /* 328 */ - 0x03397002, 0x00007002, 0x03357002, 0x03357002, /* 332 */ - 0x00007002, 0x03297002, 0x00007002, 0x032d7002, /* 336 */ - 0x03357002, 0x00007002, 0x00007002, 0x033d7002, /* 340 */ - 0x03457002, 0x034d7002, 0x00007002, 0x07fd7002, /* 344 */ - 0x00007002, 0x00007002, 0x00007002, 0x034d7002, /* 348 */ - 0x00007002, 0x07fd7002, 0x03557002, 0x00007002, /* 352 */ - 0x00007002, 0x03597002, 0x00007002, 0x00007002, /* 356 */ - 0x03697002, 0x00007002, 0x00007002, 0x03697002, /* 360 */ - 0x03697002, 0x01157002, 0x03657002, 0x03657002, /* 364 */ - 0x011d7002, 0x00007002, 0x00007002, 0x00007002, /* 368 */ - 0x00007002, 0x00007002, 0x036d7002, 0x00007002, /* 372 */ - 0x00007005, 0x00007002, 0x00007002, 0x00007002, /* 376 */ - 0x00007004, 0x00007004, 0x00007004, 0x00007004, /* 380 */ - 0x00007004, 0x00007004, 0x00007004, 0x00007004, /* 384 */ - 0x00007004, 0x68007004, 0x68007004, 0x00007004, /* 388 */ - 0x00007004, 0x00007004, 0x6800001b, 0x6800001b, /* 392 */ - 0x6800001b, 0x6800001b, 0x68007004, 0x68007004, /* 396 */ - 0x68007004, 0x68007004, 0x68007004, 0x68007004, /* 400 */ - 0x68007004, 0x6800001b, 0x00007004, 0x6800001b, /* 404 */ - 0x40003006, 0x40003006, 0x40003006, 0x40003006, /* 408 */ - 0x40003006, 0x40003006, 0x40003006, 0x47fd3006, /* 412 */ - 0x40003006, 0x46b13006, 0x40003006, 0x40003006, /* 416 */ - 0x68007004, 0x6800001b, 0x00067001, 0x00057002, /* 420 */ - 0x78000000, 0x78000000, 0x00007004, 0x05f97002, /* 424 */ - 0x05f97002, 0x05f97002, 0x68000018, 0x78000000, /* 428 */ - 0x78000000, 0x78000000, 0x78000000, 0x78000000, /* 432 */ - 0x6800001b, 0x6800001b, 0x009a7001, 0x68000018, /* 436 */ - 0x00967001, 0x00967001, 0x00967001, 0x78000000, /* 440 */ - 0x01027001, 0x78000000, 0x00fe7001, 0x00fe7001, /* 444 */ - 0x07fd7002, 0x00827001, 0x00827001, 0x00827001, /* 448 */ - 0x00827001, 0x00827001, 0x78000000, 0x07fd7001, /* 452 */ - 0x00997002, 0x00957002, 0x00957002, 0x00957002, /* 456 */ - 0x00817002, 0x00817002, 0x007d7002, 0x00817002, /* 460 */ - 0x01017002, 0x00fd7002, 0x00fd7002, 0x00227001, /* 464 */ - 0x00f97002, 0x00e57002, 0x00007001, 0x00007001, /* 468 */ - 0x00007001, 0x00bd7002, 0x00d97002, 0x00217002, /* 472 */ - 0x01597002, 0x01417002, 0x07e57002, 0x00007002, /* 476 */ - 0x07127001, 0x01817002, 0x68000019, 0x00067001, /* 480 */ - 0x00057002, 0x07e67001, 0x00067001, 0x00057002, /* 484 */ - 0x00007002, 0x05fa7001, 0x05fa7001, 0x05fa7001, /* 488 */ - 0x01427001, 0x01427001, 0x01427001, 0x01427001, /* 492 */ - 0x01427001, 0x01427001, 0x01427001, 0x01427001, /* 496 */ - 0x01417002, 0x01417002, 0x01417002, 0x01417002, /* 500 */ - 0x01417002, 0x01417002, 0x01417002, 0x01417002, /* 504 */ - 0x00067001, 0x00057002, 0x0000001c, 0x40003006, /* 508 */ - 0x40000007, 0x40000007, 0x00067001, 0x00057002, /* 512 */ - 0x003e7001, 0x00067001, 0x00057002, 0x00067001, /* 516 */ - 0x00057002, 0x00067001, 0x00057002, 0x003d7002, /* 520 */ - 0x78000000, 0x00c27001, 0x00c27001, 0x00c27001, /* 524 */ - 0x00c27001, 0x00c27001, 0x00c27001, 0x00c27001, /* 528 */ - 0x00c27001, 0x00c27001, 0x00c27001, 0x78000000, /* 532 */ - 0x78000000, 0x00007004, 0x00000018, 0x00000018, /* 536 */ - 0x00000018, 0x00000018, 0x00000018, 0x00000018, /* 540 */ - 0x78000000, 0x00c17002, 0x00c17002, 0x00c17002, /* 544 */ - 0x00c17002, 0x00c17002, 0x00c17002, 0x00c17002, /* 548 */ - 0x00c17002, 0x00c17002, 0x00c17002, 0x07fd7002, /* 552 */ - 0x78000000, 0x00000018, 0x68000014, 0x78000000, /* 556 */ - 0x78000000, 0x40003006, 0x40003006, 0x40003006, /* 560 */ - 0x40003006, 0x40003006, 0x08000014, 0x40003006, /* 564 */ - 0x08000018, 0x40003006, 0x40003006, 0x08000018, /* 568 */ - 0x40003006, 0x40003006, 0x08000018, 0x40003006, /* 572 */ - 0x08007005, 0x08007005, 0x08007005, 0x08007005, /* 576 */ - 0x08007005, 0x08007005, 0x08007005, 0x08007005, /* 580 */ - 0x08007005, 0x08007005, 0x08007005, 0x78000000, /* 584 */ - 0x08007005, 0x08007005, 0x08007005, 0x08000018, /* 588 */ - 0x08000018, 0x78000000, 0x78000000, 0x78000000, /* 592 */ - 0x30001010, 0x30001010, 0x30001010, 0x30001010, /* 596 */ - 0x78000000, 0x78000000, 0x68000019, 0x68000019, /* 600 */ - 0x10000019, 0x28000018, 0x28000018, 0x1000501a, /* 604 */ - 0x38000018, 0x10000018, 0x6800001c, 0x6800001c, /* 608 */ - 0x40003006, 0x40003006, 0x40003006, 0x10000018, /* 612 */ - 0x78000000, 0x78000000, 0x10000018, 0x10000018, /* 616 */ - 0x78000000, 0x10007005, 0x10007005, 0x10007005, /* 620 */ - 0x10007005, 0x10007005, 0x10007005, 0x10007005, /* 624 */ - 0x10007004, 0x10007005, 0x10007005, 0x10007005, /* 628 */ - 0x10007005, 0x10007005, 0x10007005, 0x40003006, /* 632 */ - 0x40003006, 0x40003006, 0x40003006, 0x78000000, /* 636 */ - 0x30003409, 0x30003429, 0x30003449, 0x30003469, /* 640 */ - 0x30003489, 0x300034a9, 0x300034c9, 0x300034e9, /* 644 */ - 0x30003509, 0x30003529, 0x28000018, 0x30000018, /* 648 */ - 0x30000018, 0x10000018, 0x10007005, 0x10007005, /* 652 */ - 0x40003006, 0x10007005, 0x10007005, 0x10007005, /* 656 */ - 0x10000018, 0x10007005, 0x40003006, 0x40003006, /* 660 */ - 0x40003006, 0x30001010, 0x40000007, 0x40003006, /* 664 */ - 0x40003006, 0x10007004, 0x10007004, 0x40003006, /* 668 */ - 0x40003006, 0x6800001c, 0x40003006, 0x40003006, /* 672 */ - 0x40003006, 0x40003006, 0x10007005, 0x10007005, /* 676 */ - 0x18003509, 0x18003529, 0x10007005, 0x10007005, /* 680 */ - 0x10007005, 0x1000001c, 0x1000001c, 0x10007005, /* 684 */ - 0x10000018, 0x10000018, 0x10000018, 0x10000018, /* 688 */ - 0x10000018, 0x10000018, 0x10000018, 0x10000018, /* 692 */ - 0x10000018, 0x10000018, 0x78000000, 0x48001010, /* 696 */ - 0x40003006, 0x10007005, 0x78000000, 0x78000000, /* 700 */ - 0x08003409, 0x08003429, 0x08003449, 0x08003469, /* 704 */ - 0x08003489, 0x080034a9, 0x080034c9, 0x080034e9, /* 708 */ - 0x08003509, 0x08003529, 0x08007005, 0x08007005, /* 712 */ - 0x08007005, 0x08007005, 0x08007005, 0x40003006, /* 716 */ - 0x08007004, 0x08007004, 0x6800001c, 0x68000018, /* 720 */ - 0x68000018, 0x68000018, 0x08007004, 0x78000000, /* 724 */ - 0x78000000, 0x40003006, 0x40003006, 0x00003008, /* 728 */ - 0x00007005, 0x00007005, 0x78000000, 0x78000000, /* 732 */ - 0x40003006, 0x00007005, 0x00003008, 0x00003008, /* 736 */ - 0x00003008, 0x40003006, 0x40003006, 0x40003006, /* 740 */ - 0x40003006, 0x00003008, 0x00003008, 0x00003008, /* 744 */ - 0x00003008, 0x40003006, 0x78000000, 0x78000000, /* 748 */ - 0x00007005, 0x40003006, 0x40003006, 0x40003006, /* 752 */ - 0x40003006, 0x78000000, 0x78000000, 0x78000000, /* 756 */ - 0x00007005, 0x00007005, 0x40003006, 0x40003006, /* 760 */ - 0x00000018, 0x00000018, 0x00003409, 0x00003429, /* 764 */ - 0x00003449, 0x00003469, 0x00003489, 0x000034a9, /* 768 */ - 0x000034c9, 0x000034e9, 0x00003509, 0x00003529, /* 772 */ - 0x00000018, 0x00007004, 0x00007005, 0x78000000, /* 776 */ - 0x78000000, 0x40003006, 0x00003008, 0x00003008, /* 780 */ - 0x78000000, 0x00007005, 0x00007005, 0x00007005, /* 784 */ - 0x00007005, 0x78000000, 0x78000000, 0x00007005, /* 788 */ - 0x00007005, 0x78000000, 0x78000000, 0x00007005, /* 792 */ - 0x00007005, 0x78000000, 0x00007005, 0x00007005, /* 796 */ - 0x00007005, 0x78000000, 0x00007005, 0x78000000, /* 800 */ - 0x40003006, 0x78000000, 0x78000000, 0x00003008, /* 804 */ - 0x00003008, 0x78000000, 0x78000000, 0x00003008, /* 808 */ - 0x00003008, 0x40003006, 0x00007005, 0x78000000, /* 812 */ - 0x78000000, 0x78000000, 0x78000000, 0x00003008, /* 816 */ - 0x78000000, 0x78000000, 0x00003409, 0x00003429, /* 820 */ - 0x00007005, 0x00007005, 0x2800501a, 0x2800501a, /* 824 */ - 0x0000042b, 0x0000044b, 0x0000046b, 0x0000048b, /* 828 */ - 0x0000000b, 0x0000060b, 0x0000001c, 0x78000000, /* 832 */ - 0x40003006, 0x78000000, 0x00003008, 0x00003008, /* 836 */ - 0x00003008, 0x40003006, 0x40003006, 0x78000000, /* 840 */ - 0x78000000, 0x78000000, 0x78000000, 0x40003006, /* 844 */ - 0x40003006, 0x78000000, 0x78000000, 0x40003006, /* 848 */ - 0x40003006, 0x40003006, 0x00007005, 0x00007005, /* 852 */ - 0x00007005, 0x40003006, 0x78000000, 0x78000000, /* 856 */ - 0x40003006, 0x40003006, 0x78000000, 0x40003006, /* 860 */ - 0x40003006, 0x00003008, 0x78000000, 0x00003008, /* 864 */ - 0x78000000, 0x2800501a, 0x78000000, 0x78000000, /* 868 */ - 0x40003006, 0x00007005, 0x00003008, 0x40003006, /* 872 */ - 0x0000001c, 0x00007005, 0x78000000, 0x78000000, /* 876 */ - 0x00003008, 0x78000000, 0x00003008, 0x00003008, /* 880 */ - 0x0000054b, 0x0000088b, 0x0000090b, 0x6800001c, /* 884 */ - 0x6800001c, 0x6800001c, 0x6800001c, 0x6800001c, /* 888 */ - 0x6800001c, 0x2800501a, 0x6800001c, 0x78000000, /* 892 */ - 0x00003008, 0x78000000, 0x40003006, 0x40003006, /* 896 */ - 0x6800040b, 0x6800042b, 0x6800044b, 0x6800046b, /* 900 */ - 0x6800042b, 0x6800044b, 0x6800046b, 0x0000001c, /* 904 */ - 0x40003006, 0x00007005, 0x00003008, 0x00003006, /* 908 */ - 0x00003008, 0x78000000, 0x00003006, 0x00003008, /* 912 */ - 0x78000000, 0x78000000, 0x00007005, 0x78000000, /* 916 */ - 0x78000000, 0x6800001c, 0x6800001c, 0x78000000, /* 920 */ - 0x78000000, 0x00007005, 0x00003008, 0x00003008, /* 924 */ - 0x0000054b, 0x0000088b, 0x0000090b, 0x00000beb, /* 928 */ - 0x00000beb, 0x00000beb, 0x78000000, 0x78000000, /* 932 */ - 0x78000000, 0x0000001c, 0x00007005, 0x00007005, /* 936 */ - 0x78000000, 0x78000000, 0x40003006, 0x78000000, /* 940 */ - 0x40003006, 0x78000000, 0x40003006, 0x78000000, /* 944 */ - 0x00000018, 0x78000000, 0x78000000, 0x78000000, /* 948 */ - 0x00007005, 0x40003006, 0x00007005, 0x00007005, /* 952 */ - 0x78000000, 0x78000000, 0x78000000, 0x2800501a, /* 956 */ - 0x00007005, 0x00007005, 0x00007004, 0x40003006, /* 960 */ - 0x40003006, 0x40003006, 0x40003006, 0x00000018, /* 964 */ - 0x00003509, 0x00003529, 0x00000018, 0x00000018, /* 968 */ - 0x78000000, 0x00007005, 0x78000000, 0x00007005, /* 972 */ - 0x00007005, 0x78000000, 0x00007004, 0x78000000, /* 976 */ - 0x00003509, 0x00003529, 0x78000000, 0x78000000, /* 980 */ - 0x00007005, 0x0000001c, 0x0000001c, 0x0000001c, /* 984 */ - 0x00000018, 0x00000018, 0x00000018, 0x0000001c, /* 988 */ - 0x0000001c, 0x0000001c, 0x0000001c, 0x0000001c, /* 992 */ - 0x40003006, 0x40003006, 0x0000001c, 0x0000001c, /* 996 */ - 0x00003509, 0x00003529, 0x00000beb, 0x00000beb, /* 1000 */ - 0x00000beb, 0x00000beb, 0x00000beb, 0x00000beb, /* 1004 */ - 0x0000001c, 0x40003006, 0x0000001c, 0x40003006, /* 1008 */ - 0x0000001c, 0x40003006, 0xe8000015, 0xe8000016, /* 1012 */ - 0xe8000015, 0xe8000016, 0x00003008, 0x00003008, /* 1016 */ - 0x40003006, 0x00000018, 0x40003006, 0x40003006, /* 1020 */ - 0x40003006, 0x78000000, 0x0000001c, 0x0000001c, /* 1024 */ - 0x0000001c, 0x0000001c, 0x40003006, 0x0000001c, /* 1028 */ - 0x0000001c, 0x78000000, 0x0000001c, 0x0000001c, /* 1032 */ - 0x00007005, 0x00007005, 0x00007005, 0x00003008, /* 1036 */ - 0x40003006, 0x00003008, 0x40003006, 0x40003006, /* 1040 */ - 0x00003008, 0x40003006, 0x40003006, 0x00003008, /* 1044 */ - 0x00003008, 0x40003006, 0x40003006, 0x00007005, /* 1048 */ - 0x00007005, 0x00007005, 0x00003008, 0x00003008, /* 1052 */ - 0x00003008, 0x00007005, 0x00007005, 0x00003008, /* 1056 */ - 0x00007005, 0x00007005, 0x40003006, 0x00003008, /* 1060 */ - 0x00003008, 0x40003006, 0x00007005, 0x00003008, /* 1064 */ - 0x78000000, 0x78000000, 0x0000001c, 0x0000001c, /* 1068 */ - 0x07fe7001, 0x07fe7001, 0x07fe7001, 0x07fe7001, /* 1072 */ - 0x07fe7001, 0x07fe7001, 0x07fe7001, 0x07fe7001, /* 1076 */ - 0x07fe7001, 0x07fe7001, 0x78000000, 0x78000000, /* 1080 */ - 0x00007005, 0x00007005, 0x00007005, 0x00000018, /* 1084 */ - 0x00007004, 0x78000000, 0x78000000, 0x78000000, /* 1088 */ - 0x00000018, 0x0000042b, 0x0000044b, 0x0000046b, /* 1092 */ - 0x0000048b, 0x000004ab, 0x000004cb, 0x000004eb, /* 1096 */ - 0x0000050b, 0x0000052b, 0x0000054b, 0x0000068b, /* 1100 */ - 0x000007cb, 0x0000090b, 0x00000a4b, 0x00000b8b, /* 1104 */ - 0x000008cb, 0x00000a0b, 0x00000b4b, 0x0000088b, /* 1108 */ - 0x00000a0b, 0x78000000, 0x78000000, 0x78000000, /* 1112 */ - 0x00007005, 0x00000018, 0x00000018, 0x00007005, /* 1116 */ - 0x6000400c, 0x00007005, 0x00007005, 0x00007005, /* 1120 */ - 0x00007005, 0x00007005, 0x00007005, 0xe8000015, /* 1124 */ - 0xe8000016, 0x78000000, 0x78000000, 0x78000000, /* 1128 */ - 0x00000018, 0x00000018, 0x0000762a, 0x0000764a, /* 1132 */ - 0x0000766a, 0x78000000, 0x78000000, 0x78000000, /* 1136 */ - 0x40003006, 0x00000018, 0x00000018, 0x78000000, /* 1140 */ - 0x00007005, 0x78000000, 0x40003006, 0x40003006, /* 1144 */ - 0x00001010, 0x00001010, 0x00003008, 0x40003006, /* 1148 */ - 0x00003008, 0x00003008, 0x40003006, 0x00003008, /* 1152 */ - 0x00000018, 0x00000018, 0x00000018, 0x00007004, /* 1156 */ - 0x00000018, 0x00000018, 0x00000018, 0x2800501a, /* 1160 */ - 0x6800048b, 0x680004ab, 0x680004cb, 0x680004eb, /* 1164 */ - 0x6800050b, 0x6800052b, 0x78000000, 0x78000000, /* 1168 */ - 0x68000018, 0x68000018, 0x68000018, 0x68000018, /* 1172 */ - 0x68000018, 0x68000018, 0x68000014, 0x68000018, /* 1176 */ - 0x68000018, 0x68000018, 0x68000018, 0x40003006, /* 1180 */ - 0x40003006, 0x40003006, 0x6000400c, 0x78000000, /* 1184 */ - 0x00007005, 0x00007005, 0x00007005, 0x00007004, /* 1188 */ - 0x00007005, 0x40003006, 0x00007005, 0x78000000, /* 1192 */ - 0x6800001c, 0x78000000, 0x78000000, 0x78000000, /* 1196 */ - 0x68000018, 0x68000018, 0x00003409, 0x00003429, /* 1200 */ - 0x00003008, 0x00007005, 0x00007005, 0x00007005, /* 1204 */ - 0x00003008, 0x00007005, 0x00007005, 0x00007005, /* 1208 */ - 0x0000001c, 0x78000000, 0x78000000, 0x78000000, /* 1212 */ - 0x00007005, 0x00003008, 0x40003006, 0x40003006, /* 1216 */ - 0x00003509, 0x00003529, 0x00007005, 0x00007005, /* 1220 */ - 0x00007004, 0x00007004, 0x00000018, 0x00000018, /* 1224 */ - 0x00007004, 0x00007004, 0x00007002, 0x00007002, /* 1228 */ - 0x00007004, 0x07fd7002, 0x00007002, 0x00007002, /* 1232 */ - 0x07fd7002, 0x07fd7002, 0x07fd7002, 0x00ed7002, /* 1236 */ - 0x00007002, 0x00007002, 0x07fe7001, 0x00007002, /* 1240 */ - 0x07e17002, 0x07e17002, 0x07e17002, 0x07e17002, /* 1244 */ - 0x07e17002, 0x07e17002, 0x07e17002, 0x07e17002, /* 1248 */ - 0x07e27001, 0x07e27001, 0x07e27001, 0x07e27001, /* 1252 */ - 0x07e27001, 0x07e27001, 0x07e27001, 0x07e27001, /* 1256 */ - 0x07e17002, 0x07e17002, 0x78000000, 0x78000000, /* 1260 */ - 0x07e27001, 0x07e27001, 0x78000000, 0x78000000, /* 1264 */ - 0x07e27001, 0x07e27001, 0x78000000, 0x78000000, /* 1268 */ - 0x07fd7002, 0x07e17002, 0x07fd7002, 0x07e17002, /* 1272 */ - 0x07fd7002, 0x07e17002, 0x07fd7002, 0x07e17002, /* 1276 */ - 0x78000000, 0x07e27001, 0x78000000, 0x07e27001, /* 1280 */ - 0x78000000, 0x07e27001, 0x78000000, 0x07e27001, /* 1284 */ - 0x06d97002, 0x06d97002, 0x06a97002, 0x06a97002, /* 1288 */ - 0x06a97002, 0x06a97002, 0x06717002, 0x06717002, /* 1292 */ - 0x06017002, 0x06017002, 0x06417002, 0x06417002, /* 1296 */ - 0x06097002, 0x06097002, 0x78000000, 0x78000000, /* 1300 */ - 0x07fd7002, 0x07fd7002, 0x07fd7002, 0x07fd7002, /* 1304 */ - 0x07fd7002, 0x07fd7002, 0x07fd7002, 0x07fd7002, /* 1308 */ - 0x07fd7003, 0x07fd7003, 0x07fd7003, 0x07fd7003, /* 1312 */ - 0x07fd7003, 0x07fd7003, 0x07fd7003, 0x07fd7003, /* 1316 */ - 0x07e17002, 0x07e17002, 0x07fd7002, 0x07fd7002, /* 1320 */ - 0x07fd7002, 0x78000000, 0x07fd7002, 0x07fd7002, /* 1324 */ - 0x07e27001, 0x07e27001, 0x06da7001, 0x06da7001, /* 1328 */ - 0x07fd7003, 0x6800001b, 0x07fd7002, 0x6800001b, /* 1332 */ - 0x6800001b, 0x6800001b, 0x07fd7002, 0x07fd7002, /* 1336 */ - 0x06aa7001, 0x06aa7001, 0x06aa7001, 0x06aa7001, /* 1340 */ - 0x07fd7003, 0x6800001b, 0x6800001b, 0x6800001b, /* 1344 */ - 0x07e27001, 0x07e27001, 0x06727001, 0x06727001, /* 1348 */ - 0x78000000, 0x6800001b, 0x6800001b, 0x6800001b, /* 1352 */ - 0x07fd7002, 0x07e57002, 0x07fd7002, 0x07fd7002, /* 1356 */ - 0x07e27001, 0x07e27001, 0x06427001, 0x06427001, /* 1360 */ - 0x07e67001, 0x6800001b, 0x6800001b, 0x6800001b, /* 1364 */ - 0x06027001, 0x06027001, 0x060a7001, 0x060a7001, /* 1368 */ - 0x07fd7003, 0x6800001b, 0x6800001b, 0x78000000, /* 1372 */ - 0x6000400c, 0x6000400c, 0x6000400c, 0x6000400c, /* 1376 */ - 0x6000400c, 0x6000400c, 0x6000400c, 0x6000000c, /* 1380 */ - 0x6000400c, 0x6000400c, 0x6000400c, 0x48001010, /* 1384 */ - 0x48001010, 0x48001010, 0x00001010, 0x08001010, /* 1388 */ - 0x68000014, 0x68000014, 0x68000014, 0x68000014, /* 1392 */ - 0x68000014, 0x68000014, 0x68000018, 0x68000018, /* 1396 */ - 0x6800001d, 0x6800001e, 0x68000015, 0x6800001d, /* 1400 */ - 0x6800001d, 0x6800001e, 0x68000015, 0x6800001d, /* 1404 */ - 0x6000400d, 0x5000400e, 0x78001010, 0x78001010, /* 1408 */ - 0x78001010, 0x78001010, 0x78001010, 0x3800000c, /* 1412 */ - 0x28000018, 0x28000018, 0x28000018, 0x28000018, /* 1416 */ - 0x28000018, 0x68000018, 0x68000018, 0x68000018, /* 1420 */ - 0x68000018, 0xe800001d, 0xe800001e, 0x68000018, /* 1424 */ - 0x68000018, 0x68000018, 0x68000018, 0x68002017, /* 1428 */ - 0x68002017, 0x68000018, 0x68000018, 0x68000018, /* 1432 */ - 0x38000019, 0xe8000015, 0xe8000016, 0x68000018, /* 1436 */ - 0x68000018, 0x68000018, 0x68000019, 0x68000018, /* 1440 */ - 0x68000018, 0x68000018, 0x68000018, 0x6000400c, /* 1444 */ - 0x48001010, 0x48001010, 0x48001010, 0x48001010, /* 1448 */ - 0x48001010, 0x78000000, 0x78000000, 0x78000000, /* 1452 */ - 0x78000000, 0x78000000, 0x48001010, 0x48001010, /* 1456 */ - 0x1800040b, 0x00007002, 0x78000000, 0x78000000, /* 1460 */ - 0x1800048b, 0x180004ab, 0x180004cb, 0x180004eb, /* 1464 */ - 0x1800050b, 0x1800052b, 0x20000019, 0x20000019, /* 1468 */ - 0x68000019, 0xe8000015, 0xe8000016, 0x00007002, /* 1472 */ - 0x1800040b, 0x1800042b, 0x1800044b, 0x1800046b, /* 1476 */ - 0x68000019, 0xe8000015, 0xe8000016, 0x78000000, /* 1480 */ - 0x2800501a, 0x2800501a, 0x78000000, 0x78000000, /* 1484 */ - 0x40003006, 0x40000007, 0x40000007, 0x40000007, /* 1488 */ - 0x40000007, 0x40003006, 0x40000007, 0x40000007, /* 1492 */ - 0x40000007, 0x40003006, 0x40003006, 0x40003006, /* 1496 */ - 0x6800001c, 0x6800001c, 0x00007001, 0x6800001c, /* 1500 */ - 0x6800001c, 0x6800001c, 0x6800001c, 0x00007001, /* 1504 */ - 0x6800001c, 0x6800001c, 0x00007002, 0x00007001, /* 1508 */ - 0x00007001, 0x00007001, 0x00007002, 0x00007002, /* 1512 */ - 0x6800001c, 0x00007001, 0x00007001, 0x00007001, /* 1516 */ - 0x00007001, 0x00007001, 0x6800001c, 0x6800001c, /* 1520 */ - 0x00007001, 0x6800001c, 0x07fe7001, 0x6800001c, /* 1524 */ - 0x00007001, 0x6800001c, 0x07fe7001, 0x07fe7001, /* 1528 */ - 0x00007001, 0x00007001, 0x2800001c, 0x00007002, /* 1532 */ - 0x00007001, 0x00007001, 0x00727001, 0x00007001, /* 1536 */ - 0x00007002, 0x00007005, 0x00007005, 0x00007005, /* 1540 */ - 0x00007005, 0x00007002, 0x6800001c, 0x6800001c, /* 1544 */ - 0x00007002, 0x00007002, 0x00007001, 0x00007001, /* 1548 */ - 0xe8000019, 0x68000019, 0x68000019, 0x68000019, /* 1552 */ - 0x68000019, 0x00007001, 0x00007002, 0x00007002, /* 1556 */ - 0x00007002, 0x00007002, 0x6800001c, 0x68000019, /* 1560 */ - 0x6800001c, 0x6800001c, 0x00717002, 0x0000001c, /* 1564 */ - 0x78000000, 0x78000000, 0x78000000, 0x68000beb, /* 1568 */ - 0x68000beb, 0x68000beb, 0x68000beb, 0x68000beb, /* 1572 */ - 0x68000beb, 0x68000beb, 0x68000beb, 0x6800082b, /* 1576 */ - 0x0042742a, 0x0042744a, 0x0042746a, 0x0042748a, /* 1580 */ - 0x004274aa, 0x004274ca, 0x004274ea, 0x0042750a, /* 1584 */ - 0x0042752a, 0x0042754a, 0x0042756a, 0x0042758a, /* 1588 */ - 0x00427a4a, 0x0042788a, 0x00427a8a, 0x0042790a, /* 1592 */ - 0x0041742a, 0x0041744a, 0x0041746a, 0x0041748a, /* 1596 */ - 0x004174aa, 0x004174ca, 0x004174ea, 0x0041750a, /* 1600 */ - 0x0041752a, 0x0041754a, 0x0041756a, 0x0041758a, /* 1604 */ - 0x00417a4a, 0x0041788a, 0x00417a8a, 0x0041790a, /* 1608 */ - 0x0000790a, 0x0000790a, 0x00007a0a, 0x00067001, /* 1612 */ - 0x00057002, 0x000074ca, 0x00007a4a, 0x00007a0a, /* 1616 */ - 0x0000780a, 0x78000000, 0x78000000, 0x78000000, /* 1620 */ - 0x68000019, 0x6800001c, 0x6800001c, 0x6800001c, /* 1624 */ - 0x6800001c, 0x6800001c, 0x68000019, 0x68000019, /* 1628 */ - 0x68000019, 0x6800001c, 0x6800001c, 0x68000019, /* 1632 */ - 0x6800001c, 0x6800001c, 0x68000019, 0x6800001c, /* 1636 */ - 0x68000019, 0xe8000019, 0xe8000019, 0xe8000019, /* 1640 */ - 0xe8000019, 0xe8000019, 0xe8000019, 0xe8000019, /* 1644 */ - 0xe8000019, 0xe8000019, 0x68000019, 0x68000019, /* 1648 */ - 0x68000019, 0xe8000019, 0x20000019, 0x28000019, /* 1652 */ - 0x68000019, 0xe8000019, 0xe8000019, 0x68000019, /* 1656 */ - 0x68000019, 0x68000019, 0xe8000019, 0xe8000019, /* 1660 */ - 0xe8000019, 0xe8000019, 0x68000019, 0xe8000019, /* 1664 */ - 0xe8000019, 0x68000019, 0xe8000019, 0x68000019, /* 1668 */ - 0x68000019, 0xe8000019, 0x68000019, 0xe8000019, /* 1672 */ - 0xe8000019, 0xe8000019, 0x6800001c, 0x6800001c, /* 1676 */ - 0x6800001c, 0xe8000015, 0xe8000016, 0x6800001c, /* 1680 */ - 0x6800001c, 0x6800001c, 0x0000001c, 0x0000001c, /* 1684 */ - 0x0000001c, 0x0000001c, 0x0000001c, 0x6800001c, /* 1688 */ - 0x6800001c, 0x0000001c, 0x6800001c, 0x6800001c, /* 1692 */ - 0x6800001c, 0x6800001c, 0x6800001c, 0x78000000, /* 1696 */ - 0x6800001c, 0x6800001c, 0x6800001c, 0x78000000, /* 1700 */ - 0x6800042b, 0x6800044b, 0x6800046b, 0x6800048b, /* 1704 */ - 0x6800052b, 0x6800054b, 0x6800056b, 0x6800058b, /* 1708 */ - 0x680005ab, 0x680005cb, 0x680005eb, 0x6800060b, /* 1712 */ - 0x6800062b, 0x6800064b, 0x6800066b, 0x6800068b, /* 1716 */ - 0x6800062b, 0x6800064b, 0x6800066b, 0x6800068b, /* 1720 */ - 0x1800042b, 0x1800044b, 0x1800046b, 0x1800048b, /* 1724 */ - 0x1800052b, 0x1800054b, 0x1800056b, 0x1800058b, /* 1728 */ - 0x180005ab, 0x180005cb, 0x180005eb, 0x1800060b, /* 1732 */ - 0x1800062b, 0x1800064b, 0x1800066b, 0x1800068b, /* 1736 */ - 0x0000001c, 0x0000001c, 0x006a001c, 0x006a001c, /* 1740 */ - 0x006a001c, 0x006a001c, 0x006a001c, 0x006a001c, /* 1744 */ - 0x0069001c, 0x0069001c, 0x0069001c, 0x0069001c, /* 1748 */ - 0x0069001c, 0x0069001c, 0x0069001c, 0x0069001c, /* 1752 */ - 0x0069001c, 0x0069001c, 0x6800040b, 0x6800056b, /* 1756 */ - 0x6800068b, 0x6800042b, 0x6800044b, 0x6800046b, /* 1760 */ - 0x6800050b, 0x6800052b, 0x6800054b, 0x6800040b, /* 1764 */ - 0x78000000, 0x6800001c, 0x78000000, 0x6800001c, /* 1768 */ - 0x78000000, 0x78000000, 0x6800001c, 0x78000000, /* 1772 */ - 0xe8000015, 0xe8000016, 0x6800042b, 0x6800044b, /* 1776 */ - 0x6800046b, 0x6800048b, 0x680004ab, 0x680004cb, /* 1780 */ - 0x680004eb, 0x6800050b, 0x6800052b, 0x6800054b, /* 1784 */ - 0x6800052b, 0x6800054b, 0x6800042b, 0x6800044b, /* 1788 */ - 0xe8000019, 0xe8000015, 0xe8000016, 0x68000019, /* 1792 */ - 0xe8000019, 0xe8000019, 0x68000019, 0x78000000, /* 1796 */ - 0xe8000019, 0x78000000, 0x78000000, 0x78000000, /* 1800 */ - 0xe8000019, 0xe8000019, 0xe8000015, 0xe8000016, /* 1804 */ - 0x68000019, 0x68000019, 0x68000019, 0xe8000015, /* 1808 */ - 0xe8000016, 0xe8000015, 0xe8000016, 0xe8000015, /* 1812 */ - 0xe8000016, 0xe8000015, 0xe8000016, 0xe8000015, /* 1816 */ - 0xe8000016, 0x68000019, 0x68000019, 0xe8000019, /* 1820 */ - 0x68000019, 0x78000000, 0x78000000, 0x78000000, /* 1824 */ - 0x00c17002, 0x00c17002, 0x00c17002, 0x78000000, /* 1828 */ - 0x00067001, 0x00057002, 0x07fe7001, 0x07fe7001, /* 1832 */ - 0x07fe7001, 0x07fd7002, 0x07fd7002, 0x00067001, /* 1836 */ - 0x78000000, 0x00007002, 0x00067001, 0x00057002, /* 1840 */ - 0x00007002, 0x00007004, 0x78000000, 0x78000000, /* 1844 */ - 0x00007002, 0x6800001c, 0x6800001c, 0x6800001c, /* 1848 */ - 0x68000018, 0x68000beb, 0x68000018, 0x68000018, /* 1852 */ - 0x07fd7002, 0x07fd7002, 0x78000000, 0x78000000, /* 1856 */ - 0x78000000, 0x78000000, 0x78000000, 0x00007004, /* 1860 */ - 0xe800001d, 0xe800001e, 0xe8000015, 0xe8000016, /* 1864 */ - 0x68000018, 0x68000018, 0x68000018, 0x68007004, /* 1868 */ - 0x6000400c, 0x68000018, 0x68000018, 0x68000018, /* 1872 */ - 0x6800001c, 0x00007004, 0x00007005, 0x0000740a, /* 1876 */ - 0x68000014, 0x68000015, 0x68000016, 0x68000016, /* 1880 */ - 0x6800001c, 0x0000742a, 0x0000744a, 0x0000746a, /* 1884 */ - 0x0000748a, 0x000074aa, 0x000074ca, 0x000074ea, /* 1888 */ - 0x0000750a, 0x0000752a, 0x40003006, 0x40003006, /* 1892 */ - 0x68000014, 0x00007004, 0x00007004, 0x00007004, /* 1896 */ - 0x00007004, 0x00007004, 0x6800001c, 0x6800001c, /* 1900 */ - 0x0000754a, 0x0000768a, 0x000077ca, 0x00007004, /* 1904 */ - 0x00007005, 0x68000018, 0x6800001c, 0x6800001c, /* 1908 */ - 0x78000000, 0x40003006, 0x40003006, 0x6800001b, /* 1912 */ - 0x6800001b, 0x00007004, 0x00007004, 0x00007005, /* 1916 */ - 0x68000014, 0x00007005, 0x00007005, 0x00007005, /* 1920 */ - 0x00007005, 0x00007005, 0x00007005, 0x68000018, /* 1924 */ - 0x00007004, 0x00007004, 0x00007004, 0x00007005, /* 1928 */ - 0x0000001c, 0x0000001c, 0x0000042b, 0x0000044b, /* 1932 */ - 0x0000046b, 0x0000048b, 0x0000001c, 0x0000001c, /* 1936 */ - 0x0000001c, 0x6800001c, 0x6800001c, 0x78000000, /* 1940 */ - 0x0000052b, 0x0000054b, 0x0000001c, 0x0000001c, /* 1944 */ - 0x6800001c, 0x680006ab, 0x680006cb, 0x680006eb, /* 1948 */ - 0x6800070b, 0x6800072b, 0x6800074b, 0x6800076b, /* 1952 */ - 0x6800078b, 0x680007ab, 0x680007cb, 0x680007eb, /* 1956 */ - 0x6800080b, 0x6800082b, 0x6800084b, 0x6800086b, /* 1960 */ - 0x0000001c, 0x6800088b, 0x680008ab, 0x680008cb, /* 1964 */ - 0x680008eb, 0x6800090b, 0x6800092b, 0x6800094b, /* 1968 */ - 0x6800096b, 0x6800098b, 0x680009ab, 0x680009cb, /* 1972 */ - 0x680009eb, 0x68000a0b, 0x68000a2b, 0x68000a4b, /* 1976 */ - 0x0000001c, 0x0000001c, 0x0000001c, 0x78000000, /* 1980 */ - 0x00007005, 0x00007004, 0x00007005, 0x00007005, /* 1984 */ - 0x00007004, 0x68000018, 0x68000018, 0x68000018, /* 1988 */ - 0x78000000, 0x78000000, 0x00067001, 0x00057002, /* 1992 */ - 0x00067001, 0x00057002, 0x00007005, 0x40003006, /* 1996 */ - 0x40000007, 0x40000007, 0x40000007, 0x68000018, /* 2000 */ - 0x40003006, 0x40003006, 0x68000018, 0x68007004, /* 2004 */ - 0x6800001b, 0x6800001b, 0x00067001, 0x00057002, /* 2008 */ - 0x00007004, 0x00007002, 0x00007002, 0x00007002, /* 2012 */ - 0x00057002, 0x07fe7001, 0x00067001, 0x00057002, /* 2016 */ - 0x68007004, 0x0000001b, 0x0000001b, 0x00067001, /* 2020 */ - 0x00057002, 0x78000000, 0x78000000, 0x78000000, /* 2024 */ - 0x00007005, 0x00007005, 0x40003006, 0x00007005, /* 2028 */ - 0x00007005, 0x00007005, 0x40003006, 0x00007005, /* 2032 */ - 0x40003006, 0x00003008, 0x78000000, 0x78000000, /* 2036 */ - 0x00000013, 0x00000013, 0x00000013, 0x00000013, /* 2040 */ - 0x00000013, 0x00000013, 0x00000013, 0x00000013, /* 2044 */ - 0x00000012, 0x00000012, 0x00000012, 0x00000012, /* 2048 */ - 0x00000012, 0x00000012, 0x00000012, 0x00000012, /* 2052 */ - 0x00007005, 0x00007005, 0x00007005, 0x00007465, /* 2056 */ - 0x00007005, 0x00007005, 0x00007005, 0x00007545, /* 2060 */ - 0x00007445, 0x00007005, 0x00007005, 0x00007005, /* 2064 */ - 0x00007005, 0x00007005, 0x00007405, 0x00007005, /* 2068 */ - 0x00007005, 0x000074c5, 0x00007005, 0x000074c5, /* 2072 */ - 0x00007005, 0x00007545, 0x00007005, 0x00007005, /* 2076 */ - 0x78000000, 0x78000000, 0x78000000, 0x07fd7002, /* 2080 */ - 0x78000000, 0x08007005, 0x40003006, 0x08007005, /* 2084 */ - 0x08007005, 0x20000019, 0x08007005, 0x08007005, /* 2088 */ - 0x08007005, 0x78000000, 0x08007005, 0x78000000, /* 2092 */ - 0x10007005, 0x10007005, 0x78000000, 0x78000000, /* 2096 */ - 0x78000000, 0x78000000, 0x78000000, 0x10007005, /* 2100 */ - 0x10007005, 0x10007005, 0x68000015, 0x68000016, /* 2104 */ - 0x1000501a, 0x6800001c, 0x78000000, 0x78000000, /* 2108 */ - 0x68000018, 0x68000018, 0x68000018, 0x68000015, /* 2112 */ - 0x68000016, 0x68000018, 0x78000000, 0x78000000, /* 2116 */ - 0x68000018, 0x68000014, 0x68000014, 0x68002017, /* 2120 */ - 0x68002017, 0x68000015, 0x68000016, 0x68000015, /* 2124 */ - 0x68000016, 0x68000015, 0x68000016, 0x68000015, /* 2128 */ - 0x68000016, 0x68000018, 0x68000018, 0x68000015, /* 2132 */ - 0x68000016, 0x68000018, 0x68000018, 0x68000018, /* 2136 */ - 0x68000018, 0x68002017, 0x68002017, 0x68002017, /* 2140 */ - 0x38000018, 0x68000018, 0x38000018, 0x78000000, /* 2144 */ - 0x68000018, 0x38000018, 0x68000018, 0x68000018, /* 2148 */ - 0x68000014, 0xe8000015, 0xe8000016, 0xe8000015, /* 2152 */ - 0xe8000016, 0xe8000015, 0xe8000016, 0x28000018, /* 2156 */ - 0x68000018, 0x68000018, 0x20000019, 0x20000014, /* 2160 */ - 0x68000018, 0x2800501a, 0x28000018, 0x68000018, /* 2164 */ - 0x10007005, 0x78000000, 0x10007005, 0x10007005, /* 2168 */ - 0x10007005, 0x78000000, 0x78000000, 0x48001010, /* 2172 */ - 0x78000000, 0x68000018, 0x68000018, 0x28000018, /* 2176 */ - 0x00827ce1, 0x00827d01, 0x00827d21, 0x00827d41, /* 2180 */ - 0x00817ce2, 0x00817d02, 0x00817d22, 0x00817d42, /* 2184 */ - 0x68000019, 0xe8000016, 0x68000019, 0xe8000015, /* 2188 */ - 0xe8000016, 0x68000018, 0xe8000015, 0xe8000016, /* 2192 */ - 0x68000018, 0x68000018, 0x00007005, 0x00007005, /* 2196 */ - 0x00007004, 0x00007005, 0x00007005, 0x00007005, /* 2200 */ - 0x2800501a, 0x2800501a, 0x68000019, 0x6800001b, /* 2204 */ - 0x6800001c, 0x2800501a, 0x2800501a, 0x78000000, /* 2208 */ - 0x68000019, 0x6800001c, 0x6800001c, 0x78000000, /* 2212 */ - 0x78000000, 0x68001010, 0x68001010, 0x68001010, /* 2216 */ - 0x00000018, 0x68000018, 0x0000001c, 0x78000000, /* 2220 */ - 0x78000000, 0x78000000, 0x78000000, 0x0000042b, /* 2224 */ - 0x00000b4b, 0x0000088b, 0x0000090b, 0x0000098b, /* 2228 */ - 0x00000a0b, 0x00000a8b, 0x00000b0b, 0x00000b8b, /* 2232 */ - 0x0000080b, 0x0000088b, 0x0000090b, 0x00000a0b, /* 2236 */ - 0x00000b0b, 0x0000080b, 0x0000090b, 0x00000a0b, /* 2240 */ - 0x00000b0b, 0x0000080b, 0x0000090b, 0x00000a0b, /* 2244 */ - 0x0000080b, 0x00000a0b, 0x0000080b, 0x00000a0b, /* 2248 */ - 0x0000080b, 0x00000a0b, 0x0000080b, 0x00000a0b, /* 2252 */ - 0x68007bea, 0x68007bea, 0x6800742a, 0x680074aa, /* 2256 */ - 0x68007a4a, 0x68007a8a, 0x6800790a, 0x68007a0a, /* 2260 */ - 0x680074aa, 0x6800754a, 0x68007a4a, 0x6800788a, /* 2264 */ - 0x68007a8a, 0x6800790a, 0x6800790a, 0x680074aa, /* 2268 */ - 0x6800790a, 0x68007a0a, 0x68007a0a, 0x6800754a, /* 2272 */ - 0x6800742a, 0x6800742a, 0x6800742a, 0x6800744a, /* 2276 */ - 0x6800744a, 0x6800744a, 0x6800744a, 0x680074aa, /* 2280 */ - 0x6800754a, 0x6800754a, 0x6800754a, 0x6800754a, /* 2284 */ - 0x6800754a, 0x680077ca, 0x68007a4a, 0x68007a4a, /* 2288 */ - 0x68007a4a, 0x68007a4a, 0x6800788a, 0x6800798a, /* 2292 */ - 0x68007a8a, 0x68007a8a, 0x68007a8a, 0x68007a8a, /* 2296 */ - 0x68007a4a, 0x68000beb, 0x68000beb, 0x68000beb, /* 2300 */ - 0x68000beb, 0x6800001c, 0x6800001c, 0x6800001c, /* 2304 */ - 0x6800001c, 0x6800001c, 0x6800040b, 0x78000000, /* 2308 */ - 0x0000001c, 0x40003006, 0x78000000, 0x78000000, /* 2312 */ - 0x0000042b, 0x000004ab, 0x0000054b, 0x00000a4b, /* 2316 */ - 0x00007005, 0x00007b4a, 0x00007005, 0x00007005, /* 2320 */ - 0x00007005, 0x00007005, 0x0000788a, 0x78000000, /* 2324 */ - 0x00007005, 0x00007005, 0x78000000, 0x00000018, /* 2328 */ - 0x00000018, 0x0000742a, 0x0000744a, 0x0000754a, /* 2332 */ - 0x0000768a, 0x0000788a, 0x78000000, 0x78000000, /* 2336 */ - 0x00a27001, 0x00a27001, 0x00a27001, 0x00a27001, /* 2340 */ - 0x00a27001, 0x00a27001, 0x00a27001, 0x00a27001, /* 2344 */ - 0x00a17002, 0x00a17002, 0x00a17002, 0x00a17002, /* 2348 */ - 0x00a17002, 0x00a17002, 0x00a17002, 0x00a17002, /* 2352 */ - 0x08007005, 0x08007005, 0x78000000, 0x78000000, /* 2356 */ - 0x08007005, 0x78000000, 0x78000000, 0x78000000, /* 2360 */ - 0x08007005, 0x08007005, 0x0800042b, 0x0800054b, /* 2364 */ - 0x0800068b, 0x0800088b, 0x78000000, 0x78000000, /* 2368 */ - 0x78000000, 0x78000000, 0x78000000, 0x08000018, /* 2372 */ - 0x08007005, 0x40003006, 0x40003006, 0x40003006, /* 2376 */ - 0x0800042b, 0x0800044b, 0x0800046b, 0x0800048b, /* 2380 */ - 0x0800054b, 0x0800068b, 0x0800088b, 0x0800090b, /* 2384 */ - 0x08000018, 0x08000018, 0x08000018, 0x08000018, /* 2388 */ - 0x08000018, 0x08000018, 0x08000018, 0x08000018, /* 2392 */ - 0x000074ea, 0x0000750a, 0x0000752a, 0x0000748a, /* 2396 */ - 0x0000752a, 0x0000742a, 0x0000744a, 0x0000746a, /* 2400 */ - 0x0000750a, 0x0000752a, 0x0000742a, 0x0000744a, /* 2404 */ - 0x0000746a, 0x0000748a, 0x000074aa, 0x0000744a, /* 2408 */ - 0x0000746a, 0x0000746a, 0x0000748a, 0x000074aa, /* 2412 */ - 0x0000742a, 0x0000744a, 0x0000746a, 0x0000746a, /* 2416 */ - 0x0000748a, 0x000074aa, 0x0000700a, 0x0000700a, /* 2420 */ - 0x0000748a, 0x000074aa, 0x0000746a, 0x0000746a, /* 2424 */ - 0x0000748a, 0x0000748a, 0x0000748a, 0x0000748a, /* 2428 */ - 0x000074ca, 0x000074ea, 0x000074ea, 0x000074ea, /* 2432 */ - 0x0000750a, 0x0000750a, 0x0000752a, 0x0000752a, /* 2436 */ - 0x0000752a, 0x0000752a, 0x0000744a, 0x0000746a, /* 2440 */ - 0x0000748a, 0x000074aa, 0x000074ca, 0x0000742a, /* 2444 */ - 0x0000744a, 0x0000746a, 0x0000748a, 0x0000748a, /* 2448 */ - 0x000074aa, 0x000074aa, 0x0000700a, 0x0000700a, /* 2452 */ - 0x0000742a, 0x0000744a, 0x00007bea, 0x00007bea, /* 2456 */ - 0x00007bea, 0x00007bea, 0x00007bea, 0x00007bea, /* 2460 */ - 0x00007bea, 0x00007bea, 0x00007bea, 0x78000000, /* 2464 */ - 0x0000001c, 0x0000001c, 0x78000000, 0x78000000, /* 2468 */ - 0x0000001c, 0x00003008, 0x00003008, 0x40003006, /* 2472 */ - 0x0000001c, 0x00003008, 0x00003008, 0x00003008, /* 2476 */ - 0x00003008, 0x00003008, 0x00003008, 0x48001010, /* 2480 */ - 0x48001010, 0x48001010, 0x48001010, 0x40003006, /* 2484 */ - 0x40003006, 0x40003006, 0x40003006, 0x0000001c, /* 2488 */ - 0x0000001c, 0x40003006, 0x40003006, 0x40003006, /* 2492 */ - 0x40003006, 0x6800001c, 0x78000000, 0x78000000, /* 2496 */ - 0x00000a0b, 0x00000b4b, 0x78000000, 0x78000000, /* 2500 */ - 0x00007002, 0x78000000, 0x00007002, 0x00007002, /* 2504 */ - 0x00007001, 0x78000000, 0x00007001, 0x00007001, /* 2508 */ - 0x78000000, 0x78000000, 0x00007001, 0x78000000, /* 2512 */ - 0x78000000, 0x00007001, 0x00007001, 0x00007001, /* 2516 */ - 0x00007002, 0x00007002, 0x78000000, 0x00007002, /* 2520 */ - 0x78000000, 0x00007002, 0x00007002, 0x00007002, /* 2524 */ - 0x78000000, 0x00007002, 0x00007002, 0x00007002, /* 2528 */ - 0x00007001, 0x00007001, 0x78000000, 0x00007001, /* 2532 */ - 0x00007001, 0x00007001, 0x00007001, 0x78000000, /* 2536 */ - 0x00007001, 0x78000000, 0x00007002, 0x00007002, /* 2540 */ - 0x00007001, 0x78000000, 0x00007002, 0x00007002, /* 2544 */ - 0x00007002, 0x00007002, 0x78000000, 0x78000000, /* 2548 */ - 0x00007001, 0x00000019, 0x00007002, 0x00007002, /* 2552 */ - 0x00007002, 0x00007002, 0x00007002, 0x80000019, /* 2556 */ - 0x00007001, 0x00007001, 0x00007001, 0x00000019, /* 2560 */ - 0x00007002, 0x80000019, 0x00007002, 0x00007002, /* 2564 */ - 0x00007002, 0x80000019, 0x00007002, 0x00007002, /* 2568 */ - 0x00007002, 0x00007002, 0x00007001, 0x00007002, /* 2572 */ - 0x78000000, 0x78000000, 0x18003409, 0x18003429, /* 2576 */ - 0x18003509, 0x18003529, 0x18003409, 0x18003429, /* 2580 */ - 0x18003509, 0x18003529, 0x18003409, 0x18003429, /* 2584 */ - 0x00007525, 0x00007005, 0x00007005, 0x00007005, /* 2588 */ - 0x78000000, 0x48001010, 0x78000000, 0x78000000, /* 2592 */ - 0x00000012, 0x00000012, 0x78000000, 0x78000000, /* 2596 */ - 0x00000012, 0x00000012, -}; - -#define UNI_CODE(ch) (prop[block[plane[(ch>>8)&8191]+((ch>>2)&63)]+(ch&3)]) - -/** - * Get type part of code - - */ -#define UNI_CODE_TO_TYPE(ch) (ch & 0x1f) - -/** - * Fetch the category type - - */ -#define UNI_TYPE(ch) (UNI_CODE_TO_TYPE(UNI_CODE(ch))) - -/** - * Fetch the digit offset - */ -#define UNI_DIGIT_OFFSET(ch) ((UNI_CODE(ch)>>5) & 0x1f) - -/** - * Fetch the numeric property - */ -#define UNI_NUM_PROP(ch) ((UNI_CODE(ch)>>10) & 0x3) - -/** - * Fetch the lexical property - */ -#define UNI_LEX_PROP(ch) ((UNI_CODE(ch)>>12) & 0x7) - -/** - * Fetch the case mapping offset - */ -#define UNI_CASE_OFFSET(ch) ((UNI_CODE(ch)>>18) & 0x1ff) - - -/** - * Special case mappings, not covered by UnicodeData.txt - */ -typedef struct -{ - int sourceChar; - int nrMaps; - int map[3]; -} CaseMapEntry; - -/* - -static CaseMapEntry caseMap[] = -{ - { 0x1fc2, 2, { 0xffff, 0x0159 } }, - { 0x1fc3, 1, { 0xffff } }, - { 0x1fc6, 2, { 0x018d, 0x0156 } }, - { 0x1fc7, 3, { 0x018d, 0x0156, 0x0159 } }, - { 0x1fc4, 2, { 0x0185, 0x0159 } }, - { 0x1fcc, 1, { 0xffff } }, - { 0x1fd3, 3, { 0x018f, 0x0134, 0x012d } }, - { 0x1fd2, 3, { 0x018f, 0x0134, 0x012c } }, - { 0x1fd7, 3, { 0x018f, 0x0134, 0x0156 } }, - { 0x1fd6, 2, { 0x018f, 0x0156 } }, - { 0x0130, 1, { 0x0082 } }, - { 0x1fe2, 3, { 0xffff, 0x0134, 0x012c } }, - { 0x1fe3, 3, { 0xffff, 0x0134, 0x012d } }, - { 0x1fe4, 2, { 0xffff, 0x0139 } }, - { 0x1fe6, 2, { 0xffff, 0x0156 } }, - { 0x1fe7, 3, { 0xffff, 0x0134, 0x0156 } }, - { 0x0307, 1, { 0x0133 } }, - { 0x1ff3, 1, { 0xffff } }, - { 0x1ff2, 2, { 0xffff, 0x0159 } }, - { 0x1ff4, 2, { 0xffff, 0x0159 } }, - { 0x1ff7, 3, { 0xffff, 0x0156, 0x0159 } }, - { 0x1ff6, 2, { 0xffff, 0x0156 } }, - { 0x0128, 1, { 0x0080 } }, - { 0x1ffc, 1, { 0xffff } }, - { 0x012e, 1, { 0xffff } }, - { 0x1f86, 1, { 0xffff } }, - { 0x1f87, 1, { 0xffff } }, - { 0x1f84, 1, { 0xffff } }, - { 0x1e97, 2, { 0x0036, 0x0134 } }, - { 0x1f85, 1, { 0xffff } }, - { 0x1e96, 2, { 0x0030, 0x014b } }, - { 0x1f82, 1, { 0xffff } }, - { 0x1f83, 1, { 0xffff } }, - { 0x1f80, 1, { 0xffff } }, - { 0x1f81, 1, { 0xffff } }, - { 0xfb01, 2, { 0x002e, 0x0045 } }, - { 0x1f8e, 1, { 0xffff } }, - { 0xfb00, 2, { 0x002e, 0x0042 } }, - { 0x1f8f, 1, { 0xffff } }, - { 0xfb03, 3, { 0x002e, 0x0042, 0x0045 } }, - { 0x1f8c, 1, { 0xffff } }, - { 0xfb02, 2, { 0x002e, 0xffff } }, - { 0x1f8d, 1, { 0xffff } }, - { 0xfb05, 2, { 0x0035, 0x004a } }, - { 0x1e99, 2, { 0x003b, 0xffff } }, - { 0x1f8a, 1, { 0xffff } }, - { 0x0049, 1, { 0x0031 } }, - { 0xfb04, 3, { 0x002e, 0x0042, 0xffff } }, - { 0x1e98, 2, { 0x0039, 0xffff } }, - { 0x1f8b, 1, { 0xffff } }, - { 0x004a, 1, { 0xffff } }, - { 0x1f88, 1, { 0xffff } }, - { 0xfb06, 2, { 0x0035, 0x004a } }, - { 0x1e9a, 2, { 0x0029, 0xffff } }, - { 0x1f89, 1, { 0xffff } }, - { 0x1f97, 1, { 0xffff } }, - { 0x1f96, 1, { 0xffff } }, - { 0x1f95, 1, { 0xffff } }, - { 0x1f94, 1, { 0xffff } }, - { 0x1f93, 1, { 0xffff } }, - { 0x1f92, 1, { 0xffff } }, - { 0x1f91, 1, { 0xffff } }, - { 0x1f90, 1, { 0xffff } }, - { 0x1f9f, 1, { 0xffff } }, - { 0x1f9e, 1, { 0xffff } }, - { 0x1f9d, 1, { 0xffff } }, - { 0xfb13, 2, { 0x0220, 0x0240 } }, - { 0x1f9c, 1, { 0xffff } }, - { 0xfb14, 2, { 0x0220, 0x0235 } }, - { 0x1f9b, 1, { 0xffff } }, - { 0xfb15, 2, { 0x0220, 0xffff } }, - { 0x1f9a, 1, { 0xffff } }, - { 0xfb16, 2, { 0xffff, 0x0240 } }, - { 0x1f99, 1, { 0xffff } }, - { 0xfb17, 2, { 0x0220, 0xffff } }, - { 0x0149, 2, { 0xffff, 0xffff } }, - { 0x1f98, 1, { 0xffff } }, - { 0x1fa4, 1, { 0xffff } }, - { 0x1fa5, 1, { 0xffff } }, - { 0x1fa6, 1, { 0xffff } }, - { 0x1fa7, 1, { 0xffff } }, - { 0x1fa0, 1, { 0xffff } }, - { 0x1fa1, 1, { 0xffff } }, - { 0x1fa2, 1, { 0xffff } }, - { 0x1fa3, 1, { 0xffff } }, - { 0x1fac, 1, { 0xffff } }, - { 0x1fad, 1, { 0xffff } }, - { 0x1fae, 1, { 0xffff } }, - { 0x1faf, 1, { 0xffff } }, - { 0x1fa8, 1, { 0xffff } }, - { 0x1fa9, 1, { 0xffff } }, - { 0x1faa, 1, { 0xffff } }, - { 0x0069, 1, { 0x0082 } }, - { 0x1fab, 1, { 0xffff } }, - { 0x1fb4, 2, { 0x0182, 0x0159 } }, - { 0x1fb7, 3, { 0x0187, 0x0156, 0x0159 } }, - { 0x1fb6, 2, { 0x0187, 0x0156 } }, - { 0x1fb3, 1, { 0xffff } }, - { 0x1fb2, 2, { 0xffff, 0x0159 } }, - { 0x1fbc, 1, { 0xffff } }, - { 0x03b0, 3, { 0xffff, 0x0134, 0x012d } }, - { 0x1f52, 3, { 0xffff, 0x0139, 0x012c } }, - { 0x1f50, 2, { 0xffff, 0x0139 } }, - { 0x1f56, 3, { 0xffff, 0x0139, 0x0156 } }, - { 0x03a3, 1, { 0xffff } }, - { 0x1f54, 3, { 0xffff, 0x0139, 0x012d } }, - { 0x0390, 3, { 0x018f, 0x0134, 0x012d } }, - { 0x00cd, 1, { 0xffff } }, - { 0x00cc, 1, { 0xffff } }, - { 0x00df, 2, { 0x0035, 0x0049 } }, - { 0x0587, 2, { 0x0217, 0x0246 } }, - { 0x01f0, 2, { 0xffff, 0xffff } }, - { 0, 0, {} } -}; - - -*/ - - - -unsigned int uni_code(int ch) -{ - return UNI_CODE(ch); -} - -unsigned int uni_type(int ch) -{ - return UNI_TYPE(ch); -} - -int uni_is_lower(int ch) -{ - return (UNI_TYPE(ch) == UNI_LOWERCASE_LETTER); -} - -int uni_is_upper(int ch) -{ - return (UNI_TYPE(ch) == UNI_UPPERCASE_LETTER); -} - -int uni_is_title(int ch) -{ - return (UNI_TYPE(ch) == UNI_TITLECASE_LETTER); -} - -int uni_is_digit(int ch) -{ - return (UNI_TYPE(ch) == UNI_DECIMAL_DIGIT_NUMBER); -} - -int uni_is_defined(int ch) -{ - return (UNI_TYPE(ch) != UNI_UNASSIGNED); -} - -int uni_is_letter(int ch) -{ - int c = UNI_TYPE(ch); - return (c>=UNI_UPPERCASE_LETTER && c<=UNI_OTHER_LETTER); -} - -int uni_is_letter_or_digit(int ch) -{ - int c = UNI_TYPE(ch); - return ((c>=UNI_UPPERCASE_LETTER && c<=UNI_OTHER_LETTER) - || c==UNI_DECIMAL_DIGIT_NUMBER); -} - -int uni_is_space(int ch) -{ - int c = UNI_TYPE(ch); - return (c==UNI_SPACE_SEPARATOR || c==UNI_LINE_SEPARATOR - || c==UNI_PARAGRAPH_SEPARATOR || (ch>= 0x09 && ch <= 0x0d)); -} - -int uni_to_lower(int ch) -{ - int c = UNI_CODE(ch); - if (UNI_CODE_TO_TYPE(c) == UNI_LOWERCASE_LETTER) - return ch; - ch -= (c>>18) & 0x1ff; - return ch; -} - -int uni_to_upper(int ch) -{ - int c = UNI_CODE(ch); - if (UNI_CODE_TO_TYPE(c) == UNI_UPPERCASE_LETTER) - return ch; - ch += (c>>18) & 0x1ff; - return ch; -} - -int uni_to_title(int ch) -{ - int c = UNI_CODE(ch); - if (UNI_CODE_TO_TYPE(c) == UNI_TITLECASE_LETTER) - return ch; - ch += (c>>18) & 0x1ff; - return ch; -} - -int uni_block(int ch) -{ - int ret = 0; - for (UcdBlockData *entry = ucd_blocks; entry->name ; entry++, ret++) { - if ((ch >= entry->low) && (ch <= entry->high)) { - return ret; - } - } - return UCD_BLOCK_NO_BLOCK; -} - -UcdBlockData *uni_block_data(int blockNr) -{ - if (blockNr >= 0 && blockNr < UCD_BLOCK_NO_BLOCK) - return &(ucd_blocks[blockNr]); - else - return (UcdBlockData *)0; -} - - - - - diff --git a/src/dom/ucd.h b/src/dom/ucd.h deleted file mode 100644 index 112c45f20..000000000 --- a/src/dom/ucd.h +++ /dev/null @@ -1,335 +0,0 @@ -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * More thorough explanations of the various classes and their algorithms - * can be found there. - * - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - */ -#ifndef SEEN_UCD_H -#define SEEN_UCD_H - - -/* *********************************************** -** Unicode character classification -************************************************/ - - -/** - * Enumerated Unicode general category types - */ -typedef enum UniCharType -{ - UNI_UNASSIGNED = 0, /* Cn */ - UNI_UPPERCASE_LETTER = 1, /* Lu */ - UNI_LOWERCASE_LETTER = 2, /* Ll */ - UNI_TITLECASE_LETTER = 3, /* Lt */ - UNI_MODIFIER_LETTER = 4, /* Lm */ - UNI_OTHER_LETTER = 5, /* Lo */ - UNI_NON_SPACING_MARK = 6, /* Mn */ - UNI_ENCLOSING_MARK = 7, /* Me */ - UNI_COMBINING_SPACING_MARK = 8, /* Mc */ - UNI_DECIMAL_DIGIT_NUMBER = 9, /* Nd */ - UNI_LETTER_NUMBER = 10, /* Nl */ - UNI_OTHER_NUMBER = 11, /* No */ - UNI_SPACE_SEPARATOR = 12, /* Zs */ - UNI_LINE_SEPARATOR = 13, /* Zl */ - UNI_PARAGRAPH_SEPARATOR = 14, /* Zp */ - UNI_CONTROL = 15, /* Cc */ - UNI_FORMAT = 16, /* Cf */ - UNI_UNUSED_RESERVE = 17, /* xx */ - UNI_PRIVATE_USE = 18, /* Co */ - UNI_SURROGATE = 19, /* Cs */ - UNI_DASH_PUNCTUATION = 20, /* Pd */ - UNI_START_PUNCTUATION = 21, /* Ps */ - UNI_END_PUNCTUATION = 22, /* Pe */ - UNI_CONNECTOR_PUNCTUATION = 23, /* Pc */ - UNI_OTHER_PUNCTUATION = 24, /* Po */ - UNI_MATH_SYMBOL = 25, /* Sm */ - UNI_CURRENCY_SYMBOL = 26, /* Sc */ - UNI_MODIFIER_SYMBOL = 27, /* Sk */ - UNI_OTHER_SYMBOL = 28, /* So */ - UNI_INITIAL_QUOTE_PUNCTUATION = 29, /* Pi */ - UNI_FINAL_QUOTE_PUNCTUATION = 30 /* Pf */ -} UnicodeCharType; - - -/** - * Get the raw table entry for this Unicode codepoint - * @param ch the Unicode codepoint to test - * @return the raw UCD property table entry - */ -unsigned int uni_code(int ch); - - -/** - * Get the Unicode General Category of ths character - * @param ch the Unicode codepoint to test - * @return the 'UniCharType' General Category enumeration (above) - */ -unsigned int uni_type(int ch); - - -/** - * Test if this Unicode code point is lower case - * @param ch the Unicode codepoint to test - * @return 1 if successful, else 0 - */ -int uni_is_lower(int ch); - - -/** - * Test if this Unicode code point is upper case - * @param ch the Unicode codepoint to test - * @return 1 if successful, else 0 - */ -int uni_is_upper(int ch); - - -/** - * Test if this Unicode code point is title case - * @param ch the Unicode codepoint to test - * @return 1 if successful, else 0 - */ -int uni_is_title(int ch); - - -/** - * Test if this Unicode code point is a numeric digit - * @param ch the Unicode codepoint to test - * @return 1 if successful, else 0 - */ -int uni_is_digit(int ch); - - -/** - * Test if this Unicode code point is defined in the database - * @param ch the Unicode codepoint to test - * @return 1 if successful, else 0 - */ -int uni_is_defined(int ch); - -/** - * Test if this Unicode code point is a letter - * @param ch the Unicode codepoint to test - * @return 1 if successful, else 0 - */ -int uni_is_letter(int ch); - - -/** - * Test if this Unicode code point is a letter or a digit - * @param ch the Unicode codepoint to test - * @return 1 if successful, else 0 - */ -int uni_is_letter_or_digit(int ch); - -/** - * Test if this Unicode code point is considered to be a space - * @param ch the Unicode codepoint to test - * @return 1 if successful, else 0 - */ -int uni_is_space(int ch); - - -/************************************************ -** Unicode case conversion -************************************************/ - -/** - * Convert the given codepoint to its lower case mapping. - * If there is none, return the codepoint. - * @param ch the Unicode codepoint to convert - * @return the converted codepoint - */ -int uni_to_lower(int ch); - -/** - * Convert the given codepoint to its upper case mapping. - * If there is none, return the codepoint. - * @param ch the Unicode codepoint to convert - * @return the converted codepoint - */ -int uni_to_upper(int ch); - -/** - * Convert the given codepoint to its title case mapping. - * If there is none, return the codepoint. - * @param ch the Unicode codepoint to convert - * @return the converted codepoint - */ -int uni_to_title(int ch); - - -/* *********************************************** -** Unicode blocks -************************************************/ - - - -/** - * Used to hold the information for a Unicode codepoint - * block - */ -typedef struct -{ - /** - * Low end of the block range - */ - unsigned long low; - /** - * High end of the block range - */ - unsigned long high; - /** - * Name string for the block - */ - const char *name; -} UcdBlockData; - - -/** - * Return the Unicode block (defined below) for the given - * codepoint. If not found, return UCD_BLOCK_NO_BLOCK. - * @param ch the Unicode codepoint to search - * @return the block - */ -int uni_block(int ch); - - -/** - * Return the Unicode block data for the enumerated block number. - * @param nr the Unicode block number - * @return the block data if found, else NULL - */ -UcdBlockData *uni_block_data(int blockNr); - - - - -/** - * The Unicode codepoint blocks as defined in Blocks.txt. - * Block list has 171 entries - */ -typedef enum -{ - /* 0, 000000 - 00007f */ UCD_BLOCK_BASIC_LATIN, - /* 2, 000100 - 00017f */ UCD_BLOCK_LATIN_EXTENDED_A, - /* 4, 000250 - 0002af */ UCD_BLOCK_IPA_EXTENSIONS, - /* 6, 000300 - 00036f */ UCD_BLOCK_COMBINING_DIACRITICAL_MARKS, - /* 8, 000400 - 0004ff */ UCD_BLOCK_CYRILLIC, - /* 10, 000530 - 00058f */ UCD_BLOCK_ARMENIAN, - /* 12, 000600 - 0006ff */ UCD_BLOCK_ARABIC, - /* 14, 000750 - 00077f */ UCD_BLOCK_ARABIC_SUPPLEMENT, - /* 16, 0007c0 - 0007ff */ UCD_BLOCK_NKO, - /* 18, 000980 - 0009ff */ UCD_BLOCK_BENGALI, - /* 20, 000a80 - 000aff */ UCD_BLOCK_GUJARATI, - /* 22, 000b80 - 000bff */ UCD_BLOCK_TAMIL, - /* 24, 000c80 - 000cff */ UCD_BLOCK_KANNADA, - /* 26, 000d80 - 000dff */ UCD_BLOCK_SINHALA, - /* 28, 000e80 - 000eff */ UCD_BLOCK_LAO, - /* 30, 001000 - 00109f */ UCD_BLOCK_MYANMAR, - /* 32, 001100 - 0011ff */ UCD_BLOCK_HANGUL_JAMO, - /* 34, 001380 - 00139f */ UCD_BLOCK_ETHIOPIC_SUPPLEMENT, - /* 36, 001400 - 00167f */ UCD_BLOCK_UNIFIED_CANADIAN_ABORIGINAL_SYLLABICS, - /* 38, 0016a0 - 0016ff */ UCD_BLOCK_RUNIC, - /* 40, 001720 - 00173f */ UCD_BLOCK_HANUNOO, - /* 42, 001760 - 00177f */ UCD_BLOCK_TAGBANWA, - /* 44, 001800 - 0018af */ UCD_BLOCK_MONGOLIAN, - /* 46, 001950 - 00197f */ UCD_BLOCK_TAI_LE, - /* 48, 0019e0 - 0019ff */ UCD_BLOCK_KHMER_SYMBOLS, - /* 50, 001b00 - 001b7f */ UCD_BLOCK_BALINESE, - /* 52, 001c00 - 001c4f */ UCD_BLOCK_LEPCHA, - /* 54, 001d00 - 001d7f */ UCD_BLOCK_PHONETIC_EXTENSIONS, - /* 56, 001dc0 - 001dff */ UCD_BLOCK_COMBINING_DIACRITICAL_MARKS_SUPPLEMENT, - /* 58, 001f00 - 001fff */ UCD_BLOCK_GREEK_EXTENDED, - /* 60, 002070 - 00209f */ UCD_BLOCK_SUPERSCRIPTS_AND_SUBSCRIPTS, - /* 62, 0020d0 - 0020ff */ UCD_BLOCK_COMBINING_DIACRITICAL_MARKS_FOR_SYMBOLS, - /* 64, 002150 - 00218f */ UCD_BLOCK_NUMBER_FORMS, - /* 66, 002200 - 0022ff */ UCD_BLOCK_MATHEMATICAL_OPERATORS, - /* 68, 002400 - 00243f */ UCD_BLOCK_CONTROL_PICTURES, - /* 70, 002460 - 0024ff */ UCD_BLOCK_ENCLOSED_ALPHANUMERICS, - /* 72, 002580 - 00259f */ UCD_BLOCK_BLOCK_ELEMENTS, - /* 74, 002600 - 0026ff */ UCD_BLOCK_MISCELLANEOUS_SYMBOLS, - /* 76, 0027c0 - 0027ef */ UCD_BLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_A, - /* 78, 002800 - 0028ff */ UCD_BLOCK_BRAILLE_PATTERNS, - /* 80, 002980 - 0029ff */ UCD_BLOCK_MISCELLANEOUS_MATHEMATICAL_SYMBOLS_B, - /* 82, 002b00 - 002bff */ UCD_BLOCK_MISCELLANEOUS_SYMBOLS_AND_ARROWS, - /* 84, 002c60 - 002c7f */ UCD_BLOCK_LATIN_EXTENDED_C, - /* 86, 002d00 - 002d2f */ UCD_BLOCK_GEORGIAN_SUPPLEMENT, - /* 88, 002d80 - 002ddf */ UCD_BLOCK_ETHIOPIC_EXTENDED, - /* 90, 002e00 - 002e7f */ UCD_BLOCK_SUPPLEMENTAL_PUNCTUATION, - /* 92, 002f00 - 002fdf */ UCD_BLOCK_KANGXI_RADICALS, - /* 94, 003000 - 00303f */ UCD_BLOCK_CJK_SYMBOLS_AND_PUNCTUATION, - /* 96, 0030a0 - 0030ff */ UCD_BLOCK_KATAKANA, - /* 98, 003130 - 00318f */ UCD_BLOCK_HANGUL_COMPATIBILITY_JAMO, - /* 100, 0031a0 - 0031bf */ UCD_BLOCK_BOPOMOFO_EXTENDED, - /* 102, 0031f0 - 0031ff */ UCD_BLOCK_KATAKANA_PHONETIC_EXTENSIONS, - /* 104, 003300 - 0033ff */ UCD_BLOCK_CJK_COMPATIBILITY, - /* 106, 004dc0 - 004dff */ UCD_BLOCK_YIJING_HEXAGRAM_SYMBOLS, - /* 108, 00a000 - 00a48f */ UCD_BLOCK_YI_SYLLABLES, - /* 110, 00a500 - 00a63f */ UCD_BLOCK_VAI, - /* 112, 00a700 - 00a71f */ UCD_BLOCK_MODIFIER_TONE_LETTERS, - /* 114, 00a800 - 00a82f */ UCD_BLOCK_SYLOTI_NAGRI, - /* 116, 00a880 - 00a8df */ UCD_BLOCK_SAURASHTRA, - /* 118, 00a930 - 00a95f */ UCD_BLOCK_REJANG, - /* 120, 00ac00 - 00d7af */ UCD_BLOCK_HANGUL_SYLLABLES, - /* 122, 00db80 - 00dbff */ UCD_BLOCK_HIGH_PRIVATE_USE_SURROGATES, - /* 124, 00e000 - 00f8ff */ UCD_BLOCK_PRIVATE_USE_AREA, - /* 126, 00fb00 - 00fb4f */ UCD_BLOCK_ALPHABETIC_PRESENTATION_FORMS, - /* 128, 00fe00 - 00fe0f */ UCD_BLOCK_VARIATION_SELECTORS, - /* 130, 00fe20 - 00fe2f */ UCD_BLOCK_COMBINING_HALF_MARKS, - /* 132, 00fe50 - 00fe6f */ UCD_BLOCK_SMALL_FORM_VARIANTS, - /* 134, 00ff00 - 00ffef */ UCD_BLOCK_HALFWIDTH_AND_FULLWIDTH_FORMS, - /* 136, 010000 - 01007f */ UCD_BLOCK_LINEAR_B_SYLLABARY, - /* 138, 010100 - 01013f */ UCD_BLOCK_AEGEAN_NUMBERS, - /* 140, 010190 - 0101cf */ UCD_BLOCK_ANCIENT_SYMBOLS, - /* 142, 010280 - 01029f */ UCD_BLOCK_LYCIAN, - /* 144, 010300 - 01032f */ UCD_BLOCK_OLD_ITALIC, - /* 146, 010380 - 01039f */ UCD_BLOCK_UGARITIC, - /* 148, 010400 - 01044f */ UCD_BLOCK_DESERET, - /* 150, 010480 - 0104af */ UCD_BLOCK_OSMANYA, - /* 152, 010900 - 01091f */ UCD_BLOCK_PHOENICIAN, - /* 154, 010a00 - 010a5f */ UCD_BLOCK_KHAROSHTHI, - /* 156, 012400 - 01247f */ UCD_BLOCK_CUNEIFORM_NUMBERS_AND_PUNCTUATION, - /* 158, 01d100 - 01d1ff */ UCD_BLOCK_MUSICAL_SYMBOLS, - /* 160, 01d300 - 01d35f */ UCD_BLOCK_TAI_XUAN_JING_SYMBOLS, - /* 162, 01d400 - 01d7ff */ UCD_BLOCK_MATHEMATICAL_ALPHANUMERIC_SYMBOLS, - /* 164, 01f030 - 01f09f */ UCD_BLOCK_DOMINO_TILES, - /* 166, 02f800 - 02fa1f */ UCD_BLOCK_CJK_COMPATIBILITY_IDEOGRAPHS_SUPPLEMENT, - /* 168, 0e0100 - 0e01ef */ UCD_BLOCK_VARIATION_SELECTORS_SUPPLEMENT, - /* 170, 100000 - 10ffff */ UCD_BLOCK_SUPPLEMENTARY_PRIVATE_USE_AREA_B, - /* 171, 000000 - 10ffff */ UCD_BLOCK_NO_BLOCK -} UnicodeBlocks; - - -#endif // SEEN_UCD_H - - diff --git a/src/dom/uri.cpp b/src/dom/uri.cpp deleted file mode 100644 index 231995daf..000000000 --- a/src/dom/uri.cpp +++ /dev/null @@ -1,961 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "uri.h" -#include "ucd.h" - -#include <cstdarg> -#include <cstdio> -#include <cstdlib> -#include <vector> - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - -typedef struct -{ - int ival; - char const *sval; - int port; -} LookupEntry; - -static LookupEntry schemes[] = -{ - { URI::SCHEME_DATA, "data:", 0 }, - { URI::SCHEME_HTTP, "http:", 80 }, - { URI::SCHEME_HTTPS, "https:", 443 }, - { URI::SCHEME_FTP, "ftp", 12 }, - { URI::SCHEME_FILE, "file:", 0 }, - { URI::SCHEME_LDAP, "ldap:", 123 }, - { URI::SCHEME_MAILTO, "mailto:", 25 }, - { URI::SCHEME_NEWS, "news:", 117 }, - { URI::SCHEME_TELNET, "telnet:", 23 }, - { 0, NULL, 0 } -}; - - - -//######################################################################### -//# C O N S T R U C T O R -//######################################################################### - -/** - * - */ -URI::URI() -{ - init(); -} - -/** - * - */ -URI::URI(const DOMString &str) -{ - init(); - parse(str); -} - - -/** - * - */ -URI::URI(const char *str) -{ - init(); - DOMString domStr = str; - parse(domStr); -} - - -/** - * - */ -URI::URI(const URI &other) -{ - init(); - assign(other); -} - - -/** - * - */ -URI &URI::operator=(const URI &other) -{ - init(); - assign(other); - return *this; -} - - -/** - * - */ -URI::~URI() -{ -} - - - - - -/** - * - */ -void URI::init() -{ - parsebuf = NULL; - parselen = 0; - scheme = SCHEME_NONE; - schemeStr.clear(); - port = 0; - portSpecified = false; - authority.clear(); - path.clear(); - absolute = false; - opaque = false; - query.clear(); - fragment.clear(); -} - - -/** - * - */ -void URI::assign(const URI &other) -{ - scheme = other.scheme; - schemeStr = other.schemeStr; - authority = other.authority; - port = other.port; - path = other.path; - absolute = other.absolute; - opaque = other.opaque; - query = other.query; - fragment = other.fragment; -} - - -//######################################################################### -//#A T T R I B U T E S -//######################################################################### -static const char *hexChars = "0123456789abcdef"; - -static DOMString toStr(const std::vector<int> &arr) -{ - DOMString buf; - std::vector<int>::const_iterator iter; - for (iter=arr.begin() ; iter!=arr.end() ; ++iter) - { - int ch = *iter; - if (isprint(ch)) - buf.push_back((XMLCh)ch); - else - { - buf.push_back('%'); - int hi = ((ch>>4) & 0xf); - buf.push_back(hexChars[hi]); - int lo = ((ch ) & 0xf); - buf.push_back(hexChars[lo]); - } - } - return buf; -} - - -DOMString URI::toString() const -{ - DOMString str = schemeStr; - if (!authority.empty()) - { - str.append("//"); - str.append(toStr(authority)); - } - str.append(toStr(path)); - if (!query.empty()) - { - str.append("?"); - str.append(toStr(query)); - } - if (!fragment.empty()) - { - str.append("#"); - str.append(toStr(fragment)); - } - return str; -} - - -int URI::getScheme() const -{ - return scheme; -} - -DOMString URI::getSchemeStr() const -{ - return schemeStr; -} - - -DOMString URI::getAuthority() const -{ - DOMString ret = toStr(authority); - if (portSpecified && port>=0) - { - char buf[7]; - snprintf(buf, 6, ":%6d", port); - ret.append(buf); - } - return ret; -} - -DOMString URI::getHost() const -{ - DOMString str = toStr(authority); - return str; -} - -int URI::getPort() const -{ - return port; -} - - -DOMString URI::getPath() const -{ - DOMString str = toStr(path); - return str; -} - -DOMString URI::getNativePath() const -{ - DOMString pathStr = toStr(path); - DOMString npath; -#ifdef __WIN32__ - unsigned int firstChar = 0; - if (pathStr.size() >= 3) - { - if (pathStr[0] == '/' && - uni_is_letter(pathStr[1]) && - pathStr[2] == ':') - firstChar++; - } - for (unsigned int i=firstChar ; i<pathStr.size() ; i++) - { - XMLCh ch = (XMLCh) pathStr[i]; - if (ch == '/') - npath.push_back((XMLCh)'\\'); - else - npath.push_back(ch); - } -#else - npath = pathStr; -#endif - return npath; -} - - -bool URI::isAbsolute() const -{ - return absolute; -} - -bool URI::isOpaque() const -{ - return opaque; -} - - -DOMString URI::getQuery() const -{ - DOMString str = toStr(query); - return str; -} - - -DOMString URI::getFragment() const -{ - DOMString str = toStr(fragment); - return str; -} - - - - -static int find(const std::vector<int> &str, int ch, int startpos) -{ - for (unsigned int i = startpos ; i < str.size() ; i++) - { - if (ch == str[i]) - return i; - } - return -1; -} - - -static int findLast(const std::vector<int> &str, int ch) -{ - /** - * Fixed. Originally I used an unsigned int for str.size(), - * which was dumb, since i>=0 would always be true. - */ - for (int i = ((int)str.size())-1 ; i>=0 ; i--) - { - if (ch == str[i]) - return i; - } - return -1; -} - - -static bool sequ(const std::vector<int> &str, const char *key) -{ - char *c = (char *)key; - for (unsigned int i=0 ; i<str.size() ; i++) - { - if (! (*c)) - return false; - if (*c != str[i]) - return false; - } - return true; -} - - -static std::vector<int> substr(const std::vector<int> &str, - int startpos, int len) -{ - std::vector<int> buf; - unsigned int pos = startpos; - for (int i=0 ; i<len ; i++) - { - if (pos >= str.size()) - break; - buf.push_back(str[pos++]); - } - return buf; -} - - -URI URI::resolve(const URI &other) const -{ - //### According to w3c, this is handled in 3 cases - - //## 1 - if (opaque || other.isAbsolute()) - return other; - - //## 2 - if (!other.fragment.empty() && - other.path.empty() && - other.scheme == SCHEME_NONE && - other.authority.empty() && - other.query.empty()) - { - URI fragUri = *this; - fragUri.fragment = other.fragment; - return fragUri; - } - - //## 3 http://www.ietf.org/rfc/rfc2396.txt, section 5.2 - URI newUri; - //# 3.1 - newUri.scheme = scheme; - newUri.schemeStr = schemeStr; - newUri.query = other.query; - newUri.fragment = other.fragment; - if (!other.authority.empty()) - { - //# 3.2 - if (absolute || other.absolute) - newUri.absolute = true; - newUri.authority = other.authority; - newUri.port = other.port;//part of authority - newUri.path = other.path; - } - else - { - //# 3.3 - if (other.absolute) - { - newUri.absolute = true; - newUri.path = other.path; - } - else - { - int pos = findLast(path, '/'); - if (pos >= 0) - { - newUri.path.clear(); - //# append my path up to and including the '/' - for (int i = 0; i<=pos ; i++) - newUri.path.push_back(path[i]); - //# append other path - for (unsigned int i = 0; i<other.path.size() ; i++) - newUri.path.push_back(other.path[i]); - } - else - newUri.path = other.path; - } - } - - newUri.normalize(); - - return newUri; -} - - -/** - * This follows the Java URI algorithm: - * 1. All "." segments are removed. - * 2. If a ".." segment is preceded by a non-".." segment - * then both of these segments are removed. This step - * is repeated until it is no longer applicable. - * 3. If the path is relative, and if its first segment - * contains a colon character (':'), then a "." segment - * is prepended. This prevents a relative URI with a path - * such as "a:b/c/d" from later being re-parsed as an - * opaque URI with a scheme of "a" and a scheme-specific - * part of "b/c/d". (Deviation from RFC 2396) - */ -void URI::normalize() -{ - std::vector< std::vector<int> > segments; - - //## Collect segments - if (path.size()<2) - return; - bool abs = false; - int pos=0; - int len = (int) path.size(); - - if (path[0]=='/') - { - abs = true; - pos++; - } - - while (pos < len) - { - int pos2 = find(path, '/', pos); - if (pos2 < 0) - { - std::vector<int> seg = substr(path, pos, path.size()-pos); - //printf("last segment:%s\n", toStr(seg).c_str()); - segments.push_back(seg); - break; - } - if (pos2>pos) - { - std::vector<int> seg = substr(path, pos, pos2-pos); - //printf("segment:%s\n", toStr(seg).c_str()); - segments.push_back(seg); - } - pos = pos2; - pos++; - } - - //## Clean up (normalize) segments - bool edited = false; - std::vector< std::vector<int> >::iterator iter; - for (iter=segments.begin() ; iter!=segments.end() ; ) - { - std::vector<int> s = *iter; - if (sequ(s,".")) - { - iter = segments.erase(iter); - edited = true; - } - else if (sequ(s, "..") && iter != segments.begin() && - !sequ(*(iter-1), "..")) - { - --iter; //back up, then erase two entries - iter = segments.erase(iter); - iter = segments.erase(iter); - edited = true; - } - else - ++iter; - } - - //## Rebuild path, if necessary - if (edited) - { - path.clear(); - if (abs) - { - path.push_back('/'); - } - std::vector< std::vector<int> >::iterator iter; - for (iter=segments.begin() ; iter!=segments.end() ; ++iter) - { - if (iter != segments.begin()) - path.push_back('/'); - std::vector<int> seg = *iter; - for (unsigned int i = 0; i<seg.size() ; i++) - path.push_back(seg[i]); - } - } - -} - - - -//######################################################################### -//# M E S S A G E S -//######################################################################### - -void URI::error(const char *fmt, ...) -{ - va_list args; - fprintf(stderr, "URI error: "); - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args); - fprintf(stderr, "\n"); -} - -void URI::trace(const char *fmt, ...) -{ - va_list args; - fprintf(stdout, "URI: "); - va_start(args, fmt); - vfprintf(stdout, fmt, args); - va_end(args); - fprintf(stdout, "\n"); -} - - - -//######################################################################### -//# P A R S I N G -//######################################################################### - - - -int URI::peek(int p) -{ - if (p<0 || p>=parselen) - return -1; - return parsebuf[p]; -} - - - -int URI::match(int p0, char const *key) -{ - int p = p0; - while (p < parselen) - { - if (*key == '\0') - return p; - else if (*key != parsebuf[p]) - break; - p++; key++; - } - return p0; -} - -//######################################################################### -//# Parsing is performed according to: -//# http://www.gbiv.com/protocols/uri/rfc/rfc3986.html#components -//######################################################################### - -int URI::parseHex(int p0, int &result) -{ - int p = p0; - int val = 0; - - //# Upper 4 - int ch = peek(p); - if (ch >= '0' && ch <= '9') - val += (ch - '0'); - else if (ch >= 'a' && ch <= 'f') - val += (10 + ch - 'a'); - else if (ch >= 'A' && ch <= 'F') - val += (10 + ch - 'A'); - else - { - error("parseHex : unexpected character : %c", ch); - return -1; - } - p++; - val <<= 4; - - //# Lower 4 - ch = peek(p); - if (ch >= '0' && ch <= '9') - val += (ch - '0'); - else if (ch >= 'a' && ch <= 'f') - val += (10 + ch - 'a'); - else if (ch >= 'A' && ch <= 'F') - val += (10 + ch - 'A'); - else - { - error("parseHex : unexpected character : %c", ch); - return -1; - } - p++; - result = val; - return p; -} - - - -int URI::parseEntity(int p0, int &result) -{ - int p = p0; - int ch = peek(p); - if (ch != '&') - return p0; - p++; - if (!match(p, "#x")) - { - error("parseEntity: expected '#x'"); - return -1; - } - p += 2; - int val; - p = parseHex(p, val); - if (p<0) - return -1; - ch = peek(p); - if (ch != ';') - { - error("parseEntity: expected ';'"); - return -1; - } - p++; - result = val; - return p; -} - -int URI::parseAsciiEntity(int p0, int &result) -{ - int p = p0; - int ch = peek(p); - if (ch != '%') - return p0; - p++; - int val; - p = parseHex(p, val); - if (p<0) - return -1; - result = val; - return p; -} - - -int URI::parseScheme(int p0) -{ - int p = p0; - for (LookupEntry *entry = schemes; entry->sval ; entry++) - { - int p2 = match(p, entry->sval); - if (p2 > p) - { - schemeStr = entry->sval; - scheme = entry->ival; - port = entry->port; - p = p2; - return p; - } - } - - return p; -} - - -int URI::parseHierarchicalPart(int p0) -{ - int p = p0; - int ch; - - //# Authority field (host and port, for example) - int p2 = match(p, "//"); - if (p2 > p) - { - p = p2; - portSpecified = false; - DOMString portStr; - while (p < parselen) - { - ch = peek(p); - if (ch == '/') - break; - else if (ch == '&') //IRI entity - { - int val; - p2 = parseEntity(p, val); - if (p2<p) - { - return -1; - } - p = p2; - authority.push_back((XMLCh)val); - } - else if (ch == '%') //ascii hex excape - { - int val; - p2 = parseAsciiEntity(p, val); - if (p2<p) - { - return -1; - } - p = p2; - authority.push_back((XMLCh)val); - } - else if (ch == ':') - { - portSpecified = true; - p++; - } - else if (portSpecified) - { - portStr.push_back((XMLCh)ch); - p++; - } - else - { - authority.push_back((XMLCh)ch); - p++; - } - } - if (portStr.size() > 0) - { - char *pstr = (char *)portStr.c_str(); - char *endStr; - long val = strtol(pstr, &endStr, 10); - if (endStr > pstr) //successful parse? - port = val; - } - } - - //# Are we absolute? - ch = peek(p); - if (uni_is_letter(ch) && peek(p+1)==':') - { - absolute = true; - path.push_back((XMLCh)'/'); - } - else if (ch == '/') - { - absolute = true; - if (p>p0) //in other words, if '/' is not the first char - opaque = true; - path.push_back((XMLCh)ch); - p++; - } - - while (p < parselen) - { - ch = peek(p); - if (ch == '?' || ch == '#') - break; - else if (ch == '&') //IRI entity - { - int val; - p2 = parseEntity(p, val); - if (p2<p) - { - return -1; - } - p = p2; - path.push_back((XMLCh)val); - } - else if (ch == '%') //ascii hex excape - { - int val; - p2 = parseAsciiEntity(p, val); - if (p2<p) - { - return -1; - } - p = p2; - path.push_back((XMLCh)val); - } - else - { - path.push_back((XMLCh)ch); - p++; - } - } - //trace("path:%s", toStr(path).c_str()); - return p; -} - -int URI::parseQuery(int p0) -{ - int p = p0; - int ch = peek(p); - if (ch != '?') - return p0; - - p++; - while (p < parselen) - { - ch = peek(p); - if (ch == '#') - break; - query.push_back((XMLCh)ch); - p++; - } - - - return p; -} - -int URI::parseFragment(int p0) -{ - - int p = p0; - int ch = peek(p); - if (ch != '#') - return p0; - - p++; - while (p < parselen) - { - ch = peek(p); - if (ch == '?') - break; - fragment.push_back(ch); - p++; - } - - - return p; -} - - -int URI::parse(int p0) -{ - - int p = p0; - - int p2 = parseScheme(p); - if (p2 < 0) - { - error("Scheme"); - return -1; - } - p = p2; - - - p2 = parseHierarchicalPart(p); - if (p2 < 0) - { - error("Hierarchical part"); - return -1; - } - p = p2; - - p2 = parseQuery(p); - if (p2 < 0) - { - error("Query"); - return -1; - } - p = p2; - - - p2 = parseFragment(p); - if (p2 < 0) - { - error("Fragment"); - return -1; - } - p = p2; - - return p; - -} - - - -bool URI::parse(const DOMString &str) -{ - - parselen = str.size(); - parsebuf = new int[str.size()]; - if (!parsebuf) - { - error("parse : could not allocate parsebuf"); - return false; - } - - DOMString::const_iterator iter; - unsigned int i=0; - for (iter= str.begin() ; iter!=str.end() ; ++iter) - { - int ch = *iter; - if (ch == '\\') - parsebuf[i++] = '/'; - else - parsebuf[i++] = ch; - } - - - int p = parse(0); - normalize(); - - delete[] parsebuf; - - if (p < 0) - { - error("Syntax error"); - return false; - } - - //printf("uri:%s\n", toString().c_str()); - //printf("parse:%s\n", toStr(path).c_str()); - - return true; - -} - - - - - -} //namespace dom -} //namespace w3c -} //namespace org -//######################################################################### -//# E N D O F F I L E -//######################################################################### - - - diff --git a/src/dom/uri.h b/src/dom/uri.h deleted file mode 100644 index 4d3c384c9..000000000 --- a/src/dom/uri.h +++ /dev/null @@ -1,488 +0,0 @@ -#ifndef SEEN_URI_H -#define SEEN_URI_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ======================================================================= - * NOTES - * - * Some definitions are taken from the URI RFC: - * http://www.ietf.org/rfc/rfc2396.txt - */ - -#include "dom.h" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - -/** - * A class that implements the W3C URI resource reference. Although this - * API attempts to process URIs as closely as possible to the needs of W3, - * this model is not based on any official W3C spec. - */ -class URI -{ -public: - - /** - * Code that indicates the scheme type. - */ - typedef enum - { - SCHEME_NONE =0, - SCHEME_DATA, - SCHEME_HTTP, - SCHEME_HTTPS, - SCHEME_FTP, - SCHEME_FILE, - SCHEME_LDAP, - SCHEME_MAILTO, - SCHEME_NEWS, - SCHEME_TELNET - } SchemeTypes; - - /** - * Simple constructor - */ - URI(); - - /** - * Copy constructor - */ - URI(const DOMString &str); - - - /** - * Parsing constructor - */ - URI(const char *str); - - /** - * Copy constructor - */ - URI(const URI &other); - - /** - * Assignment operator - */ - URI &operator=(const URI &other); - - /** - * Destructor - */ - virtual ~URI(); - - /** - * Parse a string to initialize this URI. - */ - virtual bool parse(const DOMString &str); - - /** - * Produce a string displaying this URI's current value, in W3C format. - */ - virtual DOMString toString() const; - - /** - * Return the scheme (SchemeTypes above) of this URI as an enumeration - */ - virtual int getScheme() const; - - /** - * Return the scheme value as a string - * From the RFC: - * Just as there are many different methods of access to resources, - * there are a variety of schemes for identifying such resources. The - * URI syntax consists of a sequence of components separated by reserved - * characters, with the first component defining the semantics for the - * remainder of the URI string. - * - * Scheme names consist of a sequence of characters beginning with a - * lower case letter and followed by any combination of lower case - * letters, digits, plus ("+"), period ("."), or hyphen ("-"). For - * resiliency, programs interpreting URI should treat upper case letters - * as equivalent to lower case in scheme names (e.g., allow "HTTP" as - * well as "http"). - * - * scheme = alpha *( alpha | digit | "+" | "-" | "." ) - * - * Relative URI references are distinguished from absolute URI in that - * they do not begin with a scheme name. Instead, the scheme is - * inherited from the base URI, as described in Section 5.2. - * - */ - virtual DOMString getSchemeStr() const; - - /** - * From the RFC: - * Many URI schemes include a top hierarchical element for a naming - * authority, such that the namespace defined by the remainder of the - * URI is governed by that authority. This authority component is - * typically defined by an Internet-based server or a scheme-specific - * registry of naming authorities. - * - * authority = server | reg_name - * - * The authority component is preceded by a double slash "//" and is - * terminated by the next slash "/", question-mark "?", or by the end of - * the URI. Within the authority component, the characters ";", ":", - * "@", "?", and "/" are reserved. - * - * An authority component is not required for a URI scheme to make use - * of relative references. A base URI without an authority component - * implies that any relative reference will also be without an authority - * component. - */ - virtual DOMString getAuthority() const; - - /** - * Same as getAuthority, but if the port has been specified - * as host:port , the port will not be included - */ - virtual DOMString getHost() const; - - /** - * Return the port (TCPIP port for transport-type schemes) - */ - virtual int getPort() const; - - /** - * From the RFC: - * The path component contains data, specific to the authority (or the - * scheme if there is no authority component), identifying the resource - * within the scope of that scheme and authority. - * - * path = [ abs_path | opaque_part ] - * - * path_segments = segment *( "/" segment ) - * segment = *pchar *( ";" param ) - * param = *pchar - * - * pchar = unreserved | escaped | - * ":" | "@" | "&" | "=" | "+" | "$" | "," - * - * The path may consist of a sequence of path segments separated by a - * single slash "/" character. Within a path segment, the characters - * "/", ";", "=", and "?" are reserved. Each path segment may include a - * sequence of parameters, indicated by the semicolon ";" character. - * The parameters are not significant to the parsing of relative - * references. - */ - virtual DOMString getPath() const; - - /** - * Converts the URI's internal canonical representation of the path to - * what is meaningful on the architecture on which this method is called. - */ - virtual DOMString getNativePath() const; - - /** - * An absolute URI contains the name of the scheme being used (<scheme>) - * followed by a colon (":") and then a string (the <scheme-specific-part>) - * whose interpretation depends on the scheme. - */ - virtual bool isAbsolute() const; - - /** - * URI that do not make use of the slash "/" character for separating - * hierarchical components are considered opaque - */ - virtual bool isOpaque() const; - - /** - * The part of the URI following a ? in the path. - * - * From the RFC: - * The query component is a string of information to be interpreted by - * the resource. - * - * query = *uric - * - * Within a query component, the characters ";", "/", "?", ":", "@", - * "&", "=", "+", ",", and "$" are reserved. - * - */ - virtual DOMString getQuery() const; - - /** - * From the RFC: - * When a URI reference is used to perform a retrieval action on the - * identified resource, the optional fragment identifier, separated from - * the URI by a crosshatch ("#") character, consists of additional - * reference information to be interpreted by the user agent after the - * retrieval action has been successfully completed. As such, it is not - * part of a URI, but is often used in conjunction with a URI. - * - * fragment = *uric - * - * The semantics of a fragment identifier is a property of the data - * resulting from a retrieval action, regardless of the type of URI used - * in the reference. Therefore, the format and interpretation of - * fragment identifiers is dependent on the media type [RFC2046] of the - * retrieval result. The character restrictions described in Section 2 - * for URI also apply to the fragment in a URI-reference. Individual - * media types may define additional restrictions or structure within - * the fragment for specifying different types of "partial views" that - * can be identified within that media type. - * - * A fragment identifier is only meaningful when a URI reference is - * intended for retrieval and the result of that retrieval is a document - * for which the identified fragment is consistently defined. - */ - virtual DOMString getFragment() const; - - /** - * resolve() - * This is by far the most useful feature of a URI. It defines a set - * of rules for finding one resource relative to another, so that your - * resource search is well-defined and much easier. - * - * From the RFC: - * - * The base URI is established according to the rules of Section 5.1 and - * parsed into the four main components as described in Section 3. Note - * that only the scheme component is required to be present in the base - * URI; the other components may be empty or undefined. A component is - * undefined if its preceding separator does not appear in the URI - * reference; the path component is never undefined, though it may be - * empty. The base URI's query component is not used by the resolution - * algorithm and may be discarded. - * - * For each URI reference, the following steps are performed in order: - * - * 1) The URI reference is parsed into the potential four components and - * fragment identifier, as described in Section 4.3. - * - * 2) If the path component is empty and the scheme, authority, and - * query components are undefined, then it is a reference to the - * current document and we are done. Otherwise, the reference URI's - * query and fragment components are defined as found (or not found) - * within the URI reference and not inherited from the base URI. - * - * 3) If the scheme component is defined, indicating that the reference - * starts with a scheme name, then the reference is interpreted as an - * absolute URI and we are done. Otherwise, the reference URI's - * scheme is inherited from the base URI's scheme component. - * - * Due to a loophole in prior specifications [RFC1630], some parsers - * allow the scheme name to be present in a relative URI if it is the - * same as the base URI scheme. Unfortunately, this can conflict - * with the correct parsing of non-hierarchical URI. For backwards - * compatibility, an implementation may work around such references - * by removing the scheme if it matches that of the base URI and the - * scheme is known to always use the <hier_part> syntax. The parser - * can then continue with the steps below for the remainder of the - * reference components. Validating parsers should mark such a - * misformed relative reference as an error. - * - * 4) If the authority component is defined, then the reference is a - * network-path and we skip to step 7. Otherwise, the reference - * URI's authority is inherited from the base URI's authority - * component, which will also be undefined if the URI scheme does not - * use an authority component. - * - * 5) If the path component begins with a slash character ("/"), then - * the reference is an absolute-path and we skip to step 7. - * - * 6) If this step is reached, then we are resolving a relative-path - * reference. The relative path needs to be merged with the base - * URI's path. Although there are many ways to do this, we will - * describe a simple method using a separate string buffer. - * - * a) All but the last segment of the base URI's path component is - * copied to the buffer. In other words, any characters after the - * last (right-most) slash character, if any, are excluded. - * - * b) The reference's path component is appended to the buffer - * string. - * - * c) All occurrences of "./", where "." is a complete path segment, - * are removed from the buffer string. - * - * d) If the buffer string ends with "." as a complete path segment, - * that "." is removed. - * - * e) All occurrences of "<segment>/../", where <segment> is a - * complete path segment not equal to "..", are removed from the - * buffer string. Removal of these path segments is performed - * iteratively, removing the leftmost matching pattern on each - * iteration, until no matching pattern remains. - * - * f) If the buffer string ends with "<segment>/..", where <segment> - * is a complete path segment not equal to "..", that - * "<segment>/.." is removed. - * - * g) If the resulting buffer string still begins with one or more - * complete path segments of "..", then the reference is - * considered to be in error. Implementations may handle this - * error by retaining these components in the resolved path (i.e., - * treating them as part of the final URI), by removing them from - * the resolved path (i.e., discarding relative levels above the - * root), or by avoiding traversal of the reference. - * - * h) The remaining buffer string is the reference URI's new path - * component. - * - * 7) The resulting URI components, including any inherited from the - * base URI, are recombined to give the absolute form of the URI - * reference. Using pseudocode, this would be - * - * result = "" - * - * if scheme is defined then - * append scheme to result - * append ":" to result - * - * if authority is defined then - * append "//" to result - * append authority to result - * - * append path to result - * - * if query is defined then - * append "?" to result - * append query to result - * - * if fragment is defined then - * append "#" to result - * append fragment to result - * - * return result - * - * Note that we must be careful to preserve the distinction between a - * component that is undefined, meaning that its separator was not - * present in the reference, and a component that is empty, meaning - * that the separator was present and was immediately followed by the - * next component separator or the end of the reference. - * - * The above algorithm is intended to provide an example by which the - * output of implementations can be tested -- implementation of the - * algorithm itself is not required. For example, some systems may find - * it more efficient to implement step 6 as a pair of segment stacks - * being merged, rather than as a series of string pattern replacements. - * - * Note: Some WWW client applications will fail to separate the - * reference's query component from its path component before merging - * the base and reference paths in step 6 above. This may result in - * a loss of information if the query component contains the strings - * "/../" or "/./". - * - */ - virtual URI resolve(const URI &other) const; - - /** - * "Mends" a URI by examining the path, and converting it to canonical - * form. In particular, it takes patterns like "/./" and "/a/../b/../c" - * and simplifies them. - */ - virtual void normalize(); - - -private: - - void init(); - - //assign values of other to this. used by copy constructor - void assign(const URI &other); - - int scheme; - - DOMString schemeStr; - - std::vector<int> authority; - - bool portSpecified; - - int port; - - std::vector<int> path; - - bool absolute; - - bool opaque; - - std::vector<int> query; - - std::vector<int> fragment; - - void error(const char *fmt, ...) - #ifdef G_GNUC_PRINTF - G_GNUC_PRINTF(2, 3) - #endif - ; - - void trace(const char *fmt, ...) - #ifdef G_GNUC_PRINTF - G_GNUC_PRINTF(2, 3) - #endif - ; - - int peek(int p); - - int match(int p, char const *key); - - int parseHex(int p, int &result); - - int parseEntity(int p, int &result); - - int parseAsciiEntity(int p, int &result); - - int parseScheme(int p); - - int parseHierarchicalPart(int p0); - - int parseQuery(int p0); - - int parseFragment(int p0); - - int parse(int p); - - int *parsebuf; - - int parselen; - -}; - - - -} //namespace dom -} //namespace w3c -} //namespace org - - - -#endif // SEEN_URI_H - diff --git a/src/dom/views-level3.h b/src/dom/views-level3.h deleted file mode 100644 index 427051d06..000000000 --- a/src/dom/views-level3.h +++ /dev/null @@ -1,1967 +0,0 @@ -#ifndef SEEN_VIEWS_LEVEL3_H -#define SEEN_VIEWS_LEVEL3_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/* - * Currently CSS is not at level 3, so we will probably not use this - * Level 3 Views implementation. Rather, we'll regress back to Level 2. - * This should not affect using the rest of DOM Core 3 - */ - -#include "dom.h" - - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace views -{ - - -//local aliases -typedef dom::Node Node; -typedef dom::DOMString DOMString; - -//forward declarations -class Segment; -class VisualResource; -class VisualCharacter; -class VisualCharacterRun; -class VisualFrame; -class VisualImage; -class VisualFormButton; -class VisualFormField; - - - - -/*######################################################################### -## Match -#########################################################################*/ - -/** - * - */ -class Match -{ -public: - - typedef enum - { - IS_EQUAL = 0, - IS_NOT_EQUAL = 1, - INT_PRECEDES = 2, - INT_PRECEDES_OR_EQUALS = 3, - INT_FOLLOWS = 4, - INT_FOLLOWS_OR_EQUALS = 5, - STR_STARTS_WITH = 6, - STR_ENDS_WITH = 7, - STR_CONTAINS = 8, - SET_ANY = 9, - SET_ALL = 10, - SET_NOT_ANY = 11, - SET_NOT_ALL = 12 - } MatchTestGroup; - - /** - * - */ - virtual unsigned short test() - { return IS_NOT_EQUAL; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - Match() {} - - /** - * - */ - Match(const Match &/*other*/) - { - } - - /** - * - */ - virtual ~Match() {} -}; - - - -/*######################################################################### -## MatchString -#########################################################################*/ - -/** - * - */ -class MatchString : virtual public Match -{ -public: - - /** - * - */ - virtual DOMString getName() - { return name; } - - /** - * - */ - virtual DOMString getValue() - { return value; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - MatchString() {} - - /** - * - */ - MatchString(const MatchString &other) : Match(other) - { - name = other.name; - value = other.value; - } - - /** - * - */ - virtual ~MatchString() {} - -protected: - - DOMString name; - DOMString value; - - -}; - - - -/*######################################################################### -## MatchInteger -#########################################################################*/ - -/** - * - */ -class MatchInteger : virtual public Match -{ -public: - - /** - * - */ - virtual DOMString getName() - { return name; } - - /** - * - */ - virtual long getValue() - { return value; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - MatchInteger() {} - - /** - * - */ - MatchInteger(const MatchInteger &other) : Match(other) - { - name = other.name; - value = other.value; - } - - /** - * - */ - virtual ~MatchInteger() {} - -protected: - - DOMString name; - long value; -}; - - - -/*######################################################################### -## MatchBoolean -#########################################################################*/ - -/** - * - */ -class MatchBoolean : virtual public Match -{ -public: - - /** - * - */ - virtual DOMString getName() - { return name; } - - /** - * - */ - virtual bool getValue() - { return value; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - MatchBoolean() {} - - /** - * - */ - MatchBoolean(const MatchBoolean &other) : Match(other) - { - name = other.name; - value = other.value; - } - - /** - * - */ - virtual ~MatchBoolean() {} - -protected: - - DOMString name; - bool value; -}; - - - -/*######################################################################### -## MatchContent -#########################################################################*/ - -/** - * - */ -class MatchContent : virtual public Match -{ -public: - - /** - * - */ - virtual DOMString getName() - { return name; } - - /** - * - */ - virtual NodePtr getNodeArg() - { return nodeArg; } - - - /** - * - */ - virtual unsigned long getOffset() - { return offset; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - MatchContent() - { - nodeArg = NULL; - offset = 0L; - } - - /** - * - */ - MatchContent(const MatchContent &other) : Match(other) - { - name = other.name; - nodeArg = other.nodeArg; - offset = other.offset; - } - - /** - * - */ - virtual ~MatchContent() {} - -protected: - - DOMString name; - NodePtr nodeArg; - unsigned long offset; - - - -}; - - - -/*######################################################################### -## MatchSet -#########################################################################*/ - -/** - * - */ -class MatchSet : virtual public Match -{ -public: - - /** - * - */ - virtual NodePtr getNodeArg() - { return nodeArg; } - - /** - * - */ - virtual void addMatch(const Match &match) - { matches.push_back(match); } - - /** - * - */ - virtual Match getMatch(unsigned long index) - { - if (index >= matches.size()) - { - Match match; - return match; - } - return matches[index]; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - MatchSet() - { - nodeArg = NULL; - } - - /** - * - */ - MatchSet(const MatchSet &other) : Match(other) - { - nodeArg = other.nodeArg; - matches = other.matches; - } - - /** - * - */ - virtual ~MatchSet() {} - -protected: - - NodePtr nodeArg; - - std::vector<Match> matches; - -}; - - - -/*######################################################################### -## Item -#########################################################################*/ - -/** - * - */ -class Item -{ -public: - - /** - * - */ - virtual bool getExists() - { return exists; } - - /** - * - */ - virtual DOMString getName() - { return name; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - Item() {} - - /** - * - */ - Item(const Item &other) - { - exists = other.exists; - name = other.name; - } - - /** - * - */ - virtual ~Item() {} - -protected: - - bool exists; - - DOMString name; - - -}; - - - -/*######################################################################### -## StringItem -#########################################################################*/ - -/** - * - */ -class StringItem : virtual public Item -{ -public: - - /** - * - */ - virtual DOMString getValue() - { return value; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - StringItem() {} - - /** - * - */ - StringItem(const StringItem &other) : Item(other) - { - value = other.value; - } - - /** - * - */ - virtual ~StringItem() {} - -protected: - - DOMString value; - - -}; - - - -/*######################################################################### -## IntegerItem -#########################################################################*/ - -/** - * - */ -class IntegerItem : virtual public Item -{ -public: - - - /** - * - */ - virtual long getValue() - { return value; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - IntegerItem() {} - - /** - * - */ - IntegerItem(const IntegerItem &other) : Item(other) - { - value = other.value; - } - - /** - * - */ - virtual ~IntegerItem() {} - -protected: - - long value; - -}; - - -/*######################################################################### -## BooleanItem -#########################################################################*/ - -/** - * - */ -class BooleanItem : virtual public Item -{ -public: - - /** - * - */ - virtual bool getValue() - { return value; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - BooleanItem() {} - - /** - * - */ - BooleanItem(const BooleanItem &other) : Item(other) - { - value = other.value; - } - - /** - * - */ - virtual ~BooleanItem() {} - -protected: - - bool value; - -}; - - -/*######################################################################### -## ContentItem -#########################################################################*/ - -/** - * - */ -class ContentItem : virtual public Item -{ -public: - - /** - * - */ - virtual NodePtr getNodeArg() - { return nodeArg; } - - /** - * - */ - virtual unsigned long getOffset() - { return offset; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - ContentItem() - { - nodeArg = NULL; - } - - /** - * - */ - ContentItem(const ContentItem &other) : Item(other) - { - nodeArg = other.nodeArg; - offset = other.offset; - } - - /** - * - */ - virtual ~ContentItem() {} - -protected: - - NodePtr nodeArg; - long offset; - - -}; - - - - - - - -/*######################################################################### -## Segment -#########################################################################*/ - -/** - * - */ -class Segment : virtual public Match -{ -public: - - /** - * - */ - virtual Match getCriteria() - { return criteria; } - - /** - * - */ - virtual void setCriteria(const Match &val) - { criteria = val; } - - - /** - * - */ - virtual DOMString getOrder() - { return order; } - - /** - * - */ - virtual void setOrder(const DOMString &val) - { order = val; } - - /** - * - */ - virtual MatchString createMatchString(unsigned short /*test*/, - const DOMString &/*name*/, - const DOMString &/*value*/) - { - MatchString ret; - return ret; - } - - /** - * - */ - virtual MatchInteger createMatchInteger(unsigned short /*test*/, - const DOMString &/*name*/, - long /*value*/) - { - MatchInteger ret; - return ret; - } - - /** - * - */ - virtual MatchBoolean createMatchBoolean(unsigned short /*test*/, - const DOMString &/*name*/, - bool /*value*/) - { - MatchBoolean ret; - return ret; - } - - /** - * - */ - virtual MatchContent createMatchContent(unsigned short /*test*/, - const DOMString &/*name*/, - unsigned long /*offset*/, - const NodePtr /*nodeArg*/) - { - MatchContent ret; - return ret; - } - - /** - * - */ - virtual MatchSet createMatchSet(unsigned short /*test*/) - { - MatchSet ret; - return ret; - } - - /** - * - */ - virtual StringItem createStringItem(const DOMString &/*name*/) - { - StringItem ret; - return ret; - } - - /** - * - */ - virtual IntegerItem createIntegerItem(const DOMString &/*name*/) - { - IntegerItem ret; - return ret; - } - - /** - * - */ - virtual BooleanItem createBooleanItem(const DOMString &/*name*/) - { - BooleanItem ret; - return ret; - } - - /** - * - */ - virtual ContentItem createContentItem(const DOMString &/*name*/) - { - ContentItem ret; - return ret; - } - - /** - * - */ - virtual void addItem(const Item &item) - { - items.push_back(item); - } - - /** - * - */ - virtual Item getItem(unsigned long index) - { - if (index >= items.size()) - { - Item item; - return item; - } - return items[index]; - } - - /** - * - */ - virtual bool getNext() - { - return false; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - Segment() {} - - /** - * - */ - Segment(const Segment &other) : Match(other) - { - criteria = other.criteria; - order = other.order; - items = other.items; - } - - /** - * - */ - virtual ~Segment() {} - -protected: - - Match criteria; - - DOMString order; - - std::vector<Item> items; - -}; - - - - - - - - - - - - -/*######################################################################### -## View -#########################################################################*/ - -/** - * - */ -class View -{ -public: - - /** - * - */ - virtual void select(const NodePtr /*boundary*/, - unsigned long /*offset*/, - bool /*extend*/, - bool /*add*/) - { - } - - /** - * - */ - virtual Segment createSegment() - { - Segment ret; - return ret; - } - - /** - * - */ - virtual bool matchFirstSegment(Segment &/*todo*/) //inout parm, not const - throw(dom::DOMException) - { - return false; - } - - /** - * - */ - virtual long getIntegerProperty(const DOMString &/*name*/) - throw(dom::DOMException) - { - long val=0; - return val; - } - - /** - * - */ - virtual DOMString getStringProperty(const DOMString &/*name*/) - throw(dom::DOMException) - { - DOMString val; - return val; - } - - /** - * - */ - virtual bool getBooleanProperty(bool /*name*/) - throw(dom::DOMException) - { - bool val=false; - return val; - } - - /** - * - */ - virtual NodePtr getContentPropertyNode(const DOMString &/*name*/) - throw(dom::DOMException) - { - NodePtr val = NULL; - return val; - } - - /** - * - */ - virtual unsigned long getContentPropertyOffset(const DOMString &/*name*/) - throw(dom::DOMException) - { - long val=0; - return val; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - View() {} - - /** - * - */ - View(const View &/*other*/) - { - } - - /** - * - */ - virtual ~View() {} -}; - - -/*######################################################################### -## VisualResource -#########################################################################*/ - -/** - * - */ -class VisualResource -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - VisualResource() {} - - /** - * - */ - VisualResource(const VisualResource &/*other*/) - { - } - - /** - * - */ - virtual ~VisualResource() {} -}; - - -/*######################################################################### -## VisualFont -#########################################################################*/ - -/** - * - */ -class VisualFont : virtual public VisualResource -{ -public: - - /** - * - */ - virtual DOMString getMatchFontName() - { return matchFontName; } - - /** - * - */ - virtual void setMatchFontName(const DOMString &val) - { matchFontName = val; } - - /** - * - */ - virtual bool getExists() - { return true; } - - /** - * - */ - virtual DOMString getFontName() - { return fontName; } - - /** - * - */ - virtual bool getNext() - { return next; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - VisualFont() {} - - /** - * - */ - VisualFont(const VisualFont &other) : VisualResource(other) - { - matchFontName = other.matchFontName; - fontName = other.fontName; - next = other.next; - } - - /** - * - */ - virtual ~VisualFont() {} - -protected: - - DOMString matchFontName; - DOMString fontName; - bool next; - - -}; - - -/*######################################################################### -## VisualSegment -#########################################################################*/ - -/** - * - */ -class VisualSegment : virtual public VisualResource -{ -public: - - - /** - * - */ - virtual bool getMatchPosition() - { return matchPosition; } - - /** - * - */ - virtual void setMatchPosition(bool val) - { matchPosition = val; } - - /** - * - */ - virtual bool getMatchInside() - { return matchInside; } - - /** - * - */ - virtual void setMatchInside(bool val) - { matchInside = val; } - - /** - * - */ - virtual bool getMatchContaining() - { return matchContaining; } - - /** - * - */ - virtual void setMatchContaining(bool val) - { matchContaining = val; } - - /** - * - */ - virtual long getMatchX() - { return matchX; } - - /** - * - */ - virtual void setMatchX(long val) - { matchX = val; } - - /** - * - */ - virtual long getMatchY() - { return matchY; } - - /** - * - */ - virtual void setMatchY(long val) - { matchY = val; } - - /** - * - */ - virtual long getMatchXR() - { return matchXR; } - - /** - * - */ - virtual void setMatchXR(long val) - { matchXR = val; } - - /** - * - */ - virtual long getMatchYR() - { return matchYR; } - - /** - * - */ - virtual void setMatchYR(long val) - { matchYR = val; } - - /** - * - */ - virtual bool getMatchContent() - { return matchContent; } - - /** - * - */ - virtual void setMatchContent(bool val) - { matchContent = val; } - - /** - * - */ - virtual bool getMatchRange() - { return matchRange; } - - /** - * - */ - virtual void setMatchRange(bool val) - { matchRange = val; } - - /** - * - */ - virtual NodePtr getMatchNode() - { return matchNode; } - - /** - * - */ - virtual void setMatchNode(const NodePtr val) - { matchNode = (NodePtr )val; } - - /** - * - */ - virtual unsigned long getMatchOffset() - { return matchOffset; } - - /** - * - */ - virtual void setMatchOffset(unsigned long val) - { matchOffset = val; } - - /** - * - */ - virtual NodePtr getMatchNodeR() - { return matchNodeR; } - - /** - * - */ - virtual void setMatchNodeR(const NodePtr val) - { matchNodeR = (NodePtr )val; } - - /** - * - */ - virtual unsigned long getMatchOffsetR() - { return matchOffsetR; } - - /** - * - */ - virtual void setMatchOffsetR(unsigned long val) - { matchOffsetR = val; } - - /** - * - */ - virtual bool getMatchContainsSelected() - { return matchContainsSelected; } - - /** - * - */ - virtual void setMatchContainsSelected(bool val) - { matchContainsSelected = val; } - - /** - * - */ - virtual bool getMatchContainsVisible() - { return matchContainsVisible; } - - /** - * - */ - virtual void setMatchContainsVisible(bool val) - { matchContainsVisible = val; } - - - /** - * - */ - virtual bool getExists() - { return exists; } - - /** - * - */ - virtual NodePtr getStartNode() - { return startNode; } - - /** - * - */ - virtual unsigned long getStartOffset() - { return startOffset; } - - /** - * - */ - virtual NodePtr getEndNode() - { return endNode; } - - /** - * - */ - virtual unsigned long getEndOffset() - { return endOffset; } - - /** - * - */ - virtual long getTopOffset() - { return topOffset; } - - /** - * - */ - virtual long getBottomOffset() - { return bottomOffset; } - - /** - * - */ - virtual long getLeftOffset() - { return leftOffset; } - - /** - * - */ - virtual long getRightOffset() - { return rightOffset; } - - /** - * - */ - virtual unsigned long getWidth() - { return width; } - - /** - * - */ - virtual unsigned long getHeight() - { return height; } - - /** - * - */ - virtual bool getSelected() - { return selected; } - - /** - * - */ - virtual bool getVisible() - { return visible; } - - /** - * - */ - virtual unsigned long getForegroundColor() - { return foregroundColor; } - - /** - * - */ - virtual unsigned long getBackgroundColor() - { return backgroundColor; } - - /** - * - */ - virtual DOMString getFontName() - { return fontName; } - - /** - * - */ - virtual DOMString getFontHeight() - { return fontHeight; } - - /** - * - */ - virtual bool getNext() - { return next; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - VisualSegment() {} - - /** - * - */ - VisualSegment(const VisualSegment &other) : VisualResource(other) - { - matchPosition = other.matchPosition; - matchInside = other.matchInside; - matchContaining = other.matchContaining; - matchX = other.matchX; - matchY = other.matchY; - matchXR = other.matchXR; - matchYR = other.matchYR; - matchContent = other.matchContent; - matchRange = other.matchRange; - matchNode = other.matchNode; - matchOffset = other.matchOffset; - matchNodeR = other.matchNodeR; - matchOffsetR = other.matchOffsetR; - matchContainsSelected = other.matchContainsSelected; - matchContainsVisible = other.matchContainsVisible; - exists = other.exists; - startNode = other.startNode; - startOffset = other.startOffset; - endNode = other.endNode; - endOffset = other.endOffset; - topOffset = other.topOffset; - bottomOffset = other.bottomOffset; - leftOffset = other.leftOffset; - rightOffset = other.rightOffset; - width = other.width; - height = other.height; - selected = other.selected; - visible = other.visible; - foregroundColor = other.foregroundColor; - backgroundColor = other.backgroundColor; - fontName = other.fontName; - fontHeight = other.fontHeight; - next = other.next; - } - - /** - * - */ - virtual ~VisualSegment() {} - - -protected: - - bool matchPosition; - bool matchInside; - bool matchContaining; - long matchX; - long matchY; - long matchXR; - long matchYR; - bool matchContent; - bool matchRange; - NodePtr matchNode; - unsigned long matchOffset; - NodePtr matchNodeR; - unsigned long matchOffsetR; - bool matchContainsSelected; - bool matchContainsVisible; - bool exists; - NodePtr startNode; - unsigned long startOffset; - NodePtr endNode; - unsigned long endOffset; - long topOffset; - long bottomOffset; - long leftOffset; - long rightOffset; - unsigned long width; - unsigned long height; - bool selected; - bool visible; - unsigned long foregroundColor; - unsigned long backgroundColor; - DOMString fontName; - DOMString fontHeight; - bool next; - - -}; - - -/*######################################################################### -## VisualCharacter -#########################################################################*/ - -/** - * - */ -class VisualCharacter : virtual public VisualSegment -{ -public: - - //################## - //# Non-API methods - //################## - - /** - * - */ - VisualCharacter() - {} - - /** - * - */ - VisualCharacter(const VisualCharacter &other) : VisualResource(other), - VisualSegment(other) - { - } - - /** - * - */ - virtual ~VisualCharacter() {} -}; - - - -/*######################################################################### -## VisualCharacterRun -#########################################################################*/ - -/** - * - */ -class VisualCharacterRun : virtual public VisualSegment -{ -public: - - - //################## - //# Non-API methods - //################## - - /** - * - */ - VisualCharacterRun() {} - - /** - * - */ - VisualCharacterRun(const VisualCharacterRun &other) : VisualResource(other), - VisualSegment(other) - { - } - - /** - * - */ - virtual ~VisualCharacterRun() {} - -protected: - - -}; - - - -/*######################################################################### -## VisualFrame -#########################################################################*/ - -/** - * - */ -class VisualFrame : virtual public VisualSegment -{ -public: - - - /** - * - */ - virtual VisualSegment getEmbedded() - { return embedded; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - VisualFrame() {} - - /** - * - */ - VisualFrame(const VisualFrame &other) : VisualResource(other), - VisualSegment(other) - { - embedded = other.embedded; - } - - /** - * - */ - virtual ~VisualFrame() {} - -protected: - - VisualSegment embedded; -}; - - - -/*######################################################################### -## VisualImage -#########################################################################*/ - -/** - * - */ -class VisualImage : virtual public VisualSegment -{ -public: - - /** - * - */ - virtual DOMString getImageURL() - { return imageURL; } - - /** - * - */ - virtual bool getIsLoaded() - { return isLoaded; } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - VisualImage() {} - - /** - * - */ - VisualImage(const VisualImage &other) : VisualResource(other), - VisualSegment(other) - { - imageURL = other.imageURL; - isLoaded = other.isLoaded; - } - - /** - * - */ - virtual ~VisualImage() {} - -protected: - - DOMString imageURL; - bool isLoaded; - -}; - - - -/*######################################################################### -## VisualFormButton -#########################################################################*/ - -/** - * - */ -class VisualFormButton : virtual public VisualSegment -{ -public: - - /** - * - */ - virtual bool getIsPressed() - { return isPressed; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - VisualFormButton() - { isPressed = false; } - - /** - * - */ - VisualFormButton(const VisualFormButton &other) : VisualResource(other), - VisualSegment(other) - { - isPressed = other.isPressed; - } - - /** - * - */ - virtual ~VisualFormButton() {} - -protected: - - bool isPressed; - -}; - - - -/*######################################################################### -## VisualFormField -#########################################################################*/ - -/** - * - */ -class VisualFormField : virtual public VisualSegment -{ -public: - - /** - * - */ - virtual DOMString getFormValue() - { return formValue; } - - //################## - //# Non-API methods - //################## - - /** - * - */ - VisualFormField() {} - - /** - * - */ - VisualFormField(const VisualFormField &other) : VisualResource(other), - VisualSegment(other) - { - formValue = other.formValue; - } - - /** - * - */ - virtual ~VisualFormField() {} - -protected: - - DOMString formValue; - -}; - - - -/*######################################################################### -## VisualView -#########################################################################*/ - -/** - * - */ -class VisualView -{ -public: - - /** - * - */ - virtual bool getValue() - { return value; } - - /** - * - */ - virtual DOMString getFontScheme() - { return fontScheme; } - - /** - * - */ - virtual unsigned long getWidth() - { return width; } - - /** - * - */ - virtual unsigned long getHeight() - { return height; } - - /** - * - */ - virtual unsigned long getHorizontalDPI() - { return horizontalDPI; } - - /** - * - */ - virtual unsigned long getVerticalDPI() - { return verticalDPI; } - - /** - * - */ - virtual VisualCharacter createVisualCharacter() - { - VisualCharacter ret; - return ret; - } - - /** - * - */ - virtual VisualCharacterRun createVisualCharacterRun() - { - VisualCharacterRun ret; - return ret; - } - /** - * - */ - virtual VisualFrame createVisualFrame() - { - VisualFrame ret; - return ret; - } - - - /** - * - */ - virtual VisualImage createVisualImage() - { - VisualImage ret; - return ret; - } - - /** - * - */ - virtual VisualFormButton createVisualFormButton() - { - VisualFormButton ret; - return ret; - } - - /** - * - */ - virtual VisualFormField createVisualFormField() - { - VisualFormField ret; - return ret; - } - - /** - * - */ - virtual void select(const NodePtr /*boundary*/, - unsigned long /*offset*/, - bool /*extend*/, - bool /*add*/) - { - } - - /** - * - */ - virtual void matchSegment(const VisualResource */*segment*/) - { - } - - - //################## - //# Non-API methods - //################## - - /** - * - */ - VisualView() {} - - /** - * - */ - VisualView(const VisualView &other) - { - value = other.value; - fontScheme = other.fontScheme; - width = other.width; - height = other.height; - horizontalDPI = other.horizontalDPI; - verticalDPI = other.verticalDPI; - } - - /** - * - */ - virtual ~VisualView() {} - -protected: - - bool value; - - DOMString fontScheme; - - unsigned long width; - unsigned long height; - unsigned long horizontalDPI; - unsigned long verticalDPI; - -}; - - - - -} //namespace views -} //namespace dom -} //namespace w3c -} //namespace org - - -#endif // SEEN_VIEWS_LEVEL3_H -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/views.h b/src/dom/views.h deleted file mode 100644 index f1154fb62..000000000 --- a/src/dom/views.h +++ /dev/null @@ -1,218 +0,0 @@ -#ifndef SEEN_VIEWS_H -#define SEEN_VIEWS_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - * - * ========================================================================= - * NOTES - * - * This is the Level 2 Views definition, which is very minimalist. It is - * described here: - * http://www.w3.org/TR/2000/REC-DOM-Level-2-Views-20001113 - * - * Note that SVG uses the DOM Core and Events Level 3, but Level 2 CSS and Views. - * - * The level 3 version is much larger: - * http://www.w3.org/TR/2004/NOTE-DOM-Level-3-Views-20040226 - * Be prepared in the future to adjust to this, if SVG ever switches . - */ - -#include <cstdlib> -#include "dom.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace views -{ - - -//local aliases -typedef dom::Node Node; -typedef dom::DOMString DOMString; - -//forward declarations -class DocumentView; -class AbstractView; - - - -/*######################################################################### -## AbstractView -#########################################################################*/ - -/** - * A base interface that all views shall derive from. - */ -class AbstractView -{ -public: - - /** - * The source DocumentView of which this is an AbstractView. - */ - virtual DocumentView *getDocument() - { - return documentView; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - AbstractView() - { documentView = NULL; } - - /** - * - */ - AbstractView(const AbstractView &other) - { - assign(other); - } - - /** - * - */ - AbstractView &operator=(const AbstractView &other) - { - assign(other); - return *this; - } - - /** - * - */ - virtual ~AbstractView() {} - -private: - - void assign(const AbstractView &other) - { - if (documentView != NULL) - { - free(documentView); //NOTE: is free the correct method? - } - documentView = other.documentView; - } - DocumentView *documentView; -}; - - -/*######################################################################### -## DocumentView -#########################################################################*/ - - -/** - * The DocumentView interface is implemented by Document objects in DOM - * implementations supporting DOM Views. It provides an attribute to retrieve the - * default view of a document. - */ -class DocumentView -{ -public: - - /** - * The default AbstractView for this Document, or null if none available. - */ - virtual AbstractView *getDefaultView() - { - return defaultView; - } - - //################## - //# Non-API methods - //################## - - /** - * - */ - DocumentView() {defaultView = NULL;} - - /** - * - */ - DocumentView(const DocumentView &other) - { - assign(other); - } - - /** - * - */ - DocumentView &operator=(const DocumentView &other) - { - assign(other); - return *this; - } - - /** - * - */ - virtual ~DocumentView() {} - -private: - - void assign(const DocumentView &other) - { - if (defaultView != NULL) - { - free(defaultView); //NOTE: is free the correct method? - } - defaultView = other.defaultView; - } - AbstractView *defaultView; - -}; - - - - - - -} //namespace views -} //namespace dom -} //namespace w3c -} //namespace org - - -#endif // SEEN_VIEWS_H -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - diff --git a/src/dom/xmlreader.cpp b/src/dom/xmlreader.cpp deleted file mode 100644 index 29519d592..000000000 --- a/src/dom/xmlreader.cpp +++ /dev/null @@ -1,998 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - - -#include "xmlreader.h" -#include "ucd.h" -#include "domimpl.h" - -#include <stdio.h> -#include <stdarg.h> - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - -//######################################################################### -//# E N T I T Y T A B L E -//######################################################################### -struct EntityInfo -{ - const char *escape; - int escapeLength; - const char *value; -}; - - -static EntityInfo entityTable[] = -{ - { "&" , 5 , "&" }, - { "<" , 4 , "<" }, - { ">" , 4 , ">" }, - { "'" , 6 , "'" }, - { """ , 6 , "\"" }, - { NULL , 0 , "\0" } -}; - - - -//######################################################################### -//# M E S S A G E S -//######################################################################### - - -/** - * - */ -void XmlReader::error(const char *fmt, ...) -{ - va_list args; - fprintf(stderr, "XmlReader:error at line %d, column %d:", lineNr, colNr); - va_start(args, fmt); - vfprintf(stderr, fmt, args); - va_end(args) ; - fprintf(stderr, "\n"); -} - - - -//######################################################################### -//# U T I L I T Y -//######################################################################### - -static void trim(DOMString &str) -{ - int len = str.size(); - if (len<1) - return; - - int start = 0; - int end = 0; - for (start=0 ; start<len ; start++) - { - int ch = str[start]; - if (ch<=' ' || ch>126) - break; - } - for (end=len-1 ; end>=0 ; end--) - { - int ch = str[end]; - if (ch<=' ' || ch>126) - break; - } - if (start<end) - { - str = str.substr(start, end+1); - } -} - -//######################################################################### -//# P A R S I N G -//######################################################################### - -/** - * Get the character at the position and record the fact - */ -int XmlReader::get(int p) -{ - if (p >= len) - return -1; - int ch = parsebuf[p]; - //printf("%c", ch); - if (ch == '\n' || ch == '\r') - { - colNr = 0; - lineNr++; - } - else - colNr++; - return ch; -} - -/** - * Look at the character at the position, but don't note the fact - */ -int XmlReader::peek(int p) -{ - if (p >= len) - return -1; - int ch = parsebuf[p]; - return ch; -} - - -/** - * Test if the given substring exists at the given position - * in parsebuf. Use peek() in case of out-of-bounds - */ -bool XmlReader::match(int pos, const char *str) -{ - while (*str) - { - if (peek(pos++) != *str++) - return false; - } - return true; -} - - - -/** - * Test if the given substring exists at the given position - * in a given buffer - */ -/* -static bool bufMatch(const DOMString &buf, int pos, char *str) -{ - while (*str) - { - if (buf[pos++] != *str++) - return false; - } - return true; -} -*/ - - -/** - * - */ -int XmlReader::skipwhite(int p) -{ - while (p < len) - { - int b = get(p); - if (!uni_is_space(b)) - break; - p++; - } - return p; -} - -/** - * modify this to allow all chars for an element or attribute name - */ -int XmlReader::getWord(int p, DOMString &result) -{ - while (p<len) - { - int b = get(p); - if (b<=' ' || b=='/' || b=='>' || b=='=') - break; - result.push_back((XMLCh)b); - p++; - } - return p; -} - -/** - * get a name and prefix, if any - */ -int XmlReader::getPrefixedWord(int p, DOMString &prefix, - DOMString &shortWord, DOMString &fullWord) -{ - while (p<len) - { - int b = get(p); - if (b<=' ' || b=='/' || b=='>' || b=='=') - break; - else if (b == ':') - { - prefix = shortWord; - shortWord = ""; - } - else - shortWord.push_back((XMLCh)b); - p++; - } - if (prefix.size() > 0) - fullWord = prefix + ":" + shortWord; - else - fullWord = shortWord; - return p; -} - - -/** - * Assume that we are starting on a quote. Ends on the char - * after the final '"' - */ -int XmlReader::getQuoted(int p0, DOMString &result) -{ - - int p = p0; - - if (peek(p)!='"' && peek(p)!='\'') - return p0; - - int b = get(p++); //go to next char - - DOMString buf; - - while (p<len ) - { - b = get(p++); - if (b=='"' || b=='\'') - break; - else if (b=='&') - { - p = parseEntity(p, result); - if (p < 0) - return p0; - } - else - { - buf.push_back((XMLCh)b); - } - } - - //printf("quoted text:'%s'\n", buf.c_str()); - - result.append(buf); - - return p; -} - - - -/** - * Parse a <!xml> tag. Node may be null. Assumes current char is '<' - * ends on char after '>' - */ -int XmlReader::parseVersion(int p0) -{ - int p = p0; - - if (!match(p, "<?xml")) - return p0; - - p += 5; - colNr += 5; - - bool quickCloseDummy; - NodePtr node = new NodeImpl(); - int p2 = parseAttributes(p, node, &quickCloseDummy); - if (p2 < p) - { - //smart ptr!!do not delete node; - return p0; - } - p = p2; - - //get the attributes that we need - NamedNodeMap attributes = node->getAttributes(); - NodePtr attr = attributes.getNamedItem("version"); - if (attr.get()) - document->setXmlVersion(attr->getNodeValue()); - attr = attributes.getNamedItem("encoding"); - if (attr.get()) - { /*document->setXmlEncoding(attr->getNodeValue());*/ } - attr = attributes.getNamedItem("standalone"); - if (attr.get()) - document->setXmlStandalone((attr->getNodeValue() == "yes")); - - //#now we should be pointing at '?>' - if (!match(p, "?>")) - { - return p0; - } - - //skip over '?>' - get(p++); - get(p++); - - return p; -} - - -/** - * Parse a <!DOCTYPE> tag. doctype may be null. Expects '<' - * on start. Ends pointing at char after '>' - */ -int XmlReader::parseDoctype(int p0) -{ - int p = p0; - - if (!match(p, "<!DOCTYPE")) - return p0; - - p += 9; - colNr += 9; - - DocumentTypePtr doctype = document->getDoctype(); - if (!doctype) - return p0; - - - //### get the root name of the document - p = skipwhite(p); - DOMString rootName; - int p2 = getWord(p, rootName); - if (p2 <= p) - return p0; - p = p2; - //printf("doctype root '%s'\n", rootName.c_str()); - - - while (p < len) - { - p = skipwhite(p); - if (peek(p) == '>') - break; - else if (peek(p) == '[') //just ignore 'internal' [] stuff - { - while (p < len) - { - int ch = get(p++); - if (ch == ']') - break; - } - p++; - } - else if (match(p, "PUBLIC")) - { - p += 6; - colNr += 6; - p = skipwhite(p); - DOMString pubIdLiteral; - int p2 = getQuoted(p, pubIdLiteral); - if (p2 <= p) - return p0; - p = p2; - p = skipwhite(p); - DOMString systemLiteral; - p2 = getQuoted(p, systemLiteral); - if (p2 <= p) - return p0; - p = p2; - //printf("PUBLIC \"%s\" \"%s\" \n", - // pubIdLiteral.c_str(), systemLiteral.c_str()); - } - else if (match(p, "SYSTEM")) - { - p += 6; - colNr += 6; - p = skipwhite(p); - DOMString systemLiteral; - int p2 = getQuoted(p, systemLiteral); - if (p2 <= p) - return p0; - p = p2; - //printf("SYSTEM \"%s\" \n", systemLiteral.c_str()); - } - } - - - //skip over '>' - get(p++); - - return p; -} - - - -/** - * Expects '<' on startup, ends on char after '>' - */ -int XmlReader::parseComment(int p0, CommentPtr comment) -{ - int p = p0; - - if (!match(p, "<!--")) - return p0; - - colNr += 4; - p += 4; - - DOMString buf; - - while (p<len-3) - { - if (match(p, "-->")) - { - p += 3; - colNr += 3; - break; - } - int ch = get(p++); - buf.push_back((XMLCh)ch); - } - - comment->setNodeValue(buf); - - return p; -} - - - -/** - * - */ -int XmlReader::parseCDATA(int p0, CDATASectionPtr cdata) -{ - - int p = p0; - - if (!match(p, "<![CDATA[")) - return p0; - - colNr += 9; - p += 9; - - DOMString buf; - - while (p<len) - { - if (match(p, "]]>")) - { - p +=3; - colNr += 3; - break; - } - int ch = get(p++); - buf.push_back((XMLCh)ch); - } - - /*printf("Got CDATA:%s\n",buf.c_str());*/ - cdata->setNodeValue(buf); - - return p; -} - - - -/** - * - */ -int XmlReader::parseText(int p0, TextPtr text) -{ - - int p = p0; - - DOMString buf; - - while (p<len) - { - if (peek(p) == '&') - { - p = parseEntity(p, buf); - if (p < 0) //error? - return p0; - } - else if (peek(p) == '<') - { - break; - } - else - { - int ch = get(p++); - buf.push_back((XMLCh)ch); - } - } - - /*printf("Got Text:%s\n",buf.c_str());*/ - text->setNodeValue(buf); - - return p; -} - - - - - -/** - * Parses attributes of a node. Should end pointing at either the - * '?' of a version or doctype tag, or a '>' of a normal tag - */ -int XmlReader::parseAttributes(int p0, NodePtr node, bool *quickClose) -{ - *quickClose = false; - - int p = p0; - - NamedNodeMap attributes; - - while (p<len) - { - /*printf("ch:%c\n",ch);*/ - p = skipwhite(p); - int ch = get(p); - - /*printf("ch:%c\n",ch);*/ - if (ch == '?' || ch == '>')//done - break; - else if (ch=='/' && p<len+1) - { - p++; - p = skipwhite(p); - ch = peek(p); - if (ch == '>') - { - p++; - *quickClose = true; - /*printf("quick close\n");*/ - return p; - } - } - DOMString shortName; - DOMString prefix; - DOMString qualifiedName; - int p2 = getPrefixedWord(p, prefix, shortName, qualifiedName); - if (p2 <= p) - break; - - /*printf("name:%s",buf);*/ - p = p2; - p = skipwhite(p); - ch = get(p); - /*printf("ch:%c\n",ch);*/ - if (ch != '=') - break; - p++; - p = skipwhite(p); - /*ch = parsebuf[p];*/ - /*printf("ch:%c\n",ch);*/ - DOMString attrValue; - p2 = getQuoted(p, attrValue); - p = p2; - /*printf("name:'%s' value:'%s'\n",buf,buf2);*/ - - DOMString namespaceURI = ""; - if (prefix == "xmlns" || shortName == "xmlns") - namespaceURI = XMLNSNAME; - - //## Now let us make the attribute and give it to the node - AttrPtr attr = document->createAttributeNS(namespaceURI, qualifiedName); - attr->setValue(attrValue); - node->getAttributes().setNamedItemNS(attr); - - }//while p<len - - return p; -} - -/** - * Appends the value of an entity to the buffer - */ -int XmlReader::parseEntity(int p0, DOMString &buf) -{ - int p = p0; - for (EntityInfo *info = entityTable ; info->escape ; info++) - { - if (match(p, info->escape)) - { - p += info->escapeLength; - colNr += info->escapeLength; - buf += info->value; - return p; - } - } - - error("unterminated entity"); - return -1; -} - - -//######################################################################### -//# P A R S E A N O D E -//######################################################################### - -/** - * Parse as a document, preserving the original structure as much as - * possible - */ -int XmlReader::parseNode(int p0, NodePtr node, int depth) -{ - - int p = p0; - - - //### OPEN TAG - int ch = get(p++); - if (ch != '<') - return p0; - - p = skipwhite(p); - DOMString openTagName; - DOMString openTagNamePrefix; - DOMString openTagQualifiedName; - int p2 = getPrefixedWord(p,openTagNamePrefix, - openTagName, openTagQualifiedName); - if (p2 <= p) - return p0; - p = p2; - p = skipwhite(p); - - //printf("qualifiedName:%s\n", openTagQualifiedName.c_str()); - DOMString namespaceURI = node->lookupNamespaceURI(openTagNamePrefix); - document->renameNode(node, namespaceURI, openTagQualifiedName); - - //### ATTRIBUTES - bool quickClose; - p = parseAttributes(p, node, &quickClose); - if (quickClose) //trivial tag: <name/> - return p; - - p++; //skip over '>' - - - DOMString nodeValue; - - /* ### Get intervening data ### */ - while (p<len && keepGoing) - { - //### COMMENT - if (match(p, "<!--")) - { - CommentPtr comment = document->createComment(""); - p2 = parseComment(p, comment); - if (p2 <= p) - return p0; - p = p2; - if (parseAsData) - { //throw away - //delete comment; - } - else - { - node->appendChild(comment); - } - } - //### VERSION - else if (match(p, "<?xml")) - { - p2 = parseVersion(p); - if (p2 <= p) - return p0; - } - //### DOCTYPE - else if (match(p, "<!DOCTYPE")) - { - p2 = parseDoctype(p); - if (p2 <= p) - return p0; - } - //### CDATA - else if (match(p, "<![CDATA[")) - { - CDATASectionPtr cdata = document->createCDATASection(""); - p2 = parseCDATA(p, cdata); - if (p2 <= p) - return p0; - p = p2; - if (parseAsData) - { - nodeValue += cdata->getNodeValue(); - //delete cdata; - } - else - { - node->appendChild(cdata); - } - } - //### OPEN OR CLOSE TAG - else if (peek(p) == '<') - { - p2 = skipwhite(p+1); - if (peek(p2) =='/') - { - p = p2; - break; - } - else - { - /*Add element to tree*/ - ElementPtr elem = document->createElement(""); //fill in name later - node->appendChild(elem); - p2 = parseNode(p, elem, depth+1); - if (p2 <= p) - { - /*printf("problem on element:%ls. p2:%d p:%d\n",n->name, p2, p);*/ - return p0; - } - p = p2; - } - } - //### TEXT - else - { - TextPtr text = document->createTextNode(""); - p2 = parseText(p, text); - if (p2 <= p) - return p0; - p = p2; - if (parseAsData) - { - nodeValue += text->getNodeValue(); - //delete text; - } - else - { - node->appendChild(text); - } - } - - }//while (p<len) - - //printf("%d : nodeValue:'%s'\n", p, nodeValue.c_str()); - trim(nodeValue); - node->setNodeValue(nodeValue); - - //### get close tag. we should be pointing at '/' - p = skipwhite(p); - ch = get(p); - if (ch != '/') - { - error("no / on end tag"); - return p0; - } - p++; - - //### get word after '/' - p = skipwhite(p); - DOMString closeTagName; - DOMString closeTagNamePrefix; - DOMString closeTagQualifiedName; - p = getPrefixedWord(p, closeTagNamePrefix, closeTagName, - closeTagQualifiedName); - if (openTagQualifiedName != closeTagQualifiedName) - { - error("Mismatched closing tag. Expected </%s>. Got '%s'.", - openTagQualifiedName.c_str(), closeTagQualifiedName.c_str()); - return p0; - } - p = skipwhite(p); - if (parsebuf[p] != '>') - { - error("no > on end tag"); - return p0; - } - p++; - /*printf("close element:%ls\n",buf);*/ - return p; -} - - -/** - * - */ -org::w3c::dom::DocumentPtr -XmlReader::parse(const DOMString &buf, int bufferOffset, int parseLen) -{ - len = parseLen; - parsebuf = buf; - - keepGoing = true; - - DOMImplementationSourceImpl source; - DOMImplementation *domImpl = source.getDOMImplementation(""); - - document = domImpl->createDocument("", "", NULL); - //document = new svg::SVGDocumentImpl(domImpl, "", "", NULL); - - int p = bufferOffset; - int p2 = 0; - - while (p<len && keepGoing) - { - p = skipwhite(p); - //### COMMENT - if (match(p, "<!--")) - { - CommentPtr comment = document->createComment(""); - p2 = parseComment(p, comment); - if (p2 <= p) - return document; - p = p2; - if (parseAsData) - { //throw away - //delete comment; - } - else - { - document->appendChild(comment); - } - } - //### VERSION - else if (match(p, "<?xml")) - { - p2 = parseVersion(p); - if (p2 <= p) - return document; - p = p2; - } - //### DOCTYPE - else if (match(p, "<!DOCTYPE")) - { - p2 = parseDoctype(p); - if (p2 <= p) - return document; - p = p2; - } - else - { - break; - } - } - - p = skipwhite(p); - p = parseNode(p, document->getDocumentElement(), 0); - - keepGoing = false; - - return document; -} - - -/** - * - */ -org::w3c::dom::DocumentPtr -XmlReader::parse(const DOMString &str) -{ - - DocumentPtr doc = parse(str, 0, str.size()); - if (!doc) - return doc; - doc->normalizeDocument(); - return doc; -} - -/** - * - */ -org::w3c::dom::DocumentPtr -XmlReader::parseFile(const DOMString &fileName) -{ - DocumentPtr doc; - - DOMString buf = loadFile(fileName); - if (buf.size() == 0) - return doc; /*doc still null*/ - - doc = parse(buf, 0, buf.size()); - - return doc; -} - - - -//######################################################################### -//# S T R E A M R E A D I N G -//######################################################################### - -/** - * - */ -org::w3c::dom::DOMString -XmlReader::loadFile(const DOMString &fileName) -{ - DOMString buf; - - if (fileName.size() == 0) - return buf; - FILE *f = fopen(fileName.c_str(), "rb"); - if (!f) - { - //error here - return buf; - } - - while (!feof(f)) - { - int ch = fgetc(f); - if (ch<0) - break; - buf.push_back((XMLCh)ch); - } - fclose(f); - - return buf; -} - - -//######################################################################### -//# C O N S T R U C T O R / D E S T R U C T O R -//######################################################################### - - -/** - * - */ -XmlReader::XmlReader() : - document(), - parsebuf(), - keepGoing(false), - parseAsData(false), - pos(0), - len(0), - lineNr(1), - colNr(0) -{ -} - -/** - * - */ -XmlReader::XmlReader(bool parseAsDataArg) : - document(), - parsebuf(), - keepGoing(false), - parseAsData(parseAsDataArg), - pos(0), - len(0), - lineNr(1), - colNr(0) -{ -} - - - -/** - * - */ -XmlReader::~XmlReader() -{ -} - - -} //namespace dom -} //namespace w3c -} //namespace org - - -//######################################################################### -//# E N D O F F I L E -//######################################################################### - diff --git a/src/dom/xmlreader.h b/src/dom/xmlreader.h deleted file mode 100644 index f45601d33..000000000 --- a/src/dom/xmlreader.h +++ /dev/null @@ -1,126 +0,0 @@ -#ifndef SEEN_XMLREADER_H -#define SEEN_XMLREADER_H - -/** - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "dom.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - - -class XmlReader -{ -public: - - /** - * - */ - XmlReader(); - - /** - * - */ - XmlReader(bool parseAsData); - - /** - * - */ - virtual ~XmlReader(); - - /** - * - */ - org::w3c::dom::DocumentPtr parse(const DOMString &buf, - int offset, int length); - - /** - * - */ - org::w3c::dom::DocumentPtr parse(const DOMString &buf); - - /** - * - */ - org::w3c::dom::DocumentPtr parseFile(const DOMString &fileName); - - -private: - - void error(const char *format, ...) - #ifdef G_GNUC_PRINTF - G_GNUC_PRINTF(2, 3) - #endif - ; - - int get(int ch); - int peek(int ch); - bool match(int pos, char const *str); - - int skipwhite(int ch); - int getWord(int pos, DOMString &result); - int getPrefixedWord(int pos, - DOMString &prefix, - DOMString &shortWord, - DOMString &fullWord); - int getQuoted(int p, DOMString &result); - - int parseVersion(int pos); - int parseDoctype(int pos); - int parseCDATA (int pos, CDATASectionPtr cdata); - int parseComment(int pos, CommentPtr comment); - int parseText(int pos, TextPtr text); - int parseEntity(int pos, DOMString &buf); - int parseAttributes(int p0, NodePtr node, bool *quickClose); - int parseNode(int p0, NodePtr node, int depth); - - DOMString loadFile(const DOMString &fileName); - - DocumentPtr document; - DOMString parsebuf; - bool keepGoing; - bool parseAsData; - int pos; //current parse position - int len; //length of parsed region - int lineNr; - int colNr; -}; - -} //namespace dom -} //namespace w3c -} //namespace org - -#endif // SEEN_XMLREADER_H diff --git a/src/dom/xmlwriter.cpp b/src/dom/xmlwriter.cpp deleted file mode 100644 index 4fda5b5fe..000000000 --- a/src/dom/xmlwriter.cpp +++ /dev/null @@ -1,200 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - - - -#include <stdio.h> -#include <stdarg.h> - -#include "xmlwriter.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - - -//######################################################################### -//# O U T P U T -//######################################################################### - -/** - * - */ -void XmlWriter::spaces() -{ - for (int i=0 ; i<indent ; i++) - { - buf.push_back(' '); - } -} - -/** - * - */ -void XmlWriter::po(const char *fmt, ...) -{ - char str[257]; - va_list args; - va_start(args, fmt); - vsnprintf(str, 256, fmt, args); - va_end(args) ; - - buf.append(str); -} - - -void XmlWriter::pos(const DOMString &str) -{ - buf.append(str); -} - -/** - * - */ -void XmlWriter::write(const NodePtr nodeArg) -{ - NodePtr node = nodeArg; - - indent+=2; - - NamedNodeMap attributes = node->getAttributes(); - int nrAttrs = attributes.getLength(); - - //### Start open tag - spaces(); - po("<"); - pos(node->getNodeName()); - if (nrAttrs>0) - po("\n"); - - //### Attributes - for (int i=0 ; i<nrAttrs ; i++) - { - NodePtr attr = attributes.item(i); - spaces(); - pos(attr->getNodeName()); - po("=\""); - pos(attr->getNodeValue()); - po("\"\n"); - } - - //### Finish open tag - if (nrAttrs>0) - spaces(); - po(">\n"); - - //### Contents - spaces(); - pos(node->getNodeValue()); - - //### Children - for (NodePtr child = node->getFirstChild() ; - child.get() ; - child=child->getNextSibling()) - { - write(child); - } - - //### Close tag - spaces(); - po("</"); - pos(node->getNodeName()); - po(">\n"); - - indent-=2; -} - - -/** - * - */ -void XmlWriter::writeFile(FILE *f, const NodePtr node) -{ - if (!node) - { - po("XmlWriter: NULL document\n"); - return; - } - - indent = 0; - - //po("Document\n"); - - buf = ""; - - write(node); - - for (unsigned int i=0 ; i<buf.size() ; i++) - { - int ch = buf[i]; - fputc(ch, f); - } - fflush(f); - - buf = ""; - -} - - - -//######################################################################### -//# C O N S T R U C T O R / D E S T R U C T O R -//######################################################################### - -/** - * - */ -XmlWriter::XmlWriter() : - indent(0), - buf() -{ -} - -/** - * - */ -XmlWriter::~XmlWriter() -{ -} - - - -} //namespace dom -} //namespace w3c -} //namespace org - -//######################################################################### -//# E N D O F F I L E -//######################################################################### - diff --git a/src/dom/xmlwriter.h b/src/dom/xmlwriter.h deleted file mode 100644 index ada0be04c..000000000 --- a/src/dom/xmlwriter.h +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef SEEN_XMLWRITER_H -#define SEEN_XMLWRITER_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "dom.h" -#include <stdio.h> -#include <glib.h> - - -namespace org -{ -namespace w3c -{ -namespace dom -{ - - - -class XmlWriter -{ -public: - XmlWriter(); - virtual ~XmlWriter(); - void write(const NodePtr node); - void writeFile(FILE *f, const NodePtr node); - - -protected: - void spaces(); - void po(const char *str, ...) G_GNUC_PRINTF(2,3); - void pos(const DOMString &str); - - int indent; - DOMString buf; -}; - - -} //namespace dom -} //namespace w3c -} //namespace org - - - - - - - -#endif // SEEN_XMLWRITER_H - - - - - diff --git a/src/dom/xpath.h b/src/dom/xpath.h deleted file mode 100644 index ce5b88f7f..000000000 --- a/src/dom/xpath.h +++ /dev/null @@ -1,351 +0,0 @@ -#ifndef SEEN_XPATH_H -#define SEEN_XPATH_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "dom.h" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace xpath -{ - - - -typedef dom::DOMString DOMString; -typedef dom::Node Node; -typedef dom::DOMObject DOMObject; -typedef dom::Element Element; - - -class XPathNSResolver; -class XPathExpression; -class XPathResult; - -/*######################################################################### -## XPathException -#########################################################################*/ -/** - * Maybe this should inherit from DOMException? - */ -class XPathException -{ - -public: - - XPathException(const DOMString &reasonMsg) - { msg = reasonMsg; } - - XPathException(short theCode) - { - code = theCode; - } - - virtual ~XPathException() throw() - {} - - /** - * - */ - unsigned short code; - - /** - * - */ - DOMString msg; - - /** - * Get a string, translated from the code. - * Like std::exception. Not in spec. - */ - const char *what() - { return msg.c_str(); } - - - -}; - - -/** - * XPathExceptionCode - */ -typedef enum -{ - INVALID_EXPRESSION_ERR = 51, - TYPE_ERR = 52 -} XPathExceptionCode; - - -/*######################################################################### -## XPathEvaluator -#########################################################################*/ - -/** - * - */ -class XPathEvaluator -{ -public: - - /** - * - */ - virtual XPathExpression *createExpression( - const DOMString &expression, - const XPathNSResolver *resolver) - throw (XPathException, dom::DOMException) =0; - - /** - * - */ - virtual XPathNSResolver *createNSResolver(const Node *nodeResolver) =0; - - /** - * - */ - virtual XPathResult *evaluate( - const DOMString &expression, - const Node *contextNode, - const XPathNSResolver *resolver, - const unsigned short type, - const XPathResult *result) - throw (XPathException, dom::DOMException) =0; - - //################### - //# Non-API methods - //################### - - /** - * - */ - virtual ~XPathEvaluator() {} - -}; - -/*######################################################################### -## XPathExpression -#########################################################################*/ - -/** - * - */ -class XPathExpression -{ -public: - - - /** - * - */ - virtual XPathResult *evaluate( - const Node *contextNode, - unsigned short type, - const XPathResult *result) - throw (XPathException, dom::DOMException) =0; - - - //################### - //# Non-API methods - //################### - - /** - * - */ - virtual ~XPathExpression() {} - -}; - -/*######################################################################### -## XPathNSResolver -#########################################################################*/ - -/** - * - */ -class XPathNSResolver -{ -public: - - /** - * - */ - virtual DOMString lookupNamespaceURI(const DOMString &prefix) =0; - - - //################### - //# Non-API methods - //################### - - /** - * - */ - virtual ~XPathNSResolver() {} - -}; - -/*######################################################################### -## XPathResult -#########################################################################*/ - -/** - * - */ -class XPathResult -{ -public: - - // XPathResultType - typedef enum - { - ANY_TYPE = 0, - NUMBER_TYPE = 1, - STRING_TYPE = 2, - BOOLEAN_TYPE = 3, - UNORDERED_NODE_ITERATOR_TYPE = 4, - ORDERED_NODE_ITERATOR_TYPE = 5, - UNORDERED_NODE_SNAPSHOT_TYPE = 6, - ORDERED_NODE_SNAPSHOT_TYPE = 7, - ANY_UNORDERED_NODE_TYPE = 8, - FIRST_ORDERED_NODE_TYPE = 9 - } XPathResultType; - - - /** - * - */ - virtual unsigned short getResultType() throw (XPathException) =0; - - /** - * - */ - virtual double getNumberValue() throw (XPathException) =0; - - /** - * - */ - virtual DOMString getStringValue() throw (XPathException) =0; - - /** - * - */ - virtual bool getBooleanValue() throw (XPathException) =0; - - /** - * - */ - virtual Node *getSingleNodeValue() throw (XPathException) =0; - - /** - * - */ - virtual bool getInvalidIteratorState() throw (XPathException) =0; - - /** - * - */ - virtual unsigned long getSnapshotLength() throw (XPathException) =0; - - /** - * - */ - virtual Node *iterateNext() throw (XPathException, dom::DOMException) =0; - - /** - * - */ - virtual Node *snapshotItem(unsigned long index) throw (XPathException) =0; - - //################### - //# Non-API methods - //################### - - /** - * - */ - virtual ~XPathResult() {} - -}; - -/*######################################################################### -## XPathNamespace -#########################################################################*/ -class XPathNamespace : virtual public Node -{ -public: - - typedef enum - { - XPATH_NAMESPACE_NODE = 13 - } XPathNodeType; - - /** - * - */ - virtual Element *getOwnerElement() = 0; - - - //################### - //# Non-API methods - //################### - - /** - * - */ - virtual ~XPathNamespace() {} - -}; - - - - - -} //namespace xpath -} //namespace dom -} //namespace w3c -} //namespace org - - - - -#endif // SEEN_XPATH_H -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - diff --git a/src/dom/xpathimpl.cpp b/src/dom/xpathimpl.cpp deleted file mode 100644 index 12e1d8cf4..000000000 --- a/src/dom/xpathimpl.cpp +++ /dev/null @@ -1,236 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "xpathimpl.h" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace xpath -{ - - -/*######################################################################### -## XPathEvaluatorImpl -#########################################################################*/ - -/** - * - */ -XPathExpression *XPathEvaluatorImpl::createExpression( - const DOMString &/*expression*/, - const XPathNSResolver */*resolver*/) - throw (XPathException, dom::DOMException) -{ - return NULL; -} - - -/** - * - */ -XPathNSResolver *XPathEvaluatorImpl::createNSResolver(const Node */*nodeResolver*/) -{ - return NULL; -} - - -/** - * - */ -XPathResult *XPathEvaluatorImpl::evaluate( - const DOMString &/*expression*/, - const Node */*contextNode*/, - const XPathNSResolver */*resolver*/, - const unsigned short /*type*/, - const XPathResult */*result*/) - throw (XPathException, dom::DOMException) -{ - return NULL; -} - - -//################### -//# Non-API methods -//################### - - - -/*######################################################################### -## XPathExpressionImpl -#########################################################################*/ - - - -/** - * - */ -XPathResult *XPathExpressionImpl::evaluate( - const Node */*contextNode*/, - unsigned short /*type*/, - const XPathResult */*result*/) - throw (XPathException, dom::DOMException) -{ - return NULL; -} - - - -/*######################################################################### -## XPathNSResolverImpl -#########################################################################*/ - - -/** - * - */ -DOMString XPathNSResolverImpl::lookupNamespaceURI(const DOMString &/*prefix*/) -{ - return ""; -} - - - - -/*######################################################################### -## XPathResultImpl -#########################################################################*/ - - - -/** - * - */ -unsigned short XPathResultImpl::getResultType() throw (XPathException) -{ - return 0; -} - -/** - * - */ -double XPathResultImpl::getNumberValue() throw (XPathException) -{ - return 0.0; -} - - -/** - * - */ -DOMString XPathResultImpl::getStringValue() throw (XPathException) -{ - return ""; -} - -/** - * - */ -bool XPathResultImpl::getBooleanValue() throw (XPathException) -{ - return false; -} - -/** - * - */ -Node *XPathResultImpl::getSingleNodeValue() throw (XPathException) -{ - return NULL; -} - -/** - * - */ -bool XPathResultImpl::getInvalidIteratorState() throw (XPathException) -{ - return false; -} - -/** - * - */ -unsigned long XPathResultImpl::getSnapshotLength() throw (XPathException) -{ - return 0L; -} - -/** - * - */ -Node *XPathResultImpl::iterateNext() throw (XPathException, dom::DOMException) -{ - return NULL; -} - -/** - * - */ -Node *XPathResultImpl::snapshotItem(unsigned long /*index*/) throw (XPathException) -{ - return NULL; -} - - - -/*######################################################################### -## XPathNamespaceImpl -#########################################################################*/ - - -/** - * - */ -Element *XPathNamespaceImpl::getOwnerElement() -{ - return NULL; -} - - - - -} //namespace xpath -} //namespace dom -} //namespace w3c -} //namespace org - - - - -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - diff --git a/src/dom/xpathimpl.h b/src/dom/xpathimpl.h deleted file mode 100644 index 82b5c48f8..000000000 --- a/src/dom/xpathimpl.h +++ /dev/null @@ -1,265 +0,0 @@ -#ifndef SEEN_XPATHIMPL_H -#define SEEN_XPATHIMPL_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "xpath.h" -#include "domimpl.h" - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace xpath -{ - - -/*######################################################################### -## XPathEvaluatorImpl -#########################################################################*/ - -/** - * - */ -class XPathEvaluatorImpl : public XPathEvaluator -{ -public: - - /** - * - */ - virtual XPathExpression *createExpression( - const DOMString &expression, - const XPathNSResolver *resolver) - throw (XPathException, dom::DOMException); - - /** - * - */ - virtual XPathNSResolver *createNSResolver(const Node *nodeResolver); - - /** - * - */ - virtual XPathResult *evaluate( - const DOMString &expression, - const Node *contextNode, - const XPathNSResolver *resolver, - const unsigned short type, - const XPathResult *result) - throw (XPathException, dom::DOMException); - - //################### - //# Non-API methods - //################### - - /** - * - */ - virtual ~XPathEvaluatorImpl() {} - -}; - -/*######################################################################### -## XPathExpressionImpl -#########################################################################*/ - -/** - * - */ -class XPathExpressionImpl : public XPathExpression -{ -public: - - - /** - * - */ - virtual XPathResult *evaluate(const Node *contextNode, - unsigned short type, - const XPathResult *result) - throw (XPathException, dom::DOMException); - - - //################### - //# Non-API methods - //################### - - /** - * - */ - virtual ~XPathExpressionImpl() {} - -}; - -/*######################################################################### -## XPathNSResolverImpl -#########################################################################*/ - -/** - * - */ -class XPathNSResolverImpl : public XPathNSResolver -{ -public: - - /** - * - */ - virtual DOMString lookupNamespaceURI(const DOMString &prefix); - - - //################### - //# Non-API methods - //################### - - /** - * - */ - virtual ~XPathNSResolverImpl() {} - -}; - -/*######################################################################### -## XPathResultImpl -#########################################################################*/ - -/** - * - */ -class XPathResultImpl : public XPathResult -{ -public: - - /** - * - */ - virtual unsigned short getResultType() throw (XPathException); - - /** - * - */ - virtual double getNumberValue() throw (XPathException); - - /** - * - */ - virtual DOMString getStringValue() throw (XPathException); - - /** - * - */ - virtual bool getBooleanValue() throw (XPathException); - - /** - * - */ - virtual Node *getSingleNodeValue() throw (XPathException); - - /** - * - */ - virtual bool getInvalidIteratorState() throw (XPathException); - - /** - * - */ - virtual unsigned long getSnapshotLength() throw (XPathException); - - /** - * - */ - virtual Node *iterateNext() throw (XPathException, dom::DOMException);; - - /** - * - */ - virtual Node *snapshotItem(unsigned long index) throw (XPathException); - - //################### - //# Non-API methods - //################### - - /** - * - */ - virtual ~XPathResultImpl() {} - -}; - -/*######################################################################### -## XPathNamespaceImpl -#########################################################################*/ -class XPathNamespaceImpl : public XPathNamespace, public NodeImpl -{ -public: - - /** - * - */ - virtual Element *getOwnerElement() = 0; - - - //################### - //# Non-API methods - //################### - - /** - * - */ - virtual ~XPathNamespaceImpl() {} - -}; - - - - - -} //namespace xpath -} //namespace dom -} //namespace w3c -} //namespace org - - - - -#endif /* __XPATHIMPL_H__ */ -/*######################################################################### -## E N D O F F I L E -#########################################################################*/ - - - diff --git a/src/dom/xpathparser.cpp b/src/dom/xpathparser.cpp deleted file mode 100644 index 4785ce93f..000000000 --- a/src/dom/xpathparser.cpp +++ /dev/null @@ -1,2093 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2007 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#include "ucd.h" -#include "xpathparser.h" -#include <cstdlib> - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace xpath -{ - - -//######################################################################### -//# M E S S A G E S -//######################################################################### - - - -void XPathParser::trace(const char *fmt, ...) -{ - if (!debug) - return; - - FILE *f = stdout; - - va_list args; - va_start(args, fmt); - fprintf(f, "XPathParser: "); - vfprintf(f, fmt, args); - fprintf(f, "\n"); - va_end(args); -} - - - -void XPathParser::error(const char *fmt, ...) -{ - FILE *f = stdout; - va_list args; - va_start(args, fmt); - fprintf(f, "XPathParser ERROR: "); - vfprintf(f, fmt, args); - fprintf(f, "\n"); - va_end(args); - - //Print location in string - fprintf(f, "%s\n", parsebuf); - for (int i=0 ; i<position ; i++) - fprintf(f, " "); - fprintf(f, "^\n"); -} - - - -void XPathParser::traceStack(const char *name, int pos, int depth) -{ - if (!debug) - return; - return; - int indent = depth; - - for (int i=0 ; i<indent ; i++) - fprintf(stdout, " "); - fprintf(stdout, "%d %d %s\n", pos, depth, name); - -} - - -//######################################################################### -//# L E X I C A L S C A N N I N G -//######################################################################### - -void XPathParser::lexTokAdd(int type, int loc) -{ - LexTok tok(type, loc); - lexicalTokens.push_back(tok); -} - -void XPathParser::lexTokAdd(int type, int loc, const DOMString &val) -{ - LexTok tok(type, loc, val); - lexicalTokens.push_back(tok); -} - -void XPathParser::lexTokAdd(int type, int loc, double val) -{ - LexTok tok(type, loc, val); - lexicalTokens.push_back(tok); -} - -void XPathParser::lexTokAdd(int type, int loc, long val) -{ - LexTok tok(type, loc, val); - lexicalTokens.push_back(tok); -} - -void XPathParser::lexicalTokenDump() -{ - printf("####### LEXICAL TOKENS #######\n"); - for (unsigned int i=0 ; i<lexicalTokens.size() ; i++) - { - printf("%u : ", i); - lexicalTokens[i].print(); - } - printf("##### END LEXICAL TOKENS #####\n\n"); -} - - - -LexTok XPathParser::lexTok(int p) -{ - if (p < 0 || p>=(int)lexicalTokens.size()) - { - LexTok tok; - return tok; - } - return lexicalTokens[p]; -} - -int XPathParser::lexTokType(int p) -{ - if (p < 0 || p>=(int)lexicalTokens.size()) - return -1; - return lexicalTokens[p].getType(); -} - - - - - - - - -int XPathParser::peek(int p) -{ - if (p >= parselen) - return -1; - position = p; - return parsebuf[p] ; -} - - -int XPathParser::get(int p) -{ - if (p >= parselen) - return -1; - position = p; - return parsebuf[p]; -} - -int XPathParser::skipwhite(int p0) -{ - int p = p0; - - while (p < parselen) - { - int ch = peek(p); - if (!uni_is_space(ch)) - break; - ch = get(p++); - } - return p; -} - -int XPathParser::getword(int p0, DOMString &str) -{ - int p = p0; - while (p < parselen) - { - int ch = peek(p); - if (!uni_is_letter_or_digit(ch)) - break; - ch = get(p++); - str.push_back((XMLCh)ch); - } - return p; -} - -int XPathParser::match(int p, const char *str) -{ - while (*str) - { - if (p >= parselen) - return -1; - if (parsebuf[p] != *str) - return -1; - p++; str++; - } - return p; -} - - - - -int XPathParser::getNumber(int p0, double &dresult) -{ - int p = p0; - if (p >= parselen) - { - return p0;/*need at least x*/ - } - - bool isdouble = false; - - int ch = parsebuf[p]; - if (ch=='-') - { - p++; - if (p >= parselen) return p0; - } - - bool seen_dot = false; - bool seen_e = false; - bool seen_eminus = false; - - DOMString num; - - int i = p; - while (i < parselen) - { - ch = parsebuf[i]; - if (ch=='.') - { - if (seen_dot) - return p0; - seen_dot = true; - isdouble = true; - } - else if (ch=='e' || ch=='E') - { - if (seen_e || !seen_dot) - return p0; - seen_e = true; - } - else if (ch=='-' && seen_e) - { - if (seen_eminus || !seen_dot) - return p0; - seen_eminus = true; - } - else if (!uni_is_digit(ch)) - break; - num.push_back((XMLCh)ch); - i++; - } - - if (i == p)/*no digits*/ - return p0; - if (isdouble) - { - const char *begin = num.c_str(); - char *end; - dresult = strtod(begin,&end); - if (!end)/*not a number?*/ - { - error("Error formatting double: %s\n", num.c_str()); - return p0; - } - } - else - { - const char *begin = num.c_str(); - char *end; - dresult = (double)strtol(begin,&end,10); - if (!end)/*not a number?*/ - { - error("Error formatting integer: %s\n", num.c_str()); - return p0; - } - } - p = i; - return p; -} - - - -int XPathParser::getLiteral(int p0, DOMString &result) -{ - int p = p0; - int ch = peek(p); - int quotechar = 0; - if (ch == '"' || ch == '\'') - { - quotechar = ch; - } - else - return p0; - p++; - while (true) - { - if (p >= parselen) - { - error("Unterminated literal string"); - return -1; - } - ch = peek(p); - if (ch == quotechar) - break; - result.push_back((XMLCh)ch); - p++; - } - p++; //skip over closing " - return p; -} - - - -/** - * NCName is a 'non-colonized' name - */ -int XPathParser::getNCName(int p0, DOMString &result) -{ - int p = p0; - int ch = peek(p); - if (ch != '_' && !uni_is_letter(ch)) - return p0; - - result.push_back((XMLCh)ch); - p++; - while (p < parselen) - { - ch = peek(p); - if ( uni_is_letter_or_digit(ch) || - // isCombiningChar(ch) || - // isExtender(ch) || - ch == '.' || ch == '-' || ch == '_' ) - { - result.push_back((XMLCh)ch); - p++; - } - else - break; - } - return p; -} - - - -/** - * Name parsing with post-parsing - */ -int XPathParser::getNameTest(int p0, DOMString &result) -{ - int p = p0; - int ch = peek(p); - if (ch == '*') - { - result.push_back((XMLCh)ch); - p++; - return p; - } - - DOMString ncName; - int p2 = getNCName(p, ncName); - if (p2 <= p) - return p0; - - result = ncName; - p = p2; - - ch = peek(p); - if (ch != ':' )//short name. we are done - { - return p; - } - - if (peek(p+1) == ':') //was name:: which is ok - return p; - - result.push_back(':'); - - p++; - ch = peek(p); - if (ch == '*') - { - result.push_back((XMLCh)ch); - p++; - return p; - } - - DOMString ncName2; - p2 = getNCName(p, ncName2); - if (p2 <= p) - { - if (peek(p) == ':') //was name:: which is ok - return p0; - error("Nothing after ':' in QName"); - return -1; - } - - result.append(ncName2); - - p = p2; - - return p; -} - - - -int XPathParser::lexicalScan() -{ - lexicalTokens.clear(); - - int p = 0; - int p2 = p; - - while (p < parselen) - { - p2 = skipwhite(p); - p = p2; - - //trace("nextChar:%c", peek(p)); - bool selected = false; - - //### LITERAL EXPR TOKENS - for (int i=2 ; i<=10 ; i++) - { - p2 = match(p, exprTokenTable[i].sval); - if (p2 > p) - { - lexTokAdd(exprTokenTable[i].ival, p); - p = p2; - selected = true; - break; - } - } - if (selected) - continue; - - //### OPERATORS - for (LookupEntry *entry = operatorTable; entry->sval ; entry++) - { - p2 = match(p, entry->sval); - if (p2 > p) - { - long op = (long)entry->ival; - //according to the disambiguating rule for * in the spec - if (op == MULTIPLY && !lexicalTokens.empty()) - { - int ltyp = lexTokType(lexicalTokens.size()-1); - if (ltyp != AMPR && ltyp != DOUBLE_COLON && - ltyp != LPAREN && ltyp != RBRACKET && - ltyp != COMMA && ltyp != OPERATOR ) - { - lexTokAdd(OPERATOR, p, (long)entry->ival); - p = p2; - selected = true; - break; - } - } - else - { - lexTokAdd(OPERATOR, p, (long)entry->ival); - p = p2; - selected = true; - break; - } - } - } - if (selected) - continue; - - //### NODE TYPES - for (LookupEntry *entry = nodeTypeTable; entry->sval ; entry++) - { - p2 = match(p, entry->sval); - if (p2 > p) - { - lexTokAdd(NODE_TYPE, p, (long)entry->ival); - p = p2; - selected = true; - break; - } - } - if (selected) - continue; - - //### AXIS NAMES - for (LookupEntry *entry = axisNameTable; entry->sval ; entry++) - { - p2 = match(p, entry->sval); - if (p2 > p) - { - lexTokAdd(AXIS_NAME, p, (long)entry->ival); - p = p2; - selected = true; - break; - } - } - if (selected) - continue; - - //### NAME TEST - DOMString ntResult; - p2 = getNameTest(p, ntResult); - if (p2 > p) - { - int p3 = skipwhite(p2); - if (peek(p3) == '(') - lexTokAdd(FUNCTION_NAME, p, ntResult); - else - lexTokAdd(NAME_TEST, p, ntResult); - p = p2; - selected = true; - } - if (selected) - continue; - - //### VARIABLE REFERENCE - if (peek(p) == '$') - { - p++; - DOMString qnResult; - p2 = getNCName(p, qnResult); - if (p2 > p) - { - lexTokAdd(VARIABLE_REFERENCE, p, qnResult); - p = p2; - selected = true; - } - else - { - error("Variable referenced with '$' requires a qualified name\n"); - return -1; - } - } - if (selected) - continue; - - //### NUMBER - double numval; - p2 = getNumber(p, numval); - if (p2 > p) - { - lexTokAdd(NUMBER, p, numval); - p = p2; - selected = true; - } - if (selected) - continue; - - //### LITERAL - DOMString strval; - p2 = getLiteral(p, strval); - if (p2 > p) - { - lexTokAdd(LITERAL, p, strval); - p = p2; - selected = true; - } - if (selected) - continue; - - //### CHAR (default, none of the above) - lexTokAdd(CHAR, p, (long) peek(p)); - p++; - - }//while p - - - return p; -} - - - - - - - - - - - - - - - - - - - - - - -//######################################################################### -//# X P A T H G R A M M A R P A R S I N G -//######################################################################### - -//## Various shorthand methods to add a token to the list -void XPathParser::tokAdd(const Token &tok) -{ - tokens.add(tok); -} - -void XPathParser::tokAdd(int type) -{ - tokens.add(Token::create(type)); -} - -void XPathParser::tokAdd(int type, long val) -{ - tokens.add(Token::create(type, val)); -} - -void XPathParser::tokAdd(int type, double val) -{ - tokens.add(Token::create(type, val)); -} - -void XPathParser::tokAdd(int type, const DOMString &val) -{ - tokens.add(Token::create(type, val)); -} - - - - - -//######################################## -//# Grammar - specific parsing -//######################################## - -/** - * [1] LocationPath ::= - * RelativeLocationPath - * | AbsoluteLocationPath - */ -int XPathParser::getLocationPath(int p0, int depth) -{ - traceStack("getLocationPath", p0, depth); - int p = p0; - - p = skipwhite(p); - - int p2 = getAbsoluteLocationPath(p, depth+1); - if (p2 > p) - { - tokAdd(Token::TOK_ABSOLUTE); - return p2; - } - - p2 = getRelativeLocationPath(p, depth+1); - if (p2 > p) - { - tokAdd(Token::TOK_RELATIVE); - return p2; - } - - return p0; -} - - -/** - * [2] AbsoluteLocationPath ::= - * '/' RelativeLocationPath? - * | AbbreviatedAbsoluteLocationPath - */ -int XPathParser::getAbsoluteLocationPath(int p0, int depth) -{ - traceStack("getAbsoluteLocationPath", p0, depth); - - int p = p0; - LexTok t = lexTok(p); - if (t.getType() == OPERATOR && t.getIntValue()==SLASH) - { - p++; - int p2 = getRelativeLocationPath(p, depth+1); - if (p2 <= p) - { - error("Relative path after '/'"); - return -1; - } - p = p2; - return p; - } - - //AbbreviatedAbsoluteLocationPath - if (t.getType() == OPERATOR && t.getIntValue()==DOUBLE_SLASH) - { - p++; - int p2 = getRelativeLocationPath(p, depth+1); - if (p2 <= p) - { - error("Relative path after '//'"); - return -1; - } - p = p2; - return p; - } - - - return p0; -} - - -/** - * [3] RelativeLocationPath ::= - * Step - * | RelativeLocationPath '/' Step - * | AbbreviatedRelativeLocationPath - */ -int XPathParser::getRelativeLocationPath(int p0, int depth) -{ - traceStack("getRelativeLocationPath", p0, depth); - int p = p0; - int p2 = getStep(p, depth+1); - if (p2 < 0) - return -1; - if (p2 > p) - { - p = p2; - LexTok t = lexTok(p); - if (t.getType() == OPERATOR && t.getIntValue()==SLASH) - { - p++; - p2 = getRelativeLocationPath(p, depth+1); - if (p2 < 0) - { - error("Relative path after '/'"); - return -1; - } - p = p2; - return p; - } - //AbbreviatedRelativeLocationPath - if (t.getType() == OPERATOR && t.getIntValue()==DOUBLE_SLASH) - { - p++; - // a '//' is an abbreviation for /descendant-or-self:node()/ - tokAdd(Token::TOK_AXIS_DESCENDANT_OR_SELF); - p2 = getRelativeLocationPath(p, depth+1); - if (p2 < 0) - { - error("Relative path after '//'"); - return -1; - } - p = p2; - return p; - } - return p; - } - - - return p0; -} - - -/** - * [4] Step ::= - * AxisSpecifier NodeTest Predicate* - * | AbbreviatedStep - */ -int XPathParser::getStep(int p0, int depth) -{ - traceStack("getStep", p0, depth); - - int p = p0; - - lexTok(p).print(); - - //This can be (and usually is) 0-length - int p2 = getAxisSpecifier(p, depth+1); - if (p2 < 0) - { - error("Axis specifier in step section"); - return -1; - } - p = p2; - p2 = getNodeTest(p, depth+1); - if (p2 < 0) - { - error("Node test in step section"); - return -1; - } - - if (p2 > p) - { - p = p2; - p2 = getPredicate(p, depth+1); - if (p2 < 0) - { - error("Predicate in step section"); - return -1; - } - p = p2; - return p; - } - - //AbbreviatedStep - if (lexTokType(p) == DOT) - { - p++; - return p; - } - - //AbbreviatedStep - if (lexTokType(p) == DOUBLE_DOT) - { - p++; - return p; - } - - return p0; -} - - -/** - * [5] AxisSpecifier ::= - * AxisName '::' - * | AbbreviatedAxisSpecifier - */ -int XPathParser::getAxisSpecifier(int p0, int depth) -{ - traceStack("getAxisSpecifier", p0, depth); - int p = p0; - if (lexTokType(p) == AXIS_NAME) - { - LexTok t = lexTok(p); - int axisType = t.getIntValue(); - p++; - if (lexTokType(p) != DOUBLE_COLON) - { - error("'::' required after axis name literal"); - return -1; - } - p++; - switch (axisType) - { - case ANCESTOR_OR_SELF: - tokAdd(Token::TOK_AXIS_ANCESTOR_OR_SELF); - break; - case ANCESTOR: - tokAdd(Token::TOK_AXIS_ANCESTOR); - break; - case ATTRIBUTE: - tokAdd(Token::TOK_AXIS_ATTRIBUTE); - break; - case CHILD: - tokAdd(Token::TOK_AXIS_CHILD); - break; - case DESCENDANT_OR_SELF: - tokAdd(Token::TOK_AXIS_DESCENDANT_OR_SELF); - break; - case DESCENDANT: - tokAdd(Token::TOK_AXIS_DESCENDANT); - break; - case FOLLOWING_SIBLING: - tokAdd(Token::TOK_AXIS_FOLLOWING_SIBLING); - break; - case FOLLOWING: - tokAdd(Token::TOK_AXIS_FOLLOWING); - break; - case NAMESPACE: - tokAdd(Token::TOK_AXIS_NAMESPACE); - break; - case PARENT: - tokAdd(Token::TOK_AXIS_PARENT); - break; - case PRECEDING_SIBLING: - tokAdd(Token::TOK_AXIS_PRECEDING_SIBLING); - break; - case PRECEDING: - tokAdd(Token::TOK_AXIS_PRECEDING); - break; - case SELF: - tokAdd(Token::TOK_AXIS_SELF); - break; - default: - { - error("unknown axis type %d", axisType); - return -1; - } - } - return p; - } - - //AbbreviatedAxisSpecifier - if (lexTokType(p) == AMPR) - { - p++; - return p; - } - - return p0; -} - - -/** - * [6] AxisName ::= - * 'ancestor' - * | 'ancestor-or-self' - * | 'attribute' - * | 'child' - * | 'descendant' - * | 'descendant-or-self' - * | 'following' - * | 'following-sibling' - * | 'namespace' - * | 'parent' - * | 'preceding' - * | 'preceding-sibling' - * | 'self' - * NOTE: This definition, and those at the bottom, is not - * needed. Its functionality is handled by lexical scanning. - * It is left here for reference. - */ -int XPathParser::getAxisName(int p0, int depth) -{ - traceStack("getAxisName", p0, depth); - return p0; -} - - -/** - * [7] NodeTest ::= - * NameTest - * | NodeType '(' ')' - * | 'processing-instruction' '(' Literal ')' - */ -int XPathParser::getNodeTest(int p0, int depth) -{ - traceStack("getNodeTest", p0, depth); - int p = p0; - - LexTok t = lexTok(p); - if (t.getType() == NAME_TEST) - { - p++; - tokAdd(Token::TOK_NAME_TEST, t.getStringValue()); - return p; - } - if (t.getType() == NODE_TYPE) - { - if (t.getIntValue() == PROCESSING_INSTRUCTION) - { - if (lexTokType(p) != LPAREN || - lexTokType(p+1) != LITERAL || - lexTokType(p+2) != RPAREN ) - { - error("processing instruction requires (\"literal string\")"); - return -1; - } - p += 3; - } - else - { - if (lexTokType(p+1) != LPAREN || - lexTokType(p+2) != RPAREN ) - { - error("processing instruction requires ()"); - return -1; - } - p += 2; - } - return p; - } - - return p0; -} - - -/** - * [8] Predicate ::= - * '[' PredicateExpr ']' - */ -int XPathParser::getPredicate(int p0, int depth) -{ - traceStack("getPredicate", p0, depth); - - int p = p0; - if (lexTokType(p) != LBRACKET) - return p0; - - p++; - int p2 = getPredicateExpr(p, depth+1); - if (p2 <= p) - { - error("Predicate expression in predicate"); - return -1; - } - - p = p2; - lexTok(p).print(); - if (lexTokType(p) != RBRACKET) - { - error("Predicate expression requires closing ']'"); - return -1; - } - p++; - return p; -} - - -/** - * [9] PredicateExpr ::= - * Expr - */ -int XPathParser::getPredicateExpr(int p0, int depth) -{ - traceStack("getPredicateExpr", p0, depth); - int p = p0; - int p2 = getExpr(p, depth+1); - if (p2 < 0) - { - error("Expression in predicate expression"); - return -1; - } - p = p2; - return p; -} - - -/** - * [10] AbbreviatedAbsoluteLocationPath ::= - * '//' RelativeLocationPath - * NOTE: not used. handled in getAbsoluteLocationPath() - */ -int XPathParser::getAbbreviatedAbsoluteLocationPath(int p0, int depth) -{ - traceStack("getAbbreviatedAbsoluteLocationPath", p0, depth); - - return p0; -} - -/** - * [11] AbbreviatedRelativeLocationPath ::= - * RelativeLocationPath '//' Step - * NOTE: not used. handled in getRelativeLocationPath() - */ -int XPathParser::getAbbreviatedRelativeLocationPath(int p0, int depth) -{ - traceStack("getAbbreviatedRelativeLocationPath", p0, depth); - return p0; -} - -/** - * [12] AbbreviatedStep ::= - * '.' - * | '..' - * NOTE: not used. handled in getStep() - */ -int XPathParser::getAbbreviatedStep(int p0, int depth) -{ - traceStack("getAbbreviatedStep", p0, depth); - return p0; -} - - -/** - * [13] AbbreviatedAxisSpecifier ::= - * '@'? - * NOTE: not used. handled in getAxisSpecifier() - */ -int XPathParser::getAbbreviatedAxisSpecifier(int p0, int depth) -{ - traceStack("getAbbreviatedAxisSpecifier", p0, depth); - return p0; -} - - -/** - * [14] Expr ::= - * OrExpr - */ -int XPathParser::getExpr(int p0, int depth) -{ - traceStack("getExpr", p0, depth); - - int p = p0; - - int p2 = getOrExpr(p, depth+1); - if (p2 < 0) - { - error("OR expression in expression"); - return -1; - } - p = p2; - - return p; -} - - -/** - * [15] PrimaryExpr ::= - * VariableReference - * | '(' Expr ')' - * | Literal - * | Number - * | FunctionCall - */ -int XPathParser::getPrimaryExpr(int p0, int depth) -{ - traceStack("getPrimaryExpr", p0, depth); - int p = p0; - int p2 = p; - - if (lexTokType(p) == VARIABLE_REFERENCE) - { - p++; - return p; - } - - if (lexTokType(p) == LPAREN) - { - p++; - p2 = getExpr(p, depth+1); - if (p2 <= p) - { - error("Expression in primary expression"); - return -1; - } - p += p2; - if (lexTokType(p) != RPAREN) - { - error("Primary expression requires closing ')'"); - return -1; - } - } - - if (lexTokType(p) == LITERAL) - { - tokAdd(Token::TOK_STR, lexTok(p).getStringValue()); - p++; - return p; - } - - if (lexTokType(p) == NUMBER) - { - tokAdd(Token::TOK_FLOAT, lexTok(p).getDoubleValue()); - p++; - return p; - } - - p2 = getFunctionCall(p, depth+1); - if (p2 < 0) - { - error("Function call in primary expression"); - return -1; - } - if (p2 > p) - { - p = p2; - return p; - } - - return p0; -} - - -/** - * [16] FunctionCall ::= - * FunctionName '(' ( Argument ( ',' Argument )* )? ')' - */ -int XPathParser::getFunctionCall(int p0, int depth) -{ - traceStack("getFunctionCall", p0, depth); - int p = p0; - - if (lexTokType(p) != FUNCTION_NAME) - { - return p0; - } - - DOMString name = lexTok(p).getStringValue(); - - p++; - - if (lexTokType(p) != LPAREN) //this makes a function - { - return p0; - } - p++; - - int p2 = getArgument(p, depth+1); - if (p2 < 0) - { - error("Error in function argument"); - return -1; - } - if (p2 > p) - { - int argCount = 1; - p = p2; - while (lexTokType(p) == COMMA) - { - p++; - p2 = getArgument(p, depth+1); - if (p2 <= p) - { - error("Error in function argument"); - return -1; - } - if (p2 > p) - argCount++; - //do we add a token here? i dont think so - p = p2; - } - } - - if (lexTokType(p) != RPAREN) //mandatory - { - error("Function requires closing ')'"); - return -1; - } - p++; - - // Function names from http://www.w3.org/TR/xpath#NT-FunctionName - if (name == "last") - tokAdd(Token::TOK_FUNC_LAST); - else if (name == "position") - tokAdd(Token::TOK_FUNC_POSITION); - else if (name == "count") - tokAdd(Token::TOK_FUNC_COUNT); - else if (name == "id") - tokAdd(Token::TOK_FUNC_ID); - else if (name == "local-name") - tokAdd(Token::TOK_FUNC_LOCAL_NAME); - else if (name == "namespace-uri") - tokAdd(Token::TOK_FUNC_NAMESPACE_URI); - else if (name == "name") - tokAdd(Token::TOK_FUNC_NAME); - else if (name == "string") - tokAdd(Token::TOK_FUNC_STRING); - else if (name == "concat") - tokAdd(Token::TOK_FUNC_CONCAT); - else if (name == "starts-with") - tokAdd(Token::TOK_FUNC_STARTS_WITH); - else if (name == "contains") - tokAdd(Token::TOK_FUNC_CONTAINS); - else if (name == "substring-before") - tokAdd(Token::TOK_FUNC_SUBSTRING_BEFORE); - else if (name == "substring-after") - tokAdd(Token::TOK_FUNC_SUBSTRING_AFTER); - else if (name == "substring") - tokAdd(Token::TOK_FUNC_SUBSTRING); - else if (name == "string-length") - tokAdd(Token::TOK_FUNC_STRING_LENGTH); - else if (name == "normalize-space") - tokAdd(Token::TOK_FUNC_NORMALIZE_SPACE); - else if (name == "translate") - tokAdd(Token::TOK_FUNC_TRANSLATE); - else if (name == "boolean") - tokAdd(Token::TOK_FUNC_BOOLEAN); - else if (name == "not") - tokAdd(Token::TOK_FUNC_NOT); - else if (name == "true") - tokAdd(Token::TOK_FUNC_TRUE); - else if (name == "false") - tokAdd(Token::TOK_FUNC_FALSE); - else if (name == "lang") - tokAdd(Token::TOK_FUNC_LANG); - else if (name == "number") - tokAdd(Token::TOK_FUNC_NUMBER); - else if (name == "sum") - tokAdd(Token::TOK_FUNC_SUM); - else if (name == "floor") - tokAdd(Token::TOK_FUNC_FLOOR); - else if (name == "ceiling") - tokAdd(Token::TOK_FUNC_CEILING); - else if (name == "round") - tokAdd(Token::TOK_FUNC_ROUND); - else - { - error("unknown function name:'%s'", name.c_str()); - return -1; - } - return p; -} - - -/** - * [17] Argument ::= - * Expr - */ -int XPathParser::getArgument(int p0, int depth) -{ - traceStack("getArgument", p0, depth); - int p = p0; - int p2 = getExpr(p, depth+1); - if (p2 < 0) - { - error("Argument expression"); - return -1; - } - p = p2; - return p; -} - - -/** - * [18] UnionExpr ::= - * PathExpr - * | UnionExpr '|' PathExpr - */ -int XPathParser::getUnionExpr(int p0, int depth) -{ - traceStack("getUnionExpr", p0, depth); - int p = p0; - int p2 = getPathExpr(p, depth+1); - if (p2 < 0) - { - error("Path expression for union"); - return -1; - } - p = p2; - LexTok t = lexTok(p); - if (t.getType() == OPERATOR && t.getIntValue() == PIPE) - { - p++; - p2 = getUnionExpr(p, depth+1); - if (p2 < 0) - { - error("OR (|) requires union expression on the left"); - return -1; - } - tokAdd(Token::TOK_UNION); - p = p2; - } - return p; -} - - -/** - * [19] PathExpr ::= - * LocationPath - * | FilterExpr - * | FilterExpr '/' RelativeLocationPath - * | FilterExpr '//' RelativeLocationPath - */ -int XPathParser::getPathExpr(int p0, int depth) -{ - traceStack("getPathExpr", p0, depth); - int p = p0; - int p2; - - p2 = getLocationPath(p, depth+1); - if (p2 < 0) - { - error("Location path in path expression"); - return -1; - } - if (p2 > p) - { - p = p2; - return p; - } - - p2 = getFilterExpr(p, depth+1); - if (p2 < 0) - { - error("Filter expression in path expression"); - return -1; - } - if (p2 <= p) - return p0; - p = p2; - - LexTok t = lexTok(p); - if (t.getType() == OPERATOR && t.getIntValue() == SLASH) - { - p++; - p2 = getRelativeLocationPath(p, depth+1); - if (p2 < 0) - { - error("Relative location after / in path expression"); - return -1; - } - p = p2; - return p; - } - - if (t.getType() == OPERATOR && t.getIntValue() == DOUBLE_SLASH) - { - p++; - p2 = getRelativeLocationPath(p, depth+1); - if (p2 < 0) - { - error("Relative location after // in path expression"); - return -1; - } - p = p2; - return p; - } - return p; -} - - -/** - * [20] FilterExpr ::= - * PrimaryExpr - * | FilterExpr Predicate - */ -int XPathParser::getFilterExpr(int p0, int depth) -{ - traceStack("getFilterExpr", p0, depth); - int p = p0; - - int p2 = getPrimaryExpr(p, depth+1); - if (p2 < 0) - { - error("Primary expression in path expression"); - return -1; - } - if (p2 > p) - { - p = p2; - while (true) - { - p2 = getPredicate(p, depth+1); - if (p2 < 0) - { - error("Predicate in primary expression"); - return -1; - } - if (p2 > p) - { - p = p2; - } - else - break; - } - return p; - } - - return p0; -} - - -/** - * [21] OrExpr ::= - * AndExpr - * | OrExpr 'or' AndExpr - */ -int XPathParser::getOrExpr(int p0, int depth) -{ - traceStack("getOrExpr", p0, depth); - int p = p0; - int p2 = getAndExpr(p, depth+1); - if (p2 < 0) - { - error("AND expression in OR expression"); - return -1; - } - if (p2 > p) - { - p = p2; - LexTok t = lexTok(p); - if (t.getType() == OPERATOR && t.getIntValue() == OR) - { - p++; - p2 = getAndExpr(p, depth+1); - if (p2 <= p) - { - error("AND expression in OR expression"); - return -1; - } - p = p2; - return p; - } - tokAdd(Token::TOK_OR); - return p; - } - - return p0; -} - - -/** - * [22] AndExpr ::= - * EqualityExpr - * | AndExpr 'and' EqualityExpr - */ -int XPathParser::getAndExpr(int p0, int depth) -{ - traceStack("getAndExpr", p0, depth); - int p = p0; - int p2 = getEqualityExpr(p, depth+1); - if (p2 < 0) - { - error("Equality expression in AND expression"); - return -1; - } - if (p2 > p) - { - p = p2; - LexTok t = lexTok(p); - if (t.getType() == OPERATOR && t.getIntValue() == AND) - { - p++; - p2 = getAndExpr(p, depth+1); - if (p2 <= p) - { - error("AND expression after 'and'"); - return -1; - } - p = p2; - return p; - } - tokAdd(Token::TOK_AND); - return p; - } - - return p0; -} - - -/** - * [23] EqualityExpr ::= - * RelationalExpr - * | EqualityExpr '=' RelationalExpr - * | EqualityExpr '!=' RelationalExpr - */ -int XPathParser::getEqualityExpr(int p0, int depth) -{ - traceStack("getEqualityExpr", p0, depth); - int p = p0; - int p2 = getRelationalExpr(p, depth+1); - if (p2 < 0) - { - error("Relation expression in equality expression"); - return -1; - } - if (p2 > p) - { - p = p2; - LexTok t = lexTok(p); - if (t.getType() == OPERATOR && t.getIntValue() == EQUALS) - { - p++; - p2 = getEqualityExpr(p, depth+1); - if (p2 <= p) - { - error("Equality expression expected after =="); - return -1; - } - tokAdd(Token::TOK_EQUALS); - p = p2; - return p; - } - - if (t.getType() == OPERATOR && t.getIntValue() == NOT_EQUALS) - { - p++; - p2 = getEqualityExpr(p, depth+1); - if (p2 <= p) - { - error("Equality expression expected after !="); - return -1; - } - tokAdd(Token::TOK_NOT_EQUALS); - p = p2; - return p; - } - - return p; - } - - return p0; -} - - -/** - * [24] RelationalExpr ::= - * AdditiveExpr - * | RelationalExpr '<' AdditiveExpr - * | RelationalExpr '>' AdditiveExpr - * | RelationalExpr '<=' AdditiveExpr - * | RelationalExpr '>=' AdditiveExpr - */ -int XPathParser::getRelationalExpr(int p0, int depth) -{ - traceStack("getRelationalExpr", p0, depth); - int p = p0; - int p2 = getAdditiveExpr(p, depth+1); - if (p2 < 0) - { - error("Additive expression in relational expression"); - return -1; - } - if (p2 > p) - { - p = p2; - LexTok t = lexTok(p); - - if (t.getType() == OPERATOR && t.getIntValue() == GREATER_THAN) - { - p++; - p2 = getRelationalExpr(p, depth+1); - if (p2 <= p) - { - error("Relational expression after '>'"); - return -1; - } - tokAdd(Token::TOK_GREATER_THAN); - p = p2; - return p; - } - if (t.getType() == OPERATOR && t.getIntValue() == LESS_THAN) - { - p++; - p2 = getRelationalExpr(p, depth+1); - if (p2 <= p) - { - error("Relational expression after '<'"); - return -1; - } - tokAdd(Token::TOK_LESS_THAN); - p = p2; - return p; - } - if (t.getType() == OPERATOR && t.getIntValue() == GREATER_THAN_EQUALS) - { - p++; - p2 = getRelationalExpr(p, depth+1); - if (p2 <= p) - { - error("Relational expression after '>='"); - return -1; - } - tokAdd(Token::TOK_GREATER_THAN_EQUALS); - p = p2; - return p; - } - if (t.getType() == OPERATOR && t.getIntValue() == LESS_THAN_EQUALS) - { - p++; - p2 = getRelationalExpr(p, depth+1); - if (p2 <= p) - { - error("Relational expression after '<='"); - return -1; - } - tokAdd(Token::TOK_LESS_THAN_EQUALS); - p = p2; - return p; - } - - - return p; - } - - return p0; -} - - -/** - * [25] AdditiveExp ::= - * MultiplicativeExpr - * | AdditiveExpr '+' MultiplicativeExpr - * | AdditiveExpr '-' MultiplicativeExpr - */ -int XPathParser::getAdditiveExpr(int p0, int depth) -{ - traceStack("getAdditiveExpr", p0, depth); - int p = p0; - int p2 = getMultiplicativeExpr(p, depth+1); - if (p2 < 0) - { - error("Multiplicative expression in additive expression"); - return -1; - } - if (p2 > p) - { - p = p2; - LexTok t = lexTok(p); - - if (t.getType() == OPERATOR && t.getIntValue() == PLUS) - { - p++; - p2 = getAdditiveExpr(p, depth+1); - if (p2 <= p) - { - error("Additive expression after '+'"); - return -1; - } - tokAdd(Token::TOK_MINUS); - p = p2; - return p; - } - if (t.getType() == OPERATOR && t.getIntValue() == MINUS) - { - p++; - p2 = getAdditiveExpr(p, depth+1); - if (p2 <= p) - { - error("Additive expression after '-'"); - return -1; - } - tokAdd(Token::TOK_MINUS); - p = p2; - return p; - } - - - return p; - } - - return p0; -} - - -/** - * [26] MultiplicativeExpr ::= - * UnaryExpr - * | MultiplicativeExpr MultiplyOperator UnaryExpr - * | MultiplicativeExpr 'div' UnaryExpr - * | MultiplicativeExpr 'mod' UnaryExpr - */ -int XPathParser::getMultiplicativeExpr(int p0, int depth) -{ - traceStack("getMultiplicativeExpr", p0, depth); - int p = p0; - int p2 = getUnaryExpr(p, depth+1); - if (p2 < 0) - { - error("Unary expression in multiplicative expression"); - return -1; - } - if (p2 > p) - { - p = p2; - LexTok t = lexTok(p); - - if (t.getType() == OPERATOR && t.getIntValue() == MULTIPLY) - { - p++; - p2 = getMultiplicativeExpr(p, depth+1); - if (p2 <= p) - { - error("Multiplicative expression after '*'"); - return -1; - } - tokAdd(Token::TOK_MUL); - p = p2; - return p; - } - - if (t.getType() == OPERATOR && t.getIntValue() == DIV) - { - p++; - p2 = getMultiplicativeExpr(p, depth+1); - if (p2 <= p) - { - error("Multiplicative expression after 'div'"); - return -1; - } - tokAdd(Token::TOK_DIV); - p = p2; - return p; - } - - if (t.getType() == OPERATOR && t.getIntValue() == MOD) - { - p++; - p2 = getMultiplicativeExpr(p, depth+1); - if (p2 <= p) - { - error("Multiplicative expression after 'mod'"); - return -1; - } - tokAdd(Token::TOK_MOD); - p = p2; - return p; - } - - - return p; - } - - return p0; -} - - -/** - * [27] UnaryExpr ::= - * UnionExpr - * | '-' UnaryExpr - */ -int XPathParser::getUnaryExpr(int p0, int depth) -{ - traceStack("getUnaryExpr", p0, depth); - int p = p0; - int p2 = getUnionExpr(p, depth+1); - if (p2 < 0) - { - error("Union expression in unary expression"); - return -1; - } - if (p2 > p) - { - p = p2; - return p; - } - - if (lexTokType(p) == '-') - { - p++; - p2 = getUnaryExpr(p, depth+1); - if (p2 < 0) - { - error("Unary expression after '-'"); - return -1; - } - tokAdd(Token::TOK_NEG); - p = p2; - return p; - } - - return p0; -} - - -//###################################################### -//# NOT USED!!! -//## The grammar definitions below are -//## handled by lexical parsing, and will not be used -//###################################################### - -/** - * [28] ExprToken ::= - * '(' | ')' | '[' | ']' | '.' | '..' | '@' | ',' | '::' - * | NameTest - * | NodeType - * | Operator - * | FunctionName - * | AxisName - * | Literal - * | Number - * | VariableReference - */ -int XPathParser::getExprToken(int p0, int depth) -{ - traceStack("getExprToken", p0, depth); - return p0; -} - - -/** - * [29] Literal ::= - * '"' [^"]* '"' - * | "'" [^']* "'" - */ -int XPathParser::getLiteral(int p0, int depth) -{ - traceStack("getLiteral", p0, depth); - return p0; -} - - -/** - * [30] Number ::= - * Digits ('.' Digits?)? - * | '.' Digits - */ -int XPathParser::getNumber(int p0, int depth) -{ - traceStack("getNumber", p0, depth); - return p0; -} - - -/** - * [31] Digits ::= - * [0-9]+ - */ -int XPathParser::getDigits(int p0, int depth) -{ - traceStack("getDigits", p0, depth); - return p0; -} - - -/** - * [32] Operator ::= - * OperatorName - * | MultiplyOperator - * | '/' | '//' | '|' | '+' | '-' | '=' - * | '!=' | '<' | '<=' | '>' | '>=' - */ -int XPathParser::getOperator(int p0, int depth) -{ - traceStack("getOperator", p0, depth); - return p0; -} - - -/** - * [33] OperatorName ::= - * 'and' | 'or' | 'mod' | 'div' - */ -int XPathParser::getOperatorName(int p0, int depth) -{ - traceStack("getOperatorName", p0, depth); - return p0; -} - - -/** - * [34] MultiplyOperator ::= - * '*' - */ -int XPathParser::getMultiplyOperator(int p0, int depth) -{ - traceStack("getMultiplyOperator", p0, depth); - return p0; -} - - -/** - * [35] FunctionName ::= - * QName - NodeType - */ -int XPathParser::getFunctionName(int p0, int depth) -{ - traceStack("getFunctionName", p0, depth); - return p0; -} - - -/** - * [36] VariableReference ::= - * '$' QName - */ -int XPathParser::getVariableReference(int p0, int depth) -{ - traceStack("getVariableReference", p0, depth); - return p0; -} - - -/** - * [37] NameTest ::= - * '*' - * | NCName ':' '*' - * | QName - */ -int XPathParser::getNameTest(int p0, int depth) -{ - traceStack("getNameTest", p0, depth); - return p0; -} - - -/** - * [38] NodeType ::= - * 'comment' - * | 'text' - * | 'processing-instruction' - * | 'node' - */ -int XPathParser::getNodeType(int p0, int depth) -{ - traceStack("getNodeType", p0, depth); - return p0; -} - - -/** - * [39] ExprWhitespace ::= - * S - */ -int XPathParser::getExprWhitespace(int p0, int depth) -{ - traceStack("getExprWhitespace", p0, depth); - return p0; -} - - - - - -//######################################################################### -//# H I G H L E V E L P A R S I N G -//######################################################################### - -/** - * Parse a candidate XPath string. Leave a copy in 'tokens.' - */ -bool XPathParser::parse(const DOMString &xpathString) -{ - int p0 = 0; - - DOMString str = xpathString; - - parsebuf = (char *)str.c_str(); - parselen = (int) str.size(); - position = 0; - - trace("## parsing string: '%s'", parsebuf); - - lexicalScan(); - lexicalTokenDump(); - - tokens.clear();//Get ready to store new tokens - - int p = getLocationPath(p0, 0); - - parsebuf = NULL; - parselen = 0; - - if (p <= p0) - { - //return false; - } - - return true; -} - - - - - -//######################################################################### -//# E V A L U A T E -//######################################################################### - - - - -/** - * This wraps the two-step call to parse(), then execute() to get a NodeList - * of matching DOM nodes - */ -NodeList XPathParser::evaluate(const NodePtr root, - const DOMString &xpathString) -{ - NodeList list; - - //### Maybe do caching for speed here - - //### Parse and execute - //### Error message can be generated as a side effect - if (!parse(xpathString)) - return list; - - if (debug) - tokens.dump(); - - //### Execute the token list - TokenExecutor executor; - NodeList results; - if (!executor.execute(tokens, root, results)) - { - //error - } - - return results; -} - - - -} // namespace xpath -} // namespace dom -} // namespace w3c -} // namespace org -//######################################################################### -//# E N D O F F I L E -//######################################################################### - - - - diff --git a/src/dom/xpathparser.h b/src/dom/xpathparser.h deleted file mode 100644 index 7e5f774f1..000000000 --- a/src/dom/xpathparser.h +++ /dev/null @@ -1,801 +0,0 @@ -#ifndef SEEN_XPATHPARSER_H -#define SEEN_XPATHPARSER_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2005-2007 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include <stdio.h> -#include <stdarg.h> - -#include <string> -#include <vector> - -#include "dom.h" -#include "xpathtoken.h" - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace xpath -{ - -typedef dom::DOMString DOMString; -typedef dom::Node Node; -typedef dom::NodeList NodeList; - - - -//######################################################################## -//# L E X I C A L D E F I N I T I O N S -//######################################################################## - - -typedef struct -{ - int ival; - char const *sval; -} LookupEntry; - - - -//Note: in the following definitions, where the starts of -//strings are similar, put the longer definitions first - -/** - * - */ -typedef enum -{ - COMMENT, - TEXT, - PROCESSING_INSTRUCTION, - NODE -} NodeType; - - -static LookupEntry nodeTypeTable [] = -{ - { COMMENT, "comment" }, - { TEXT, "text" }, - { PROCESSING_INSTRUCTION, "processing-instruction" }, - { NODE, "node" }, - { -1, NULL } -}; - - -/** - * - */ -typedef enum -{ - ANCESTOR_OR_SELF, - ANCESTOR, - ATTRIBUTE, - CHILD, - DESCENDANT_OR_SELF, - DESCENDANT, - FOLLOWING_SIBLING, - FOLLOWING, - NAMESPACE, - PARENT, - PRECEDING_SIBLING, - PRECEDING, - SELF -} AxisNameType; - - -static LookupEntry axisNameTable [] = -{ - { ANCESTOR_OR_SELF, "ancestor-or-self" }, - { ANCESTOR, "ancestor" }, - { ATTRIBUTE, "attribute" }, - { CHILD, "child" }, - { DESCENDANT_OR_SELF, "descendant-or-self"}, - { DESCENDANT, "descendant" }, - { FOLLOWING_SIBLING, "following-sibling" }, - { FOLLOWING, "following" }, - { NAMESPACE, "namespace" }, - { PARENT, "parent" }, - { PRECEDING_SIBLING, "preceding-sibling" }, - { PRECEDING, "preceding" }, - { SELF, "self" }, - { -1, NULL } -}; - - -/** - * - */ -typedef enum -{ - NONE = 0, - CHAR, //default if none of the below - //Expr tokens - LPAREN, - RPAREN, - LBRACKET, - RBRACKET, - DOUBLE_DOT, - DOT, - AMPR, - COMMA, - DOUBLE_COLON, - NAME_TEST, - NODE_TYPE, - OPERATOR, - FUNCTION_NAME, - AXIS_NAME, - LITERAL, - NUMBER, - VARIABLE_REFERENCE, - //Operator tokens - AND, - OR, - MOD, - DIV, - MULTIPLY, - DOUBLE_SLASH, - SLASH, - PIPE, - PLUS, - MINUS, - EQUALS, - NOT_EQUALS, - LESS_THAN_EQUALS, - LESS_THAN, - GREATER_THAN_EQUALS, - GREATER_THAN -} LexTokType; - - -/* -* Be VERY careful that this table matches the LexicalTokenType enum -* declaration above. -*/ -static LookupEntry exprTokenTable [] = -{ - { NONE, "xxNONExx" }, - { CHAR, "CHAR" }, - //Expr tokens - { LPAREN, "(" }, - { RPAREN, ")" }, - { LBRACKET, "[" }, - { RBRACKET, "]" }, - { DOUBLE_DOT, ".." }, - { DOT, "." }, - { AMPR, "@" }, - { COMMA, "," }, - { DOUBLE_COLON, "::" }, - { NAME_TEST, "NameTest" }, - { NODE_TYPE, "NodeType" }, - { OPERATOR, "Operator" }, - { FUNCTION_NAME, "FunctionName" }, - { AXIS_NAME, "AxisName" }, - { LITERAL, "Literal" }, - { NUMBER, "Number" }, - { VARIABLE_REFERENCE, "VariableReference" }, - { -1, NULL } -}; - -static LookupEntry operatorTable [] = -{ - { NONE, "xxNONExx" }, - //Operator tokens - { AND, "and" }, - { OR, "or" }, - { MOD, "mod" }, - { DIV, "div" }, - { MULTIPLY, "*" }, - { DOUBLE_SLASH, "//" }, - { SLASH, "/" }, - { PIPE, "|" }, - { PLUS, "+" }, - { MINUS, "-" }, - { EQUALS, "=" }, - { NOT_EQUALS, "!=" }, - { LESS_THAN_EQUALS, "<=" }, - { LESS_THAN, "<" }, - { GREATER_THAN_EQUALS, ">=" }, - { GREATER_THAN, ">" }, - { -1, NULL } -}; - - -/** - * - */ -class LexTok -{ -public: - LexTok(const LexTok &tok) - { - type = tok.type; - location = tok.location; - sval = tok.sval; - dval = tok.dval; - ival = tok.ival; - } - LexTok() - { init(); } - LexTok(int theType, int loc) - { init(); type = theType; location = loc;} - LexTok(int theType, int loc, const DOMString &val) - { init(); type = theType; location = loc; sval = val; } - LexTok(int theType, int loc, double val) - { init(); type = theType; location = loc; dval = val; } - LexTok(int theType, int loc, long val) - { init(); type = theType; location = loc; ival = val; } - - void print() - { - if (type == OPERATOR) - { - char const *tokenStr = "unknown"; - for (LookupEntry const *entry = operatorTable; entry->sval ; entry++) - { - if (entry->ival == ival) - { - tokenStr = entry->sval; - break; - } - } - printf("(%s)\n", tokenStr); - } - else if (type == NODE_TYPE) - { - char const *tokenStr = "unknown"; - for (LookupEntry *entry = nodeTypeTable; entry->sval ; entry++) - { - if (entry->ival == ival) - { - tokenStr = entry->sval; - break; - } - } - printf("{{%s}}\n", tokenStr); - } - else if (type == AXIS_NAME) - { - char const *tokenStr = "unknown"; - for (LookupEntry *entry = axisNameTable; entry->sval ; entry++) - { - if (entry->ival == ival) - { - tokenStr = entry->sval; - break; - } - } - printf("{%s}\n", tokenStr); - } - else if (type == CHAR) - printf("'%c'\n", (char)ival); - else if (type == NAME_TEST) - printf("\"%s\"\n", sval.c_str()); - else if (type == LITERAL) - printf("L'%s'\n", sval.c_str()); - else if (type == FUNCTION_NAME) - printf("%s()\n", sval.c_str()); - else if (type == NUMBER) - printf("#%f\n", dval); - else - { - char const *tokenStr = "unknown"; - for (LookupEntry *entry = exprTokenTable; entry->sval ; entry++) - { - if (entry->ival == type) - { - tokenStr = entry->sval; - break; - } - } - printf("%s\n", tokenStr); - //printf("%s [%s/%f/%ld]\n", tokenStr, sval.c_str(), dval, ival); - } - } - - int getType() - { return type; } - int getLocation() - { return location; } - DOMString &getStringValue() - { return sval; } - double getDoubleValue() - { return dval; } - long getIntValue() - { return ival; } - -private: - void init() - { - type = NONE; - location = 0; - dval = 0.0; - ival = 0; - } - - int type; - int location; - DOMString sval; - double dval; - long ival; -}; - - - - - -//######################################################################## -//# P A R S E R -//######################################################################## - -class XPathParser -{ -public: - - //################################# - //# CONSTRUCTOR - //################################# - - /** - * - */ - XPathParser() : - debug(false), - parsebuf(0), - parselen(0), - position(0), - numberString(), - number(0), - lexicalTokens(), - tokens() - { - } - - /** - * - */ - virtual ~XPathParser() {} - - /** - * - */ - bool getDebug() - { return debug; } - - /** - * - */ - void setDebug(bool val) - { debug = val; } - - - - /** - * Normally not called directly unless for string parsing testing - */ - bool parse(const DOMString &str); - - /** - * This is the big one. Called by the xpath-dom api to fetch - * nodes from a DOM tree. - */ - NodeList evaluate(const NodePtr root, const DOMString &str); - - - -private: - - //################################# - //# MESSAGES - //################################# - - /** - * - */ - void trace(const char *fmt, ...) - #ifdef G_GNUC_PRINTF - G_GNUC_PRINTF(2, 3) - #endif - ; - - /** - * - */ - void traceStack(const char *name, int pos, int depth); - - /** - * - */ - void error(const char *fmt, ...) - #ifdef G_GNUC_PRINTF - G_GNUC_PRINTF(2, 3) - #endif - ; - - //################################# - //# LEXICAL SCANNING - //################################# - - /** - * Add a lexical token of a given type to the list - */ - void lexTokAdd(int type, int loc); - void lexTokAdd(int type, int loc, const DOMString &val); - void lexTokAdd(int type, int loc, double val); - void lexTokAdd(int type, int loc, long val); - - /** - * - */ - void lexicalTokenDump(); - - /** - * - */ - LexTok lexTok(int p); - - /** - * - */ - int lexTokType(int p); - - /** - * - */ - int peek(int p); - - /** - * - */ - int get(int p); - - /** - * - */ - int getword(int p, DOMString &str); - - /** - * - */ - int match(int p, const char *str); - - /** - * - */ - int skipwhite(int p); - - /** - * - */ - int getNumber(int p, double &dresult); - - /** - * - */ - int getLiteral(int p, DOMString &result); - - /** - * - */ - int getNameTest(int p0, DOMString &result); - - /** - * - */ - int getNCName(int p0, DOMString &result); - - - - - /** - * - */ - int lexicalScan(); - - - //################################# - //# GRAMMAR PARSING - //################################# - - /** - * Add a newly derived token to the token list; - */ - void tokAdd(const Token &token); - - void tokAdd(int type); - - void tokAdd(int type, long val); - - void tokAdd(int type, double val); - - void tokAdd(int type, const DOMString &val); - - - /** - * The grammar definitions marked [1]-[39] are directly - * from the W3C XPath grammar spacification. - */ - - /** - * [1] - */ - int getLocationPath(int p0, int depth); - - /** - * [2] - */ - int getAbsoluteLocationPath(int p0, int depth); - - /** - * [3] - */ - int getRelativeLocationPath(int p0, int depth); - - /** - * [4] - */ - int getStep(int p0, int depth); - - /** - * [5] - */ - int getAxisSpecifier(int p0, int depth); - - /** - * [6] - */ - int getAxisName(int p0, int depth); - - /** - * [7] - */ - int getNodeTest(int p0, int depth); - - /** - * [8] - */ - int getPredicate(int p0, int depth); - - /** - * [9] - */ - int getPredicateExpr(int p0, int depth); - - /** - * [10] - */ - int getAbbreviatedAbsoluteLocationPath(int p0, int depth); - /** - * [11] - */ - int getAbbreviatedRelativeLocationPath(int p0, int depth); - /** - * [12] - */ - int getAbbreviatedStep(int p0, int depth); - - /** - * [13] - */ - int getAbbreviatedAxisSpecifier(int p0, int depth); - - /** - * [14] - */ - int getExpr(int p0, int depth); - - /** - * [15] - */ - int getPrimaryExpr(int p0, int depth); - - /** - * [16] - */ - int getFunctionCall(int p0, int depth); - - /** - * [17] - */ - int getArgument(int p0, int depth); - - /** - * [18] - */ - int getUnionExpr(int p0, int depth); - - /** - * [19] - */ - int getPathExpr(int p0, int depth); - - /** - * [20] - */ - int getFilterExpr(int p0, int depth); - - /** - * [21] - */ - int getOrExpr(int p0, int depth); - - /** - * [22] - */ - int getAndExpr(int p0, int depth); - - /** - * [23] - */ - int getEqualityExpr(int p0, int depth); - - /** - * [24] - */ - int getRelationalExpr(int p0, int depth); - - /** - * [25] - */ - int getAdditiveExpr(int p0, int depth); - - /** - * [26] - */ - int getMultiplicativeExpr(int p0, int depth); - - /** - * [27] - */ - int getUnaryExpr(int p0, int depth); - - /** - * [28] - */ - int getExprToken(int p0, int depth); - - /** - * [29] - */ - int getLiteral(int p0, int depth); - - /** - * [30] - */ - int getNumber(int p0, int depth); - - /** - * [31] - */ - int getDigits(int p0, int depth); - - /** - * [32] - */ - int getOperator(int p0, int depth); - - /** - * [33] - */ - int getOperatorName(int p0, int depth); - - /** - * [34] - */ - int getMultiplyOperator(int p0, int depth); - - /** - * [35] - */ - int getFunctionName(int p0, int depth); - - /** - * [36] - */ - int getVariableReference(int p0, int depth); - - /** - * [37] - */ - int getNameTest(int p0, int depth); - - /** - * [38] - */ - int getNodeType(int p0, int depth); - - /** - * [39] - */ - int getExprWhitespace(int p0, int depth); - - - - //################################# - //# DATA ITEMS - //################################# - - /** - * - */ - bool debug; - - /** - * - */ - char *parsebuf; - - /** - * - */ - int parselen; - - /** - * - */ - int position; - - /** - * - */ - DOMString numberString; - - /** - * - */ - double number; - - - /** - * The result of the first lexical scan - */ - std::vector<LexTok> lexicalTokens; - - /** - * The result of parsing. If parsing was successful, then - * this is executable via execute() - */ - TokenList tokens; -}; - - -} // namespace xpath -} // namespace dom -} // namespace w3c -} // namespace org -#endif // SEEN_XPATHPARSER_H -//######################################################################### -//# E N D O F F I L E -//######################################################################### diff --git a/src/dom/xpathtoken.cpp b/src/dom/xpathtoken.cpp deleted file mode 100644 index 216c7a069..000000000 --- a/src/dom/xpathtoken.cpp +++ /dev/null @@ -1,1068 +0,0 @@ -/* - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - * - * Authors: - * Bob Jamison - * - * Copyright (C) 2006-2008 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "xpathtoken.h" -#include <stdio.h> - - - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace xpath -{ - - - -//######################################################################## -//# X P A T H T O K E N -//######################################################################## - -//######################################################################## -//# X P A T H T O K E N T Y P E S -//######################################################################## - - - -//########################### -//# V A L U E S -//########################### - -/** - * The following functions are called by a token's execute() - * method. These functions are what differentiate one token - * from another and give each its personality. -*/ - -static bool tokStr(Token &tok, Stack &stack) -{ - StackItem item; - item.sval = tok.sval; - stack.push(item); - return true; -} - -static bool tokFloat(Token &tok, Stack &stack) -{ - StackItem item; - item.dval = tok.dval; - stack.push(item); - return true; -} - -static bool tokInt(Token &tok, Stack &stack) -{ - StackItem item; - item.ival = tok.ival; - stack.push(item); - return true; -} - -static bool tokAnd(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.ival = item1.ival && item2.ival; - stack.push(item1); - return true; -} - -static bool tokOr(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.ival = item1.ival || item2.ival; - stack.push(item1); - return true; -} - -static bool tokMod(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.dval = fmod(item1.dval, item2.dval); - stack.push(item1); - return true; -} - - -static bool tokDiv(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.dval /= item2.dval; - stack.push(item1); - return true; -} - -static bool tokMul(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.dval *= item2.dval; - stack.push(item1); - return true; -} - -static bool tokPlus(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.dval += item2.dval; - stack.push(item1); - return true; -} - -static bool tokMinus(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.dval -= item2.dval; - stack.push(item1); - return true; -} - - -static bool tokNeg(Token &/*tok*/, Stack &stack) -{ - StackItem item = stack.pop(); - item.dval = -item.dval; - item.ival = -item.ival; - stack.push(item); - return true; -} - - -static bool tokEquals(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.ival = (item1.dval == item2.dval); - stack.push(item1); - return true; -} - - -static bool tokNotEquals(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.ival = (item1.dval != item2.dval); - stack.push(item1); - return true; -} - - -static bool tokLessThan(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.ival = (item1.dval < item2.dval); - stack.push(item1); - return true; -} - - -static bool tokLessThanEquals(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.ival = (item1.dval <= item2.dval); - stack.push(item1); - return true; -} - - -static bool tokGreaterThanEquals(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.ival = (item1.dval >= item2.dval); - stack.push(item1); - return true; -} - - -static bool tokGreaterThan(Token &/*tok*/, Stack &stack) -{ - StackItem item1 = stack.pop(); - StackItem item2 = stack.pop(); - item1.ival = (item1.dval > item2.dval); - stack.push(item1); - return true; -} - - - - - - -//########################### -//# X P A T H I T E M S -//########################### - -static bool tokAbsolute(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - -static bool tokRelative(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - -static bool tokStep(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - -static bool tokNameTest(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - -static bool tokExpr(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - -static bool tokUnion(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - - - -//########################### -//# A X I S -//########################### - - -static bool tokAxisAncestorOrSelf(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisAncestor(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisAttribute(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisChild(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisDescendantOrSelf(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisDescendant(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisFollowingSibling(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisFollowing(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisNamespace(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisParent(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisPrecedingSibling(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisPreceding(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokAxisSelf(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - - -//########################### -//# F U N C T I O N S -//########################### - - -static bool tokFuncLast(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncPosition(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncCount(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncId(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncLocalName(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncNamespaceUri(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncName(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncString(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncConcat(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncStartsWith(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncContains(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncSubstringBefore(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncSubstringAfter(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncSubstring(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncStringLength(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncNormalizeSpace(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncTranslate(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncBoolean(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncNot(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncTrue(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncFalse(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncLang(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncNumber(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncSum(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncFloor(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncCeiling(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - -static bool tokFuncRound(Token &/*tok*/, Stack &/*stack*/) -{ - return true; -} - - - -/** - * An entry for the token 'personality' table - */ -typedef struct -{ - int ival; - char const *sval; - TokenFunc tokenFunc; -} TokenTableEntry; - - -/** - * The token personality table - */ -static TokenTableEntry tokenTable[] = -{ - //### primitives - { - Token::TOK_NOP, - "nop", - NULL - }, - { - Token::TOK_STR, - "str", - tokStr - }, - { - Token::TOK_INT, - "int", - tokInt - }, - { - Token::TOK_FLOAT, - "float", - tokFloat - }, - - //### operators - { - Token::TOK_AND, - "and", - tokAnd - }, - { - Token::TOK_OR, - "or", - tokOr - }, - { - Token::TOK_MOD, - "mod", - tokMod - }, - { - Token::TOK_DIV, - "div", - tokDiv - }, - { - Token::TOK_MUL, - "multiply", - tokMul - }, - { - Token::TOK_DOUBLE_SLASH, - "double-slash", - NULL - }, - { - Token::TOK_SLASH, - "slash", - NULL - }, - { - Token::TOK_PIPE, - "pipe", - NULL - }, - { - Token::TOK_PLUS, - "plus", - tokPlus - }, - { - Token::TOK_MINUS, - "minus", - tokMinus - }, - { - Token::TOK_NEG, - "neg", - tokNeg - }, - { - Token::TOK_EQUALS, - "equals", - tokEquals - }, - { - Token::TOK_NOT_EQUALS, - "not-equals", - tokNotEquals - }, - { - Token::TOK_LESS_THAN_EQUALS, - "less-than-equals", - tokLessThanEquals - }, - { - Token::TOK_LESS_THAN, - "less-than", - tokLessThan - }, - { - Token::TOK_GREATER_THAN_EQUALS, - "greater-than-equals", - tokGreaterThanEquals - }, - { - Token::TOK_GREATER_THAN, - "greater-than", - tokGreaterThan - }, - - //### path types - { - Token::TOK_ABSOLUTE, - "absolute", - tokAbsolute - }, - { - Token::TOK_RELATIVE, - "relative", - tokRelative - }, - { - Token::TOK_STEP, - "step", - tokStep - }, - { - Token::TOK_NAME_TEST, - "name-test", - tokNameTest - }, - { - Token::TOK_EXPR, - "expr", - tokExpr - }, - { - Token::TOK_UNION, - "union", - tokUnion - }, - - //### axis types - { - Token::TOK_AXIS_ANCESTOR_OR_SELF, - "axis-ancestor-or-self", - tokAxisAncestorOrSelf - }, - { - Token::TOK_AXIS_ANCESTOR, - "axis-ancestor", - tokAxisAncestor - }, - { - Token::TOK_AXIS_ATTRIBUTE, - "axis-attribute", - tokAxisAttribute - }, - { - Token::TOK_AXIS_CHILD, - "axis-child", - tokAxisChild - }, - { - Token::TOK_AXIS_DESCENDANT_OR_SELF, - "axis-descendant-or-self", - tokAxisDescendantOrSelf - }, - { - Token::TOK_AXIS_DESCENDANT, - "axis-descendant", - tokAxisDescendant - }, - { - Token::TOK_AXIS_FOLLOWING_SIBLING, - "axis-following-sibling", - tokAxisFollowingSibling - }, - { - Token::TOK_AXIS_FOLLOWING, - "axis-following", - tokAxisFollowing - }, - { - Token::TOK_AXIS_NAMESPACE, - "axis-namespace", - tokAxisNamespace - }, - { - Token::TOK_AXIS_PARENT, - "axis-parent", - tokAxisParent - }, - { - Token::TOK_AXIS_PRECEDING_SIBLING, - "axis-preceding-sibling", - tokAxisPrecedingSibling - }, - { - Token::TOK_AXIS_PRECEDING, - "axis-preceding", - tokAxisPreceding - }, - { - Token::TOK_AXIS_SELF, - "axis-self", - tokAxisSelf - }, - - //### function types - { - Token::TOK_FUNC_LAST, - "func-last", - tokFuncLast - }, - { - Token::TOK_FUNC_POSITION, - "func-position", - tokFuncPosition - }, - { - Token::TOK_FUNC_COUNT, - "func-count", - tokFuncCount - }, - { - Token::TOK_FUNC_ID, - "func-id", - tokFuncId - }, - { - Token::TOK_FUNC_LOCAL_NAME, - "func-local-name", - tokFuncLocalName - }, - { - Token::TOK_FUNC_NAMESPACE_URI, - "func-namespace-uri", - tokFuncNamespaceUri - }, - { - Token::TOK_FUNC_NAME, - "func-name", - tokFuncName - }, - { - Token::TOK_FUNC_STRING, - "func-string", - tokFuncString - }, - { - Token::TOK_FUNC_CONCAT, - "func-concat", - tokFuncConcat - }, - { - Token::TOK_FUNC_STARTS_WITH, - "func-starts-with", - tokFuncStartsWith - }, - { - Token::TOK_FUNC_CONTAINS, - "func-contains", - tokFuncContains - }, - { - Token::TOK_FUNC_SUBSTRING_BEFORE, - "func-substring-before", - tokFuncSubstringBefore - }, - { - Token::TOK_FUNC_SUBSTRING_AFTER, - "func-substring-after", - tokFuncSubstringAfter - }, - { - Token::TOK_FUNC_SUBSTRING, - "func-substring", - tokFuncSubstring - }, - { - Token::TOK_FUNC_STRING_LENGTH, - "func-string-length", - tokFuncStringLength - }, - { - Token::TOK_FUNC_NORMALIZE_SPACE, - "func-normalize-space", - tokFuncNormalizeSpace - }, - { - Token::TOK_FUNC_TRANSLATE, - "func-translate", - tokFuncTranslate - }, - { - Token::TOK_FUNC_BOOLEAN, - "func-boolean", - tokFuncBoolean - }, - { - Token::TOK_FUNC_NOT, - "func-not", - tokFuncNot - }, - { - Token::TOK_FUNC_TRUE, - "func-true", - tokFuncTrue - }, - { - Token::TOK_FUNC_FALSE, - "func-false", - tokFuncFalse - }, - { - Token::TOK_FUNC_LANG, - "func-lang", - tokFuncLang - }, - { - Token::TOK_FUNC_NUMBER, - "func-number", - tokFuncNumber - }, - { - Token::TOK_FUNC_SUM, - "func-sum", - tokFuncSum - }, - { - Token::TOK_FUNC_FLOOR, - "func-floor", - tokFuncFloor - }, - { - Token::TOK_FUNC_CEILING, - "func-ceiling", - tokFuncCeiling - }, - { - Token::TOK_FUNC_ROUND, - "func-round", - tokFuncRound - }, - - { -1, - (char *)0, - NULL - } -}; - - -/** - * Return the string TokenType of this token - * (in the .cpp file) - */ -DOMString Token::getTypeString() -{ - DOMString ret = "unknown"; - for (TokenTableEntry *entry = tokenTable ; entry->sval ; entry++) - { - if (entry->ival == type) - { - ret = entry->sval; - break; - } - } - return ret; -} - - -/** - * Create a token of the given type, giving it - * the data and personalities it needs - */ -Token Token::create(int type, long ival, - double dval, const DOMString &sval) -{ - Token tok(type, ival, dval, sval); - for (TokenTableEntry *entry = tokenTable ; entry->sval ; entry++) - { - if (entry->ival == type) - { - tok.tokenFunc = entry->tokenFunc; - break; - } - } - - return tok; -} - - - - - - - - -//######################################################################## -//# X P A T H E X E C U T O R -//######################################################################## - -/** - * - */ -TokenExecutor::TokenExecutor() : - tokenList (), - nodeList () -{ -} - - -/** - * - */ -TokenExecutor::TokenExecutor(const TokenExecutor &other) : - tokenList (other.tokenList), - nodeList () -{ - // assign(other); -} - - -/** - * - */ -TokenExecutor::~TokenExecutor() -{ -} - - -/** - * - */ -void TokenExecutor::assign(const TokenExecutor &other) -{ - tokenList = other.tokenList; -} - - - - -/** - * Execute a list upon a given node. For each Axis encountered, - * get the nodes encountered so far, and execute the rest of the - * list of tokens upon each of the nodes. - */ -int TokenExecutor::execute(std::vector<Token> &tokens, - int position, - const NodePtr /*node*/, - NodeList &result) -{ - Stack stack(*this); - - NodeList contextNodes; - - int length = (int) tokens.size(); - - for ( ; position < length ; position ++) - { - Token tok = tokens[position]; - if (tok.isAxis()) - { - int pos2 = 0; - //Do rest of tokens with the nodes we have found so far - for (unsigned int i = 0 ; i<contextNodes.getLength() ; i++) - { - NodePtr contextNode = contextNodes.item(i); - pos2 = execute(tokens, position, contextNode, result); - if (pos2 < 0) - { - return -1; - } - } - position = pos2; - } - else - { - if (!tok.execute(stack)) - { - return -1; - } - } - - }//for - - return position; -} - - -/** - * Execute the tokens in a TokenList upon a given node - */ -bool TokenExecutor::execute(TokenList &tokenList, - const NodePtr node, - NodeList &result) -{ - - NodeList nodelist; - - std::vector<Token> &tokens = tokenList.getTokens(); - if (execute(tokens, 0, node, nodeList) < 0) - { - //error message - return false; - } - - result = nodeList; - - return true; -} - - - - - - - - - - - - - -} // namespace xpath -} // namespace dom -} // namespace w3c -} // namespace org -//######################################################################## -//# E N D O F F I L E -//######################################################################## - - - diff --git a/src/dom/xpathtoken.h b/src/dom/xpathtoken.h deleted file mode 100644 index cfd54298e..000000000 --- a/src/dom/xpathtoken.h +++ /dev/null @@ -1,672 +0,0 @@ -#ifndef SEEN_XPATHTOKEN_H -#define SEEN_XPATHTOKEN_H - -/** - * @file - * Phoebe DOM Implementation. - * - * This is a C++ approximation of the W3C DOM model, which follows - * fairly closely the specifications in the various .idl files, copies of - * which are provided for reference. Most important is this one: - * - * http://www.w3.org/TR/2004/REC-DOM-Level-3-Core-20040407/idl-definitions.html - */ -/* - * Authors: - * Bob Jamison - * - * Copyright (C) 2006 Bob Jamison - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 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 - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this library; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - */ - - -#include "dom.h" - -#include <math.h> - -#include <cstdio> -#include <vector> - -namespace org -{ -namespace w3c -{ -namespace dom -{ -namespace xpath -{ - -typedef org::w3c::dom::DOMString DOMString; - - -class TokenExecutor; - - -//######################################################################## -//# S T A C K I T E M -//######################################################################## - - -/** - * This represents a single value on the evaluation stack - */ -class StackItem -{ -public: - - /** - * Constructor - */ - StackItem() - { init(); } - - /** - * Copy constructor - */ - StackItem(const StackItem &other) - { assign(other); } - - /** - * Destructor - */ - virtual ~StackItem() - {} - - /** - * - */ - StackItem &operator=(const StackItem &other) - { assign(other); return *this; } - - //treat the stack item like an union of string, integer, and double - - /** - * String value - */ - DOMString sval; - - /** - * Integer value - */ - long ival; - - /** - * Double value; - */ - double dval; - - -private: - - void init() - { - sval = ""; - ival = 0; - dval = 0.0; - } - - void assign(const StackItem &other) - { - sval = other.sval; - ival = other.ival; - dval = other.dval; - } - -}; - - - -//######################################################################## -//# X P A T H T O K E N -//######################################################################## - -class Token; -class Stack; - -typedef bool (*TokenFunc)(Token &tok, Stack &stack); - - -/** - * This is a pseudocode-type class that executes itself on a stack, - * much like stack-oriented languages such as FORTH or Postscript. - * Each token can pop zero or more tokens off the stack, and push - * zero or one token back onto it. When a list of tokens is completed, - * a single stack value should be left on the stack. - */ -class Token -{ -public: - - /** - * Token types. Look in xpathtoken.cpp's function table - * to see how these types map to their respective - * functionalities - */ - typedef enum - { - //primitives - TOK_NOP = 0, - TOK_STR, - TOK_INT, - TOK_FLOAT, - //operators - TOK_AND, - TOK_OR, - TOK_MOD, - TOK_DIV, - TOK_MUL, - TOK_DOUBLE_SLASH, - TOK_SLASH, - TOK_PIPE, - TOK_PLUS, - TOK_MINUS, - TOK_NEG, - TOK_EQUALS, - TOK_NOT_EQUALS, - TOK_LESS_THAN_EQUALS, - TOK_LESS_THAN, - TOK_GREATER_THAN_EQUALS, - TOK_GREATER_THAN, - //path types - TOK_ABSOLUTE, - TOK_RELATIVE, - TOK_STEP, - TOK_NAME_TEST, - TOK_EXPR, - TOK_UNION, - //axis types - TOK_AXIS_ANCESTOR_OR_SELF, - TOK_AXIS_ANCESTOR, - TOK_AXIS_ATTRIBUTE, - TOK_AXIS_CHILD, - TOK_AXIS_DESCENDANT_OR_SELF, - TOK_AXIS_DESCENDANT, - TOK_AXIS_FOLLOWING_SIBLING, - TOK_AXIS_FOLLOWING, - TOK_AXIS_NAMESPACE, - TOK_AXIS_PARENT, - TOK_AXIS_PRECEDING_SIBLING, - TOK_AXIS_PRECEDING, - TOK_AXIS_SELF, - //function types - TOK_FUNC_LAST, - TOK_FUNC_POSITION, - TOK_FUNC_COUNT, - TOK_FUNC_ID, - TOK_FUNC_LOCAL_NAME, - TOK_FUNC_NAMESPACE_URI, - TOK_FUNC_NAME, - TOK_FUNC_STRING, - TOK_FUNC_CONCAT, - TOK_FUNC_STARTS_WITH, - TOK_FUNC_CONTAINS, - TOK_FUNC_SUBSTRING_BEFORE, - TOK_FUNC_SUBSTRING_AFTER, - TOK_FUNC_SUBSTRING, - TOK_FUNC_STRING_LENGTH, - TOK_FUNC_NORMALIZE_SPACE, - TOK_FUNC_TRANSLATE, - TOK_FUNC_BOOLEAN, - TOK_FUNC_NOT, - TOK_FUNC_TRUE, - TOK_FUNC_FALSE, - TOK_FUNC_LANG, - TOK_FUNC_NUMBER, - TOK_FUNC_SUM, - TOK_FUNC_FLOOR, - TOK_FUNC_CEILING, - TOK_FUNC_ROUND, - } TokenType; - - - - - /** - * Constructor with a NOP default type - */ - Token() - { init(); } - - /** - * Constructor with a NOP default type - */ - Token(int typeArg) - { init(); type = typeArg; } - - /** - * Constructor with a NOP default type - */ - Token(int typeArg, - long ivalArg, double dvalArg, const DOMString &svalArg) - { - init(); - type = typeArg, - ival = ivalArg; - dval = dvalArg; - sval = svalArg; - } - - /** - * Copy constructor - */ - Token(const Token &other) - { assign(other); } - - /** - * Assignment - */ - Token &operator=(const Token &other) - { assign(other); return *this; } - - /** - * Destructor - */ - virtual ~Token() - {} - - /** - * Return the enumerated TokenType of this token - */ - virtual int getType() - { return type; } - - /** - * Return true if the type is one of the Axis types - * above; - */ - virtual bool isAxis() - { - return type>=TOK_AXIS_ANCESTOR_OR_SELF && - type <= TOK_AXIS_SELF; - } - /** - * Return the string TokenType of this token - */ - virtual DOMString getTypeString(); - - /** - * Let this token execute itself on the given stack, - * possibly adding Nodes to the node list. - */ - virtual bool execute(Stack &stack) - { - if (tokenFunc) - return tokenFunc(*this, stack); - return false; - } - - /** - * Print the contents of this token - */ - virtual void dump() - { - printf("%s %s %f %ld\n", - getTypeString().c_str(), sval.c_str(), dval, ival); - } - - //treat the token like an union of string, integer, and double - - /** - * String value - */ - DOMString sval; - - /** - * Integer value - */ - long ival; - - /** - * Double value; - */ - double dval; - - /** - * - */ - static Token create(int type, long ival, - double dval, const DOMString &sval); - - /** - * - */ - static Token create(int type) - { return create(type, 0, 0.0, ""); } - - /** - * - */ - static Token create(int type, long val) - { return create(type, val, 0.0, ""); } - - /** - * - */ - static Token create(int type, double val) - { return create(type, 0, val, ""); } - - /** - * - */ - static Token create(int type, const DOMString &val) - { return create(type, 0, 0.0, val); } - - - -protected: - - /** - * The enmerated token type - */ - int type; - - /** - * The function that defines the behaviour of this token - */ - TokenFunc tokenFunc; - - -private: - - void init() - { - tokenFunc = NULL; - type = TOK_NOP; - ival = 0L; - dval = 0.0; - //sval = ""; //not necessary - } - - void assign(const Token &other) - { - tokenFunc = other.tokenFunc; - type = other.type; - sval = other.sval; - ival = other.ival; - dval = other.dval; - } - - -}; - - -//######################################################################## -//# S T A C K -//######################################################################## - -/** - * - */ -class Stack -{ -public: - - //# From 2.3, principal type of child axes - typedef enum - { - AXIS_ATTRIBUTE, - AXIS_NAMESPACE, - AXIS_ELEMENT - } PrincipalNodeType; - - /** - * Constructor - */ - Stack(TokenExecutor &par) : parent(par) - { clear(); } - - /** - * Copy constructor - */ - Stack(const Stack &other) : parent(other.parent) - { assign(other); } - - /** - * Destructor - */ - virtual ~Stack() - {} - - /** - * - */ - Stack &operator=(const Stack &other) - { assign(other); return *this; } - - /** - * - */ - void push(StackItem &item) - { return stackItems.push_back(item); } - - /** - * - */ - StackItem pop() - { - if (stackItems.empty()) - { - //TODO: error here - StackItem item; - return item; - } - std::vector<StackItem>::iterator iter = - stackItems.end() - 1; - StackItem item = *iter; - stackItems.erase(iter); - return item; - } - - /** - * - */ - virtual void clear() - { - stackItems.clear(); - principalNodeType = AXIS_ELEMENT; - } - -private: - - void assign(const Stack &other) - { - principalNodeType = other.principalNodeType; - stackItems = other.stackItems; - } - - int principalNodeType; - - std::vector<StackItem> stackItems; - - TokenExecutor &parent; - -}; - - - - -//######################################################################## -//# T O K E N L I S T -//######################################################################## - -/** - * - */ -class TokenList -{ -public: - - /** - * - */ - TokenList() - { init(); } - - /** - * - */ - TokenList(const TokenList &other) - { assign(other); } - - /** - * - */ - TokenList &operator=(const TokenList &other) - { assign(other); return *this; } - - /** - * - */ - virtual ~TokenList() - { } - - - /** - * - */ - virtual void add(const Token &token) - { tokens.push_back(token); } - - /** - * - */ - virtual std::vector<Token> &getTokens() - { return tokens; } - - /** - * - */ - virtual void dump() - { - for (unsigned int i=0 ; i<tokens.size() ; i++) - { - Token token = tokens[i]; - token.dump(); - } - } - - /** - * - */ - virtual void clear() - { - tokens.clear(); - } - -private: - - - void init() - { - clear(); - } - - void assign(const TokenList &other) - { - tokens = other.tokens; - } - - std::vector<Token> tokens; - - -}; - - - - -//######################################################################## -//# T O K E N E X E C U T O R -//######################################################################## - - -/** - * A token evaluator, with stack and axis context - */ -class TokenExecutor -{ -public: - - /** - * Constructor - */ - TokenExecutor(); - - /** - * Copy constructor - */ - TokenExecutor(const TokenExecutor &other); - - /** - * Destructor - */ - virtual ~TokenExecutor(); - - /** - * Assign our values to those of the other - */ - virtual void assign(const TokenExecutor &other); - - - /** - * Execute a list upon a given node. For each Axis encountered, - * get the nodes encountered so far, and execute the rest of the - * list of tokens upon each of the nodes. - */ - int execute(std::vector<Token> &tokens, - int position, - const NodePtr node, - NodeList &nodeList); - - /** - * Execute a token list on the stack - */ - bool execute(TokenList &list, - const NodePtr node, - NodeList &result); - -private: - - /** - * - */ - TokenList tokenList; - - /** - * - */ - NodeList nodeList; - - -}; - - - - -} // namespace xpath -} // namespace dom -} // namespace w3c -} // namespace org - - - - - - -#endif // SEEN_XPATHTOKEN_H -//######################################################################## -//# E N D O F F I L E -//######################################################################## - diff --git a/src/extension/internal/odf.cpp b/src/extension/internal/odf.cpp index fcabcc4b2..52fabcf3c 100644 --- a/src/extension/internal/odf.cpp +++ b/src/extension/internal/odf.cpp @@ -77,12 +77,7 @@ #include "text-editing.h" #include "util/units.h" - -//# DOM-specific includes -#include "dom/dom.h" -#include "dom/util/ziptool.h" -//#include "dom/io/domstream.h" - +#include "uri.h" #include "inkscape-version.h" #include "document.h" @@ -90,6 +85,7 @@ #include "io/inkscapestream.h" #include "io/bufferstream.h" +#include <util/ziptool.h> #include <iomanip> namespace Inkscape { @@ -98,7 +94,6 @@ namespace Extension namespace Internal { //# Shorthand notation -typedef org::w3c::dom::DOMString DOMString; typedef Inkscape::IO::BufferOutputStream BufferOutputStream; typedef Inkscape::IO::OutputStreamWriter OutputStreamWriter; typedef Inkscape::IO::StringOutputStream StringOutputStream; @@ -1026,6 +1021,7 @@ static void gatherText(Inkscape::XML::Node *node, Glib::ustring &buf) } + /** * FIRST PASS. * Method descends into the repr tree, converting image, style, and gradient info @@ -1086,10 +1082,9 @@ void OdfOutput::preprocess(ZipFile &zf, Inkscape::XML::Node *node) imageTable[oldName] = newName; Glib::ustring comment = "old name was: "; comment.append(oldName); - URI oldUri(oldName); + Inkscape::URI oldUri(oldName.c_str()); //# if relative to the documentURI, get proper path - URI resUri = documentUri.resolve(oldUri); - DOMString pathName = resUri.getNativePath(); + std::string pathName = documentUri.getFullPath(oldUri.getFullPath("")); ZipEntry *ze = zf.addFile(pathName, comment); if (ze) { @@ -2105,9 +2100,7 @@ void OdfOutput::save(Inkscape::Extension::Output */*mod*/, SPDocument *doc, gcha { reset(); - documentUri = URI(filename); - /* fixme: It looks like we really are using documentUri as a URI, so we ought to call - * g_filename_to_uri for the URI constructor. */ + documentUri = Inkscape::URI(filename); ZipFile zf; preprocess(zf, doc->rroot); diff --git a/src/extension/internal/odf.h b/src/extension/internal/odf.h index 6b915e347..f8712d5eb 100644 --- a/src/extension/internal/odf.h +++ b/src/extension/internal/odf.h @@ -23,18 +23,16 @@ #ifndef EXTENSION_INTERNAL_ODG_OUT_H #define EXTENSION_INTERNAL_ODG_OUT_H -#include <dom/dom.h> #include <io/stringstream.h> -#include <dom/uri.h> +#include <util/ziptool.h> #include "extension/implementation/implementation.h" #include <xml/repr.h> - #include <string> #include <map> -#include <dom/util/ziptool.h> +#include "uri.h" #include "sp-item.h" #include <glibmm/ustring.h> @@ -46,7 +44,6 @@ namespace Extension namespace Internal { -typedef org::w3c::dom::URI URI; typedef Inkscape::IO::Writer Writer; class StyleInfo @@ -279,7 +276,7 @@ public: private: - URI documentUri; + Inkscape::URI documentUri; void reset(); diff --git a/src/uri.cpp b/src/uri.cpp index 89f6f33e4..e81d108c9 100644 --- a/src/uri.cpp +++ b/src/uri.cpp @@ -16,6 +16,11 @@ namespace Inkscape { +URI::URI() { + const gchar *in = ""; + _impl = Impl::create(xmlParseURI(in)); +} + URI::URI(const URI &uri) { uri._impl->reference(); _impl = uri._impl; @@ -25,6 +25,9 @@ namespace Inkscape { class URI { public: + /* Blank constructor */ + URI(); + /** * Copy constructor. */ diff --git a/src/util/Makefile_insert b/src/util/Makefile_insert index 4066ffd5d..7169fa8f7 100644 --- a/src/util/Makefile_insert +++ b/src/util/Makefile_insert @@ -1,6 +1,8 @@ ## Makefile.am fragment sourced by src/Makefile.am. ink_common_sources += \ + util/ziptool.h \ + util/ziptool.cpp \ util/accumulators.h \ util/compose.hpp \ util/copy.h \ diff --git a/src/dom/util/ziptool.cpp b/src/util/ziptool.cpp index cf024008f..cf024008f 100644 --- a/src/dom/util/ziptool.cpp +++ b/src/util/ziptool.cpp diff --git a/src/dom/util/ziptool.h b/src/util/ziptool.h index dbae8ac60..dbae8ac60 100644 --- a/src/dom/util/ziptool.h +++ b/src/util/ziptool.h |
