--- /dev/null
+/*\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