MHEG-5  19.3.0
MHEG-5 Documentation
fpa1_act.c
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright © 2014 The DTVKit Open Software Foundation Ltd (www.dtvkit.org)
3  * Copyright © 2004 Ocean Blue Software Ltd
4  * Copyright © 2000 Koninklijke Philips Electronics N.V
5  *
6  * This file is part of a DTVKit Software Component
7  * You are permitted to copy, modify or distribute this file subject to the terms
8  * of the DTVKit 1.0 Licence which can be found in licence.txt or at www.dtvkit.org
9  *
10  * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
11  * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
12  * OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
13  *
14  * If you or your organisation is not a member of DTVKit then you have access
15  * to this source code outside of the terms of the licence agreement
16  * and you are expected to delete this and any associated files immediately.
17  * Further information on DTVKit, membership and terms can be found at www.dtvkit.org
18  *******************************************************************************/
26 /*---includes for this file--------------------------------------------------*/
27 #include <stdio.h>
28 #include <stdlib.h>
29 
30 #include "vpa1_tgs.h"
31 #include "vpa1_rdf.h"
32 
33 #include "fpa1_act.h"
34 #include "fpa1_cho.h"
35 #include "fpa1_rdf.h"
36 #include "fpa1_seq.h"
37 #include "fpa1_syn.h"
38 #include "fpa1_typ.h"
39 
40 /*---local typedef structs for this file-------------------------------------*/
41 
42 /*---constant definitions for this file--------------------------------------*/
43 #define ELEM_ACT_CHOICE_COMPS 126
44 #define PARAMETER_CHOICE_COMPS 5
45 #define NEW_CONTENT_CHOICE_COMPS 2
46 #define NEW_CONT_SIZE_CHOICE_COMPS 2
47 #define COMP_VALUE_CHOICE_COMPS 5
48 #define CONN_TAG_CHOICE_COMPS 2
49 #define NEW_COLOUR_CHOICE_COMPS 2
50 #define NEW_VAR_VAL_CHOICE_COMPS 5
51 #define EMUL_EVT_DAT_CHOICE_COMPS 3
52 #define NEW_FONT_CHOICE_COMPS 2
53 
54 #define ADD_SEQ_COMPS 2
55 #define ADD_ITEM_SEQ_COMPS 3
56 #define APPEND_SEQ_COMPS 2
57 #define CALL_SEQ_COMPS 3
58 #define CLONE_SEQ_COMPS 2
59 #define DEL_ITEM_SEQ_COMPS 2
60 #define DRAW_ARC_SEQ_COMPS 7
61 #define DRAW_LINE_SEQ_COMPS 5
62 #define DRAW_POLY_SEQ_COMPS 2
63 #define GET_BOX_SIZE_SEQ_COMPS 3
64 #define GET_CELL_ITEM_SEQ_COMPS 3
65 #define GET_ENG_SUP_SEQ_COMPS 3
66 #define OPEN_CONN_SEQ_COMPS 5
67 #define NEW_REF_CON_SEQ_COMPS 3
68 #define NEW_TIMER_SEQ_COMPS 2
69 #define POINT_SEQ_COMPS 2
70 #define RATIONAL_SEQ_COMPS 2
71 #define READ_PERSIST_SEQ_COMPS 4
72 #define SCALE_BITMAP_SEQ_COMPS 3
73 #define SEND_EVENT_SEQ_COMPS 4
74 #define SET_CNT_TRIG_SEQ_COMPS 3
75 #define SET_CUR_SHAPE_SEQ_COMPS 2
76 #define SET_DATA_SEQ_COMPS 2
77 #define SET_FILL_COL_SEQ_COMPS 2
78 #define SET_FONT_REF_SEQ_COMPS 2
79 #define SET_IAC_STAT_SEQ_COMPS 2
80 #define SET_LINE_COL_SEQ_COMPS 2
81 #define SET_SPEED_SEQ_COMPS 2
82 #define SET_SLD_PARAM_SEQ_COMPS 4
83 #define SET_TIMER_SEQ_COMPS 3
84 #define SET_VARIABLE_SEQ_COMPS 2
85 #define TEST_VAR_SEQ_COMPS 3
86 #define TRANS_TO_SEQ_COMPS 3
87 
88 
89 /*---local (static) variable declarations for this file----------------------*/
90 
91 /* CHOICES */
92 int elemActChoiceCompArr[ ELEM_ACT_CHOICE_COMPS + 1 ] =
93 { ELEM_ACT_CHOICE_COMPS + 1,
94  ACTIVATE,
95  ADD,
96  ADDITEM,
97  APPEND,
98  BRINGTOFRONT,
99  CALL,
100  CALLACTIONSLOT,
101  CLEAR,
102  CLONE,
103  CLOSECONNECTION,
104  DEACTIVATE,
105  DELITEM,
106  DESELECT,
107  DESELECTITEM,
108  DIVIDE,
109  DRAWARC,
110  DRAWLINE,
111  DRAWOVAL,
112  DRAWPOLYGON,
113  DRAWPOLYLINE,
114  DRAWRECTANGLE,
115  DRAWSECTOR,
116  FORK,
117  GETAVAILABILITYSTATUS,
118  GETBITMAPDECODEOFFSET,
119  GETBOXSIZE,
120  GETCELLITEM,
121  GETCOUNTERMAXPOSITION,
122  GETCOUNTERPOSITION,
123  GETCURSORPOSITION,
124  GETENGINESUPPORT,
125  GETENTRYPOINT,
126  GETFILLCOLOUR,
127  GETFIRSTITEM,
128  GETFOCUSPOSITION,
129  GETHIGHLIGHTSTATUS,
130  GETINTERACTIONSTATUS,
131  GETITEMSTATUS,
132  GETLABEL,
133  GETLASTANCHORFIRED,
134  GETLINECOLOUR,
135  GETLINESTYLE,
136  GETLINEWIDTH,
137  GETLISTITEM,
138  GETLISTSIZE,
139  GETOVERWRITEMODE,
140  GETPORTION,
141  GETPOSITION,
142  GETRUNNINGSTATUS,
143  GETSELECTIONSTATUS,
144  GETSLIDERVALUE,
145  GETTEXTCONTENT,
146  GETTEXTDATA,
147  GETTOKENPOSITION,
148  GETVIDEODECODEOFFSET,
149  GETVOLUME,
150  LAUNCH,
151  LOCKSCREEN,
152  MODULO,
153  MOVE,
154  MOVETO,
155  MULTIPLY,
156  OPENCONNECTION,
157  PRELOAD,
158  PUTBEFORE,
159  PUTBEHIND,
160  QUIT,
161  READPERSISTENT,
162  RUN,
163  SCALEBITMAP,
164  SCALEVIDEO,
165  SCROLLITEMS,
166  SELECT,
167  SELECTITEM,
168  SENDEVENT,
169  SENDTOBACK,
170  SETBACKGROUNDCOLOUR,
171  SETBITMAPDECODEOFFSET,
172  SETBOXSIZE,
173  SETCACHEPRIORITY,
174  SETCELLPOSITION,
175  SETCOUNTERENDPOSITION,
176  SETCOUNTERPOSITION,
177  SETCOUNTERTRIGGER,
178  SETCURSORPOSITION,
179  SETCURSORSHAPE,
180  SETDATA,
181  SETDESKTOPCOLOUR,
182  SETENTRYPOINT,
183  SETFILLCOLOUR,
184  SETFIRSTITEM,
185  SETFOCUSPOSITION,
186  SETFONTATTRIBUTES,
187  SETFONTREF,
188  SETHIGHLIGHTSTATUS,
189  SETINPUTMASK,
190  SETINPUTREGISTER,
191  SETINTERACTIONSTATUS,
192  SETLABEL,
193  SETLINECOLOUR,
194  SETLINESTYLE,
195  SETLINEWIDTH,
196  SETOVERWRITEMODE,
197  SETPALETTEREF,
198  SETPORTION,
199  SETPOSITION,
200  SETSLIDERPARAMETERS,
201  SETSLIDERVALUE,
202  SETSPEED,
203  SETTEXTCOLOUR,
204  SETTIMER,
205  SETTRANSPARENCY,
206  SETVARIABLE,
207  SETVIDEODECODEOFFSET,
208  SETVOLUME,
209  SPAWN,
210  STEP,
211  STOP,
212  STOREPERSISTENT,
213  SUBTRACT,
214  TESTVARIABLE,
215  TOGGLE,
216  TOGGLEITEM,
217  TRANSITIONTO,
218  UNLOAD,
219  UNLOCKSCREEN };
220 
221 int paramChoiceCompArr[ PARAMETER_CHOICE_COMPS + 1 ]
222  = { PARAMETER_CHOICE_COMPS + 1,
223  GBOOL,
224  GINT,
225  GOSTRING,
226  GOBJREF,
227  GCONTREF };
228 
229 int newContentChoiceCompArr[ NEW_CONTENT_CHOICE_COMPS + 1 ]
230  = { NEW_CONTENT_CHOICE_COMPS + 1,
231  GENERIC_OCTET_STRING,
232  NEW_REFERENCED_CONTENT };
233 
234 int newContSizeChoiceCompArr[ NEW_CONT_SIZE_CHOICE_COMPS + 1 ]
235  = { NEW_CONT_SIZE_CHOICE_COMPS + 1,
236  GENERIC_INTEGER,
237  MHEG_NULL };
238 
239 int compValueChoiceCompArr[ COMP_VALUE_CHOICE_COMPS + 1 ]
240  = { COMP_VALUE_CHOICE_COMPS + 1,
241  GBOOL,
242  GINT,
243  GOSTRING,
244  GOBJREF,
245  GCONTREF };
246 
247 int connTagChoiceCompArr[ CONN_TAG_CHOICE_COMPS + 1 ]
248  = { CONN_TAG_CHOICE_COMPS + 1,
249  GENERIC_INTEGER,
250  MHEG_NULL };
251 
252 int newColourChoiceCompArr[ NEW_COLOUR_CHOICE_COMPS + 1 ]
253  = { NEW_COLOUR_CHOICE_COMPS + 1,
254  NEWCOLIND,
255  NEWABSCOL };
256 
257 int newVarValChoiceCompArr[ NEW_VAR_VAL_CHOICE_COMPS + 1 ]
258  = { NEW_VAR_VAL_CHOICE_COMPS + 1,
259  GBOOL,
260  GINT,
261  GOSTRING,
262  GOBJREF,
263  GCONTREF };
264 
265 int emulEvtDatChoiceCompArr[ EMUL_EVT_DAT_CHOICE_COMPS + 1 ]
266  = { EMUL_EVT_DAT_CHOICE_COMPS + 1,
267  GBOOL,
268  GINT,
269  GOSTRING };
270 
271 int newFontChoiceCompArr[ NEW_FONT_CHOICE_COMPS + 1 ]
272  = { NEW_FONT_CHOICE_COMPS + 1,
273  NEWFONTNAME,
274  NEWFONTREF };
275 
276 /* SEQUENCES */
277 int addSeqCompArr[ 2 * ADD_SEQ_COMPS + 1 ]
278  = { 2 * ADD_SEQ_COMPS, /* limit */
279  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
280  GENERIC_INTEGER, SYN_NEEDED };
281 
282 int addItemSeqCompArr[ 2 * ADD_ITEM_SEQ_COMPS + 1 ]
283  = { 2 * ADD_ITEM_SEQ_COMPS, /* limit */
284  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
285  GENERIC_INTEGER, SYN_NEEDED,
286  GENERIC_OBJECT_REFERENCE, SYN_NEEDED };
287 
288 int appendSeqCompArr[ 2 * APPEND_SEQ_COMPS + 1 ]
289  = { 2 * APPEND_SEQ_COMPS, /* limit */
290  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
291  GENERIC_OCTET_STRING, SYN_NEEDED };
292 
293 int callSeqCompArr[ 2 * CALL_SEQ_COMPS + 1 ]
294  = { 2 * CALL_SEQ_COMPS, /* limit */
295  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
296  OBJECT_REFERENCE_TYPE, SYN_NEEDED,
297  SEQ_SIZE_OF_PARAMETER, SYN_OPTIONAL };
298 
299 int cloneSeqCompArr[ 2 * CLONE_SEQ_COMPS + 1 ]
300  = { 2 * CLONE_SEQ_COMPS, /* limit */
301  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
302  OBJECT_REFERENCE_TYPE, SYN_NEEDED };
303 
304 int delItemSeqCompArr[ 2 * DEL_ITEM_SEQ_COMPS + 1 ]
305  = { 2 * DEL_ITEM_SEQ_COMPS, /* limit */
306  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
307  GENERIC_OBJECT_REFERENCE, SYN_NEEDED };
308 
309 int drawArcSeqCompArr[ 2 * DRAW_ARC_SEQ_COMPS + 1 ]
310  = { 2 * DRAW_ARC_SEQ_COMPS, /* limit */
311  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
312  GENERIC_INTEGER, SYN_NEEDED,
313  GENERIC_INTEGER, SYN_NEEDED,
314  GENERIC_INTEGER, SYN_NEEDED,
315  GENERIC_INTEGER, SYN_NEEDED,
316  GENERIC_INTEGER, SYN_NEEDED,
317  GENERIC_INTEGER, SYN_NEEDED };
318 
319 int drawLineSeqCompArr[ 2 * DRAW_LINE_SEQ_COMPS + 1 ]
320  = { 2 * DRAW_LINE_SEQ_COMPS, /* limit */
321  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
322  GENERIC_INTEGER, SYN_NEEDED,
323  GENERIC_INTEGER, SYN_NEEDED,
324  GENERIC_INTEGER, SYN_NEEDED,
325  GENERIC_INTEGER, SYN_NEEDED };
326 
327 int drawPolySeqCompArr[ 2 * DRAW_POLY_SEQ_COMPS + 1 ]
328  = { 2 * DRAW_POLY_SEQ_COMPS, /* limit */
329  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
330  SEQ_SIZE_OF_POINT, SYN_NEEDED };
331 
332 int getBoxSizeSeqCompArr[ 2 * GET_BOX_SIZE_SEQ_COMPS + 1 ]
333  = { 2 * GET_BOX_SIZE_SEQ_COMPS, /* limit */
334  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
335  OBJECT_REFERENCE_TYPE, SYN_NEEDED,
336  OBJECT_REFERENCE_TYPE, SYN_NEEDED };
337 
338 int getCellItemSeqCompArr[ 2 * GET_CELL_ITEM_SEQ_COMPS + 1 ]
339  = { 2 * GET_CELL_ITEM_SEQ_COMPS, /* limit */
340  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
341  GENERIC_INTEGER, SYN_NEEDED,
342  OBJECT_REFERENCE_TYPE, SYN_NEEDED };
343 
344 int getEngSupSeqCompArr[ 2 * GET_ENG_SUP_SEQ_COMPS + 1 ]
345  = { 2 * GET_ENG_SUP_SEQ_COMPS, /* limit */
346  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
347  GENERIC_OCTET_STRING, SYN_NEEDED,
348  OBJECT_REFERENCE_TYPE, SYN_NEEDED };
349 
350 int openConnSeqCompArr[ 2 * OPEN_CONN_SEQ_COMPS + 1 ]
351  = { 2 * OPEN_CONN_SEQ_COMPS, /* limit */
352  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
353  OBJECT_REFERENCE_TYPE, SYN_NEEDED,
354  GENERIC_OCTET_STRING, SYN_NEEDED,
355  GENERIC_OCTET_STRING, SYN_NEEDED,
356  GENERIC_INTEGER, SYN_NEEDED };
357 
358 int setDataSeqCompArr[ 2 * SET_DATA_SEQ_COMPS + 1 ]
359  = { 2 * SET_DATA_SEQ_COMPS, /* limit */
360  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
361  NEW_CONTENT, SYN_NEEDED };
362 
363 int newRefConSeqCompArr[ 2 * NEW_REF_CON_SEQ_COMPS + 1 ]
364  = { 2 * NEW_REF_CON_SEQ_COMPS, /* limit */
365  GENERIC_CONTENT_REFERENCE, SYN_NEEDED,
366  NEWCSIZE, SYN_NEEDED,
367  NEWCPRIO, SYN_OPTIONAL };
368 
369 int newTimerSeqCompArr[ 2 * NEW_TIMER_SEQ_COMPS + 1 ]
370  = { 2 * NEW_TIMER_SEQ_COMPS, /* limit */
371  GENERIC_INTEGER, SYN_NEEDED,
372  GENERIC_BOOLEAN, SYN_OPTIONAL };
373 
374 int pointSeqCompArr[ 2 * POINT_SEQ_COMPS + 1 ]
375  = { 2 * POINT_SEQ_COMPS, /* limit */
376  GENERIC_INTEGER, SYN_NEEDED,
377  GENERIC_INTEGER, SYN_NEEDED };
378 
379 int rationalSeqCompArr[ 2 * RATIONAL_SEQ_COMPS + 1 ]
380  = { 2 * RATIONAL_SEQ_COMPS, /* limit */
381  GENERIC_INTEGER, SYN_NEEDED,
382  GENERIC_INTEGER, SYN_OPTIONAL };
383 
384 int readPersistSeqCompArr[ 2 * READ_PERSIST_SEQ_COMPS + 1 ]
385  = { 2 * READ_PERSIST_SEQ_COMPS, /* limit */
386  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
387  OBJECT_REFERENCE_TYPE, SYN_NEEDED,
388  SEQ_SIZE_OF_OBJECT_REFERENCE, SYN_NEEDED,
389  GENERIC_OCTET_STRING, SYN_NEEDED };
390 
391 int scaleBitmapSeqCompArr[ 2 * SCALE_BITMAP_SEQ_COMPS + 1 ]
392  = { 2 * SCALE_BITMAP_SEQ_COMPS, /* limit */
393  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
394  GENERIC_INTEGER, SYN_NEEDED,
395  GENERIC_INTEGER, SYN_NEEDED };
396 
397 int sendEventSeqCompArr[ 2 * SEND_EVENT_SEQ_COMPS + 1 ]
398  = { 2 * SEND_EVENT_SEQ_COMPS, /* limit */
399  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
400  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
401  EVENT_TYPE, SYN_NEEDED,
402  EMULATED_EVENT_DATA, SYN_OPTIONAL };
403 
404 int setCntTrigSeqCompArr[ 2 * SET_CNT_TRIG_SEQ_COMPS + 1 ]
405  = { 2 * SET_CNT_TRIG_SEQ_COMPS, /* limit */
406  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
407  GENERIC_INTEGER, SYN_NEEDED,
408  GENERIC_INTEGER, SYN_OPTIONAL };
409 
410 int setCurShapeSeqCompArr[ 2 * SET_CUR_SHAPE_SEQ_COMPS + 1 ]
411  = { 2 * SET_CUR_SHAPE_SEQ_COMPS, /* limit */
412  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
413  GENERIC_OBJECT_REFERENCE, SYN_OPTIONAL };
414 
415 int setFillColSeqCompArr[ 2 * SET_FILL_COL_SEQ_COMPS + 1 ]
416  = { 2 * SET_FILL_COL_SEQ_COMPS, /* limit */
417  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
418  NEW_COLOUR, SYN_OPTIONAL };
419 
420 int setFontRefSeqCompArr[ 2 * SET_FONT_REF_SEQ_COMPS + 1 ]
421  = { 2 * SET_FONT_REF_SEQ_COMPS, /* limit */
422  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
423  NEW_FONT, SYN_NEEDED };
424 
425 int setIacStatSeqCompArr[ 2 * SET_IAC_STAT_SEQ_COMPS + 1 ]
426  = { 2 * SET_IAC_STAT_SEQ_COMPS, /* limit */
427  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
428  GENERIC_BOOLEAN, SYN_NEEDED };
429 
430 int setLineColSeqCompArr[ 2 * SET_LINE_COL_SEQ_COMPS + 1 ]
431  = { 2 * SET_LINE_COL_SEQ_COMPS, /* limit */
432  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
433  NEW_COLOUR, SYN_NEEDED };
434 
435 int setSliderParametersSeqCompArr[ 2 * SET_SLD_PARAM_SEQ_COMPS + 1 ]
436  = { 2 * SET_SLD_PARAM_SEQ_COMPS, /* limit */
437  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
438  GENERIC_INTEGER, SYN_NEEDED,
439  GENERIC_INTEGER, SYN_NEEDED,
440  GENERIC_INTEGER, SYN_NEEDED };
441 
442 int setSpeedSeqCompArr[ 2 * SET_SPEED_SEQ_COMPS + 1 ]
443  = { 2 * SET_SPEED_SEQ_COMPS, /* limit */
444  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
445  RATIONAL_TYPE, SYN_NEEDED };
446 
447 int setTimerSeqCompArr[ 2 * SET_TIMER_SEQ_COMPS + 1 ]
448  = { 2 * SET_TIMER_SEQ_COMPS, /* limit */
449  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
450  GENERIC_INTEGER, SYN_NEEDED,
451  NEW_TIMER, SYN_OPTIONAL };
452 
453 int testVarSeqCompArr[ 2 * TEST_VAR_SEQ_COMPS + 1 ]
454  = { 2 * TEST_VAR_SEQ_COMPS, /* limit */
455  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
456  GENERIC_INTEGER, SYN_NEEDED,
457  COMPARISON_VALUE_TYPE, SYN_NEEDED };
458 
459 int transToSeqCompArr[ 2 * TRANS_TO_SEQ_COMPS + 1 ]
460  = { 2 * TRANS_TO_SEQ_COMPS, /* limit */
461  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
462  CONN_TAG_OR_NULL_TYPE, SYN_NEEDED,
463  GENERIC_INTEGER, SYN_OPTIONAL };
464 
465 int setVarSeqCompArr[ 2 * SET_VARIABLE_SEQ_COMPS + 1 ]
466  = { 2 * SET_VARIABLE_SEQ_COMPS, /* limit */
467  GENERIC_OBJECT_REFERENCE, SYN_NEEDED,
468  NEW_VARIABLE_VALUE, SYN_NEEDED };
469 
470 /*---local function definitions----------------------------------------------*/
471 
472 /*---global function definitions---------------------------------------------*/
Contains functions to decode MHEG-5 ASN.1 types.
Contains functions/globals used to read MHEG-5 ASN.1 scripts.
Contains functions/structure used to do MHEG-5 ASN.1 syntax parsing.
Typedefs for script reading functions.
Contains functions to decode MHEG-5 ASN.1 Action class components.
Contains macros for MHEG-5 ASN.1 tags and structures.
Contains functions used to parse MHEG-5 ASN.1 SEQUENCEs. SEQUENCEs have components in order...