OSDN Git Service

add tstools.
[rec10/rec10-git.git] / tstools / DtsEdit / src / gpac / svg_types.h
diff --git a/tstools/DtsEdit/src/gpac/svg_types.h b/tstools/DtsEdit/src/gpac/svg_types.h
new file mode 100644 (file)
index 0000000..0697007
--- /dev/null
@@ -0,0 +1,887 @@
+/*\r
+ *                     GPAC - Multimedia Framework C SDK\r
+ *\r
+ *                     Authors: Cyril Concolato - Jean Le Feuvre\r
+ *                     Copyright (c) 2004-200X ENST\r
+ *                     All rights reserved\r
+ *\r
+ *  This file is part of GPAC / Scene Graph sub-project\r
+ *\r
+ *  GPAC is free software; you can redistribute it and/or modify\r
+ *  it under the terms of the GNU Lesser General Public License as published by\r
+ *  the Free Software Foundation; either version 2, or (at your option)\r
+ *  any later version.\r
+ *   \r
+ *  GPAC is distributed in the hope that it will be useful,\r
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
+ *  GNU Lesser General Public License for more details.\r
+ *   \r
+ *  You should have received a copy of the GNU Lesser General Public\r
+ *  License along with this library; see the file COPYING.  If not, write to\r
+ *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. \r
+ *\r
+ */\r
+\r
+#ifndef _GF_SVG_SVG_TYPES_H_\r
+#define _GF_SVG_SVG_TYPES_H_\r
+\r
+#ifdef __cplusplus\r
+extern "C" {\r
+#endif\r
+\r
+#include <gpac/path2d.h>\r
+\r
+\r
+\r
+/* Attributes in SVG can be accessed using a GF_FieldInfo structure \r
+   like it is done in the BIFS part of the implementation:\r
+\r
+       fieldIndex:             attribute tag to identify the attribute in the element in the case of dynamic alloc (default)\r
+                    or index of the attribute in the element in the case of static allocation of attributes\r
+\r
+       fieldType:              attribute data type as in the enumeration below\r
+       \r
+       name:                   attribute name (WARNING: this may be NULL)\r
+\r
+       far_ptr:                pointer to the actual data with one of the type given in this file\r
+\r
+       NDTType:                unused in SVG\r
+       eventType:              unused in SVG\r
+       on_event_in:    unused in SVG \r
+*/\r
+\r
+/* SVG attribute types */\r
+enum {\r
+       SVG_Unknown_datatype                                    = 0,\r
+\r
+       /* keyword enum types */\r
+       XML_Space_datatype,\r
+       XMLEV_Propagate_datatype,\r
+       XMLEV_DefaultAction_datatype,\r
+       XMLEV_Phase_datatype,\r
+       SVG_FillRule_datatype,\r
+       SVG_StrokeLineJoin_datatype,\r
+       SVG_StrokeLineCap_datatype,\r
+       SVG_FontStyle_datatype,\r
+       SVG_FontWeight_datatype,\r
+       SVG_FontVariant_datatype,\r
+       SVG_TextAnchor_datatype,\r
+       SVG_TransformType_datatype, \r
+       SVG_Display_datatype, \r
+       SVG_Visibility_datatype,\r
+       SVG_Overflow_datatype,\r
+       SVG_ZoomAndPan_datatype,\r
+       SVG_DisplayAlign_datatype,\r
+       SVG_PointerEvents_datatype,\r
+       SVG_RenderingHint_datatype,\r
+       SVG_VectorEffect_datatype,\r
+       SVG_PlaybackOrder_datatype,\r
+       SVG_TimelineBegin_datatype,\r
+       SVG_GradientUnit_datatype,\r
+       SVG_InitialVisibility_datatype,\r
+       SVG_FocusHighlight_datatype,\r
+       SVG_Overlay_datatype,\r
+       SVG_TransformBehavior_datatype,\r
+       SVG_SpreadMethod_datatype,\r
+       SVG_TextAlign_datatype,\r
+       SVG_Focusable_datatype,\r
+       SMIL_SyncBehavior_datatype,\r
+       SMIL_SyncTolerance_datatype,\r
+       SMIL_AttributeType_datatype,\r
+       SMIL_CalcMode_datatype,\r
+       SMIL_Additive_datatype,\r
+       SMIL_Accumulate_datatype,\r
+       SMIL_Restart_datatype,\r
+       SMIL_Fill_datatype,     \r
+\r
+       SVG_LAST_U8_PROPERTY,\r
+\r
+       DOM_String_datatype,\r
+       DOM_StringList_datatype,\r
+\r
+       XMLEV_Event_datatype,\r
+       XMLRI_datatype,\r
+       XMLRI_List_datatype,\r
+       XML_IDREF_datatype,\r
+\r
+       SMIL_KeyTimes_datatype,\r
+       SMIL_KeySplines_datatype,\r
+       SMIL_KeyPoints_datatype,\r
+       SMIL_Times_datatype,\r
+\r
+       /* animated (untyped) value */\r
+       SMIL_AnimateValue_datatype,\r
+       SMIL_AnimateValues_datatype,\r
+       SMIL_Duration_datatype,\r
+       SMIL_RepeatCount_datatype,\r
+       SMIL_AttributeName_datatype,\r
+\r
+       /* SVG Number */\r
+       SVG_Number_datatype,\r
+       SVG_FontSize_datatype,\r
+       SVG_Length_datatype,\r
+       SVG_Coordinate_datatype,\r
+       SVG_Rotate_datatype,\r
+\r
+       /* List of */\r
+       SVG_Numbers_datatype,\r
+       SVG_Points_datatype,\r
+       SVG_Coordinates_datatype,\r
+\r
+       /*all other types*/\r
+       SVG_Boolean_datatype,\r
+       SVG_Color_datatype,\r
+       SVG_Paint_datatype,\r
+       SVG_PathData_datatype,\r
+       SVG_FontFamily_datatype,\r
+       SVG_ID_datatype,\r
+\r
+       SVG_StrokeDashArray_datatype,\r
+       SVG_PreserveAspectRatio_datatype,\r
+       SVG_ViewBox_datatype,\r
+       SVG_GradientOffset_datatype,\r
+       SVG_Focus_datatype,\r
+       SVG_Clock_datatype,\r
+       SVG_ContentType_datatype,\r
+       SVG_LanguageID_datatype,\r
+\r
+       /* Matrix related types */\r
+       SVG_Transform_datatype,\r
+       SVG_Transform_Translate_datatype,\r
+       SVG_Transform_Scale_datatype,\r
+       SVG_Transform_SkewX_datatype,\r
+       SVG_Transform_SkewY_datatype,\r
+       SVG_Transform_Rotate_datatype,\r
+       SVG_Motion_datatype,\r
+\r
+       /*LASeR types*/\r
+       LASeR_Choice_datatype,\r
+       LASeR_Size_datatype,\r
+};\r
+\r
+/* Definition of SVG base data types */\r
+typedef char *DOM_String;\r
+typedef DOM_String SVG_String;\r
+typedef DOM_String SVG_ContentType;\r
+typedef DOM_String SVG_LanguageID;\r
+typedef DOM_String SVG_TextContent;\r
+\r
+/* types not yet handled properly, i.e. for the moment using strings */\r
+typedef DOM_String SVG_ID;\r
+typedef DOM_String SVG_LinkTarget;\r
+typedef DOM_String SVG_GradientOffset;\r
+\r
+typedef Double SVG_Clock;\r
+\r
+typedef GF_List *ListOfXXX;\r
+typedef GF_List *SVG_Numbers;\r
+typedef GF_List *SVG_Coordinates;\r
+typedef GF_List        *SVG_FeatureList;\r
+typedef GF_List        *SVG_ExtensionList;\r
+typedef GF_List        *SVG_FormatList;\r
+typedef GF_List        *SVG_ListOfIRI;\r
+typedef GF_List        *SVG_LanguageIDs;\r
+typedef GF_List        *SVG_FontList;\r
+typedef GF_List *SVG_TransformList;\r
+typedef GF_List *SVG_Points;\r
+typedef GF_List *SMIL_Times;\r
+typedef GF_List *SMIL_KeyTimes;\r
+typedef GF_List *SMIL_KeyPoints;\r
+/* Fixed between 0 and 1 */\r
+typedef GF_List *SMIL_KeySplines;\r
+\r
+typedef GF_Matrix2D SVG_Motion;\r
+\r
+/* SMIL Anim types */\r
+typedef struct {\r
+       /*field type*/\r
+       u32 type;\r
+       /*field pointer*/\r
+       void *field_ptr;\r
+       /*attribute name for textual parsing*/\r
+       char *name;\r
+       /*attribute tag for live transcoding*/\r
+       u32 tag;\r
+} SMIL_AttributeName;\r
+\r
+enum {\r
+       /*clock time*/\r
+       GF_SMIL_TIME_CLOCK                      = 0,\r
+       /*wallclock time*/\r
+       GF_SMIL_TIME_WALLCLOCK          = 1,\r
+       /*resolved time of an event, discarded when restarting animation.*/\r
+       GF_SMIL_TIME_EVENT_RESOLVED     = 2,\r
+       /*event time*/\r
+       GF_SMIL_TIME_EVENT                      = 3,\r
+       /*indefinite time*/\r
+       GF_SMIL_TIME_INDEFINITE         = 4,\r
+};\r
+\r
+#define GF_SMIL_TIME_IS_CLOCK(v) (v<=GF_SMIL_TIME_EVENT_RESOLVED)\r
+#define GF_SMIL_TIME_IS_SPECIFIED_CLOCK(v) (v<GF_SMIL_TIME_EVENT_RESOLVED)\r
+\r
+typedef struct\r
+{\r
+       u32 type;\r
+       /*for accessKey and mouse button, or repeatCount when the event is a SMIL repeat */\r
+       u32 parameter;\r
+} XMLEV_Event;\r
+\r
+typedef struct {\r
+       /* Type of timing value*/\r
+       u8 type;\r
+       /* in case of syncbase, event, repeat value: this is the pointer to the source of the event */\r
+       GF_Node *element; \r
+       /* id of the element before resolution of the pointer to the element */\r
+       char *element_id; \r
+       /* listener associated with event */\r
+       GF_Node *listener; \r
+\r
+       /* event type and parameter */\r
+       XMLEV_Event event; \r
+       /*set if event is \r
+               begin rather than beginEvent,\r
+               end rather than endEvent,\r
+               repeat rather than repeatEvent */\r
+       Bool is_absolute_event;\r
+       /*clock offset (absolute or relative to event)*/\r
+       Double clock;\r
+\r
+} SMIL_Time;\r
+\r
+enum {\r
+       SMIL_DURATION_AUTO  = 0,\r
+       SMIL_DURATION_INDEFINITE,\r
+       SMIL_DURATION_MEDIA,\r
+       SMIL_DURATION_NONE,\r
+       SMIL_DURATION_DEFINED,\r
+};\r
+typedef struct {\r
+       u8 type;\r
+       Double clock_value;\r
+} SMIL_Duration;\r
+\r
+enum {\r
+       SMIL_RESTART_ALWAYS = 0,\r
+       SMIL_RESTART_NEVER,\r
+       SMIL_RESTART_WHENNOTACTIVE,\r
+};\r
+typedef u8 SMIL_Restart;\r
+\r
+enum {\r
+       SMIL_FILL_FREEZE=0,\r
+       SMIL_FILL_REMOVE,\r
+       \r
+};\r
+typedef u8 SMIL_Fill;\r
+\r
+enum {\r
+       SMIL_REPEATCOUNT_INDEFINITE  = 0,\r
+       SMIL_REPEATCOUNT_DEFINED         = 1,\r
+       /* used only for static allocation of SVG attributes */\r
+       SMIL_REPEATCOUNT_UNSPECIFIED = 2\r
+};\r
+typedef struct {\r
+       u8 type;\r
+       Fixed count;\r
+} SMIL_RepeatCount;\r
+\r
+typedef struct {\r
+       u8 type;\r
+       void *value;\r
+} SMIL_AnimateValue;\r
+\r
+typedef struct {\r
+       u8 type;\r
+       GF_List *values;\r
+} SMIL_AnimateValues;\r
+\r
+enum {\r
+       SMIL_ADDITIVE_REPLACE = 0,\r
+       SMIL_ADDITIVE_SUM\r
+}; \r
+typedef u8 SMIL_Additive;\r
+\r
+enum {\r
+       SMIL_ACCUMULATE_NONE = 0,\r
+       SMIL_ACCUMULATE_SUM\r
+}; \r
+typedef u8 SMIL_Accumulate;\r
+\r
+enum {\r
+       /*WARNING: default value is linear, order changed for LASeR coding*/\r
+       SMIL_CALCMODE_DISCRETE = 0,\r
+       SMIL_CALCMODE_LINEAR,\r
+       SMIL_CALCMODE_PACED,\r
+       SMIL_CALCMODE_SPLINE\r
+};\r
+typedef u8 SMIL_CalcMode;\r
+/* end of SMIL Anim types */\r
+\r
+enum {\r
+       XMLRI_ELEMENTID = 0,\r
+       XMLRI_STRING,\r
+       XMLRI_STREAMID\r
+};\r
+typedef struct __xml_ri {\r
+       u8 type;\r
+       char *string;\r
+       void *target;\r
+       u32 lsr_stream_id;\r
+} XMLRI;\r
+\r
+/*the same structure is used to watch for IDREF changes (LASeR node replace)*/\r
+typedef struct __xml_ri XML_IDREF;\r
+\r
+enum\r
+{\r
+       SVG_FOCUS_AUTO = 0, \r
+       SVG_FOCUS_SELF, \r
+       SVG_FOCUS_IRI, \r
+};\r
+\r
+typedef struct\r
+{\r
+       u8 type;\r
+       XMLRI target;\r
+} SVG_Focus;\r
+\r
+enum {\r
+       SVG_FONTFAMILY_INHERIT = 0,\r
+       SVG_FONTFAMILY_VALUE\r
+};\r
+\r
+typedef struct {\r
+       u8 type;\r
+       SVG_String value;\r
+} SVG_FontFamily;\r
+\r
+enum {\r
+       SVG_FONTSTYLE_INHERIT = 0,\r
+       SVG_FONTSTYLE_ITALIC = 1,  \r
+       SVG_FONTSTYLE_NORMAL = 2,\r
+       SVG_FONTSTYLE_OBLIQUE = 3\r
+}; \r
+typedef u8 SVG_FontStyle;\r
+\r
+/*the values are chosen to match LASeR code points*/\r
+enum {\r
+       SVG_PATHCOMMAND_M = 3,\r
+       SVG_PATHCOMMAND_L = 2,\r
+       SVG_PATHCOMMAND_C = 0,\r
+       SVG_PATHCOMMAND_S = 5,\r
+       SVG_PATHCOMMAND_Q = 4,\r
+       SVG_PATHCOMMAND_T = 6,\r
+       SVG_PATHCOMMAND_A = 20,\r
+       SVG_PATHCOMMAND_Z = 8\r
+};\r
+\r
+#define USE_GF_PATH 1\r
+\r
+#if USE_GF_PATH\r
+typedef GF_Path SVG_PathData;\r
+#else\r
+typedef struct {\r
+       GF_List *commands;\r
+       GF_List *points;\r
+} SVG_PathData;\r
+#endif\r
+\r
+typedef struct {\r
+       Fixed x, y;\r
+} SVG_Point;\r
+\r
+typedef struct {\r
+       Fixed x, y, angle;\r
+} SVG_Point_Angle;\r
+\r
+typedef struct {\r
+       Bool is_set;\r
+       Fixed x, y, width, height;\r
+} SVG_ViewBox;\r
+\r
+typedef Bool SVG_Boolean;\r
+\r
+/*WARNING - THESE ARE PATH FLAGS, CHECK IF WORKING*/\r
+enum {\r
+       SVG_FILLRULE_EVENODD= 0,\r
+       SVG_FILLRULE_NONZERO,\r
+       SVG_FILLRULE_INHERIT\r
+};\r
+typedef u8 SVG_FillRule;\r
+       \r
+enum {\r
+       SVG_STROKELINEJOIN_MITER = GF_LINE_JOIN_MITER_SVG,\r
+       SVG_STROKELINEJOIN_ROUND = GF_LINE_JOIN_ROUND,\r
+       SVG_STROKELINEJOIN_BEVEL = GF_LINE_JOIN_BEVEL,\r
+       SVG_STROKELINEJOIN_INHERIT = 100\r
+};\r
+typedef u8 SVG_StrokeLineJoin;\r
+\r
+/* Warning: GPAC naming is not the same as SVG naming for line cap Flat = butt and Butt = square*/\r
+enum {\r
+       SVG_STROKELINECAP_BUTT = GF_LINE_CAP_FLAT,\r
+       SVG_STROKELINECAP_ROUND = GF_LINE_CAP_ROUND,\r
+       SVG_STROKELINECAP_SQUARE = GF_LINE_CAP_SQUARE,\r
+       SVG_STROKELINECAP_INHERIT = 100\r
+};\r
+typedef u8 SVG_StrokeLineCap;\r
+\r
+enum {\r
+       SVG_OVERFLOW_INHERIT    = 0,\r
+       SVG_OVERFLOW_VISIBLE    = 1,\r
+       SVG_OVERFLOW_HIDDEN             = 2,\r
+       SVG_OVERFLOW_SCROLL             = 3,\r
+       SVG_OVERFLOW_AUTO               = 4\r
+};\r
+typedef u8 SVG_Overflow;\r
+\r
+enum {\r
+       SVG_COLOR_RGBCOLOR = 0,\r
+       SVG_COLOR_INHERIT,\r
+       SVG_COLOR_CURRENTCOLOR,\r
+       SVG_COLOR_ACTIVE_BORDER, /*Active window border*/\r
+       SVG_COLOR_ACTIVE_CAPTION, /*Active window caption. */\r
+       SVG_COLOR_APP_WORKSPACE, /*Background color of multiple document interface. */\r
+       SVG_COLOR_BACKGROUND, /*Desktop background. */\r
+       SVG_COLOR_BUTTON_FACE, /* Face color for three-dimensional display elements. */\r
+       SVG_COLOR_BUTTON_HIGHLIGHT, /* Dark shadow for three-dimensional display elements (for edges facing away from the light source). */\r
+       SVG_COLOR_BUTTON_SHADOW, /* Shadow color for three-dimensional display elements. */\r
+       SVG_COLOR_BUTTON_TEXT, /*Text on push buttons. */\r
+       SVG_COLOR_CAPTION_TEXT, /* Text in caption, size box, and scrollbar arrow box. */\r
+       SVG_COLOR_GRAY_TEXT, /* Disabled ('grayed') text. */\r
+       SVG_COLOR_HIGHLIGHT, /* Item(s) selected in a control. */\r
+       SVG_COLOR_HIGHLIGHT_TEXT, /*Text of item(s) selected in a control. */\r
+       SVG_COLOR_INACTIVE_BORDER, /* Inactive window border. */\r
+       SVG_COLOR_INACTIVE_CAPTION, /* Inactive window caption. */\r
+       SVG_COLOR_INACTIVE_CAPTION_TEXT, /*Color of text in an inactive caption. */\r
+       SVG_COLOR_INFO_BACKGROUND, /* Background color for tooltip controls. */\r
+       SVG_COLOR_INFO_TEXT,  /*Text color for tooltip controls. */\r
+       SVG_COLOR_MENU, /*Menu background. */\r
+       SVG_COLOR_MENU_TEXT, /* Text in menus. */\r
+       SVG_COLOR_SCROLLBAR, /* Scroll bar gray area. */\r
+       SVG_COLOR_3D_DARK_SHADOW, /* Dark shadow for three-dimensional display elements. */\r
+       SVG_COLOR_3D_FACE, /* Face color for three-dimensional display elements. */\r
+       SVG_COLOR_3D_HIGHLIGHT, /* Highlight color for three-dimensional display elements. */\r
+       SVG_COLOR_3D_LIGHT_SHADOW, /* Light color for three-dimensional display elements (for edges facing the light source). */\r
+       SVG_COLOR_3D_SHADOW, /* Dark shadow for three-dimensional display elements. */\r
+       SVG_COLOR_WINDOW, /* Window background. */\r
+       SVG_COLOR_WINDOW_FRAME, /* Window frame. */\r
+       SVG_COLOR_WINDOW_TEXT /* Text in windows.*/\r
+};\r
+\r
+typedef struct {\r
+       u8 type;\r
+       Fixed red, green, blue;\r
+} SVG_Color;\r
+\r
+enum {\r
+       SVG_PAINT_NONE          = 0,\r
+       SVG_PAINT_COLOR         = 1,\r
+       SVG_PAINT_URI           = 2,\r
+       SVG_PAINT_INHERIT       = 3\r
+};\r
+\r
+typedef struct {\r
+       u8 type;\r
+       SVG_Color color;\r
+       XMLRI iri;\r
+} SVG_Paint, SVG_SVGColor;\r
+\r
+enum {\r
+       SVG_NUMBER_VALUE                = 0,\r
+       SVG_NUMBER_PERCENTAGE   = 1,\r
+       SVG_NUMBER_EMS                  = 2,\r
+       SVG_NUMBER_EXS                  = 3,\r
+       SVG_NUMBER_PX                   = 4,\r
+       SVG_NUMBER_CM                   = 5,\r
+       SVG_NUMBER_MM                   = 6,\r
+       SVG_NUMBER_IN                   = 7,\r
+       SVG_NUMBER_PT                   = 8,\r
+       SVG_NUMBER_PC                   = 9,\r
+       SVG_NUMBER_INHERIT              = 10,\r
+       SVG_NUMBER_AUTO                 = 11,\r
+       SVG_NUMBER_AUTO_REVERSE = 12\r
+};\r
+\r
+typedef struct {\r
+       u8 type;\r
+       Fixed value;\r
+} SVG_Number, \r
+  SVG_FontSize, \r
+  SVG_Length, \r
+  SVG_Coordinate, \r
+  SVG_Rotate;\r
+\r
+typedef struct {\r
+       u8 is_ref;\r
+       GF_Matrix2D mat;\r
+} SVG_Transform;\r
+\r
+enum {\r
+       SVG_TRANSFORM_MATRIX    = 0,\r
+       SVG_TRANSFORM_TRANSLATE = 1,\r
+       SVG_TRANSFORM_SCALE             = 2,\r
+       SVG_TRANSFORM_ROTATE    = 3,\r
+       SVG_TRANSFORM_SKEWX             = 4,\r
+       SVG_TRANSFORM_SKEWY             = 5\r
+};\r
+\r
+typedef u8 SVG_TransformType; \r
+\r
+enum {\r
+       SVG_FONTWEIGHT_100 = 0, \r
+       SVG_FONTWEIGHT_200,\r
+       SVG_FONTWEIGHT_300, \r
+       SVG_FONTWEIGHT_400,\r
+       SVG_FONTWEIGHT_500,\r
+       SVG_FONTWEIGHT_600,\r
+       SVG_FONTWEIGHT_700,\r
+       SVG_FONTWEIGHT_800,\r
+       SVG_FONTWEIGHT_900,\r
+       SVG_FONTWEIGHT_BOLD, \r
+       SVG_FONTWEIGHT_BOLDER, \r
+       SVG_FONTWEIGHT_INHERIT,\r
+       SVG_FONTWEIGHT_LIGHTER, \r
+       SVG_FONTWEIGHT_NORMAL\r
+};\r
+typedef u8 SVG_FontWeight;\r
+\r
+enum {\r
+       SVG_FONTVARIANT_INHERIT         = 0,\r
+       SVG_FONTVARIANT_NORMAL          = 1,\r
+       SVG_FONTVARIANT_SMALLCAPS       = 2\r
+};\r
+typedef u8 SVG_FontVariant;\r
+\r
+enum {\r
+       SVG_VISIBILITY_HIDDEN   = 0,\r
+       SVG_VISIBILITY_INHERIT  = 1,\r
+       SVG_VISIBILITY_VISIBLE  = 2,\r
+       SVG_VISIBILITY_COLLAPSE = 3\r
+};\r
+typedef u8 SVG_Visibility;\r
+\r
+enum {\r
+       SVG_DISPLAY_INHERIT = 0,\r
+       SVG_DISPLAY_NONE    = 1,\r
+       SVG_DISPLAY_INLINE  = 2,\r
+       SVG_DISPLAY_BLOCK,\r
+       SVG_DISPLAY_LIST_ITEM,\r
+       SVG_DISPLAY_RUN_IN,\r
+       SVG_DISPLAY_COMPACT,\r
+       SVG_DISPLAY_MARKER,\r
+       SVG_DISPLAY_TABLE,\r
+       SVG_DISPLAY_INLINE_TABLE,\r
+       SVG_DISPLAY_TABLE_ROW_GROUP,\r
+       SVG_DISPLAY_TABLE_HEADER_GROUP,\r
+       SVG_DISPLAY_TABLE_FOOTER_GROUP,\r
+       SVG_DISPLAY_TABLE_ROW,\r
+       SVG_DISPLAY_TABLE_COLUMN_GROUP,\r
+       SVG_DISPLAY_TABLE_COLUMN,\r
+       SVG_DISPLAY_TABLE_CELL,\r
+       SVG_DISPLAY_TABLE_CAPTION\r
+};\r
+typedef u8 SVG_Display;\r
+\r
+enum {\r
+       SVG_DISPLAYALIGN_INHERIT        = 0,\r
+       SVG_DISPLAYALIGN_AUTO           = 1,\r
+       SVG_DISPLAYALIGN_AFTER          = 2,\r
+       SVG_DISPLAYALIGN_BEFORE         = 3,\r
+       SVG_DISPLAYALIGN_CENTER         = 4\r
+};\r
+typedef u8 SVG_DisplayAlign;\r
+\r
+enum {\r
+       SVG_TEXTALIGN_INHERIT   = 0,\r
+       SVG_TEXTALIGN_START             = 1,\r
+       SVG_TEXTALIGN_CENTER    = 2,\r
+       SVG_TEXTALIGN_END               = 3\r
+};\r
+typedef u8 SVG_TextAlign;\r
+\r
+enum {\r
+       SVG_STROKEDASHARRAY_NONE        = 0,\r
+       SVG_STROKEDASHARRAY_INHERIT = 1,\r
+       SVG_STROKEDASHARRAY_ARRAY       = 2\r
+};\r
+\r
+typedef struct {\r
+       u32 count;\r
+       Fixed* vals;\r
+} Array;\r
+\r
+typedef struct {\r
+       u8 type;\r
+       Array array;\r
+} SVG_StrokeDashArray;\r
+\r
+enum {\r
+       SVG_TEXTANCHOR_INHERIT  = 0,\r
+       SVG_TEXTANCHOR_END              = 1,\r
+       SVG_TEXTANCHOR_MIDDLE   = 2,\r
+       SVG_TEXTANCHOR_START    = 3\r
+};\r
+typedef u8 SVG_TextAnchor;\r
+\r
+enum {\r
+       SVG_ANGLETYPE_UNKNOWN           = 0,\r
+       SVG_ANGLETYPE_UNSPECIFIED       = 1,\r
+       SVG_ANGLETYPE_DEG                       = 2,\r
+       SVG_ANGLETYPE_RAD                       = 3,\r
+       SVG_ANGLETYPE_GRAD                      = 4\r
+};\r
+\r
+enum {\r
+       SVG_UNIT_TYPE_UNKNOWN                   = 0,\r
+       SVG_UNIT_TYPE_USERSPACEONUSE    = 1,\r
+       SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2\r
+};\r
+\r
+enum {\r
+       // Alignment Types\r
+       SVG_PRESERVEASPECTRATIO_NONE = 1,\r
+       SVG_PRESERVEASPECTRATIO_XMINYMIN = 2,\r
+       SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3,\r
+       SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4,\r
+       SVG_PRESERVEASPECTRATIO_XMINYMID = 5,\r
+       SVG_PRESERVEASPECTRATIO_XMIDYMID = 0, //default\r
+       SVG_PRESERVEASPECTRATIO_XMAXYMID = 6,\r
+       SVG_PRESERVEASPECTRATIO_XMINYMAX = 7,\r
+       SVG_PRESERVEASPECTRATIO_XMIDYMAX = 8,\r
+       SVG_PRESERVEASPECTRATIO_XMAXYMAX = 9\r
+};\r
+\r
+enum {\r
+       // Meet_or_slice Types\r
+       SVG_MEETORSLICE_MEET  = 0,\r
+       SVG_MEETORSLICE_SLICE = 1\r
+};\r
+\r
+typedef struct {\r
+       Bool defer;\r
+       u8 align;\r
+       u8 meetOrSlice;\r
+} SVG_PreserveAspectRatio; \r
+\r
+enum {\r
+       SVG_ZOOMANDPAN_DISABLE = 0,\r
+       SVG_ZOOMANDPAN_MAGNIFY,\r
+};\r
+\r
+typedef u8 SVG_ZoomAndPan;\r
+\r
+enum {\r
+       LENGTHADJUST_UNKNOWN   = 0,\r
+       LENGTHADJUST_SPACING     = 1,\r
+       LENGTHADJUST_SPACINGANDGLYPHS     = 2\r
+};\r
+\r
+enum {\r
+    // textPath Method Types\r
+       TEXTPATH_METHODTYPE_UNKNOWN   = 0,\r
+       TEXTPATH_METHODTYPE_ALIGN     = 1,\r
+       TEXTPATH_METHODTYPE_STRETCH     = 2\r
+};\r
+enum {\r
+    // textPath Spacing Types\r
+       TEXTPATH_SPACINGTYPE_UNKNOWN   = 0,\r
+       TEXTPATH_SPACINGTYPE_AUTO     = 1,\r
+       TEXTPATH_SPACINGTYPE_EXACT     = 2\r
+};\r
+\r
+enum {\r
+    // Marker Unit Types\r
+       SVG_MARKERUNITS_UNKNOWN        = 0,\r
+       SVG_MARKERUNITS_USERSPACEONUSE = 1,\r
+       SVG_MARKERUNITS_STROKEWIDTH    = 2\r
+};\r
+enum {\r
+    // Marker Orientation Types\r
+       SVG_MARKER_ORIENT_UNKNOWN      = 0,\r
+       SVG_MARKER_ORIENT_AUTO         = 1,\r
+       SVG_MARKER_ORIENT_ANGLE        = 2\r
+};\r
+\r
+enum {\r
+    // Spread Method Types\r
+       SVG_SPREADMETHOD_UNKNOWN = 0,\r
+       SVG_SPREADMETHOD_PAD     = 1,\r
+       SVG_SPREADMETHOD_REFLECT = 2,\r
+       SVG_SPREADMETHOD_REPEAT  = 3\r
+};\r
+\r
+enum {\r
+       SVG_POINTEREVENTS_INHERIT                       = 0,\r
+       SVG_POINTEREVENTS_ALL                           = 1,\r
+       SVG_POINTEREVENTS_FILL                          = 2,\r
+       SVG_POINTEREVENTS_NONE                          = 3,\r
+       SVG_POINTEREVENTS_PAINTED                       = 4,\r
+       SVG_POINTEREVENTS_STROKE                        = 5,\r
+       SVG_POINTEREVENTS_VISIBLE                       = 6,\r
+       SVG_POINTEREVENTS_VISIBLEFILL           = 7,\r
+       SVG_POINTEREVENTS_VISIBLEPAINTED        = 8,\r
+       SVG_POINTEREVENTS_VISIBLESTROKE         = 9,\r
+       SVG_POINTEREVENTS_BOUNDINGBOX           = 10\r
+};\r
+typedef u8 SVG_PointerEvents;\r
+\r
+enum {\r
+       SVG_RENDERINGHINT_INHERIT                               = 0,\r
+       SVG_RENDERINGHINT_AUTO                                  = 1,\r
+       SVG_RENDERINGHINT_OPTIMIZEQUALITY               = 2,\r
+       SVG_RENDERINGHINT_OPTIMIZESPEED                 = 3,\r
+       SVG_RENDERINGHINT_OPTIMIZELEGIBILITY    = 4,\r
+       SVG_RENDERINGHINT_CRISPEDGES                    = 5,\r
+       SVG_RENDERINGHINT_GEOMETRICPRECISION    = 6,\r
+\r
+};\r
+typedef u8 SVG_RenderingHint;\r
+\r
+enum {\r
+       SVG_VECTOREFFECT_INHERIT                        = 0,\r
+       SVG_VECTOREFFECT_NONE                           = 1,\r
+       SVG_VECTOREFFECT_NONSCALINGSTROKE       = 2,\r
+};\r
+typedef u8 SVG_VectorEffect;\r
+\r
+enum {\r
+       XMLEVENT_PROPAGATE_CONTINUE = 0,\r
+       XMLEVENT_PROPAGATE_STOP         = 1\r
+};\r
+typedef u8 XMLEV_Propagate;\r
+\r
+enum {\r
+       XMLEVENT_DEFAULTACTION_CANCEL = 0,\r
+       XMLEVENT_DEFAULTACTION_PERFORM,\r
+       \r
+};\r
+typedef u8 XMLEV_DefaultAction;\r
+\r
+enum {\r
+       XMLEVENT_PHASE_DEFAULT  = 0,\r
+       XMLEVENT_PHASE_CAPTURE  = 1\r
+};\r
+typedef u8 XMLEV_Phase;\r
+\r
+enum {\r
+       SMIL_SYNCBEHAVIOR_INHERIT               = 0,\r
+       /*LASeR order*/\r
+       SMIL_SYNCBEHAVIOR_CANSLIP,\r
+       SMIL_SYNCBEHAVIOR_DEFAULT,\r
+       SMIL_SYNCBEHAVIOR_INDEPENDENT,\r
+       SMIL_SYNCBEHAVIOR_LOCKED,\r
+};\r
+typedef u8 SMIL_SyncBehavior;\r
+\r
+enum {\r
+       SMIL_SYNCTOLERANCE_INHERIT              = 0,\r
+       SMIL_SYNCTOLERANCE_DEFAULT              = 1,\r
+       SMIL_SYNCTOLERANCE_VALUE                = 2\r
+};\r
+\r
+typedef struct {\r
+       u8 type;\r
+       SVG_Clock value;\r
+} SMIL_SyncTolerance;\r
+\r
+enum {\r
+       SMIL_ATTRIBUTETYPE_CSS  = 0,\r
+       SMIL_ATTRIBUTETYPE_XML,\r
+       SMIL_ATTRIBUTETYPE_AUTO,\r
+};\r
+typedef u8 SMIL_AttributeType;\r
+\r
+enum {\r
+       SVG_PLAYBACKORDER_ALL                   = 0,\r
+       SVG_PLAYBACKORDER_FORWARDONLY   = 1,\r
+};\r
+typedef u8 SVG_PlaybackOrder;\r
+\r
+enum {\r
+       SVG_TIMELINEBEGIN_ONLOAD=0,\r
+       SVG_TIMELINEBEGIN_ONSTART,\r
+};\r
+typedef u8 SVG_TimelineBegin;\r
+\r
+enum {\r
+       XML_SPACE_DEFAULT               = 0,\r
+       XML_SPACE_PRESERVE              = 1\r
+};\r
+typedef u8 XML_Space;\r
+\r
+\r
+enum {\r
+       SVG_GRADIENTUNITS_OBJECT = 0,\r
+       SVG_GRADIENTUNITS_USER = 1\r
+};\r
+typedef u8 SVG_GradientUnit;\r
+\r
+enum {\r
+       SVG_FOCUSHIGHLIGHT_AUTO = 0,\r
+       SVG_FOCUSHIGHLIGHT_NONE = 1\r
+};\r
+typedef u8 SVG_FocusHighlight;\r
+\r
+enum {\r
+       SVG_INITIALVISIBILTY_WHENSTARTED = 0,\r
+       SVG_INITIALVISIBILTY_ALWAYS              = 1\r
+};\r
+typedef u8 SVG_InitialVisibility;\r
+\r
+enum {\r
+       SVG_TRANSFORMBEHAVIOR_GEOMETRIC = 0,\r
+       SVG_TRANSFORMBEHAVIOR_PINNED,\r
+       SVG_TRANSFORMBEHAVIOR_PINNED180,\r
+       SVG_TRANSFORMBEHAVIOR_PINNED270,\r
+       SVG_TRANSFORMBEHAVIOR_PINNED90,\r
+};\r
+typedef u8 SVG_TransformBehavior;\r
+\r
+enum {\r
+       SVG_OVERLAY_NONE = 0,\r
+       SVG_OVERLAY_TOP,\r
+};\r
+typedef u8 SVG_Overlay;\r
+\r
+enum {\r
+       SVG_FOCUSABLE_AUTO = 0,\r
+       SVG_FOCUSABLE_TRUE,\r
+       SVG_FOCUSABLE_FALSE,\r
+};\r
+typedef u8 SVG_Focusable;\r
+\r
+\r
+enum {\r
+       SVG_SPREAD_PAD = 0,\r
+       SVG_SPREAD_REFLECT,\r
+       SVG_SPREAD_REPEAT,\r
+};\r
+typedef u8 SVG_SpreadMethod;\r
+\r
+enum {\r
+       LASeR_CHOICE_ALL   = 0,\r
+       LASeR_CHOICE_NONE  = 1,\r
+       LASeR_CHOICE_N     = 2\r
+};\r
+typedef u8 LASeR_Choice_enum;\r
+\r
+typedef struct {\r
+       u32 type;\r
+       u32 choice_index;\r
+} LASeR_Choice;\r
+\r
+typedef struct {\r
+       Fixed width, height;\r
+} LASeR_Size;\r
+\r
+\r
+#ifdef __cplusplus\r
+}\r
+#endif\r
+\r
+#endif /*_GF_SVG_SVG_TYPES_H_*/\r
+\r
+\r