From 4a4cc24ba8894b77eab1741ef5c6d36e45f7fe4e Mon Sep 17 00:00:00 2001 From: ishmal Date: Sun, 1 Jun 2008 19:07:48 +0000 Subject: [PATCH] Add enumerations for svg element types, and lookup table --- src/dom/svgreader.cpp | 440 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 440 insertions(+) diff --git a/src/dom/svgreader.cpp b/src/dom/svgreader.cpp index 1ec85bcca..205151dbf 100644 --- a/src/dom/svgreader.cpp +++ b/src/dom/svgreader.cpp @@ -90,6 +90,446 @@ void SVGReader::trace(char const *fmt, ...) //# P A R S I N G //######################################################################### + + +/*######################################################################### +## Types +#########################################################################*/ + +typedef enum +{ +/** + * Defines a hyperlink + */ +SVG_A_ELEMENT, +/** + * 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 + +} SVGElementType; + + + +/** + * Used for mapping name->enum and enum->name. For SVG element types. + */ +typedef struct +{ + const char *name; + int type; +} SVGElementTableEntry; + + + +SVGElementTableEntry svgElementTable[] = +{ + { "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 } + }; + + + + /** * Get the character at the position and record the fact */ -- 2.30.2