OSDN Git Service

stop using trunk directory in rectool
[rec10/rec10-git.git] / tstools / DtsEdit / src / gpac / svg_types.h
1 /*\r
2  *                      GPAC - Multimedia Framework C SDK\r
3  *\r
4  *                      Authors: Cyril Concolato - Jean Le Feuvre\r
5  *                      Copyright (c) 2004-200X ENST\r
6  *                      All rights reserved\r
7  *\r
8  *  This file is part of GPAC / Scene Graph sub-project\r
9  *\r
10  *  GPAC is free software; you can redistribute it and/or modify\r
11  *  it under the terms of the GNU Lesser General Public License as published by\r
12  *  the Free Software Foundation; either version 2, or (at your option)\r
13  *  any later version.\r
14  *   \r
15  *  GPAC is distributed in the hope that it will be useful,\r
16  *  but WITHOUT ANY WARRANTY; without even the implied warranty of\r
17  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
18  *  GNU Lesser General Public License for more details.\r
19  *   \r
20  *  You should have received a copy of the GNU Lesser General Public\r
21  *  License along with this library; see the file COPYING.  If not, write to\r
22  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. \r
23  *\r
24  */\r
25 \r
26 #ifndef _GF_SVG_SVG_TYPES_H_\r
27 #define _GF_SVG_SVG_TYPES_H_\r
28 \r
29 #ifdef __cplusplus\r
30 extern "C" {\r
31 #endif\r
32 \r
33 #include <gpac/path2d.h>\r
34 \r
35 \r
36 \r
37 /* Attributes in SVG can be accessed using a GF_FieldInfo structure \r
38    like it is done in the BIFS part of the implementation:\r
39 \r
40         fieldIndex:             attribute tag to identify the attribute in the element in the case of dynamic alloc (default)\r
41                      or index of the attribute in the element in the case of static allocation of attributes\r
42 \r
43         fieldType:              attribute data type as in the enumeration below\r
44         \r
45         name:                   attribute name (WARNING: this may be NULL)\r
46 \r
47         far_ptr:                pointer to the actual data with one of the type given in this file\r
48 \r
49         NDTType:                unused in SVG\r
50         eventType:              unused in SVG\r
51         on_event_in:    unused in SVG \r
52 */\r
53 \r
54 /* SVG attribute types */\r
55 enum {\r
56         SVG_Unknown_datatype                                    = 0,\r
57 \r
58         /* keyword enum types */\r
59         XML_Space_datatype,\r
60         XMLEV_Propagate_datatype,\r
61         XMLEV_DefaultAction_datatype,\r
62         XMLEV_Phase_datatype,\r
63         SVG_FillRule_datatype,\r
64         SVG_StrokeLineJoin_datatype,\r
65         SVG_StrokeLineCap_datatype,\r
66         SVG_FontStyle_datatype,\r
67         SVG_FontWeight_datatype,\r
68         SVG_FontVariant_datatype,\r
69         SVG_TextAnchor_datatype,\r
70         SVG_TransformType_datatype, \r
71         SVG_Display_datatype, \r
72         SVG_Visibility_datatype,\r
73         SVG_Overflow_datatype,\r
74         SVG_ZoomAndPan_datatype,\r
75         SVG_DisplayAlign_datatype,\r
76         SVG_PointerEvents_datatype,\r
77         SVG_RenderingHint_datatype,\r
78         SVG_VectorEffect_datatype,\r
79         SVG_PlaybackOrder_datatype,\r
80         SVG_TimelineBegin_datatype,\r
81         SVG_GradientUnit_datatype,\r
82         SVG_InitialVisibility_datatype,\r
83         SVG_FocusHighlight_datatype,\r
84         SVG_Overlay_datatype,\r
85         SVG_TransformBehavior_datatype,\r
86         SVG_SpreadMethod_datatype,\r
87         SVG_TextAlign_datatype,\r
88         SVG_Focusable_datatype,\r
89         SMIL_SyncBehavior_datatype,\r
90         SMIL_SyncTolerance_datatype,\r
91         SMIL_AttributeType_datatype,\r
92         SMIL_CalcMode_datatype,\r
93         SMIL_Additive_datatype,\r
94         SMIL_Accumulate_datatype,\r
95         SMIL_Restart_datatype,\r
96         SMIL_Fill_datatype,     \r
97 \r
98         SVG_LAST_U8_PROPERTY,\r
99 \r
100         DOM_String_datatype,\r
101         DOM_StringList_datatype,\r
102 \r
103         XMLEV_Event_datatype,\r
104         XMLRI_datatype,\r
105         XMLRI_List_datatype,\r
106         XML_IDREF_datatype,\r
107 \r
108         SMIL_KeyTimes_datatype,\r
109         SMIL_KeySplines_datatype,\r
110         SMIL_KeyPoints_datatype,\r
111         SMIL_Times_datatype,\r
112 \r
113         /* animated (untyped) value */\r
114         SMIL_AnimateValue_datatype,\r
115         SMIL_AnimateValues_datatype,\r
116         SMIL_Duration_datatype,\r
117         SMIL_RepeatCount_datatype,\r
118         SMIL_AttributeName_datatype,\r
119 \r
120         /* SVG Number */\r
121         SVG_Number_datatype,\r
122         SVG_FontSize_datatype,\r
123         SVG_Length_datatype,\r
124         SVG_Coordinate_datatype,\r
125         SVG_Rotate_datatype,\r
126 \r
127         /* List of */\r
128         SVG_Numbers_datatype,\r
129         SVG_Points_datatype,\r
130         SVG_Coordinates_datatype,\r
131 \r
132         /*all other types*/\r
133         SVG_Boolean_datatype,\r
134         SVG_Color_datatype,\r
135         SVG_Paint_datatype,\r
136         SVG_PathData_datatype,\r
137         SVG_FontFamily_datatype,\r
138         SVG_ID_datatype,\r
139 \r
140         SVG_StrokeDashArray_datatype,\r
141         SVG_PreserveAspectRatio_datatype,\r
142         SVG_ViewBox_datatype,\r
143         SVG_GradientOffset_datatype,\r
144         SVG_Focus_datatype,\r
145         SVG_Clock_datatype,\r
146         SVG_ContentType_datatype,\r
147         SVG_LanguageID_datatype,\r
148 \r
149         /* Matrix related types */\r
150         SVG_Transform_datatype,\r
151         SVG_Transform_Translate_datatype,\r
152         SVG_Transform_Scale_datatype,\r
153         SVG_Transform_SkewX_datatype,\r
154         SVG_Transform_SkewY_datatype,\r
155         SVG_Transform_Rotate_datatype,\r
156         SVG_Motion_datatype,\r
157 \r
158         /*LASeR types*/\r
159         LASeR_Choice_datatype,\r
160         LASeR_Size_datatype,\r
161 };\r
162 \r
163 /* Definition of SVG base data types */\r
164 typedef char *DOM_String;\r
165 typedef DOM_String SVG_String;\r
166 typedef DOM_String SVG_ContentType;\r
167 typedef DOM_String SVG_LanguageID;\r
168 typedef DOM_String SVG_TextContent;\r
169 \r
170 /* types not yet handled properly, i.e. for the moment using strings */\r
171 typedef DOM_String SVG_ID;\r
172 typedef DOM_String SVG_LinkTarget;\r
173 typedef DOM_String SVG_GradientOffset;\r
174 \r
175 typedef Double SVG_Clock;\r
176 \r
177 typedef GF_List *ListOfXXX;\r
178 typedef GF_List *SVG_Numbers;\r
179 typedef GF_List *SVG_Coordinates;\r
180 typedef GF_List *SVG_FeatureList;\r
181 typedef GF_List *SVG_ExtensionList;\r
182 typedef GF_List *SVG_FormatList;\r
183 typedef GF_List *SVG_ListOfIRI;\r
184 typedef GF_List *SVG_LanguageIDs;\r
185 typedef GF_List *SVG_FontList;\r
186 typedef GF_List *SVG_TransformList;\r
187 typedef GF_List *SVG_Points;\r
188 typedef GF_List *SMIL_Times;\r
189 typedef GF_List *SMIL_KeyTimes;\r
190 typedef GF_List *SMIL_KeyPoints;\r
191 /* Fixed between 0 and 1 */\r
192 typedef GF_List *SMIL_KeySplines;\r
193 \r
194 typedef GF_Matrix2D SVG_Motion;\r
195 \r
196 /* SMIL Anim types */\r
197 typedef struct {\r
198         /*field type*/\r
199         u32 type;\r
200         /*field pointer*/\r
201         void *field_ptr;\r
202         /*attribute name for textual parsing*/\r
203         char *name;\r
204         /*attribute tag for live transcoding*/\r
205         u32 tag;\r
206 } SMIL_AttributeName;\r
207 \r
208 enum {\r
209         /*clock time*/\r
210         GF_SMIL_TIME_CLOCK                      = 0,\r
211         /*wallclock time*/\r
212         GF_SMIL_TIME_WALLCLOCK          = 1,\r
213         /*resolved time of an event, discarded when restarting animation.*/\r
214         GF_SMIL_TIME_EVENT_RESOLVED     = 2,\r
215         /*event time*/\r
216         GF_SMIL_TIME_EVENT                      = 3,\r
217         /*indefinite time*/\r
218         GF_SMIL_TIME_INDEFINITE         = 4,\r
219 };\r
220 \r
221 #define GF_SMIL_TIME_IS_CLOCK(v) (v<=GF_SMIL_TIME_EVENT_RESOLVED)\r
222 #define GF_SMIL_TIME_IS_SPECIFIED_CLOCK(v) (v<GF_SMIL_TIME_EVENT_RESOLVED)\r
223 \r
224 typedef struct\r
225 {\r
226         u32 type;\r
227         /*for accessKey and mouse button, or repeatCount when the event is a SMIL repeat */\r
228         u32 parameter;\r
229 } XMLEV_Event;\r
230 \r
231 typedef struct {\r
232         /* Type of timing value*/\r
233         u8 type;\r
234         /* in case of syncbase, event, repeat value: this is the pointer to the source of the event */\r
235         GF_Node *element; \r
236         /* id of the element before resolution of the pointer to the element */\r
237         char *element_id; \r
238         /* listener associated with event */\r
239         GF_Node *listener; \r
240 \r
241         /* event type and parameter */\r
242         XMLEV_Event event; \r
243         /*set if event is \r
244                 begin rather than beginEvent,\r
245                 end rather than endEvent,\r
246                 repeat rather than repeatEvent */\r
247         Bool is_absolute_event;\r
248         /*clock offset (absolute or relative to event)*/\r
249         Double clock;\r
250 \r
251 } SMIL_Time;\r
252 \r
253 enum {\r
254         SMIL_DURATION_AUTO  = 0,\r
255         SMIL_DURATION_INDEFINITE,\r
256         SMIL_DURATION_MEDIA,\r
257         SMIL_DURATION_NONE,\r
258         SMIL_DURATION_DEFINED,\r
259 };\r
260 typedef struct {\r
261         u8 type;\r
262         Double clock_value;\r
263 } SMIL_Duration;\r
264 \r
265 enum {\r
266         SMIL_RESTART_ALWAYS = 0,\r
267         SMIL_RESTART_NEVER,\r
268         SMIL_RESTART_WHENNOTACTIVE,\r
269 };\r
270 typedef u8 SMIL_Restart;\r
271 \r
272 enum {\r
273         SMIL_FILL_FREEZE=0,\r
274         SMIL_FILL_REMOVE,\r
275         \r
276 };\r
277 typedef u8 SMIL_Fill;\r
278 \r
279 enum {\r
280         SMIL_REPEATCOUNT_INDEFINITE  = 0,\r
281         SMIL_REPEATCOUNT_DEFINED         = 1,\r
282         /* used only for static allocation of SVG attributes */\r
283         SMIL_REPEATCOUNT_UNSPECIFIED = 2\r
284 };\r
285 typedef struct {\r
286         u8 type;\r
287         Fixed count;\r
288 } SMIL_RepeatCount;\r
289 \r
290 typedef struct {\r
291         u8 type;\r
292         void *value;\r
293 } SMIL_AnimateValue;\r
294 \r
295 typedef struct {\r
296         u8 type;\r
297         GF_List *values;\r
298 } SMIL_AnimateValues;\r
299 \r
300 enum {\r
301         SMIL_ADDITIVE_REPLACE = 0,\r
302         SMIL_ADDITIVE_SUM\r
303 }; \r
304 typedef u8 SMIL_Additive;\r
305 \r
306 enum {\r
307         SMIL_ACCUMULATE_NONE = 0,\r
308         SMIL_ACCUMULATE_SUM\r
309 }; \r
310 typedef u8 SMIL_Accumulate;\r
311 \r
312 enum {\r
313         /*WARNING: default value is linear, order changed for LASeR coding*/\r
314         SMIL_CALCMODE_DISCRETE = 0,\r
315         SMIL_CALCMODE_LINEAR,\r
316         SMIL_CALCMODE_PACED,\r
317         SMIL_CALCMODE_SPLINE\r
318 };\r
319 typedef u8 SMIL_CalcMode;\r
320 /* end of SMIL Anim types */\r
321 \r
322 enum {\r
323         XMLRI_ELEMENTID = 0,\r
324         XMLRI_STRING,\r
325         XMLRI_STREAMID\r
326 };\r
327 typedef struct __xml_ri {\r
328         u8 type;\r
329         char *string;\r
330         void *target;\r
331         u32 lsr_stream_id;\r
332 } XMLRI;\r
333 \r
334 /*the same structure is used to watch for IDREF changes (LASeR node replace)*/\r
335 typedef struct __xml_ri XML_IDREF;\r
336 \r
337 enum\r
338 {\r
339         SVG_FOCUS_AUTO = 0, \r
340         SVG_FOCUS_SELF, \r
341         SVG_FOCUS_IRI, \r
342 };\r
343 \r
344 typedef struct\r
345 {\r
346         u8 type;\r
347         XMLRI target;\r
348 } SVG_Focus;\r
349 \r
350 enum {\r
351         SVG_FONTFAMILY_INHERIT = 0,\r
352         SVG_FONTFAMILY_VALUE\r
353 };\r
354 \r
355 typedef struct {\r
356         u8 type;\r
357         SVG_String value;\r
358 } SVG_FontFamily;\r
359 \r
360 enum {\r
361         SVG_FONTSTYLE_INHERIT = 0,\r
362         SVG_FONTSTYLE_ITALIC = 1,  \r
363         SVG_FONTSTYLE_NORMAL = 2,\r
364         SVG_FONTSTYLE_OBLIQUE = 3\r
365 }; \r
366 typedef u8 SVG_FontStyle;\r
367 \r
368 /*the values are chosen to match LASeR code points*/\r
369 enum {\r
370         SVG_PATHCOMMAND_M = 3,\r
371         SVG_PATHCOMMAND_L = 2,\r
372         SVG_PATHCOMMAND_C = 0,\r
373         SVG_PATHCOMMAND_S = 5,\r
374         SVG_PATHCOMMAND_Q = 4,\r
375         SVG_PATHCOMMAND_T = 6,\r
376         SVG_PATHCOMMAND_A = 20,\r
377         SVG_PATHCOMMAND_Z = 8\r
378 };\r
379 \r
380 #define USE_GF_PATH 1\r
381 \r
382 #if USE_GF_PATH\r
383 typedef GF_Path SVG_PathData;\r
384 #else\r
385 typedef struct {\r
386         GF_List *commands;\r
387         GF_List *points;\r
388 } SVG_PathData;\r
389 #endif\r
390 \r
391 typedef struct {\r
392         Fixed x, y;\r
393 } SVG_Point;\r
394 \r
395 typedef struct {\r
396         Fixed x, y, angle;\r
397 } SVG_Point_Angle;\r
398 \r
399 typedef struct {\r
400         Bool is_set;\r
401         Fixed x, y, width, height;\r
402 } SVG_ViewBox;\r
403 \r
404 typedef Bool SVG_Boolean;\r
405 \r
406 /*WARNING - THESE ARE PATH FLAGS, CHECK IF WORKING*/\r
407 enum {\r
408         SVG_FILLRULE_EVENODD= 0,\r
409         SVG_FILLRULE_NONZERO,\r
410         SVG_FILLRULE_INHERIT\r
411 };\r
412 typedef u8 SVG_FillRule;\r
413         \r
414 enum {\r
415         SVG_STROKELINEJOIN_MITER = GF_LINE_JOIN_MITER_SVG,\r
416         SVG_STROKELINEJOIN_ROUND = GF_LINE_JOIN_ROUND,\r
417         SVG_STROKELINEJOIN_BEVEL = GF_LINE_JOIN_BEVEL,\r
418         SVG_STROKELINEJOIN_INHERIT = 100\r
419 };\r
420 typedef u8 SVG_StrokeLineJoin;\r
421 \r
422 /* Warning: GPAC naming is not the same as SVG naming for line cap Flat = butt and Butt = square*/\r
423 enum {\r
424         SVG_STROKELINECAP_BUTT = GF_LINE_CAP_FLAT,\r
425         SVG_STROKELINECAP_ROUND = GF_LINE_CAP_ROUND,\r
426         SVG_STROKELINECAP_SQUARE = GF_LINE_CAP_SQUARE,\r
427         SVG_STROKELINECAP_INHERIT = 100\r
428 };\r
429 typedef u8 SVG_StrokeLineCap;\r
430 \r
431 enum {\r
432         SVG_OVERFLOW_INHERIT    = 0,\r
433         SVG_OVERFLOW_VISIBLE    = 1,\r
434         SVG_OVERFLOW_HIDDEN             = 2,\r
435         SVG_OVERFLOW_SCROLL             = 3,\r
436         SVG_OVERFLOW_AUTO               = 4\r
437 };\r
438 typedef u8 SVG_Overflow;\r
439 \r
440 enum {\r
441         SVG_COLOR_RGBCOLOR = 0,\r
442         SVG_COLOR_INHERIT,\r
443         SVG_COLOR_CURRENTCOLOR,\r
444         SVG_COLOR_ACTIVE_BORDER, /*Active window border*/\r
445         SVG_COLOR_ACTIVE_CAPTION, /*Active window caption. */\r
446         SVG_COLOR_APP_WORKSPACE, /*Background color of multiple document interface. */\r
447         SVG_COLOR_BACKGROUND, /*Desktop background. */\r
448         SVG_COLOR_BUTTON_FACE, /* Face color for three-dimensional display elements. */\r
449         SVG_COLOR_BUTTON_HIGHLIGHT, /* Dark shadow for three-dimensional display elements (for edges facing away from the light source). */\r
450         SVG_COLOR_BUTTON_SHADOW, /* Shadow color for three-dimensional display elements. */\r
451         SVG_COLOR_BUTTON_TEXT, /*Text on push buttons. */\r
452         SVG_COLOR_CAPTION_TEXT, /* Text in caption, size box, and scrollbar arrow box. */\r
453         SVG_COLOR_GRAY_TEXT, /* Disabled ('grayed') text. */\r
454         SVG_COLOR_HIGHLIGHT, /* Item(s) selected in a control. */\r
455         SVG_COLOR_HIGHLIGHT_TEXT, /*Text of item(s) selected in a control. */\r
456         SVG_COLOR_INACTIVE_BORDER, /* Inactive window border. */\r
457         SVG_COLOR_INACTIVE_CAPTION, /* Inactive window caption. */\r
458         SVG_COLOR_INACTIVE_CAPTION_TEXT, /*Color of text in an inactive caption. */\r
459         SVG_COLOR_INFO_BACKGROUND, /* Background color for tooltip controls. */\r
460         SVG_COLOR_INFO_TEXT,  /*Text color for tooltip controls. */\r
461         SVG_COLOR_MENU, /*Menu background. */\r
462         SVG_COLOR_MENU_TEXT, /* Text in menus. */\r
463         SVG_COLOR_SCROLLBAR, /* Scroll bar gray area. */\r
464         SVG_COLOR_3D_DARK_SHADOW, /* Dark shadow for three-dimensional display elements. */\r
465         SVG_COLOR_3D_FACE, /* Face color for three-dimensional display elements. */\r
466         SVG_COLOR_3D_HIGHLIGHT, /* Highlight color for three-dimensional display elements. */\r
467         SVG_COLOR_3D_LIGHT_SHADOW, /* Light color for three-dimensional display elements (for edges facing the light source). */\r
468         SVG_COLOR_3D_SHADOW, /* Dark shadow for three-dimensional display elements. */\r
469         SVG_COLOR_WINDOW, /* Window background. */\r
470         SVG_COLOR_WINDOW_FRAME, /* Window frame. */\r
471         SVG_COLOR_WINDOW_TEXT /* Text in windows.*/\r
472 };\r
473 \r
474 typedef struct {\r
475         u8 type;\r
476         Fixed red, green, blue;\r
477 } SVG_Color;\r
478 \r
479 enum {\r
480         SVG_PAINT_NONE          = 0,\r
481         SVG_PAINT_COLOR         = 1,\r
482         SVG_PAINT_URI           = 2,\r
483         SVG_PAINT_INHERIT       = 3\r
484 };\r
485 \r
486 typedef struct {\r
487         u8 type;\r
488         SVG_Color color;\r
489         XMLRI iri;\r
490 } SVG_Paint, SVG_SVGColor;\r
491 \r
492 enum {\r
493         SVG_NUMBER_VALUE                = 0,\r
494         SVG_NUMBER_PERCENTAGE   = 1,\r
495         SVG_NUMBER_EMS                  = 2,\r
496         SVG_NUMBER_EXS                  = 3,\r
497         SVG_NUMBER_PX                   = 4,\r
498         SVG_NUMBER_CM                   = 5,\r
499         SVG_NUMBER_MM                   = 6,\r
500         SVG_NUMBER_IN                   = 7,\r
501         SVG_NUMBER_PT                   = 8,\r
502         SVG_NUMBER_PC                   = 9,\r
503         SVG_NUMBER_INHERIT              = 10,\r
504         SVG_NUMBER_AUTO                 = 11,\r
505         SVG_NUMBER_AUTO_REVERSE = 12\r
506 };\r
507 \r
508 typedef struct {\r
509         u8 type;\r
510         Fixed value;\r
511 } SVG_Number, \r
512   SVG_FontSize, \r
513   SVG_Length, \r
514   SVG_Coordinate, \r
515   SVG_Rotate;\r
516 \r
517 typedef struct {\r
518         u8 is_ref;\r
519         GF_Matrix2D mat;\r
520 } SVG_Transform;\r
521 \r
522 enum {\r
523         SVG_TRANSFORM_MATRIX    = 0,\r
524         SVG_TRANSFORM_TRANSLATE = 1,\r
525         SVG_TRANSFORM_SCALE             = 2,\r
526         SVG_TRANSFORM_ROTATE    = 3,\r
527         SVG_TRANSFORM_SKEWX             = 4,\r
528         SVG_TRANSFORM_SKEWY             = 5\r
529 };\r
530 \r
531 typedef u8 SVG_TransformType; \r
532 \r
533 enum {\r
534         SVG_FONTWEIGHT_100 = 0, \r
535         SVG_FONTWEIGHT_200,\r
536         SVG_FONTWEIGHT_300, \r
537         SVG_FONTWEIGHT_400,\r
538         SVG_FONTWEIGHT_500,\r
539         SVG_FONTWEIGHT_600,\r
540         SVG_FONTWEIGHT_700,\r
541         SVG_FONTWEIGHT_800,\r
542         SVG_FONTWEIGHT_900,\r
543         SVG_FONTWEIGHT_BOLD, \r
544         SVG_FONTWEIGHT_BOLDER, \r
545         SVG_FONTWEIGHT_INHERIT,\r
546         SVG_FONTWEIGHT_LIGHTER, \r
547         SVG_FONTWEIGHT_NORMAL\r
548 };\r
549 typedef u8 SVG_FontWeight;\r
550 \r
551 enum {\r
552         SVG_FONTVARIANT_INHERIT         = 0,\r
553         SVG_FONTVARIANT_NORMAL          = 1,\r
554         SVG_FONTVARIANT_SMALLCAPS       = 2\r
555 };\r
556 typedef u8 SVG_FontVariant;\r
557 \r
558 enum {\r
559         SVG_VISIBILITY_HIDDEN   = 0,\r
560         SVG_VISIBILITY_INHERIT  = 1,\r
561         SVG_VISIBILITY_VISIBLE  = 2,\r
562         SVG_VISIBILITY_COLLAPSE = 3\r
563 };\r
564 typedef u8 SVG_Visibility;\r
565 \r
566 enum {\r
567         SVG_DISPLAY_INHERIT = 0,\r
568         SVG_DISPLAY_NONE    = 1,\r
569         SVG_DISPLAY_INLINE  = 2,\r
570         SVG_DISPLAY_BLOCK,\r
571         SVG_DISPLAY_LIST_ITEM,\r
572         SVG_DISPLAY_RUN_IN,\r
573         SVG_DISPLAY_COMPACT,\r
574         SVG_DISPLAY_MARKER,\r
575         SVG_DISPLAY_TABLE,\r
576         SVG_DISPLAY_INLINE_TABLE,\r
577         SVG_DISPLAY_TABLE_ROW_GROUP,\r
578         SVG_DISPLAY_TABLE_HEADER_GROUP,\r
579         SVG_DISPLAY_TABLE_FOOTER_GROUP,\r
580         SVG_DISPLAY_TABLE_ROW,\r
581         SVG_DISPLAY_TABLE_COLUMN_GROUP,\r
582         SVG_DISPLAY_TABLE_COLUMN,\r
583         SVG_DISPLAY_TABLE_CELL,\r
584         SVG_DISPLAY_TABLE_CAPTION\r
585 };\r
586 typedef u8 SVG_Display;\r
587 \r
588 enum {\r
589         SVG_DISPLAYALIGN_INHERIT        = 0,\r
590         SVG_DISPLAYALIGN_AUTO           = 1,\r
591         SVG_DISPLAYALIGN_AFTER          = 2,\r
592         SVG_DISPLAYALIGN_BEFORE         = 3,\r
593         SVG_DISPLAYALIGN_CENTER         = 4\r
594 };\r
595 typedef u8 SVG_DisplayAlign;\r
596 \r
597 enum {\r
598         SVG_TEXTALIGN_INHERIT   = 0,\r
599         SVG_TEXTALIGN_START             = 1,\r
600         SVG_TEXTALIGN_CENTER    = 2,\r
601         SVG_TEXTALIGN_END               = 3\r
602 };\r
603 typedef u8 SVG_TextAlign;\r
604 \r
605 enum {\r
606         SVG_STROKEDASHARRAY_NONE        = 0,\r
607         SVG_STROKEDASHARRAY_INHERIT = 1,\r
608         SVG_STROKEDASHARRAY_ARRAY       = 2\r
609 };\r
610 \r
611 typedef struct {\r
612         u32 count;\r
613         Fixed* vals;\r
614 } Array;\r
615 \r
616 typedef struct {\r
617         u8 type;\r
618         Array array;\r
619 } SVG_StrokeDashArray;\r
620 \r
621 enum {\r
622         SVG_TEXTANCHOR_INHERIT  = 0,\r
623         SVG_TEXTANCHOR_END              = 1,\r
624         SVG_TEXTANCHOR_MIDDLE   = 2,\r
625         SVG_TEXTANCHOR_START    = 3\r
626 };\r
627 typedef u8 SVG_TextAnchor;\r
628 \r
629 enum {\r
630         SVG_ANGLETYPE_UNKNOWN           = 0,\r
631         SVG_ANGLETYPE_UNSPECIFIED       = 1,\r
632         SVG_ANGLETYPE_DEG                       = 2,\r
633         SVG_ANGLETYPE_RAD                       = 3,\r
634         SVG_ANGLETYPE_GRAD                      = 4\r
635 };\r
636 \r
637 enum {\r
638         SVG_UNIT_TYPE_UNKNOWN                   = 0,\r
639         SVG_UNIT_TYPE_USERSPACEONUSE    = 1,\r
640         SVG_UNIT_TYPE_OBJECTBOUNDINGBOX = 2\r
641 };\r
642 \r
643 enum {\r
644         // Alignment Types\r
645         SVG_PRESERVEASPECTRATIO_NONE = 1,\r
646         SVG_PRESERVEASPECTRATIO_XMINYMIN = 2,\r
647         SVG_PRESERVEASPECTRATIO_XMIDYMIN = 3,\r
648         SVG_PRESERVEASPECTRATIO_XMAXYMIN = 4,\r
649         SVG_PRESERVEASPECTRATIO_XMINYMID = 5,\r
650         SVG_PRESERVEASPECTRATIO_XMIDYMID = 0, //default\r
651         SVG_PRESERVEASPECTRATIO_XMAXYMID = 6,\r
652         SVG_PRESERVEASPECTRATIO_XMINYMAX = 7,\r
653         SVG_PRESERVEASPECTRATIO_XMIDYMAX = 8,\r
654         SVG_PRESERVEASPECTRATIO_XMAXYMAX = 9\r
655 };\r
656 \r
657 enum {\r
658         // Meet_or_slice Types\r
659         SVG_MEETORSLICE_MEET  = 0,\r
660         SVG_MEETORSLICE_SLICE = 1\r
661 };\r
662 \r
663 typedef struct {\r
664         Bool defer;\r
665         u8 align;\r
666         u8 meetOrSlice;\r
667 } SVG_PreserveAspectRatio; \r
668 \r
669 enum {\r
670         SVG_ZOOMANDPAN_DISABLE = 0,\r
671         SVG_ZOOMANDPAN_MAGNIFY,\r
672 };\r
673 \r
674 typedef u8 SVG_ZoomAndPan;\r
675 \r
676 enum {\r
677         LENGTHADJUST_UNKNOWN   = 0,\r
678         LENGTHADJUST_SPACING     = 1,\r
679         LENGTHADJUST_SPACINGANDGLYPHS     = 2\r
680 };\r
681 \r
682 enum {\r
683     // textPath Method Types\r
684         TEXTPATH_METHODTYPE_UNKNOWN   = 0,\r
685         TEXTPATH_METHODTYPE_ALIGN     = 1,\r
686         TEXTPATH_METHODTYPE_STRETCH     = 2\r
687 };\r
688 enum {\r
689     // textPath Spacing Types\r
690         TEXTPATH_SPACINGTYPE_UNKNOWN   = 0,\r
691         TEXTPATH_SPACINGTYPE_AUTO     = 1,\r
692         TEXTPATH_SPACINGTYPE_EXACT     = 2\r
693 };\r
694 \r
695 enum {\r
696     // Marker Unit Types\r
697         SVG_MARKERUNITS_UNKNOWN        = 0,\r
698         SVG_MARKERUNITS_USERSPACEONUSE = 1,\r
699         SVG_MARKERUNITS_STROKEWIDTH    = 2\r
700 };\r
701 enum {\r
702     // Marker Orientation Types\r
703         SVG_MARKER_ORIENT_UNKNOWN      = 0,\r
704         SVG_MARKER_ORIENT_AUTO         = 1,\r
705         SVG_MARKER_ORIENT_ANGLE        = 2\r
706 };\r
707 \r
708 enum {\r
709     // Spread Method Types\r
710         SVG_SPREADMETHOD_UNKNOWN = 0,\r
711         SVG_SPREADMETHOD_PAD     = 1,\r
712         SVG_SPREADMETHOD_REFLECT = 2,\r
713         SVG_SPREADMETHOD_REPEAT  = 3\r
714 };\r
715 \r
716 enum {\r
717         SVG_POINTEREVENTS_INHERIT                       = 0,\r
718         SVG_POINTEREVENTS_ALL                           = 1,\r
719         SVG_POINTEREVENTS_FILL                          = 2,\r
720         SVG_POINTEREVENTS_NONE                          = 3,\r
721         SVG_POINTEREVENTS_PAINTED                       = 4,\r
722         SVG_POINTEREVENTS_STROKE                        = 5,\r
723         SVG_POINTEREVENTS_VISIBLE                       = 6,\r
724         SVG_POINTEREVENTS_VISIBLEFILL           = 7,\r
725         SVG_POINTEREVENTS_VISIBLEPAINTED        = 8,\r
726         SVG_POINTEREVENTS_VISIBLESTROKE         = 9,\r
727         SVG_POINTEREVENTS_BOUNDINGBOX           = 10\r
728 };\r
729 typedef u8 SVG_PointerEvents;\r
730 \r
731 enum {\r
732         SVG_RENDERINGHINT_INHERIT                               = 0,\r
733         SVG_RENDERINGHINT_AUTO                                  = 1,\r
734         SVG_RENDERINGHINT_OPTIMIZEQUALITY               = 2,\r
735         SVG_RENDERINGHINT_OPTIMIZESPEED                 = 3,\r
736         SVG_RENDERINGHINT_OPTIMIZELEGIBILITY    = 4,\r
737         SVG_RENDERINGHINT_CRISPEDGES                    = 5,\r
738         SVG_RENDERINGHINT_GEOMETRICPRECISION    = 6,\r
739 \r
740 };\r
741 typedef u8 SVG_RenderingHint;\r
742 \r
743 enum {\r
744         SVG_VECTOREFFECT_INHERIT                        = 0,\r
745         SVG_VECTOREFFECT_NONE                           = 1,\r
746         SVG_VECTOREFFECT_NONSCALINGSTROKE       = 2,\r
747 };\r
748 typedef u8 SVG_VectorEffect;\r
749 \r
750 enum {\r
751         XMLEVENT_PROPAGATE_CONTINUE = 0,\r
752         XMLEVENT_PROPAGATE_STOP         = 1\r
753 };\r
754 typedef u8 XMLEV_Propagate;\r
755 \r
756 enum {\r
757         XMLEVENT_DEFAULTACTION_CANCEL = 0,\r
758         XMLEVENT_DEFAULTACTION_PERFORM,\r
759         \r
760 };\r
761 typedef u8 XMLEV_DefaultAction;\r
762 \r
763 enum {\r
764         XMLEVENT_PHASE_DEFAULT  = 0,\r
765         XMLEVENT_PHASE_CAPTURE  = 1\r
766 };\r
767 typedef u8 XMLEV_Phase;\r
768 \r
769 enum {\r
770         SMIL_SYNCBEHAVIOR_INHERIT               = 0,\r
771         /*LASeR order*/\r
772         SMIL_SYNCBEHAVIOR_CANSLIP,\r
773         SMIL_SYNCBEHAVIOR_DEFAULT,\r
774         SMIL_SYNCBEHAVIOR_INDEPENDENT,\r
775         SMIL_SYNCBEHAVIOR_LOCKED,\r
776 };\r
777 typedef u8 SMIL_SyncBehavior;\r
778 \r
779 enum {\r
780         SMIL_SYNCTOLERANCE_INHERIT              = 0,\r
781         SMIL_SYNCTOLERANCE_DEFAULT              = 1,\r
782         SMIL_SYNCTOLERANCE_VALUE                = 2\r
783 };\r
784 \r
785 typedef struct {\r
786         u8 type;\r
787         SVG_Clock value;\r
788 } SMIL_SyncTolerance;\r
789 \r
790 enum {\r
791         SMIL_ATTRIBUTETYPE_CSS  = 0,\r
792         SMIL_ATTRIBUTETYPE_XML,\r
793         SMIL_ATTRIBUTETYPE_AUTO,\r
794 };\r
795 typedef u8 SMIL_AttributeType;\r
796 \r
797 enum {\r
798         SVG_PLAYBACKORDER_ALL                   = 0,\r
799         SVG_PLAYBACKORDER_FORWARDONLY   = 1,\r
800 };\r
801 typedef u8 SVG_PlaybackOrder;\r
802 \r
803 enum {\r
804         SVG_TIMELINEBEGIN_ONLOAD=0,\r
805         SVG_TIMELINEBEGIN_ONSTART,\r
806 };\r
807 typedef u8 SVG_TimelineBegin;\r
808 \r
809 enum {\r
810         XML_SPACE_DEFAULT               = 0,\r
811         XML_SPACE_PRESERVE              = 1\r
812 };\r
813 typedef u8 XML_Space;\r
814 \r
815 \r
816 enum {\r
817         SVG_GRADIENTUNITS_OBJECT = 0,\r
818         SVG_GRADIENTUNITS_USER = 1\r
819 };\r
820 typedef u8 SVG_GradientUnit;\r
821 \r
822 enum {\r
823         SVG_FOCUSHIGHLIGHT_AUTO = 0,\r
824         SVG_FOCUSHIGHLIGHT_NONE = 1\r
825 };\r
826 typedef u8 SVG_FocusHighlight;\r
827 \r
828 enum {\r
829         SVG_INITIALVISIBILTY_WHENSTARTED = 0,\r
830         SVG_INITIALVISIBILTY_ALWAYS              = 1\r
831 };\r
832 typedef u8 SVG_InitialVisibility;\r
833 \r
834 enum {\r
835         SVG_TRANSFORMBEHAVIOR_GEOMETRIC = 0,\r
836         SVG_TRANSFORMBEHAVIOR_PINNED,\r
837         SVG_TRANSFORMBEHAVIOR_PINNED180,\r
838         SVG_TRANSFORMBEHAVIOR_PINNED270,\r
839         SVG_TRANSFORMBEHAVIOR_PINNED90,\r
840 };\r
841 typedef u8 SVG_TransformBehavior;\r
842 \r
843 enum {\r
844         SVG_OVERLAY_NONE = 0,\r
845         SVG_OVERLAY_TOP,\r
846 };\r
847 typedef u8 SVG_Overlay;\r
848 \r
849 enum {\r
850         SVG_FOCUSABLE_AUTO = 0,\r
851         SVG_FOCUSABLE_TRUE,\r
852         SVG_FOCUSABLE_FALSE,\r
853 };\r
854 typedef u8 SVG_Focusable;\r
855 \r
856 \r
857 enum {\r
858         SVG_SPREAD_PAD = 0,\r
859         SVG_SPREAD_REFLECT,\r
860         SVG_SPREAD_REPEAT,\r
861 };\r
862 typedef u8 SVG_SpreadMethod;\r
863 \r
864 enum {\r
865         LASeR_CHOICE_ALL   = 0,\r
866         LASeR_CHOICE_NONE  = 1,\r
867         LASeR_CHOICE_N     = 2\r
868 };\r
869 typedef u8 LASeR_Choice_enum;\r
870 \r
871 typedef struct {\r
872         u32 type;\r
873         u32 choice_index;\r
874 } LASeR_Choice;\r
875 \r
876 typedef struct {\r
877         Fixed width, height;\r
878 } LASeR_Size;\r
879 \r
880 \r
881 #ifdef __cplusplus\r
882 }\r
883 #endif\r
884 \r
885 #endif /*_GF_SVG_SVG_TYPES_H_*/\r
886 \r
887 \r