Line data Source code
1 : /*
2 : * GPAC - Multimedia Framework C SDK
3 : *
4 : * Authors: Jean Le Feuvre
5 : * Copyright (c) Telecom ParisTech 2000-2012
6 : * All rights reserved
7 : *
8 : * This file is part of GPAC / Scene Graph sub-project
9 : *
10 : * GPAC is free software; you can redistribute it and/or modify
11 : * it under the terms of the GNU Lesser General Public License as published by
12 : * the Free Software Foundation; either version 2, or (at your option)
13 : * any later version.
14 : *
15 : * GPAC is distributed in the hope that it will be useful,
16 : * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 : * GNU Lesser General Public License for more details.
19 : *
20 : * You should have received a copy of the GNU Lesser General Public
21 : * License along with this library; see the file COPYING. If not, write to
22 : * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
23 : *
24 : */
25 :
26 :
27 : /*
28 : DO NOT MOFIFY - File generated on GMT Tue Nov 08 09:10:57 2011
29 :
30 : BY MPEG4Gen for GPAC Version 0.5.0
31 : */
32 :
33 : #include <gpac/nodes_mpeg4.h>
34 :
35 :
36 : #include <gpac/internal/scenegraph_dev.h>
37 :
38 : #ifndef GPAC_DISABLE_VRML
39 :
40 : /*
41 : Anchor Node deletion
42 : */
43 :
44 21 : static void Anchor_Del(GF_Node *node)
45 : {
46 : M_Anchor *p = (M_Anchor *) node;
47 21 : gf_sg_sfstring_del(p->description);
48 21 : gf_sg_mfstring_del(p->parameter);
49 21 : gf_sg_mfurl_del(p->url);
50 21 : gf_sg_vrml_parent_destroy((GF_Node *) p);
51 21 : gf_node_free((GF_Node *) p);
52 21 : }
53 :
54 : static const u16 Anchor_Def2All[] = { 2, 3, 4, 5};
55 : static const u16 Anchor_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
56 : static const u16 Anchor_Out2All[] = { 2, 3, 4, 5};
57 :
58 : static u32 Anchor_get_field_count(GF_Node *node, u8 IndexMode)
59 : {
60 : switch(IndexMode) {
61 : case GF_SG_FIELD_CODING_IN:
62 : return 7;
63 : case GF_SG_FIELD_CODING_DEF:
64 : return 4;
65 : case GF_SG_FIELD_CODING_OUT:
66 : return 4;
67 : case GF_SG_FIELD_CODING_DYN:
68 : return 0;
69 : default:
70 : return 7;
71 : }
72 : }
73 :
74 : static GF_Err Anchor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
75 : {
76 48 : switch(IndexMode) {
77 13 : case GF_SG_FIELD_CODING_IN:
78 13 : *allField = Anchor_In2All[inField];
79 : return GF_OK;
80 28 : case GF_SG_FIELD_CODING_DEF:
81 28 : *allField = Anchor_Def2All[inField];
82 : return GF_OK;
83 0 : case GF_SG_FIELD_CODING_OUT:
84 0 : *allField = Anchor_Out2All[inField];
85 : return GF_OK;
86 : default:
87 : return GF_BAD_PARAM;
88 : }
89 : }
90 77 : static GF_Err Anchor_get_field(GF_Node *node, GF_FieldInfo *info)
91 : {
92 77 : switch (info->fieldIndex) {
93 2 : case 0:
94 2 : info->name = "addChildren";
95 2 : info->eventType = GF_SG_EVENT_IN;
96 2 : info->on_event_in = ((M_Anchor *)node)->on_addChildren;
97 2 : info->fieldType = GF_SG_VRML_MFNODE;
98 2 : info->NDTtype = NDT_SF3DNode;
99 2 : info->far_ptr = & ((M_Anchor *)node)->addChildren;
100 2 : return GF_OK;
101 2 : case 1:
102 2 : info->name = "removeChildren";
103 2 : info->eventType = GF_SG_EVENT_IN;
104 2 : info->on_event_in = ((M_Anchor *)node)->on_removeChildren;
105 2 : info->fieldType = GF_SG_VRML_MFNODE;
106 2 : info->NDTtype = NDT_SF3DNode;
107 2 : info->far_ptr = & ((M_Anchor *)node)->removeChildren;
108 2 : return GF_OK;
109 14 : case 2:
110 14 : info->name = "children";
111 14 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
112 14 : info->fieldType = GF_SG_VRML_MFNODE;
113 14 : info->NDTtype = NDT_SF3DNode;
114 14 : info->far_ptr = & ((M_Anchor *)node)->children;
115 14 : return GF_OK;
116 16 : case 3:
117 16 : info->name = "description";
118 16 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
119 16 : info->fieldType = GF_SG_VRML_SFSTRING;
120 16 : info->far_ptr = & ((M_Anchor *) node)->description;
121 16 : return GF_OK;
122 16 : case 4:
123 16 : info->name = "parameter";
124 16 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
125 16 : info->fieldType = GF_SG_VRML_MFSTRING;
126 16 : info->far_ptr = & ((M_Anchor *) node)->parameter;
127 16 : return GF_OK;
128 23 : case 5:
129 23 : info->name = "url";
130 23 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
131 23 : info->fieldType = GF_SG_VRML_MFURL;
132 23 : info->far_ptr = & ((M_Anchor *) node)->url;
133 23 : return GF_OK;
134 4 : case 6:
135 4 : info->name = "activate";
136 4 : info->eventType = GF_SG_EVENT_IN;
137 4 : info->on_event_in = ((M_Anchor *)node)->on_activate;
138 4 : info->fieldType = GF_SG_VRML_SFBOOL;
139 4 : info->far_ptr = & ((M_Anchor *) node)->activate;
140 4 : return GF_OK;
141 : default:
142 : return GF_BAD_PARAM;
143 : }
144 : }
145 :
146 :
147 19 : static s32 Anchor_get_field_index_by_name(char *name)
148 : {
149 19 : if (!strcmp("addChildren", name)) return 0;
150 18 : if (!strcmp("removeChildren", name)) return 1;
151 17 : if (!strcmp("children", name)) return 2;
152 11 : if (!strcmp("description", name)) return 3;
153 10 : if (!strcmp("parameter", name)) return 4;
154 9 : if (!strcmp("url", name)) return 5;
155 2 : if (!strcmp("activate", name)) return 6;
156 0 : return -1;
157 : }
158 : static Bool Anchor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
159 : {
160 : switch (FieldIndex) {
161 : default:
162 : return 0;
163 : }
164 : }
165 :
166 :
167 :
168 21 : GF_Node *Anchor_Create()
169 : {
170 : M_Anchor *p;
171 21 : GF_SAFEALLOC(p, M_Anchor);
172 21 : if(!p) return NULL;
173 21 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Anchor);
174 21 : gf_sg_vrml_parent_setup((GF_Node *) p);
175 :
176 : /*default field values*/
177 21 : return (GF_Node *)p;
178 : }
179 :
180 :
181 : /*
182 : AnimationStream Node deletion
183 : */
184 :
185 : static void AnimationStream_Del(GF_Node *node)
186 : {
187 : M_AnimationStream *p = (M_AnimationStream *) node;
188 292 : gf_sg_mfurl_del(p->url);
189 292 : gf_node_free((GF_Node *) p);
190 : }
191 :
192 : static const u16 AnimationStream_Def2All[] = { 0, 1, 2, 3, 4};
193 : static const u16 AnimationStream_In2All[] = { 0, 1, 2, 3, 4};
194 : static const u16 AnimationStream_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
195 : static const u16 AnimationStream_Dyn2All[] = { 1};
196 :
197 : static u32 AnimationStream_get_field_count(GF_Node *node, u8 IndexMode)
198 : {
199 : switch(IndexMode) {
200 : case GF_SG_FIELD_CODING_IN:
201 : return 5;
202 : case GF_SG_FIELD_CODING_DEF:
203 : return 5;
204 : case GF_SG_FIELD_CODING_OUT:
205 : return 7;
206 : case GF_SG_FIELD_CODING_DYN:
207 : return 1;
208 : default:
209 : return 7;
210 : }
211 : }
212 :
213 : static GF_Err AnimationStream_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
214 : {
215 148 : switch(IndexMode) {
216 0 : case GF_SG_FIELD_CODING_IN:
217 0 : *allField = AnimationStream_In2All[inField];
218 : return GF_OK;
219 141 : case GF_SG_FIELD_CODING_DEF:
220 141 : *allField = AnimationStream_Def2All[inField];
221 : return GF_OK;
222 0 : case GF_SG_FIELD_CODING_OUT:
223 0 : *allField = AnimationStream_Out2All[inField];
224 : return GF_OK;
225 0 : case GF_SG_FIELD_CODING_DYN:
226 0 : *allField = AnimationStream_Dyn2All[inField];
227 : return GF_OK;
228 : default:
229 : return GF_BAD_PARAM;
230 : }
231 : }
232 503 : static GF_Err AnimationStream_get_field(GF_Node *node, GF_FieldInfo *info)
233 : {
234 503 : switch (info->fieldIndex) {
235 86 : case 0:
236 86 : info->name = "loop";
237 86 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
238 86 : info->fieldType = GF_SG_VRML_SFBOOL;
239 86 : info->far_ptr = & ((M_AnimationStream *) node)->loop;
240 86 : return GF_OK;
241 83 : case 1:
242 83 : info->name = "speed";
243 83 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
244 83 : info->fieldType = GF_SG_VRML_SFFLOAT;
245 83 : info->far_ptr = & ((M_AnimationStream *) node)->speed;
246 83 : return GF_OK;
247 89 : case 2:
248 89 : info->name = "startTime";
249 89 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
250 89 : info->fieldType = GF_SG_VRML_SFTIME;
251 89 : info->far_ptr = & ((M_AnimationStream *) node)->startTime;
252 89 : return GF_OK;
253 89 : case 3:
254 89 : info->name = "stopTime";
255 89 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
256 89 : info->fieldType = GF_SG_VRML_SFTIME;
257 89 : info->far_ptr = & ((M_AnimationStream *) node)->stopTime;
258 89 : return GF_OK;
259 126 : case 4:
260 126 : info->name = "url";
261 126 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
262 126 : info->fieldType = GF_SG_VRML_MFURL;
263 126 : info->far_ptr = & ((M_AnimationStream *) node)->url;
264 126 : return GF_OK;
265 15 : case 5:
266 15 : info->name = "duration_changed";
267 15 : info->eventType = GF_SG_EVENT_OUT;
268 15 : info->fieldType = GF_SG_VRML_SFTIME;
269 15 : info->far_ptr = & ((M_AnimationStream *) node)->duration_changed;
270 15 : return GF_OK;
271 15 : case 6:
272 15 : info->name = "isActive";
273 15 : info->eventType = GF_SG_EVENT_OUT;
274 15 : info->fieldType = GF_SG_VRML_SFBOOL;
275 15 : info->far_ptr = & ((M_AnimationStream *) node)->isActive;
276 15 : return GF_OK;
277 : default:
278 : return GF_BAD_PARAM;
279 : }
280 : }
281 :
282 :
283 43 : static s32 AnimationStream_get_field_index_by_name(char *name)
284 : {
285 43 : if (!strcmp("loop", name)) return 0;
286 40 : if (!strcmp("speed", name)) return 1;
287 39 : if (!strcmp("startTime", name)) return 2;
288 33 : if (!strcmp("stopTime", name)) return 3;
289 27 : if (!strcmp("url", name)) return 4;
290 2 : if (!strcmp("duration_changed", name)) return 5;
291 1 : if (!strcmp("isActive", name)) return 6;
292 0 : return -1;
293 : }
294 : static Bool AnimationStream_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
295 : {
296 14 : switch (FieldIndex) {
297 2 : case 1:
298 2 : *AType = 7;
299 2 : *QType = 0;
300 2 : *b_min = FIX_MIN;
301 2 : *b_max = FIX_MAX;
302 : return 1;
303 : default:
304 : return 0;
305 : }
306 : }
307 :
308 :
309 :
310 292 : GF_Node *AnimationStream_Create()
311 : {
312 : M_AnimationStream *p;
313 292 : GF_SAFEALLOC(p, M_AnimationStream);
314 292 : if(!p) return NULL;
315 292 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AnimationStream);
316 :
317 : /*default field values*/
318 292 : p->speed = FLT2FIX(1.0);
319 292 : p->startTime = 0;
320 292 : p->stopTime = 0;
321 292 : return (GF_Node *)p;
322 : }
323 :
324 :
325 : /*
326 : Appearance Node deletion
327 : */
328 :
329 6273 : static void Appearance_Del(GF_Node *node)
330 : {
331 : M_Appearance *p = (M_Appearance *) node;
332 6273 : gf_node_unregister((GF_Node *) p->material, (GF_Node *) p);
333 6273 : gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
334 6273 : gf_node_unregister((GF_Node *) p->textureTransform, (GF_Node *) p);
335 6273 : gf_node_free((GF_Node *) p);
336 6273 : }
337 :
338 : static const u16 Appearance_Def2All[] = { 0, 1, 2};
339 : static const u16 Appearance_In2All[] = { 0, 1, 2};
340 : static const u16 Appearance_Out2All[] = { 0, 1, 2};
341 :
342 : static u32 Appearance_get_field_count(GF_Node *node, u8 IndexMode)
343 : {
344 5508 : switch(IndexMode) {
345 : case GF_SG_FIELD_CODING_IN:
346 : return 3;
347 : case GF_SG_FIELD_CODING_DEF:
348 : return 3;
349 : case GF_SG_FIELD_CODING_OUT:
350 : return 3;
351 1 : case GF_SG_FIELD_CODING_DYN:
352 : return 0;
353 : default:
354 : return 3;
355 : }
356 : }
357 :
358 : static GF_Err Appearance_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
359 : {
360 4830 : switch(IndexMode) {
361 0 : case GF_SG_FIELD_CODING_IN:
362 0 : *allField = Appearance_In2All[inField];
363 : return GF_OK;
364 4827 : case GF_SG_FIELD_CODING_DEF:
365 4827 : *allField = Appearance_Def2All[inField];
366 : return GF_OK;
367 0 : case GF_SG_FIELD_CODING_OUT:
368 0 : *allField = Appearance_Out2All[inField];
369 : return GF_OK;
370 : default:
371 : return GF_BAD_PARAM;
372 : }
373 : }
374 : static GF_Err Appearance_get_field(GF_Node *node, GF_FieldInfo *info)
375 : {
376 19277 : switch (info->fieldIndex) {
377 8300 : case 0:
378 8300 : info->name = "material";
379 8300 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
380 8300 : info->fieldType = GF_SG_VRML_SFNODE;
381 8300 : info->NDTtype = NDT_SFMaterialNode;
382 8300 : info->far_ptr = & ((M_Appearance *)node)->material;
383 : return GF_OK;
384 5973 : case 1:
385 5973 : info->name = "texture";
386 5973 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
387 5973 : info->fieldType = GF_SG_VRML_SFNODE;
388 5973 : info->NDTtype = NDT_SFTextureNode;
389 5973 : info->far_ptr = & ((M_Appearance *)node)->texture;
390 : return GF_OK;
391 5004 : case 2:
392 5004 : info->name = "textureTransform";
393 5004 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
394 5004 : info->fieldType = GF_SG_VRML_SFNODE;
395 5004 : info->NDTtype = NDT_SFTextureTransformNode;
396 5004 : info->far_ptr = & ((M_Appearance *)node)->textureTransform;
397 : return GF_OK;
398 : default:
399 : return GF_BAD_PARAM;
400 : }
401 : }
402 :
403 :
404 2533 : static s32 Appearance_get_field_index_by_name(char *name)
405 : {
406 2533 : if (!strcmp("material", name)) return 0;
407 854 : if (!strcmp("texture", name)) return 1;
408 118 : if (!strcmp("textureTransform", name)) return 2;
409 63 : return -1;
410 : }
411 : static Bool Appearance_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
412 : {
413 : switch (FieldIndex) {
414 : default:
415 : return 0;
416 : }
417 : }
418 :
419 :
420 :
421 6273 : GF_Node *Appearance_Create()
422 : {
423 : M_Appearance *p;
424 6273 : GF_SAFEALLOC(p, M_Appearance);
425 6273 : if(!p) return NULL;
426 6273 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Appearance);
427 :
428 : /*default field values*/
429 6273 : return (GF_Node *)p;
430 : }
431 :
432 :
433 : /*
434 : AudioBuffer Node deletion
435 : */
436 :
437 45 : static void AudioBuffer_Del(GF_Node *node)
438 : {
439 : M_AudioBuffer *p = (M_AudioBuffer *) node;
440 45 : gf_node_unregister_children((GF_Node *) p, p->children);
441 45 : gf_sg_mfint32_del(p->phaseGroup);
442 45 : gf_node_free((GF_Node *) p);
443 45 : }
444 :
445 : static const u16 AudioBuffer_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
446 : static const u16 AudioBuffer_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
447 : static const u16 AudioBuffer_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
448 : static const u16 AudioBuffer_Dyn2All[] = { 1};
449 :
450 : static u32 AudioBuffer_get_field_count(GF_Node *node, u8 IndexMode)
451 : {
452 : switch(IndexMode) {
453 : case GF_SG_FIELD_CODING_IN:
454 : return 8;
455 : case GF_SG_FIELD_CODING_DEF:
456 : return 8;
457 : case GF_SG_FIELD_CODING_OUT:
458 : return 10;
459 : case GF_SG_FIELD_CODING_DYN:
460 : return 1;
461 : default:
462 : return 10;
463 : }
464 : }
465 :
466 : static GF_Err AudioBuffer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
467 : {
468 114 : switch(IndexMode) {
469 0 : case GF_SG_FIELD_CODING_IN:
470 0 : *allField = AudioBuffer_In2All[inField];
471 : return GF_OK;
472 104 : case GF_SG_FIELD_CODING_DEF:
473 104 : *allField = AudioBuffer_Def2All[inField];
474 : return GF_OK;
475 0 : case GF_SG_FIELD_CODING_OUT:
476 0 : *allField = AudioBuffer_Out2All[inField];
477 : return GF_OK;
478 0 : case GF_SG_FIELD_CODING_DYN:
479 0 : *allField = AudioBuffer_Dyn2All[inField];
480 : return GF_OK;
481 : default:
482 : return GF_BAD_PARAM;
483 : }
484 : }
485 395 : static GF_Err AudioBuffer_get_field(GF_Node *node, GF_FieldInfo *info)
486 : {
487 395 : switch (info->fieldIndex) {
488 49 : case 0:
489 49 : info->name = "loop";
490 49 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
491 49 : info->fieldType = GF_SG_VRML_SFBOOL;
492 49 : info->far_ptr = & ((M_AudioBuffer *) node)->loop;
493 49 : return GF_OK;
494 52 : case 1:
495 52 : info->name = "pitch";
496 52 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
497 52 : info->fieldType = GF_SG_VRML_SFFLOAT;
498 52 : info->far_ptr = & ((M_AudioBuffer *) node)->pitch;
499 52 : return GF_OK;
500 49 : case 2:
501 49 : info->name = "startTime";
502 49 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
503 49 : info->fieldType = GF_SG_VRML_SFTIME;
504 49 : info->far_ptr = & ((M_AudioBuffer *) node)->startTime;
505 49 : return GF_OK;
506 49 : case 3:
507 49 : info->name = "stopTime";
508 49 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
509 49 : info->fieldType = GF_SG_VRML_SFTIME;
510 49 : info->far_ptr = & ((M_AudioBuffer *) node)->stopTime;
511 49 : return GF_OK;
512 26 : case 4:
513 26 : info->name = "children";
514 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
515 26 : info->fieldType = GF_SG_VRML_MFNODE;
516 26 : info->NDTtype = NDT_SFAudioNode;
517 26 : info->far_ptr = & ((M_AudioBuffer *)node)->children;
518 26 : return GF_OK;
519 49 : case 5:
520 49 : info->name = "numChan";
521 49 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
522 49 : info->fieldType = GF_SG_VRML_SFINT32;
523 49 : info->far_ptr = & ((M_AudioBuffer *) node)->numChan;
524 49 : return GF_OK;
525 48 : case 6:
526 48 : info->name = "phaseGroup";
527 48 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
528 48 : info->fieldType = GF_SG_VRML_MFINT32;
529 48 : info->far_ptr = & ((M_AudioBuffer *) node)->phaseGroup;
530 48 : return GF_OK;
531 49 : case 7:
532 49 : info->name = "length";
533 49 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
534 49 : info->fieldType = GF_SG_VRML_SFFLOAT;
535 49 : info->far_ptr = & ((M_AudioBuffer *) node)->length;
536 49 : return GF_OK;
537 12 : case 8:
538 12 : info->name = "duration_changed";
539 12 : info->eventType = GF_SG_EVENT_OUT;
540 12 : info->fieldType = GF_SG_VRML_SFTIME;
541 12 : info->far_ptr = & ((M_AudioBuffer *) node)->duration_changed;
542 12 : return GF_OK;
543 12 : case 9:
544 12 : info->name = "isActive";
545 12 : info->eventType = GF_SG_EVENT_OUT;
546 12 : info->fieldType = GF_SG_VRML_SFBOOL;
547 12 : info->far_ptr = & ((M_AudioBuffer *) node)->isActive;
548 12 : return GF_OK;
549 : default:
550 : return GF_BAD_PARAM;
551 : }
552 : }
553 :
554 :
555 19 : static s32 AudioBuffer_get_field_index_by_name(char *name)
556 : {
557 19 : if (!strcmp("loop", name)) return 0;
558 17 : if (!strcmp("pitch", name)) return 1;
559 13 : if (!strcmp("startTime", name)) return 2;
560 11 : if (!strcmp("stopTime", name)) return 3;
561 9 : if (!strcmp("children", name)) return 4;
562 7 : if (!strcmp("numChan", name)) return 5;
563 5 : if (!strcmp("phaseGroup", name)) return 6;
564 4 : if (!strcmp("length", name)) return 7;
565 2 : if (!strcmp("duration_changed", name)) return 8;
566 1 : if (!strcmp("isActive", name)) return 9;
567 0 : return -1;
568 : }
569 10 : static Bool AudioBuffer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
570 : {
571 10 : switch (FieldIndex) {
572 1 : case 1:
573 1 : *AType = 7;
574 1 : *QType = 0;
575 1 : *b_min = FLT2FIX(0);
576 1 : *b_max = FIX_MAX;
577 : return 1;
578 1 : case 2:
579 1 : *AType = 0;
580 1 : *QType = 0;
581 1 : *b_min = FLT2FIX(0);
582 1 : *b_max = FIX_MAX;
583 : return 1;
584 1 : case 3:
585 1 : *AType = 0;
586 1 : *QType = 0;
587 1 : *b_min = FLT2FIX(0);
588 1 : *b_max = FIX_MAX;
589 : return 1;
590 1 : case 5:
591 1 : *AType = 0;
592 1 : *QType = 13;
593 1 : *QT13_bits = 8;
594 1 : *b_min = FLT2FIX(0);
595 1 : *b_max = FLT2FIX(255);
596 : return 1;
597 1 : case 7:
598 1 : *AType = 0;
599 1 : *QType = 0;
600 1 : *b_min = FLT2FIX(0);
601 1 : *b_max = FIX_MAX;
602 : return 1;
603 : default:
604 : return 0;
605 : }
606 : }
607 :
608 :
609 :
610 45 : GF_Node *AudioBuffer_Create()
611 : {
612 : M_AudioBuffer *p;
613 45 : GF_SAFEALLOC(p, M_AudioBuffer);
614 45 : if(!p) return NULL;
615 45 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioBuffer);
616 :
617 : /*default field values*/
618 45 : p->pitch = FLT2FIX(1);
619 45 : p->startTime = 0;
620 45 : p->stopTime = 0;
621 45 : p->numChan = 1;
622 45 : p->phaseGroup.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
623 45 : p->phaseGroup.count = 1;
624 45 : p->phaseGroup.vals[0] = 1;
625 45 : p->length = FLT2FIX(0.0);
626 45 : return (GF_Node *)p;
627 : }
628 :
629 :
630 : /*
631 : AudioClip Node deletion
632 : */
633 :
634 262 : static void AudioClip_Del(GF_Node *node)
635 : {
636 : M_AudioClip *p = (M_AudioClip *) node;
637 262 : gf_sg_sfstring_del(p->description);
638 262 : gf_sg_mfurl_del(p->url);
639 262 : gf_node_free((GF_Node *) p);
640 262 : }
641 :
642 : static const u16 AudioClip_Def2All[] = { 0, 1, 2, 3, 4, 5};
643 : static const u16 AudioClip_In2All[] = { 0, 1, 2, 3, 4, 5};
644 : static const u16 AudioClip_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
645 : static const u16 AudioClip_Dyn2All[] = { 2};
646 :
647 : static u32 AudioClip_get_field_count(GF_Node *node, u8 IndexMode)
648 : {
649 : switch(IndexMode) {
650 : case GF_SG_FIELD_CODING_IN:
651 : return 6;
652 : case GF_SG_FIELD_CODING_DEF:
653 : return 6;
654 : case GF_SG_FIELD_CODING_OUT:
655 : return 8;
656 : case GF_SG_FIELD_CODING_DYN:
657 : return 1;
658 : default:
659 : return 8;
660 : }
661 : }
662 :
663 : static GF_Err AudioClip_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
664 : {
665 102 : switch(IndexMode) {
666 4 : case GF_SG_FIELD_CODING_IN:
667 4 : *allField = AudioClip_In2All[inField];
668 : return GF_OK;
669 90 : case GF_SG_FIELD_CODING_DEF:
670 90 : *allField = AudioClip_Def2All[inField];
671 : return GF_OK;
672 0 : case GF_SG_FIELD_CODING_OUT:
673 0 : *allField = AudioClip_Out2All[inField];
674 : return GF_OK;
675 0 : case GF_SG_FIELD_CODING_DYN:
676 0 : *allField = AudioClip_Dyn2All[inField];
677 : return GF_OK;
678 : default:
679 : return GF_BAD_PARAM;
680 : }
681 : }
682 362 : static GF_Err AudioClip_get_field(GF_Node *node, GF_FieldInfo *info)
683 : {
684 362 : switch (info->fieldIndex) {
685 52 : case 0:
686 52 : info->name = "description";
687 52 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
688 52 : info->fieldType = GF_SG_VRML_SFSTRING;
689 52 : info->far_ptr = & ((M_AudioClip *) node)->description;
690 52 : return GF_OK;
691 57 : case 1:
692 57 : info->name = "loop";
693 57 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
694 57 : info->fieldType = GF_SG_VRML_SFBOOL;
695 57 : info->far_ptr = & ((M_AudioClip *) node)->loop;
696 57 : return GF_OK;
697 52 : case 2:
698 52 : info->name = "pitch";
699 52 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
700 52 : info->fieldType = GF_SG_VRML_SFFLOAT;
701 52 : info->far_ptr = & ((M_AudioClip *) node)->pitch;
702 52 : return GF_OK;
703 58 : case 3:
704 58 : info->name = "startTime";
705 58 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
706 58 : info->fieldType = GF_SG_VRML_SFTIME;
707 58 : info->far_ptr = & ((M_AudioClip *) node)->startTime;
708 58 : return GF_OK;
709 54 : case 4:
710 54 : info->name = "stopTime";
711 54 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
712 54 : info->fieldType = GF_SG_VRML_SFTIME;
713 54 : info->far_ptr = & ((M_AudioClip *) node)->stopTime;
714 54 : return GF_OK;
715 65 : case 5:
716 65 : info->name = "url";
717 65 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
718 65 : info->fieldType = GF_SG_VRML_MFURL;
719 65 : info->far_ptr = & ((M_AudioClip *) node)->url;
720 65 : return GF_OK;
721 12 : case 6:
722 12 : info->name = "duration_changed";
723 12 : info->eventType = GF_SG_EVENT_OUT;
724 12 : info->fieldType = GF_SG_VRML_SFTIME;
725 12 : info->far_ptr = & ((M_AudioClip *) node)->duration_changed;
726 12 : return GF_OK;
727 12 : case 7:
728 12 : info->name = "isActive";
729 12 : info->eventType = GF_SG_EVENT_OUT;
730 12 : info->fieldType = GF_SG_VRML_SFBOOL;
731 12 : info->far_ptr = & ((M_AudioClip *) node)->isActive;
732 12 : return GF_OK;
733 : default:
734 : return GF_BAD_PARAM;
735 : }
736 : }
737 :
738 :
739 25 : static s32 AudioClip_get_field_index_by_name(char *name)
740 : {
741 25 : if (!strcmp("description", name)) return 0;
742 24 : if (!strcmp("loop", name)) return 1;
743 18 : if (!strcmp("pitch", name)) return 2;
744 17 : if (!strcmp("startTime", name)) return 3;
745 14 : if (!strcmp("stopTime", name)) return 4;
746 12 : if (!strcmp("url", name)) return 5;
747 2 : if (!strcmp("duration_changed", name)) return 6;
748 1 : if (!strcmp("isActive", name)) return 7;
749 0 : return -1;
750 : }
751 : static Bool AudioClip_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
752 : {
753 8 : switch (FieldIndex) {
754 1 : case 2:
755 1 : *AType = 7;
756 1 : *QType = 0;
757 1 : *b_min = FLT2FIX(0);
758 1 : *b_max = FIX_MAX;
759 : return 1;
760 : default:
761 : return 0;
762 : }
763 : }
764 :
765 :
766 :
767 262 : GF_Node *AudioClip_Create()
768 : {
769 : M_AudioClip *p;
770 262 : GF_SAFEALLOC(p, M_AudioClip);
771 262 : if(!p) return NULL;
772 262 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioClip);
773 :
774 : /*default field values*/
775 262 : p->pitch = FLT2FIX(1.0);
776 262 : p->startTime = 0;
777 262 : p->stopTime = 0;
778 262 : return (GF_Node *)p;
779 : }
780 :
781 :
782 : /*
783 : AudioDelay Node deletion
784 : */
785 :
786 1 : static void AudioDelay_Del(GF_Node *node)
787 : {
788 : M_AudioDelay *p = (M_AudioDelay *) node;
789 1 : gf_sg_mfint32_del(p->phaseGroup);
790 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
791 1 : gf_node_free((GF_Node *) p);
792 1 : }
793 :
794 : static const u16 AudioDelay_Def2All[] = { 2, 3, 4, 5};
795 : static const u16 AudioDelay_In2All[] = { 0, 1, 2, 3};
796 : static const u16 AudioDelay_Out2All[] = { 2, 3};
797 :
798 : static u32 AudioDelay_get_field_count(GF_Node *node, u8 IndexMode)
799 : {
800 : switch(IndexMode) {
801 : case GF_SG_FIELD_CODING_IN:
802 : return 4;
803 : case GF_SG_FIELD_CODING_DEF:
804 : return 4;
805 : case GF_SG_FIELD_CODING_OUT:
806 : return 2;
807 : case GF_SG_FIELD_CODING_DYN:
808 : return 0;
809 : default:
810 : return 6;
811 : }
812 : }
813 :
814 : static GF_Err AudioDelay_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
815 : {
816 6 : switch(IndexMode) {
817 0 : case GF_SG_FIELD_CODING_IN:
818 0 : *allField = AudioDelay_In2All[inField];
819 : return GF_OK;
820 0 : case GF_SG_FIELD_CODING_DEF:
821 0 : *allField = AudioDelay_Def2All[inField];
822 : return GF_OK;
823 0 : case GF_SG_FIELD_CODING_OUT:
824 0 : *allField = AudioDelay_Out2All[inField];
825 : return GF_OK;
826 : default:
827 : return GF_BAD_PARAM;
828 : }
829 : }
830 12 : static GF_Err AudioDelay_get_field(GF_Node *node, GF_FieldInfo *info)
831 : {
832 12 : switch (info->fieldIndex) {
833 2 : case 0:
834 2 : info->name = "addChildren";
835 2 : info->eventType = GF_SG_EVENT_IN;
836 2 : info->on_event_in = ((M_AudioDelay *)node)->on_addChildren;
837 2 : info->fieldType = GF_SG_VRML_MFNODE;
838 2 : info->NDTtype = NDT_SFAudioNode;
839 2 : info->far_ptr = & ((M_AudioDelay *)node)->addChildren;
840 2 : return GF_OK;
841 2 : case 1:
842 2 : info->name = "removeChildren";
843 2 : info->eventType = GF_SG_EVENT_IN;
844 2 : info->on_event_in = ((M_AudioDelay *)node)->on_removeChildren;
845 2 : info->fieldType = GF_SG_VRML_MFNODE;
846 2 : info->NDTtype = NDT_SFAudioNode;
847 2 : info->far_ptr = & ((M_AudioDelay *)node)->removeChildren;
848 2 : return GF_OK;
849 2 : case 2:
850 2 : info->name = "children";
851 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
852 2 : info->fieldType = GF_SG_VRML_MFNODE;
853 2 : info->NDTtype = NDT_SFAudioNode;
854 2 : info->far_ptr = & ((M_AudioDelay *)node)->children;
855 2 : return GF_OK;
856 2 : case 3:
857 2 : info->name = "delay";
858 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
859 2 : info->fieldType = GF_SG_VRML_SFTIME;
860 2 : info->far_ptr = & ((M_AudioDelay *) node)->delay;
861 2 : return GF_OK;
862 2 : case 4:
863 2 : info->name = "numChan";
864 2 : info->eventType = GF_SG_EVENT_FIELD;
865 2 : info->fieldType = GF_SG_VRML_SFINT32;
866 2 : info->far_ptr = & ((M_AudioDelay *) node)->numChan;
867 2 : return GF_OK;
868 2 : case 5:
869 2 : info->name = "phaseGroup";
870 2 : info->eventType = GF_SG_EVENT_FIELD;
871 2 : info->fieldType = GF_SG_VRML_MFINT32;
872 2 : info->far_ptr = & ((M_AudioDelay *) node)->phaseGroup;
873 2 : return GF_OK;
874 : default:
875 : return GF_BAD_PARAM;
876 : }
877 : }
878 :
879 :
880 6 : static s32 AudioDelay_get_field_index_by_name(char *name)
881 : {
882 6 : if (!strcmp("addChildren", name)) return 0;
883 5 : if (!strcmp("removeChildren", name)) return 1;
884 4 : if (!strcmp("children", name)) return 2;
885 3 : if (!strcmp("delay", name)) return 3;
886 2 : if (!strcmp("numChan", name)) return 4;
887 1 : if (!strcmp("phaseGroup", name)) return 5;
888 0 : return -1;
889 : }
890 : static Bool AudioDelay_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
891 : {
892 6 : switch (FieldIndex) {
893 1 : case 4:
894 1 : *AType = 0;
895 1 : *QType = 13;
896 1 : *QT13_bits = 8;
897 1 : *b_min = FLT2FIX(0);
898 1 : *b_max = FLT2FIX(255);
899 : return 1;
900 1 : case 5:
901 1 : *AType = 0;
902 1 : *QType = 13;
903 1 : *QT13_bits = 8;
904 1 : *b_min = FLT2FIX(0);
905 1 : *b_max = FLT2FIX(255);
906 : return 1;
907 : default:
908 : return 0;
909 : }
910 : }
911 :
912 :
913 :
914 1 : GF_Node *AudioDelay_Create()
915 : {
916 : M_AudioDelay *p;
917 1 : GF_SAFEALLOC(p, M_AudioDelay);
918 1 : if(!p) return NULL;
919 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioDelay);
920 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
921 :
922 : /*default field values*/
923 1 : p->delay = 0;
924 1 : p->numChan = 1;
925 1 : return (GF_Node *)p;
926 : }
927 :
928 :
929 : /*
930 : AudioFX Node deletion
931 : */
932 :
933 1 : static void AudioFX_Del(GF_Node *node)
934 : {
935 : M_AudioFX *p = (M_AudioFX *) node;
936 1 : gf_sg_sfstring_del(p->orch);
937 1 : gf_sg_sfstring_del(p->score);
938 1 : gf_sg_mffloat_del(p->params);
939 1 : gf_sg_mfint32_del(p->phaseGroup);
940 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
941 1 : gf_node_free((GF_Node *) p);
942 1 : }
943 :
944 : static const u16 AudioFX_Def2All[] = { 2, 3, 4, 5, 6, 7};
945 : static const u16 AudioFX_In2All[] = { 0, 1, 2, 3, 4, 5};
946 : static const u16 AudioFX_Out2All[] = { 2, 3, 4, 5};
947 : static const u16 AudioFX_Dyn2All[] = { 5};
948 :
949 : static u32 AudioFX_get_field_count(GF_Node *node, u8 IndexMode)
950 : {
951 : switch(IndexMode) {
952 : case GF_SG_FIELD_CODING_IN:
953 : return 6;
954 : case GF_SG_FIELD_CODING_DEF:
955 : return 6;
956 : case GF_SG_FIELD_CODING_OUT:
957 : return 4;
958 : case GF_SG_FIELD_CODING_DYN:
959 : return 1;
960 : default:
961 : return 8;
962 : }
963 : }
964 :
965 : static GF_Err AudioFX_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
966 : {
967 8 : switch(IndexMode) {
968 0 : case GF_SG_FIELD_CODING_IN:
969 0 : *allField = AudioFX_In2All[inField];
970 : return GF_OK;
971 0 : case GF_SG_FIELD_CODING_DEF:
972 0 : *allField = AudioFX_Def2All[inField];
973 : return GF_OK;
974 0 : case GF_SG_FIELD_CODING_OUT:
975 0 : *allField = AudioFX_Out2All[inField];
976 : return GF_OK;
977 0 : case GF_SG_FIELD_CODING_DYN:
978 0 : *allField = AudioFX_Dyn2All[inField];
979 : return GF_OK;
980 : default:
981 : return GF_BAD_PARAM;
982 : }
983 : }
984 16 : static GF_Err AudioFX_get_field(GF_Node *node, GF_FieldInfo *info)
985 : {
986 16 : switch (info->fieldIndex) {
987 2 : case 0:
988 2 : info->name = "addChildren";
989 2 : info->eventType = GF_SG_EVENT_IN;
990 2 : info->on_event_in = ((M_AudioFX *)node)->on_addChildren;
991 2 : info->fieldType = GF_SG_VRML_MFNODE;
992 2 : info->NDTtype = NDT_SFAudioNode;
993 2 : info->far_ptr = & ((M_AudioFX *)node)->addChildren;
994 2 : return GF_OK;
995 2 : case 1:
996 2 : info->name = "removeChildren";
997 2 : info->eventType = GF_SG_EVENT_IN;
998 2 : info->on_event_in = ((M_AudioFX *)node)->on_removeChildren;
999 2 : info->fieldType = GF_SG_VRML_MFNODE;
1000 2 : info->NDTtype = NDT_SFAudioNode;
1001 2 : info->far_ptr = & ((M_AudioFX *)node)->removeChildren;
1002 2 : return GF_OK;
1003 2 : case 2:
1004 2 : info->name = "children";
1005 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1006 2 : info->fieldType = GF_SG_VRML_MFNODE;
1007 2 : info->NDTtype = NDT_SFAudioNode;
1008 2 : info->far_ptr = & ((M_AudioFX *)node)->children;
1009 2 : return GF_OK;
1010 2 : case 3:
1011 2 : info->name = "orch";
1012 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1013 2 : info->fieldType = GF_SG_VRML_SFSTRING;
1014 2 : info->far_ptr = & ((M_AudioFX *) node)->orch;
1015 2 : return GF_OK;
1016 2 : case 4:
1017 2 : info->name = "score";
1018 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1019 2 : info->fieldType = GF_SG_VRML_SFSTRING;
1020 2 : info->far_ptr = & ((M_AudioFX *) node)->score;
1021 2 : return GF_OK;
1022 2 : case 5:
1023 2 : info->name = "params";
1024 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1025 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
1026 2 : info->far_ptr = & ((M_AudioFX *) node)->params;
1027 2 : return GF_OK;
1028 2 : case 6:
1029 2 : info->name = "numChan";
1030 2 : info->eventType = GF_SG_EVENT_FIELD;
1031 2 : info->fieldType = GF_SG_VRML_SFINT32;
1032 2 : info->far_ptr = & ((M_AudioFX *) node)->numChan;
1033 2 : return GF_OK;
1034 2 : case 7:
1035 2 : info->name = "phaseGroup";
1036 2 : info->eventType = GF_SG_EVENT_FIELD;
1037 2 : info->fieldType = GF_SG_VRML_MFINT32;
1038 2 : info->far_ptr = & ((M_AudioFX *) node)->phaseGroup;
1039 2 : return GF_OK;
1040 : default:
1041 : return GF_BAD_PARAM;
1042 : }
1043 : }
1044 :
1045 :
1046 8 : static s32 AudioFX_get_field_index_by_name(char *name)
1047 : {
1048 8 : if (!strcmp("addChildren", name)) return 0;
1049 7 : if (!strcmp("removeChildren", name)) return 1;
1050 6 : if (!strcmp("children", name)) return 2;
1051 5 : if (!strcmp("orch", name)) return 3;
1052 4 : if (!strcmp("score", name)) return 4;
1053 3 : if (!strcmp("params", name)) return 5;
1054 2 : if (!strcmp("numChan", name)) return 6;
1055 1 : if (!strcmp("phaseGroup", name)) return 7;
1056 0 : return -1;
1057 : }
1058 : static Bool AudioFX_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1059 : {
1060 8 : switch (FieldIndex) {
1061 1 : case 5:
1062 1 : *AType = 7;
1063 1 : *QType = 0;
1064 1 : *b_min = FIX_MIN;
1065 1 : *b_max = FIX_MAX;
1066 : return 1;
1067 1 : case 6:
1068 1 : *AType = 0;
1069 1 : *QType = 13;
1070 1 : *QT13_bits = 8;
1071 1 : *b_min = FLT2FIX(0);
1072 1 : *b_max = FLT2FIX(255);
1073 : return 1;
1074 1 : case 7:
1075 1 : *AType = 0;
1076 1 : *QType = 13;
1077 1 : *QT13_bits = 8;
1078 1 : *b_min = FLT2FIX(0);
1079 1 : *b_max = FLT2FIX(255);
1080 : return 1;
1081 : default:
1082 : return 0;
1083 : }
1084 : }
1085 :
1086 :
1087 :
1088 1 : GF_Node *AudioFX_Create()
1089 : {
1090 : M_AudioFX *p;
1091 1 : GF_SAFEALLOC(p, M_AudioFX);
1092 1 : if(!p) return NULL;
1093 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioFX);
1094 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
1095 :
1096 : /*default field values*/
1097 1 : p->numChan = 1;
1098 1 : return (GF_Node *)p;
1099 : }
1100 :
1101 :
1102 : /*
1103 : AudioMix Node deletion
1104 : */
1105 :
1106 1 : static void AudioMix_Del(GF_Node *node)
1107 : {
1108 : M_AudioMix *p = (M_AudioMix *) node;
1109 1 : gf_sg_mffloat_del(p->matrix);
1110 1 : gf_sg_mfint32_del(p->phaseGroup);
1111 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
1112 1 : gf_node_free((GF_Node *) p);
1113 1 : }
1114 :
1115 : static const u16 AudioMix_Def2All[] = { 2, 3, 4, 5, 6};
1116 : static const u16 AudioMix_In2All[] = { 0, 1, 2, 3, 4};
1117 : static const u16 AudioMix_Out2All[] = { 2, 3, 4};
1118 : static const u16 AudioMix_Dyn2All[] = { 4};
1119 :
1120 : static u32 AudioMix_get_field_count(GF_Node *node, u8 IndexMode)
1121 : {
1122 : switch(IndexMode) {
1123 : case GF_SG_FIELD_CODING_IN:
1124 : return 5;
1125 : case GF_SG_FIELD_CODING_DEF:
1126 : return 5;
1127 : case GF_SG_FIELD_CODING_OUT:
1128 : return 3;
1129 : case GF_SG_FIELD_CODING_DYN:
1130 : return 1;
1131 : default:
1132 : return 7;
1133 : }
1134 : }
1135 :
1136 : static GF_Err AudioMix_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1137 : {
1138 7 : switch(IndexMode) {
1139 0 : case GF_SG_FIELD_CODING_IN:
1140 0 : *allField = AudioMix_In2All[inField];
1141 : return GF_OK;
1142 0 : case GF_SG_FIELD_CODING_DEF:
1143 0 : *allField = AudioMix_Def2All[inField];
1144 : return GF_OK;
1145 0 : case GF_SG_FIELD_CODING_OUT:
1146 0 : *allField = AudioMix_Out2All[inField];
1147 : return GF_OK;
1148 0 : case GF_SG_FIELD_CODING_DYN:
1149 0 : *allField = AudioMix_Dyn2All[inField];
1150 : return GF_OK;
1151 : default:
1152 : return GF_BAD_PARAM;
1153 : }
1154 : }
1155 14 : static GF_Err AudioMix_get_field(GF_Node *node, GF_FieldInfo *info)
1156 : {
1157 14 : switch (info->fieldIndex) {
1158 2 : case 0:
1159 2 : info->name = "addChildren";
1160 2 : info->eventType = GF_SG_EVENT_IN;
1161 2 : info->on_event_in = ((M_AudioMix *)node)->on_addChildren;
1162 2 : info->fieldType = GF_SG_VRML_MFNODE;
1163 2 : info->NDTtype = NDT_SFAudioNode;
1164 2 : info->far_ptr = & ((M_AudioMix *)node)->addChildren;
1165 2 : return GF_OK;
1166 2 : case 1:
1167 2 : info->name = "removeChildren";
1168 2 : info->eventType = GF_SG_EVENT_IN;
1169 2 : info->on_event_in = ((M_AudioMix *)node)->on_removeChildren;
1170 2 : info->fieldType = GF_SG_VRML_MFNODE;
1171 2 : info->NDTtype = NDT_SFAudioNode;
1172 2 : info->far_ptr = & ((M_AudioMix *)node)->removeChildren;
1173 2 : return GF_OK;
1174 2 : case 2:
1175 2 : info->name = "children";
1176 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1177 2 : info->fieldType = GF_SG_VRML_MFNODE;
1178 2 : info->NDTtype = NDT_SFAudioNode;
1179 2 : info->far_ptr = & ((M_AudioMix *)node)->children;
1180 2 : return GF_OK;
1181 2 : case 3:
1182 2 : info->name = "numInputs";
1183 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1184 2 : info->fieldType = GF_SG_VRML_SFINT32;
1185 2 : info->far_ptr = & ((M_AudioMix *) node)->numInputs;
1186 2 : return GF_OK;
1187 2 : case 4:
1188 2 : info->name = "matrix";
1189 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1190 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
1191 2 : info->far_ptr = & ((M_AudioMix *) node)->matrix;
1192 2 : return GF_OK;
1193 2 : case 5:
1194 2 : info->name = "numChan";
1195 2 : info->eventType = GF_SG_EVENT_FIELD;
1196 2 : info->fieldType = GF_SG_VRML_SFINT32;
1197 2 : info->far_ptr = & ((M_AudioMix *) node)->numChan;
1198 2 : return GF_OK;
1199 2 : case 6:
1200 2 : info->name = "phaseGroup";
1201 2 : info->eventType = GF_SG_EVENT_FIELD;
1202 2 : info->fieldType = GF_SG_VRML_MFINT32;
1203 2 : info->far_ptr = & ((M_AudioMix *) node)->phaseGroup;
1204 2 : return GF_OK;
1205 : default:
1206 : return GF_BAD_PARAM;
1207 : }
1208 : }
1209 :
1210 :
1211 7 : static s32 AudioMix_get_field_index_by_name(char *name)
1212 : {
1213 7 : if (!strcmp("addChildren", name)) return 0;
1214 6 : if (!strcmp("removeChildren", name)) return 1;
1215 5 : if (!strcmp("children", name)) return 2;
1216 4 : if (!strcmp("numInputs", name)) return 3;
1217 3 : if (!strcmp("matrix", name)) return 4;
1218 2 : if (!strcmp("numChan", name)) return 5;
1219 1 : if (!strcmp("phaseGroup", name)) return 6;
1220 0 : return -1;
1221 : }
1222 : static Bool AudioMix_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1223 : {
1224 7 : switch (FieldIndex) {
1225 1 : case 3:
1226 1 : *AType = 0;
1227 1 : *QType = 13;
1228 1 : *QT13_bits = 8;
1229 1 : *b_min = FLT2FIX(1);
1230 1 : *b_max = FLT2FIX(255);
1231 : return 1;
1232 1 : case 4:
1233 1 : *AType = 7;
1234 1 : *QType = 0;
1235 1 : *b_min = FLT2FIX(0);
1236 1 : *b_max = FLT2FIX(1);
1237 : return 1;
1238 1 : case 5:
1239 1 : *AType = 0;
1240 1 : *QType = 13;
1241 1 : *QT13_bits = 8;
1242 1 : *b_min = FLT2FIX(0);
1243 1 : *b_max = FLT2FIX(255);
1244 : return 1;
1245 1 : case 6:
1246 1 : *AType = 0;
1247 1 : *QType = 13;
1248 1 : *QT13_bits = 8;
1249 1 : *b_min = FLT2FIX(0);
1250 1 : *b_max = FLT2FIX(255);
1251 : return 1;
1252 : default:
1253 : return 0;
1254 : }
1255 : }
1256 :
1257 :
1258 :
1259 1 : GF_Node *AudioMix_Create()
1260 : {
1261 : M_AudioMix *p;
1262 1 : GF_SAFEALLOC(p, M_AudioMix);
1263 1 : if(!p) return NULL;
1264 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioMix);
1265 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
1266 :
1267 : /*default field values*/
1268 1 : p->numInputs = 1;
1269 1 : p->numChan = 1;
1270 1 : return (GF_Node *)p;
1271 : }
1272 :
1273 :
1274 : /*
1275 : AudioSource Node deletion
1276 : */
1277 :
1278 59 : static void AudioSource_Del(GF_Node *node)
1279 : {
1280 : M_AudioSource *p = (M_AudioSource *) node;
1281 59 : gf_sg_mfurl_del(p->url);
1282 59 : gf_sg_mfint32_del(p->phaseGroup);
1283 59 : gf_sg_vrml_parent_destroy((GF_Node *) p);
1284 59 : gf_node_free((GF_Node *) p);
1285 59 : }
1286 :
1287 : static const u16 AudioSource_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9};
1288 : static const u16 AudioSource_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
1289 : static const u16 AudioSource_Out2All[] = { 2, 3, 4, 5, 6, 7};
1290 : static const u16 AudioSource_Dyn2All[] = { 4, 5};
1291 :
1292 : static u32 AudioSource_get_field_count(GF_Node *node, u8 IndexMode)
1293 : {
1294 : switch(IndexMode) {
1295 : case GF_SG_FIELD_CODING_IN:
1296 : return 8;
1297 : case GF_SG_FIELD_CODING_DEF:
1298 : return 8;
1299 : case GF_SG_FIELD_CODING_OUT:
1300 : return 6;
1301 : case GF_SG_FIELD_CODING_DYN:
1302 : return 2;
1303 : default:
1304 : return 10;
1305 : }
1306 : }
1307 :
1308 : static GF_Err AudioSource_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1309 : {
1310 136 : switch(IndexMode) {
1311 0 : case GF_SG_FIELD_CODING_IN:
1312 0 : *allField = AudioSource_In2All[inField];
1313 : return GF_OK;
1314 126 : case GF_SG_FIELD_CODING_DEF:
1315 126 : *allField = AudioSource_Def2All[inField];
1316 : return GF_OK;
1317 0 : case GF_SG_FIELD_CODING_OUT:
1318 0 : *allField = AudioSource_Out2All[inField];
1319 : return GF_OK;
1320 0 : case GF_SG_FIELD_CODING_DYN:
1321 0 : *allField = AudioSource_Dyn2All[inField];
1322 : return GF_OK;
1323 : default:
1324 : return GF_BAD_PARAM;
1325 : }
1326 : }
1327 566 : static GF_Err AudioSource_get_field(GF_Node *node, GF_FieldInfo *info)
1328 : {
1329 566 : switch (info->fieldIndex) {
1330 20 : case 0:
1331 20 : info->name = "addChildren";
1332 20 : info->eventType = GF_SG_EVENT_IN;
1333 20 : info->on_event_in = ((M_AudioSource *)node)->on_addChildren;
1334 20 : info->fieldType = GF_SG_VRML_MFNODE;
1335 20 : info->NDTtype = NDT_SFAudioNode;
1336 20 : info->far_ptr = & ((M_AudioSource *)node)->addChildren;
1337 20 : return GF_OK;
1338 20 : case 1:
1339 20 : info->name = "removeChildren";
1340 20 : info->eventType = GF_SG_EVENT_IN;
1341 20 : info->on_event_in = ((M_AudioSource *)node)->on_removeChildren;
1342 20 : info->fieldType = GF_SG_VRML_MFNODE;
1343 20 : info->NDTtype = NDT_SFAudioNode;
1344 20 : info->far_ptr = & ((M_AudioSource *)node)->removeChildren;
1345 20 : return GF_OK;
1346 73 : case 2:
1347 73 : info->name = "children";
1348 73 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1349 73 : info->fieldType = GF_SG_VRML_MFNODE;
1350 73 : info->NDTtype = NDT_SFAudioNode;
1351 73 : info->far_ptr = & ((M_AudioSource *)node)->children;
1352 73 : return GF_OK;
1353 81 : case 3:
1354 81 : info->name = "url";
1355 81 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1356 81 : info->fieldType = GF_SG_VRML_MFURL;
1357 81 : info->far_ptr = & ((M_AudioSource *) node)->url;
1358 81 : return GF_OK;
1359 58 : case 4:
1360 58 : info->name = "pitch";
1361 58 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1362 58 : info->fieldType = GF_SG_VRML_SFFLOAT;
1363 58 : info->far_ptr = & ((M_AudioSource *) node)->pitch;
1364 58 : return GF_OK;
1365 58 : case 5:
1366 58 : info->name = "speed";
1367 58 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1368 58 : info->fieldType = GF_SG_VRML_SFFLOAT;
1369 58 : info->far_ptr = & ((M_AudioSource *) node)->speed;
1370 58 : return GF_OK;
1371 64 : case 6:
1372 64 : info->name = "startTime";
1373 64 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1374 64 : info->fieldType = GF_SG_VRML_SFTIME;
1375 64 : info->far_ptr = & ((M_AudioSource *) node)->startTime;
1376 64 : return GF_OK;
1377 69 : case 7:
1378 69 : info->name = "stopTime";
1379 69 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1380 69 : info->fieldType = GF_SG_VRML_SFTIME;
1381 69 : info->far_ptr = & ((M_AudioSource *) node)->stopTime;
1382 69 : return GF_OK;
1383 65 : case 8:
1384 65 : info->name = "numChan";
1385 65 : info->eventType = GF_SG_EVENT_FIELD;
1386 65 : info->fieldType = GF_SG_VRML_SFINT32;
1387 65 : info->far_ptr = & ((M_AudioSource *) node)->numChan;
1388 65 : return GF_OK;
1389 58 : case 9:
1390 58 : info->name = "phaseGroup";
1391 58 : info->eventType = GF_SG_EVENT_FIELD;
1392 58 : info->fieldType = GF_SG_VRML_MFINT32;
1393 58 : info->far_ptr = & ((M_AudioSource *) node)->phaseGroup;
1394 58 : return GF_OK;
1395 : default:
1396 : return GF_BAD_PARAM;
1397 : }
1398 : }
1399 :
1400 :
1401 43 : static s32 AudioSource_get_field_index_by_name(char *name)
1402 : {
1403 43 : if (!strcmp("addChildren", name)) return 0;
1404 42 : if (!strcmp("removeChildren", name)) return 1;
1405 41 : if (!strcmp("children", name)) return 2;
1406 30 : if (!strcmp("url", name)) return 3;
1407 19 : if (!strcmp("pitch", name)) return 4;
1408 18 : if (!strcmp("speed", name)) return 5;
1409 17 : if (!strcmp("startTime", name)) return 6;
1410 12 : if (!strcmp("stopTime", name)) return 7;
1411 4 : if (!strcmp("numChan", name)) return 8;
1412 1 : if (!strcmp("phaseGroup", name)) return 9;
1413 0 : return -1;
1414 : }
1415 : static Bool AudioSource_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1416 : {
1417 10 : switch (FieldIndex) {
1418 1 : case 4:
1419 1 : *AType = 7;
1420 1 : *QType = 0;
1421 1 : *b_min = FLT2FIX(0);
1422 1 : *b_max = FIX_MAX;
1423 : return 1;
1424 1 : case 5:
1425 1 : *AType = 7;
1426 1 : *QType = 0;
1427 1 : *b_min = FLT2FIX(0);
1428 1 : *b_max = FIX_MAX;
1429 : return 1;
1430 1 : case 8:
1431 1 : *AType = 0;
1432 1 : *QType = 13;
1433 1 : *QT13_bits = 8;
1434 1 : *b_min = FLT2FIX(0);
1435 1 : *b_max = FLT2FIX(255);
1436 : return 1;
1437 1 : case 9:
1438 1 : *AType = 0;
1439 1 : *QType = 13;
1440 1 : *QT13_bits = 8;
1441 1 : *b_min = FLT2FIX(0);
1442 1 : *b_max = FLT2FIX(255);
1443 : return 1;
1444 : default:
1445 : return 0;
1446 : }
1447 : }
1448 :
1449 :
1450 :
1451 59 : GF_Node *AudioSource_Create()
1452 : {
1453 : M_AudioSource *p;
1454 59 : GF_SAFEALLOC(p, M_AudioSource);
1455 59 : if(!p) return NULL;
1456 59 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioSource);
1457 59 : gf_sg_vrml_parent_setup((GF_Node *) p);
1458 :
1459 : /*default field values*/
1460 59 : p->pitch = FLT2FIX(1);
1461 59 : p->speed = FLT2FIX(1);
1462 59 : p->startTime = 0;
1463 59 : p->stopTime = 0;
1464 59 : p->numChan = 1;
1465 59 : return (GF_Node *)p;
1466 : }
1467 :
1468 :
1469 : /*
1470 : AudioSwitch Node deletion
1471 : */
1472 :
1473 1 : static void AudioSwitch_Del(GF_Node *node)
1474 : {
1475 : M_AudioSwitch *p = (M_AudioSwitch *) node;
1476 1 : gf_sg_mfint32_del(p->whichChoice);
1477 1 : gf_sg_mfint32_del(p->phaseGroup);
1478 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
1479 1 : gf_node_free((GF_Node *) p);
1480 1 : }
1481 :
1482 : static const u16 AudioSwitch_Def2All[] = { 2, 3, 4, 5};
1483 : static const u16 AudioSwitch_In2All[] = { 0, 1, 2, 3};
1484 : static const u16 AudioSwitch_Out2All[] = { 2, 3};
1485 :
1486 : static u32 AudioSwitch_get_field_count(GF_Node *node, u8 IndexMode)
1487 : {
1488 : switch(IndexMode) {
1489 : case GF_SG_FIELD_CODING_IN:
1490 : return 4;
1491 : case GF_SG_FIELD_CODING_DEF:
1492 : return 4;
1493 : case GF_SG_FIELD_CODING_OUT:
1494 : return 2;
1495 : case GF_SG_FIELD_CODING_DYN:
1496 : return 0;
1497 : default:
1498 : return 6;
1499 : }
1500 : }
1501 :
1502 : static GF_Err AudioSwitch_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1503 : {
1504 6 : switch(IndexMode) {
1505 0 : case GF_SG_FIELD_CODING_IN:
1506 0 : *allField = AudioSwitch_In2All[inField];
1507 : return GF_OK;
1508 0 : case GF_SG_FIELD_CODING_DEF:
1509 0 : *allField = AudioSwitch_Def2All[inField];
1510 : return GF_OK;
1511 0 : case GF_SG_FIELD_CODING_OUT:
1512 0 : *allField = AudioSwitch_Out2All[inField];
1513 : return GF_OK;
1514 : default:
1515 : return GF_BAD_PARAM;
1516 : }
1517 : }
1518 12 : static GF_Err AudioSwitch_get_field(GF_Node *node, GF_FieldInfo *info)
1519 : {
1520 12 : switch (info->fieldIndex) {
1521 2 : case 0:
1522 2 : info->name = "addChildren";
1523 2 : info->eventType = GF_SG_EVENT_IN;
1524 2 : info->on_event_in = ((M_AudioSwitch *)node)->on_addChildren;
1525 2 : info->fieldType = GF_SG_VRML_MFNODE;
1526 2 : info->NDTtype = NDT_SFAudioNode;
1527 2 : info->far_ptr = & ((M_AudioSwitch *)node)->addChildren;
1528 2 : return GF_OK;
1529 2 : case 1:
1530 2 : info->name = "removeChildren";
1531 2 : info->eventType = GF_SG_EVENT_IN;
1532 2 : info->on_event_in = ((M_AudioSwitch *)node)->on_removeChildren;
1533 2 : info->fieldType = GF_SG_VRML_MFNODE;
1534 2 : info->NDTtype = NDT_SFAudioNode;
1535 2 : info->far_ptr = & ((M_AudioSwitch *)node)->removeChildren;
1536 2 : return GF_OK;
1537 2 : case 2:
1538 2 : info->name = "children";
1539 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1540 2 : info->fieldType = GF_SG_VRML_MFNODE;
1541 2 : info->NDTtype = NDT_SFAudioNode;
1542 2 : info->far_ptr = & ((M_AudioSwitch *)node)->children;
1543 2 : return GF_OK;
1544 2 : case 3:
1545 2 : info->name = "whichChoice";
1546 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1547 2 : info->fieldType = GF_SG_VRML_MFINT32;
1548 2 : info->far_ptr = & ((M_AudioSwitch *) node)->whichChoice;
1549 2 : return GF_OK;
1550 2 : case 4:
1551 2 : info->name = "numChan";
1552 2 : info->eventType = GF_SG_EVENT_FIELD;
1553 2 : info->fieldType = GF_SG_VRML_SFINT32;
1554 2 : info->far_ptr = & ((M_AudioSwitch *) node)->numChan;
1555 2 : return GF_OK;
1556 2 : case 5:
1557 2 : info->name = "phaseGroup";
1558 2 : info->eventType = GF_SG_EVENT_FIELD;
1559 2 : info->fieldType = GF_SG_VRML_MFINT32;
1560 2 : info->far_ptr = & ((M_AudioSwitch *) node)->phaseGroup;
1561 2 : return GF_OK;
1562 : default:
1563 : return GF_BAD_PARAM;
1564 : }
1565 : }
1566 :
1567 :
1568 6 : static s32 AudioSwitch_get_field_index_by_name(char *name)
1569 : {
1570 6 : if (!strcmp("addChildren", name)) return 0;
1571 5 : if (!strcmp("removeChildren", name)) return 1;
1572 4 : if (!strcmp("children", name)) return 2;
1573 3 : if (!strcmp("whichChoice", name)) return 3;
1574 2 : if (!strcmp("numChan", name)) return 4;
1575 1 : if (!strcmp("phaseGroup", name)) return 5;
1576 0 : return -1;
1577 : }
1578 : static Bool AudioSwitch_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1579 : {
1580 6 : switch (FieldIndex) {
1581 1 : case 3:
1582 1 : *AType = 0;
1583 1 : *QType = 13;
1584 1 : *QT13_bits = 1;
1585 1 : *b_min = FLT2FIX(0);
1586 1 : *b_max = FLT2FIX(1);
1587 : return 1;
1588 1 : case 4:
1589 1 : *AType = 0;
1590 1 : *QType = 13;
1591 1 : *QT13_bits = 8;
1592 1 : *b_min = FLT2FIX(0);
1593 1 : *b_max = FLT2FIX(255);
1594 : return 1;
1595 1 : case 5:
1596 1 : *AType = 0;
1597 1 : *QType = 13;
1598 1 : *QT13_bits = 8;
1599 1 : *b_min = FLT2FIX(0);
1600 1 : *b_max = FLT2FIX(255);
1601 : return 1;
1602 : default:
1603 : return 0;
1604 : }
1605 : }
1606 :
1607 :
1608 :
1609 1 : GF_Node *AudioSwitch_Create()
1610 : {
1611 : M_AudioSwitch *p;
1612 1 : GF_SAFEALLOC(p, M_AudioSwitch);
1613 1 : if(!p) return NULL;
1614 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioSwitch);
1615 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
1616 :
1617 : /*default field values*/
1618 1 : p->numChan = 1;
1619 1 : return (GF_Node *)p;
1620 : }
1621 :
1622 :
1623 : /*
1624 : Background Node deletion
1625 : */
1626 :
1627 77 : static void Background_Del(GF_Node *node)
1628 : {
1629 : M_Background *p = (M_Background *) node;
1630 77 : gf_sg_mffloat_del(p->groundAngle);
1631 77 : gf_sg_mfcolor_del(p->groundColor);
1632 77 : gf_sg_mfurl_del(p->backUrl);
1633 77 : gf_sg_mfurl_del(p->bottomUrl);
1634 77 : gf_sg_mfurl_del(p->frontUrl);
1635 77 : gf_sg_mfurl_del(p->leftUrl);
1636 77 : gf_sg_mfurl_del(p->rightUrl);
1637 77 : gf_sg_mfurl_del(p->topUrl);
1638 77 : gf_sg_mffloat_del(p->skyAngle);
1639 77 : gf_sg_mfcolor_del(p->skyColor);
1640 77 : gf_node_free((GF_Node *) p);
1641 77 : }
1642 :
1643 : static const u16 Background_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
1644 : static const u16 Background_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
1645 : static const u16 Background_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
1646 : static const u16 Background_Dyn2All[] = { 1, 2, 9, 10};
1647 :
1648 : static u32 Background_get_field_count(GF_Node *node, u8 IndexMode)
1649 : {
1650 : switch(IndexMode) {
1651 : case GF_SG_FIELD_CODING_IN:
1652 : return 11;
1653 : case GF_SG_FIELD_CODING_DEF:
1654 : return 10;
1655 : case GF_SG_FIELD_CODING_OUT:
1656 : return 11;
1657 : case GF_SG_FIELD_CODING_DYN:
1658 : return 4;
1659 : default:
1660 : return 12;
1661 : }
1662 : }
1663 :
1664 : static GF_Err Background_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1665 : {
1666 302 : switch(IndexMode) {
1667 0 : case GF_SG_FIELD_CODING_IN:
1668 0 : *allField = Background_In2All[inField];
1669 : return GF_OK;
1670 290 : case GF_SG_FIELD_CODING_DEF:
1671 290 : *allField = Background_Def2All[inField];
1672 : return GF_OK;
1673 0 : case GF_SG_FIELD_CODING_OUT:
1674 0 : *allField = Background_Out2All[inField];
1675 : return GF_OK;
1676 0 : case GF_SG_FIELD_CODING_DYN:
1677 0 : *allField = Background_Dyn2All[inField];
1678 : return GF_OK;
1679 : default:
1680 : return GF_BAD_PARAM;
1681 : }
1682 : }
1683 1093 : static GF_Err Background_get_field(GF_Node *node, GF_FieldInfo *info)
1684 : {
1685 1093 : switch (info->fieldIndex) {
1686 25 : case 0:
1687 25 : info->name = "set_bind";
1688 25 : info->eventType = GF_SG_EVENT_IN;
1689 25 : info->on_event_in = ((M_Background *)node)->on_set_bind;
1690 25 : info->fieldType = GF_SG_VRML_SFBOOL;
1691 25 : info->far_ptr = & ((M_Background *) node)->set_bind;
1692 25 : return GF_OK;
1693 139 : case 1:
1694 139 : info->name = "groundAngle";
1695 139 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1696 139 : info->fieldType = GF_SG_VRML_MFFLOAT;
1697 139 : info->far_ptr = & ((M_Background *) node)->groundAngle;
1698 139 : return GF_OK;
1699 139 : case 2:
1700 139 : info->name = "groundColor";
1701 139 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1702 139 : info->fieldType = GF_SG_VRML_MFCOLOR;
1703 139 : info->far_ptr = & ((M_Background *) node)->groundColor;
1704 139 : return GF_OK;
1705 82 : case 3:
1706 82 : info->name = "backUrl";
1707 82 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1708 82 : info->fieldType = GF_SG_VRML_MFURL;
1709 82 : info->far_ptr = & ((M_Background *) node)->backUrl;
1710 82 : return GF_OK;
1711 82 : case 4:
1712 82 : info->name = "bottomUrl";
1713 82 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1714 82 : info->fieldType = GF_SG_VRML_MFURL;
1715 82 : info->far_ptr = & ((M_Background *) node)->bottomUrl;
1716 82 : return GF_OK;
1717 85 : case 5:
1718 85 : info->name = "frontUrl";
1719 85 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1720 85 : info->fieldType = GF_SG_VRML_MFURL;
1721 85 : info->far_ptr = & ((M_Background *) node)->frontUrl;
1722 85 : return GF_OK;
1723 82 : case 6:
1724 82 : info->name = "leftUrl";
1725 82 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1726 82 : info->fieldType = GF_SG_VRML_MFURL;
1727 82 : info->far_ptr = & ((M_Background *) node)->leftUrl;
1728 82 : return GF_OK;
1729 82 : case 7:
1730 82 : info->name = "rightUrl";
1731 82 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1732 82 : info->fieldType = GF_SG_VRML_MFURL;
1733 82 : info->far_ptr = & ((M_Background *) node)->rightUrl;
1734 82 : return GF_OK;
1735 82 : case 8:
1736 82 : info->name = "topUrl";
1737 82 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1738 82 : info->fieldType = GF_SG_VRML_MFURL;
1739 82 : info->far_ptr = & ((M_Background *) node)->topUrl;
1740 82 : return GF_OK;
1741 139 : case 9:
1742 139 : info->name = "skyAngle";
1743 139 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1744 139 : info->fieldType = GF_SG_VRML_MFFLOAT;
1745 139 : info->far_ptr = & ((M_Background *) node)->skyAngle;
1746 139 : return GF_OK;
1747 139 : case 10:
1748 139 : info->name = "skyColor";
1749 139 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1750 139 : info->fieldType = GF_SG_VRML_MFCOLOR;
1751 139 : info->far_ptr = & ((M_Background *) node)->skyColor;
1752 139 : return GF_OK;
1753 17 : case 11:
1754 17 : info->name = "isBound";
1755 17 : info->eventType = GF_SG_EVENT_OUT;
1756 17 : info->fieldType = GF_SG_VRML_SFBOOL;
1757 17 : info->far_ptr = & ((M_Background *) node)->isBound;
1758 17 : return GF_OK;
1759 : default:
1760 : return GF_BAD_PARAM;
1761 : }
1762 : }
1763 :
1764 :
1765 94 : static s32 Background_get_field_index_by_name(char *name)
1766 : {
1767 94 : if (!strcmp("set_bind", name)) return 0;
1768 88 : if (!strcmp("groundAngle", name)) return 1;
1769 70 : if (!strcmp("groundColor", name)) return 2;
1770 52 : if (!strcmp("backUrl", name)) return 3;
1771 50 : if (!strcmp("bottomUrl", name)) return 4;
1772 48 : if (!strcmp("frontUrl", name)) return 5;
1773 43 : if (!strcmp("leftUrl", name)) return 6;
1774 41 : if (!strcmp("rightUrl", name)) return 7;
1775 39 : if (!strcmp("topUrl", name)) return 8;
1776 37 : if (!strcmp("skyAngle", name)) return 9;
1777 19 : if (!strcmp("skyColor", name)) return 10;
1778 1 : if (!strcmp("isBound", name)) return 11;
1779 0 : return -1;
1780 : }
1781 : static Bool Background_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1782 : {
1783 108 : switch (FieldIndex) {
1784 17 : case 1:
1785 17 : *AType = 8;
1786 17 : *QType = 6;
1787 17 : *b_min = FLT2FIX(0);
1788 17 : *b_max = FLT2FIX(1.5707963);
1789 : return 1;
1790 25 : case 2:
1791 25 : *AType = 4;
1792 25 : *QType = 4;
1793 25 : *b_min = FLT2FIX(0);
1794 25 : *b_max = FLT2FIX(1);
1795 : return 1;
1796 25 : case 9:
1797 25 : *AType = 8;
1798 25 : *QType = 6;
1799 25 : *b_min = FLT2FIX(0);
1800 25 : *b_max = FLT2FIX(3.14159265);
1801 : return 1;
1802 33 : case 10:
1803 33 : *AType = 4;
1804 33 : *QType = 4;
1805 33 : *b_min = FLT2FIX(0);
1806 33 : *b_max = FLT2FIX(1);
1807 : return 1;
1808 : default:
1809 : return 0;
1810 : }
1811 : }
1812 :
1813 :
1814 :
1815 77 : GF_Node *Background_Create()
1816 : {
1817 : M_Background *p;
1818 77 : GF_SAFEALLOC(p, M_Background);
1819 77 : if(!p) return NULL;
1820 77 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Background);
1821 :
1822 : /*default field values*/
1823 77 : p->skyColor.vals = (SFColor*)gf_malloc(sizeof(SFColor)*1);
1824 77 : p->skyColor.count = 1;
1825 77 : p->skyColor.vals[0].red = FLT2FIX(0);
1826 77 : p->skyColor.vals[0].green = FLT2FIX(0);
1827 77 : p->skyColor.vals[0].blue = FLT2FIX(0);
1828 77 : return (GF_Node *)p;
1829 : }
1830 :
1831 :
1832 : /*
1833 : Background2D Node deletion
1834 : */
1835 :
1836 : static void Background2D_Del(GF_Node *node)
1837 : {
1838 : M_Background2D *p = (M_Background2D *) node;
1839 885 : gf_sg_mfurl_del(p->url);
1840 885 : gf_node_free((GF_Node *) p);
1841 : }
1842 :
1843 : static const u16 Background2D_Def2All[] = { 1, 2};
1844 : static const u16 Background2D_In2All[] = { 0, 1, 2};
1845 : static const u16 Background2D_Out2All[] = { 1, 2, 3};
1846 : static const u16 Background2D_Dyn2All[] = { 1};
1847 :
1848 : static u32 Background2D_get_field_count(GF_Node *node, u8 IndexMode)
1849 : {
1850 : switch(IndexMode) {
1851 : case GF_SG_FIELD_CODING_IN:
1852 : return 3;
1853 : case GF_SG_FIELD_CODING_DEF:
1854 : return 2;
1855 : case GF_SG_FIELD_CODING_OUT:
1856 : return 3;
1857 : case GF_SG_FIELD_CODING_DYN:
1858 : return 1;
1859 : default:
1860 : return 4;
1861 : }
1862 : }
1863 :
1864 : static GF_Err Background2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1865 : {
1866 340 : switch(IndexMode) {
1867 84 : case GF_SG_FIELD_CODING_IN:
1868 84 : *allField = Background2D_In2All[inField];
1869 : return GF_OK;
1870 252 : case GF_SG_FIELD_CODING_DEF:
1871 252 : *allField = Background2D_Def2All[inField];
1872 : return GF_OK;
1873 0 : case GF_SG_FIELD_CODING_OUT:
1874 0 : *allField = Background2D_Out2All[inField];
1875 : return GF_OK;
1876 0 : case GF_SG_FIELD_CODING_DYN:
1877 0 : *allField = Background2D_Dyn2All[inField];
1878 : return GF_OK;
1879 : default:
1880 : return GF_BAD_PARAM;
1881 : }
1882 : }
1883 1691 : static GF_Err Background2D_get_field(GF_Node *node, GF_FieldInfo *info)
1884 : {
1885 1691 : switch (info->fieldIndex) {
1886 242 : case 0:
1887 242 : info->name = "set_bind";
1888 242 : info->eventType = GF_SG_EVENT_IN;
1889 242 : info->on_event_in = ((M_Background2D *)node)->on_set_bind;
1890 242 : info->fieldType = GF_SG_VRML_SFBOOL;
1891 242 : info->far_ptr = & ((M_Background2D *) node)->set_bind;
1892 242 : return GF_OK;
1893 908 : case 1:
1894 908 : info->name = "backColor";
1895 908 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1896 908 : info->fieldType = GF_SG_VRML_SFCOLOR;
1897 908 : info->far_ptr = & ((M_Background2D *) node)->backColor;
1898 908 : return GF_OK;
1899 472 : case 2:
1900 472 : info->name = "url";
1901 472 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
1902 472 : info->fieldType = GF_SG_VRML_MFURL;
1903 472 : info->far_ptr = & ((M_Background2D *) node)->url;
1904 472 : return GF_OK;
1905 69 : case 3:
1906 69 : info->name = "isBound";
1907 69 : info->eventType = GF_SG_EVENT_OUT;
1908 69 : info->fieldType = GF_SG_VRML_SFBOOL;
1909 69 : info->far_ptr = & ((M_Background2D *) node)->isBound;
1910 69 : return GF_OK;
1911 : default:
1912 : return GF_BAD_PARAM;
1913 : }
1914 : }
1915 :
1916 :
1917 586 : static s32 Background2D_get_field_index_by_name(char *name)
1918 : {
1919 586 : if (!strcmp("set_bind", name)) return 0;
1920 517 : if (!strcmp("backColor", name)) return 1;
1921 92 : if (!strcmp("url", name)) return 2;
1922 1 : if (!strcmp("isBound", name)) return 3;
1923 0 : return -1;
1924 : }
1925 : static Bool Background2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
1926 : {
1927 44 : switch (FieldIndex) {
1928 41 : case 1:
1929 41 : *AType = 4;
1930 41 : *QType = 4;
1931 41 : *b_min = FLT2FIX(0);
1932 41 : *b_max = FLT2FIX(1);
1933 : return 1;
1934 : default:
1935 : return 0;
1936 : }
1937 : }
1938 :
1939 :
1940 :
1941 885 : GF_Node *Background2D_Create()
1942 : {
1943 : M_Background2D *p;
1944 885 : GF_SAFEALLOC(p, M_Background2D);
1945 885 : if(!p) return NULL;
1946 885 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Background2D);
1947 :
1948 : /*default field values*/
1949 885 : p->backColor.red = FLT2FIX(0);
1950 885 : p->backColor.green = FLT2FIX(0);
1951 885 : p->backColor.blue = FLT2FIX(0);
1952 885 : return (GF_Node *)p;
1953 : }
1954 :
1955 :
1956 : /*
1957 : Billboard Node deletion
1958 : */
1959 :
1960 : static void Billboard_Del(GF_Node *node)
1961 : {
1962 : M_Billboard *p = (M_Billboard *) node;
1963 4 : gf_sg_vrml_parent_destroy((GF_Node *) p);
1964 4 : gf_node_free((GF_Node *) p);
1965 : }
1966 :
1967 : static const u16 Billboard_Def2All[] = { 2, 3};
1968 : static const u16 Billboard_In2All[] = { 0, 1, 2, 3};
1969 : static const u16 Billboard_Out2All[] = { 2, 3};
1970 : static const u16 Billboard_Dyn2All[] = { 3};
1971 :
1972 : static u32 Billboard_get_field_count(GF_Node *node, u8 IndexMode)
1973 : {
1974 : switch(IndexMode) {
1975 : case GF_SG_FIELD_CODING_IN:
1976 : return 4;
1977 : case GF_SG_FIELD_CODING_DEF:
1978 : return 2;
1979 : case GF_SG_FIELD_CODING_OUT:
1980 : return 2;
1981 : case GF_SG_FIELD_CODING_DYN:
1982 : return 1;
1983 : default:
1984 : return 4;
1985 : }
1986 : }
1987 :
1988 : static GF_Err Billboard_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
1989 : {
1990 4 : switch(IndexMode) {
1991 0 : case GF_SG_FIELD_CODING_IN:
1992 0 : *allField = Billboard_In2All[inField];
1993 : return GF_OK;
1994 0 : case GF_SG_FIELD_CODING_DEF:
1995 0 : *allField = Billboard_Def2All[inField];
1996 : return GF_OK;
1997 0 : case GF_SG_FIELD_CODING_OUT:
1998 0 : *allField = Billboard_Out2All[inField];
1999 : return GF_OK;
2000 0 : case GF_SG_FIELD_CODING_DYN:
2001 0 : *allField = Billboard_Dyn2All[inField];
2002 : return GF_OK;
2003 : default:
2004 : return GF_BAD_PARAM;
2005 : }
2006 : }
2007 14 : static GF_Err Billboard_get_field(GF_Node *node, GF_FieldInfo *info)
2008 : {
2009 14 : switch (info->fieldIndex) {
2010 2 : case 0:
2011 2 : info->name = "addChildren";
2012 2 : info->eventType = GF_SG_EVENT_IN;
2013 2 : info->on_event_in = ((M_Billboard *)node)->on_addChildren;
2014 2 : info->fieldType = GF_SG_VRML_MFNODE;
2015 2 : info->NDTtype = NDT_SF3DNode;
2016 2 : info->far_ptr = & ((M_Billboard *)node)->addChildren;
2017 2 : return GF_OK;
2018 2 : case 1:
2019 2 : info->name = "removeChildren";
2020 2 : info->eventType = GF_SG_EVENT_IN;
2021 2 : info->on_event_in = ((M_Billboard *)node)->on_removeChildren;
2022 2 : info->fieldType = GF_SG_VRML_MFNODE;
2023 2 : info->NDTtype = NDT_SF3DNode;
2024 2 : info->far_ptr = & ((M_Billboard *)node)->removeChildren;
2025 2 : return GF_OK;
2026 5 : case 2:
2027 5 : info->name = "children";
2028 5 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2029 5 : info->fieldType = GF_SG_VRML_MFNODE;
2030 5 : info->NDTtype = NDT_SF3DNode;
2031 5 : info->far_ptr = & ((M_Billboard *)node)->children;
2032 5 : return GF_OK;
2033 5 : case 3:
2034 5 : info->name = "axisOfRotation";
2035 5 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2036 5 : info->fieldType = GF_SG_VRML_SFVEC3F;
2037 5 : info->far_ptr = & ((M_Billboard *) node)->axisOfRotation;
2038 5 : return GF_OK;
2039 : default:
2040 : return GF_BAD_PARAM;
2041 : }
2042 : }
2043 :
2044 :
2045 10 : static s32 Billboard_get_field_index_by_name(char *name)
2046 : {
2047 10 : if (!strcmp("addChildren", name)) return 0;
2048 9 : if (!strcmp("removeChildren", name)) return 1;
2049 8 : if (!strcmp("children", name)) return 2;
2050 4 : if (!strcmp("axisOfRotation", name)) return 3;
2051 0 : return -1;
2052 : }
2053 : static Bool Billboard_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2054 : {
2055 4 : switch (FieldIndex) {
2056 1 : case 3:
2057 1 : *AType = 9;
2058 1 : *QType = 9;
2059 : return 1;
2060 : default:
2061 : return 0;
2062 : }
2063 : }
2064 :
2065 :
2066 :
2067 4 : GF_Node *Billboard_Create()
2068 : {
2069 : M_Billboard *p;
2070 4 : GF_SAFEALLOC(p, M_Billboard);
2071 4 : if(!p) return NULL;
2072 4 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Billboard);
2073 4 : gf_sg_vrml_parent_setup((GF_Node *) p);
2074 :
2075 : /*default field values*/
2076 4 : p->axisOfRotation.x = FLT2FIX(0);
2077 4 : p->axisOfRotation.y = FLT2FIX(1);
2078 4 : p->axisOfRotation.z = FLT2FIX(0);
2079 4 : return (GF_Node *)p;
2080 : }
2081 :
2082 :
2083 : /*
2084 : Bitmap Node deletion
2085 : */
2086 :
2087 : static void Bitmap_Del(GF_Node *node)
2088 : {
2089 : M_Bitmap *p = (M_Bitmap *) node;
2090 346 : gf_node_free((GF_Node *) p);
2091 : }
2092 :
2093 : static const u16 Bitmap_Def2All[] = { 0};
2094 : static const u16 Bitmap_In2All[] = { 0};
2095 : static const u16 Bitmap_Out2All[] = { 0};
2096 : static const u16 Bitmap_Dyn2All[] = { 0};
2097 :
2098 : static u32 Bitmap_get_field_count(GF_Node *node, u8 IndexMode)
2099 : {
2100 : switch(IndexMode) {
2101 : case GF_SG_FIELD_CODING_IN:
2102 : return 1;
2103 : case GF_SG_FIELD_CODING_DEF:
2104 : return 1;
2105 : case GF_SG_FIELD_CODING_OUT:
2106 : return 1;
2107 : case GF_SG_FIELD_CODING_DYN:
2108 : return 1;
2109 : default:
2110 : return 1;
2111 : }
2112 : }
2113 :
2114 : static GF_Err Bitmap_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2115 : {
2116 24 : switch(IndexMode) {
2117 0 : case GF_SG_FIELD_CODING_IN:
2118 0 : *allField = Bitmap_In2All[inField];
2119 : return GF_OK;
2120 23 : case GF_SG_FIELD_CODING_DEF:
2121 23 : *allField = Bitmap_Def2All[inField];
2122 : return GF_OK;
2123 0 : case GF_SG_FIELD_CODING_OUT:
2124 0 : *allField = Bitmap_Out2All[inField];
2125 : return GF_OK;
2126 0 : case GF_SG_FIELD_CODING_DYN:
2127 0 : *allField = Bitmap_Dyn2All[inField];
2128 : return GF_OK;
2129 : default:
2130 : return GF_BAD_PARAM;
2131 : }
2132 : }
2133 : static GF_Err Bitmap_get_field(GF_Node *node, GF_FieldInfo *info)
2134 : {
2135 108 : switch (info->fieldIndex) {
2136 108 : case 0:
2137 108 : info->name = "scale";
2138 108 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2139 108 : info->fieldType = GF_SG_VRML_SFVEC2F;
2140 108 : info->far_ptr = & ((M_Bitmap *) node)->scale;
2141 : return GF_OK;
2142 : default:
2143 : return GF_BAD_PARAM;
2144 : }
2145 : }
2146 :
2147 :
2148 : static s32 Bitmap_get_field_index_by_name(char *name)
2149 : {
2150 19 : if (!strcmp("scale", name)) return 0;
2151 : return -1;
2152 : }
2153 : static Bool Bitmap_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2154 : {
2155 1 : switch (FieldIndex) {
2156 1 : case 0:
2157 1 : *AType = 12;
2158 1 : *QType = 12;
2159 1 : *b_min = FLT2FIX(-1);
2160 1 : *b_max = FIX_MAX;
2161 : return 1;
2162 : default:
2163 : return 0;
2164 : }
2165 : }
2166 :
2167 :
2168 :
2169 346 : GF_Node *Bitmap_Create()
2170 : {
2171 : M_Bitmap *p;
2172 346 : GF_SAFEALLOC(p, M_Bitmap);
2173 346 : if(!p) return NULL;
2174 346 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Bitmap);
2175 :
2176 : /*default field values*/
2177 346 : p->scale.x = FLT2FIX(-1);
2178 346 : p->scale.y = FLT2FIX(-1);
2179 346 : return (GF_Node *)p;
2180 : }
2181 :
2182 :
2183 : /*
2184 : Box Node deletion
2185 : */
2186 :
2187 : static void Box_Del(GF_Node *node)
2188 : {
2189 : M_Box *p = (M_Box *) node;
2190 115 : gf_node_free((GF_Node *) p);
2191 : }
2192 :
2193 : static const u16 Box_Def2All[] = { 0};
2194 :
2195 : static u32 Box_get_field_count(GF_Node *node, u8 IndexMode)
2196 : {
2197 77 : switch(IndexMode) {
2198 : case GF_SG_FIELD_CODING_IN:
2199 : return 0;
2200 56 : case GF_SG_FIELD_CODING_DEF:
2201 : return 1;
2202 : case GF_SG_FIELD_CODING_OUT:
2203 : return 0;
2204 : case GF_SG_FIELD_CODING_DYN:
2205 : return 0;
2206 18 : default:
2207 : return 1;
2208 : }
2209 : }
2210 :
2211 : static GF_Err Box_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2212 : {
2213 36 : switch(IndexMode) {
2214 35 : case GF_SG_FIELD_CODING_DEF:
2215 35 : *allField = Box_Def2All[inField];
2216 : return GF_OK;
2217 : default:
2218 : return GF_BAD_PARAM;
2219 : }
2220 : }
2221 : static GF_Err Box_get_field(GF_Node *node, GF_FieldInfo *info)
2222 : {
2223 180 : switch (info->fieldIndex) {
2224 180 : case 0:
2225 180 : info->name = "size";
2226 180 : info->eventType = GF_SG_EVENT_FIELD;
2227 180 : info->fieldType = GF_SG_VRML_SFVEC3F;
2228 180 : info->far_ptr = & ((M_Box *) node)->size;
2229 : return GF_OK;
2230 : default:
2231 : return GF_BAD_PARAM;
2232 : }
2233 : }
2234 :
2235 :
2236 : static s32 Box_get_field_index_by_name(char *name)
2237 : {
2238 62 : if (!strcmp("size", name)) return 0;
2239 : return -1;
2240 : }
2241 : static Bool Box_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2242 : {
2243 9 : switch (FieldIndex) {
2244 9 : case 0:
2245 9 : *AType = 0;
2246 9 : *QType = 11;
2247 9 : *b_min = FLT2FIX(0);
2248 9 : *b_max = FIX_MAX;
2249 : return 1;
2250 : default:
2251 : return 0;
2252 : }
2253 : }
2254 :
2255 :
2256 :
2257 115 : GF_Node *Box_Create()
2258 : {
2259 : M_Box *p;
2260 115 : GF_SAFEALLOC(p, M_Box);
2261 115 : if(!p) return NULL;
2262 115 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Box);
2263 :
2264 : /*default field values*/
2265 115 : p->size.x = FLT2FIX(2);
2266 115 : p->size.y = FLT2FIX(2);
2267 115 : p->size.z = FLT2FIX(2);
2268 115 : return (GF_Node *)p;
2269 : }
2270 :
2271 :
2272 : /*
2273 : Circle Node deletion
2274 : */
2275 :
2276 : static void Circle_Del(GF_Node *node)
2277 : {
2278 : M_Circle *p = (M_Circle *) node;
2279 1144 : gf_node_free((GF_Node *) p);
2280 : }
2281 :
2282 : static const u16 Circle_Def2All[] = { 0};
2283 : static const u16 Circle_In2All[] = { 0};
2284 : static const u16 Circle_Out2All[] = { 0};
2285 : static const u16 Circle_Dyn2All[] = { 0};
2286 :
2287 : static u32 Circle_get_field_count(GF_Node *node, u8 IndexMode)
2288 : {
2289 : switch(IndexMode) {
2290 : case GF_SG_FIELD_CODING_IN:
2291 : return 1;
2292 : case GF_SG_FIELD_CODING_DEF:
2293 : return 1;
2294 : case GF_SG_FIELD_CODING_OUT:
2295 : return 1;
2296 : case GF_SG_FIELD_CODING_DYN:
2297 : return 1;
2298 : default:
2299 : return 1;
2300 : }
2301 : }
2302 :
2303 : static GF_Err Circle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2304 : {
2305 110 : switch(IndexMode) {
2306 0 : case GF_SG_FIELD_CODING_IN:
2307 0 : *allField = Circle_In2All[inField];
2308 : return GF_OK;
2309 109 : case GF_SG_FIELD_CODING_DEF:
2310 109 : *allField = Circle_Def2All[inField];
2311 : return GF_OK;
2312 0 : case GF_SG_FIELD_CODING_OUT:
2313 0 : *allField = Circle_Out2All[inField];
2314 : return GF_OK;
2315 0 : case GF_SG_FIELD_CODING_DYN:
2316 0 : *allField = Circle_Dyn2All[inField];
2317 : return GF_OK;
2318 : default:
2319 : return GF_BAD_PARAM;
2320 : }
2321 : }
2322 : static GF_Err Circle_get_field(GF_Node *node, GF_FieldInfo *info)
2323 : {
2324 3529 : switch (info->fieldIndex) {
2325 3529 : case 0:
2326 3529 : info->name = "radius";
2327 3529 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2328 3529 : info->fieldType = GF_SG_VRML_SFFLOAT;
2329 3529 : info->far_ptr = & ((M_Circle *) node)->radius;
2330 : return GF_OK;
2331 : default:
2332 : return GF_BAD_PARAM;
2333 : }
2334 : }
2335 :
2336 :
2337 : static s32 Circle_get_field_index_by_name(char *name)
2338 : {
2339 200 : if (!strcmp("radius", name)) return 0;
2340 : return -1;
2341 : }
2342 : static Bool Circle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2343 : {
2344 30 : switch (FieldIndex) {
2345 30 : case 0:
2346 30 : *AType = 7;
2347 30 : *QType = 12;
2348 30 : *b_min = FLT2FIX(0);
2349 30 : *b_max = FIX_MAX;
2350 : return 1;
2351 : default:
2352 : return 0;
2353 : }
2354 : }
2355 :
2356 :
2357 :
2358 1144 : GF_Node *Circle_Create()
2359 : {
2360 : M_Circle *p;
2361 1144 : GF_SAFEALLOC(p, M_Circle);
2362 1144 : if(!p) return NULL;
2363 1144 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Circle);
2364 :
2365 : /*default field values*/
2366 1144 : p->radius = FLT2FIX(1);
2367 1144 : return (GF_Node *)p;
2368 : }
2369 :
2370 :
2371 : /*
2372 : Collision Node deletion
2373 : */
2374 :
2375 68 : static void Collision_Del(GF_Node *node)
2376 : {
2377 : M_Collision *p = (M_Collision *) node;
2378 68 : gf_node_unregister((GF_Node *) p->proxy, (GF_Node *) p);
2379 68 : gf_sg_vrml_parent_destroy((GF_Node *) p);
2380 68 : gf_node_free((GF_Node *) p);
2381 68 : }
2382 :
2383 : static const u16 Collision_Def2All[] = { 2, 3, 4};
2384 : static const u16 Collision_In2All[] = { 0, 1, 2, 3};
2385 : static const u16 Collision_Out2All[] = { 2, 3, 5};
2386 :
2387 : static u32 Collision_get_field_count(GF_Node *node, u8 IndexMode)
2388 : {
2389 : switch(IndexMode) {
2390 : case GF_SG_FIELD_CODING_IN:
2391 : return 4;
2392 : case GF_SG_FIELD_CODING_DEF:
2393 : return 3;
2394 : case GF_SG_FIELD_CODING_OUT:
2395 : return 3;
2396 : case GF_SG_FIELD_CODING_DYN:
2397 : return 0;
2398 : default:
2399 : return 6;
2400 : }
2401 : }
2402 :
2403 : static GF_Err Collision_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2404 : {
2405 81 : switch(IndexMode) {
2406 0 : case GF_SG_FIELD_CODING_IN:
2407 0 : *allField = Collision_In2All[inField];
2408 : return GF_OK;
2409 75 : case GF_SG_FIELD_CODING_DEF:
2410 75 : *allField = Collision_Def2All[inField];
2411 : return GF_OK;
2412 0 : case GF_SG_FIELD_CODING_OUT:
2413 0 : *allField = Collision_Out2All[inField];
2414 : return GF_OK;
2415 : default:
2416 : return GF_BAD_PARAM;
2417 : }
2418 : }
2419 261 : static GF_Err Collision_get_field(GF_Node *node, GF_FieldInfo *info)
2420 : {
2421 261 : switch (info->fieldIndex) {
2422 17 : case 0:
2423 17 : info->name = "addChildren";
2424 17 : info->eventType = GF_SG_EVENT_IN;
2425 17 : info->on_event_in = ((M_Collision *)node)->on_addChildren;
2426 17 : info->fieldType = GF_SG_VRML_MFNODE;
2427 17 : info->NDTtype = NDT_SF3DNode;
2428 17 : info->far_ptr = & ((M_Collision *)node)->addChildren;
2429 17 : return GF_OK;
2430 17 : case 1:
2431 17 : info->name = "removeChildren";
2432 17 : info->eventType = GF_SG_EVENT_IN;
2433 17 : info->on_event_in = ((M_Collision *)node)->on_removeChildren;
2434 17 : info->fieldType = GF_SG_VRML_MFNODE;
2435 17 : info->NDTtype = NDT_SF3DNode;
2436 17 : info->far_ptr = & ((M_Collision *)node)->removeChildren;
2437 17 : return GF_OK;
2438 39 : case 2:
2439 39 : info->name = "children";
2440 39 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2441 39 : info->fieldType = GF_SG_VRML_MFNODE;
2442 39 : info->NDTtype = NDT_SF3DNode;
2443 39 : info->far_ptr = & ((M_Collision *)node)->children;
2444 39 : return GF_OK;
2445 72 : case 3:
2446 72 : info->name = "collide";
2447 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2448 72 : info->fieldType = GF_SG_VRML_SFBOOL;
2449 72 : info->far_ptr = & ((M_Collision *) node)->collide;
2450 72 : return GF_OK;
2451 97 : case 4:
2452 97 : info->name = "proxy";
2453 97 : info->eventType = GF_SG_EVENT_FIELD;
2454 97 : info->fieldType = GF_SG_VRML_SFNODE;
2455 97 : info->NDTtype = NDT_SF3DNode;
2456 97 : info->far_ptr = & ((M_Collision *)node)->proxy;
2457 97 : return GF_OK;
2458 19 : case 5:
2459 19 : info->name = "collideTime";
2460 19 : info->eventType = GF_SG_EVENT_OUT;
2461 19 : info->fieldType = GF_SG_VRML_SFTIME;
2462 19 : info->far_ptr = & ((M_Collision *) node)->collideTime;
2463 19 : return GF_OK;
2464 : default:
2465 : return GF_BAD_PARAM;
2466 : }
2467 : }
2468 :
2469 :
2470 26 : static s32 Collision_get_field_index_by_name(char *name)
2471 : {
2472 26 : if (!strcmp("addChildren", name)) return 0;
2473 25 : if (!strcmp("removeChildren", name)) return 1;
2474 24 : if (!strcmp("children", name)) return 2;
2475 21 : if (!strcmp("collide", name)) return 3;
2476 20 : if (!strcmp("proxy", name)) return 4;
2477 3 : if (!strcmp("collideTime", name)) return 5;
2478 0 : return -1;
2479 : }
2480 : static Bool Collision_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2481 : {
2482 : switch (FieldIndex) {
2483 : default:
2484 : return 0;
2485 : }
2486 : }
2487 :
2488 :
2489 :
2490 68 : GF_Node *Collision_Create()
2491 : {
2492 : M_Collision *p;
2493 68 : GF_SAFEALLOC(p, M_Collision);
2494 68 : if(!p) return NULL;
2495 68 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Collision);
2496 68 : gf_sg_vrml_parent_setup((GF_Node *) p);
2497 :
2498 : /*default field values*/
2499 68 : p->collide = 1;
2500 68 : return (GF_Node *)p;
2501 : }
2502 :
2503 :
2504 : /*
2505 : Color Node deletion
2506 : */
2507 :
2508 : static void Color_Del(GF_Node *node)
2509 : {
2510 : M_Color *p = (M_Color *) node;
2511 139 : gf_sg_mfcolor_del(p->color);
2512 139 : gf_node_free((GF_Node *) p);
2513 : }
2514 :
2515 : static const u16 Color_Def2All[] = { 0};
2516 : static const u16 Color_In2All[] = { 0};
2517 : static const u16 Color_Out2All[] = { 0};
2518 : static const u16 Color_Dyn2All[] = { 0};
2519 :
2520 : static u32 Color_get_field_count(GF_Node *node, u8 IndexMode)
2521 : {
2522 : switch(IndexMode) {
2523 : case GF_SG_FIELD_CODING_IN:
2524 : return 1;
2525 : case GF_SG_FIELD_CODING_DEF:
2526 : return 1;
2527 : case GF_SG_FIELD_CODING_OUT:
2528 : return 1;
2529 : case GF_SG_FIELD_CODING_DYN:
2530 : return 1;
2531 : default:
2532 : return 1;
2533 : }
2534 : }
2535 :
2536 : static GF_Err Color_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2537 : {
2538 71 : switch(IndexMode) {
2539 0 : case GF_SG_FIELD_CODING_IN:
2540 0 : *allField = Color_In2All[inField];
2541 : return GF_OK;
2542 70 : case GF_SG_FIELD_CODING_DEF:
2543 70 : *allField = Color_Def2All[inField];
2544 : return GF_OK;
2545 0 : case GF_SG_FIELD_CODING_OUT:
2546 0 : *allField = Color_Out2All[inField];
2547 : return GF_OK;
2548 0 : case GF_SG_FIELD_CODING_DYN:
2549 0 : *allField = Color_Dyn2All[inField];
2550 : return GF_OK;
2551 : default:
2552 : return GF_BAD_PARAM;
2553 : }
2554 : }
2555 : static GF_Err Color_get_field(GF_Node *node, GF_FieldInfo *info)
2556 : {
2557 268 : switch (info->fieldIndex) {
2558 268 : case 0:
2559 268 : info->name = "color";
2560 268 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2561 268 : info->fieldType = GF_SG_VRML_MFCOLOR;
2562 268 : info->far_ptr = & ((M_Color *) node)->color;
2563 : return GF_OK;
2564 : default:
2565 : return GF_BAD_PARAM;
2566 : }
2567 : }
2568 :
2569 :
2570 : static s32 Color_get_field_index_by_name(char *name)
2571 : {
2572 39 : if (!strcmp("color", name)) return 0;
2573 : return -1;
2574 : }
2575 : static Bool Color_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2576 : {
2577 97 : switch (FieldIndex) {
2578 97 : case 0:
2579 97 : *AType = 4;
2580 97 : *QType = 4;
2581 97 : *b_min = FLT2FIX(0);
2582 97 : *b_max = FLT2FIX(1);
2583 : return 1;
2584 : default:
2585 : return 0;
2586 : }
2587 : }
2588 :
2589 :
2590 :
2591 139 : GF_Node *Color_Create()
2592 : {
2593 : M_Color *p;
2594 139 : GF_SAFEALLOC(p, M_Color);
2595 139 : if(!p) return NULL;
2596 139 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Color);
2597 :
2598 : /*default field values*/
2599 139 : return (GF_Node *)p;
2600 : }
2601 :
2602 :
2603 : /*
2604 : ColorInterpolator Node deletion
2605 : */
2606 :
2607 7 : static void ColorInterpolator_Del(GF_Node *node)
2608 : {
2609 : M_ColorInterpolator *p = (M_ColorInterpolator *) node;
2610 7 : gf_sg_mffloat_del(p->key);
2611 7 : gf_sg_mfcolor_del(p->keyValue);
2612 7 : gf_node_free((GF_Node *) p);
2613 7 : }
2614 :
2615 : static const u16 ColorInterpolator_Def2All[] = { 1, 2};
2616 : static const u16 ColorInterpolator_In2All[] = { 0, 1, 2};
2617 : static const u16 ColorInterpolator_Out2All[] = { 1, 2, 3};
2618 :
2619 : static u32 ColorInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
2620 : {
2621 : switch(IndexMode) {
2622 : case GF_SG_FIELD_CODING_IN:
2623 : return 3;
2624 : case GF_SG_FIELD_CODING_DEF:
2625 : return 2;
2626 : case GF_SG_FIELD_CODING_OUT:
2627 : return 3;
2628 : case GF_SG_FIELD_CODING_DYN:
2629 : return 0;
2630 : default:
2631 : return 4;
2632 : }
2633 : }
2634 :
2635 : static GF_Err ColorInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2636 : {
2637 4 : switch(IndexMode) {
2638 0 : case GF_SG_FIELD_CODING_IN:
2639 0 : *allField = ColorInterpolator_In2All[inField];
2640 : return GF_OK;
2641 0 : case GF_SG_FIELD_CODING_DEF:
2642 0 : *allField = ColorInterpolator_Def2All[inField];
2643 : return GF_OK;
2644 0 : case GF_SG_FIELD_CODING_OUT:
2645 0 : *allField = ColorInterpolator_Out2All[inField];
2646 : return GF_OK;
2647 : default:
2648 : return GF_BAD_PARAM;
2649 : }
2650 : }
2651 44 : static GF_Err ColorInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
2652 : {
2653 44 : switch (info->fieldIndex) {
2654 14 : case 0:
2655 14 : info->name = "set_fraction";
2656 14 : info->eventType = GF_SG_EVENT_IN;
2657 14 : info->on_event_in = ((M_ColorInterpolator *)node)->on_set_fraction;
2658 14 : info->fieldType = GF_SG_VRML_SFFLOAT;
2659 14 : info->far_ptr = & ((M_ColorInterpolator *) node)->set_fraction;
2660 14 : return GF_OK;
2661 8 : case 1:
2662 8 : info->name = "key";
2663 8 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2664 8 : info->fieldType = GF_SG_VRML_MFFLOAT;
2665 8 : info->far_ptr = & ((M_ColorInterpolator *) node)->key;
2666 8 : return GF_OK;
2667 8 : case 2:
2668 8 : info->name = "keyValue";
2669 8 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2670 8 : info->fieldType = GF_SG_VRML_MFCOLOR;
2671 8 : info->far_ptr = & ((M_ColorInterpolator *) node)->keyValue;
2672 8 : return GF_OK;
2673 14 : case 3:
2674 14 : info->name = "value_changed";
2675 14 : info->eventType = GF_SG_EVENT_OUT;
2676 14 : info->fieldType = GF_SG_VRML_SFCOLOR;
2677 14 : info->far_ptr = & ((M_ColorInterpolator *) node)->value_changed;
2678 14 : return GF_OK;
2679 : default:
2680 : return GF_BAD_PARAM;
2681 : }
2682 : }
2683 :
2684 :
2685 28 : static s32 ColorInterpolator_get_field_index_by_name(char *name)
2686 : {
2687 28 : if (!strcmp("set_fraction", name)) return 0;
2688 21 : if (!strcmp("key", name)) return 1;
2689 14 : if (!strcmp("keyValue", name)) return 2;
2690 7 : if (!strcmp("value_changed", name)) return 3;
2691 0 : return -1;
2692 : }
2693 : static Bool ColorInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2694 : {
2695 4 : switch (FieldIndex) {
2696 1 : case 1:
2697 1 : *AType = 0;
2698 1 : *QType = 8;
2699 1 : *b_min = FLT2FIX(0);
2700 1 : *b_max = FLT2FIX(1);
2701 : return 1;
2702 1 : case 2:
2703 1 : *AType = 0;
2704 1 : *QType = 4;
2705 1 : *b_min = FLT2FIX(0);
2706 1 : *b_max = FLT2FIX(1);
2707 : return 1;
2708 : default:
2709 : return 0;
2710 : }
2711 : }
2712 :
2713 :
2714 :
2715 7 : GF_Node *ColorInterpolator_Create()
2716 : {
2717 : M_ColorInterpolator *p;
2718 7 : GF_SAFEALLOC(p, M_ColorInterpolator);
2719 7 : if(!p) return NULL;
2720 7 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ColorInterpolator);
2721 :
2722 : /*default field values*/
2723 7 : return (GF_Node *)p;
2724 : }
2725 :
2726 :
2727 : /*
2728 : CompositeTexture2D Node deletion
2729 : */
2730 :
2731 31 : static void CompositeTexture2D_Del(GF_Node *node)
2732 : {
2733 : M_CompositeTexture2D *p = (M_CompositeTexture2D *) node;
2734 31 : gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
2735 31 : gf_node_unregister((GF_Node *) p->viewport, (GF_Node *) p);
2736 31 : gf_sg_vrml_parent_destroy((GF_Node *) p);
2737 31 : gf_node_free((GF_Node *) p);
2738 31 : }
2739 :
2740 : static const u16 CompositeTexture2D_Def2All[] = { 2, 3, 4, 5, 6, 7};
2741 : static const u16 CompositeTexture2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
2742 : static const u16 CompositeTexture2D_Out2All[] = { 2, 3, 4, 5, 6};
2743 :
2744 : static u32 CompositeTexture2D_get_field_count(GF_Node *node, u8 IndexMode)
2745 : {
2746 : switch(IndexMode) {
2747 : case GF_SG_FIELD_CODING_IN:
2748 : return 7;
2749 : case GF_SG_FIELD_CODING_DEF:
2750 : return 6;
2751 : case GF_SG_FIELD_CODING_OUT:
2752 : return 5;
2753 : case GF_SG_FIELD_CODING_DYN:
2754 : return 0;
2755 : default:
2756 : return 8;
2757 : }
2758 : }
2759 :
2760 : static GF_Err CompositeTexture2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2761 : {
2762 8 : switch(IndexMode) {
2763 0 : case GF_SG_FIELD_CODING_IN:
2764 0 : *allField = CompositeTexture2D_In2All[inField];
2765 : return GF_OK;
2766 0 : case GF_SG_FIELD_CODING_DEF:
2767 0 : *allField = CompositeTexture2D_Def2All[inField];
2768 : return GF_OK;
2769 0 : case GF_SG_FIELD_CODING_OUT:
2770 0 : *allField = CompositeTexture2D_Out2All[inField];
2771 : return GF_OK;
2772 : default:
2773 : return GF_BAD_PARAM;
2774 : }
2775 : }
2776 5156 : static GF_Err CompositeTexture2D_get_field(GF_Node *node, GF_FieldInfo *info)
2777 : {
2778 5156 : switch (info->fieldIndex) {
2779 590 : case 0:
2780 590 : info->name = "addChildren";
2781 590 : info->eventType = GF_SG_EVENT_IN;
2782 590 : info->on_event_in = ((M_CompositeTexture2D *)node)->on_addChildren;
2783 590 : info->fieldType = GF_SG_VRML_MFNODE;
2784 590 : info->NDTtype = NDT_SF2DNode;
2785 590 : info->far_ptr = & ((M_CompositeTexture2D *)node)->addChildren;
2786 590 : return GF_OK;
2787 592 : case 1:
2788 592 : info->name = "removeChildren";
2789 592 : info->eventType = GF_SG_EVENT_IN;
2790 592 : info->on_event_in = ((M_CompositeTexture2D *)node)->on_removeChildren;
2791 592 : info->fieldType = GF_SG_VRML_MFNODE;
2792 592 : info->NDTtype = NDT_SF2DNode;
2793 592 : info->far_ptr = & ((M_CompositeTexture2D *)node)->removeChildren;
2794 592 : return GF_OK;
2795 789 : case 2:
2796 789 : info->name = "children";
2797 789 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2798 789 : info->fieldType = GF_SG_VRML_MFNODE;
2799 789 : info->NDTtype = NDT_SF2DNode;
2800 789 : info->far_ptr = & ((M_CompositeTexture2D *)node)->children;
2801 789 : return GF_OK;
2802 706 : case 3:
2803 706 : info->name = "pixelWidth";
2804 706 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2805 706 : info->fieldType = GF_SG_VRML_SFINT32;
2806 706 : info->far_ptr = & ((M_CompositeTexture2D *) node)->pixelWidth;
2807 706 : return GF_OK;
2808 706 : case 4:
2809 706 : info->name = "pixelHeight";
2810 706 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2811 706 : info->fieldType = GF_SG_VRML_SFINT32;
2812 706 : info->far_ptr = & ((M_CompositeTexture2D *) node)->pixelHeight;
2813 706 : return GF_OK;
2814 593 : case 5:
2815 593 : info->name = "background";
2816 593 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2817 593 : info->fieldType = GF_SG_VRML_SFNODE;
2818 593 : info->NDTtype = NDT_SFBackground2DNode;
2819 593 : info->far_ptr = & ((M_CompositeTexture2D *)node)->background;
2820 593 : return GF_OK;
2821 590 : case 6:
2822 590 : info->name = "viewport";
2823 590 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2824 590 : info->fieldType = GF_SG_VRML_SFNODE;
2825 590 : info->NDTtype = NDT_SFViewportNode;
2826 590 : info->far_ptr = & ((M_CompositeTexture2D *)node)->viewport;
2827 590 : return GF_OK;
2828 590 : case 7:
2829 590 : info->name = "repeatSandT";
2830 590 : info->eventType = GF_SG_EVENT_FIELD;
2831 590 : info->fieldType = GF_SG_VRML_SFINT32;
2832 590 : info->far_ptr = & ((M_CompositeTexture2D *) node)->repeatSandT;
2833 590 : return GF_OK;
2834 : default:
2835 : return GF_BAD_PARAM;
2836 : }
2837 : }
2838 :
2839 :
2840 405 : static s32 CompositeTexture2D_get_field_index_by_name(char *name)
2841 : {
2842 405 : if (!strcmp("addChildren", name)) return 0;
2843 404 : if (!strcmp("removeChildren", name)) return 1;
2844 402 : if (!strcmp("children", name)) return 2;
2845 240 : if (!strcmp("pixelWidth", name)) return 3;
2846 123 : if (!strcmp("pixelHeight", name)) return 4;
2847 6 : if (!strcmp("background", name)) return 5;
2848 2 : if (!strcmp("viewport", name)) return 6;
2849 1 : if (!strcmp("repeatSandT", name)) return 7;
2850 0 : return -1;
2851 : }
2852 : static Bool CompositeTexture2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
2853 : {
2854 8 : switch (FieldIndex) {
2855 1 : case 3:
2856 1 : *AType = 0;
2857 1 : *QType = 13;
2858 1 : *QT13_bits = 16;
2859 1 : *b_min = FLT2FIX(0);
2860 1 : *b_max = FIX_MAX;
2861 : return 1;
2862 1 : case 4:
2863 1 : *AType = 0;
2864 1 : *QType = 13;
2865 1 : *QT13_bits = 16;
2866 1 : *b_min = FLT2FIX(0);
2867 1 : *b_max = FIX_MAX;
2868 : return 1;
2869 1 : case 7:
2870 1 : *AType = 0;
2871 1 : *QType = 13;
2872 1 : *QT13_bits = 2;
2873 1 : *b_min = FLT2FIX(0);
2874 1 : *b_max = FLT2FIX(3);
2875 : return 1;
2876 : default:
2877 : return 0;
2878 : }
2879 : }
2880 :
2881 :
2882 :
2883 31 : GF_Node *CompositeTexture2D_Create()
2884 : {
2885 : M_CompositeTexture2D *p;
2886 31 : GF_SAFEALLOC(p, M_CompositeTexture2D);
2887 31 : if(!p) return NULL;
2888 31 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CompositeTexture2D);
2889 31 : gf_sg_vrml_parent_setup((GF_Node *) p);
2890 :
2891 : /*default field values*/
2892 31 : p->pixelWidth = -1;
2893 31 : p->pixelHeight = -1;
2894 31 : p->repeatSandT = 3;
2895 31 : return (GF_Node *)p;
2896 : }
2897 :
2898 :
2899 : /*
2900 : CompositeTexture3D Node deletion
2901 : */
2902 :
2903 3 : static void CompositeTexture3D_Del(GF_Node *node)
2904 : {
2905 : M_CompositeTexture3D *p = (M_CompositeTexture3D *) node;
2906 3 : gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
2907 3 : gf_node_unregister((GF_Node *) p->fog, (GF_Node *) p);
2908 3 : gf_node_unregister((GF_Node *) p->navigationInfo, (GF_Node *) p);
2909 3 : gf_node_unregister((GF_Node *) p->viewpoint, (GF_Node *) p);
2910 3 : gf_sg_vrml_parent_destroy((GF_Node *) p);
2911 3 : gf_node_free((GF_Node *) p);
2912 3 : }
2913 :
2914 : static const u16 CompositeTexture3D_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10};
2915 : static const u16 CompositeTexture3D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
2916 : static const u16 CompositeTexture3D_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
2917 :
2918 : static u32 CompositeTexture3D_get_field_count(GF_Node *node, u8 IndexMode)
2919 : {
2920 : switch(IndexMode) {
2921 : case GF_SG_FIELD_CODING_IN:
2922 : return 9;
2923 : case GF_SG_FIELD_CODING_DEF:
2924 : return 9;
2925 : case GF_SG_FIELD_CODING_OUT:
2926 : return 7;
2927 : case GF_SG_FIELD_CODING_DYN:
2928 : return 0;
2929 : default:
2930 : return 11;
2931 : }
2932 : }
2933 :
2934 : static GF_Err CompositeTexture3D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
2935 : {
2936 11 : switch(IndexMode) {
2937 0 : case GF_SG_FIELD_CODING_IN:
2938 0 : *allField = CompositeTexture3D_In2All[inField];
2939 : return GF_OK;
2940 0 : case GF_SG_FIELD_CODING_DEF:
2941 0 : *allField = CompositeTexture3D_Def2All[inField];
2942 : return GF_OK;
2943 0 : case GF_SG_FIELD_CODING_OUT:
2944 0 : *allField = CompositeTexture3D_Out2All[inField];
2945 : return GF_OK;
2946 : default:
2947 : return GF_BAD_PARAM;
2948 : }
2949 : }
2950 28 : static GF_Err CompositeTexture3D_get_field(GF_Node *node, GF_FieldInfo *info)
2951 : {
2952 28 : switch (info->fieldIndex) {
2953 2 : case 0:
2954 2 : info->name = "addChildren";
2955 2 : info->eventType = GF_SG_EVENT_IN;
2956 2 : info->on_event_in = ((M_CompositeTexture3D *)node)->on_addChildren;
2957 2 : info->fieldType = GF_SG_VRML_MFNODE;
2958 2 : info->NDTtype = NDT_SF3DNode;
2959 2 : info->far_ptr = & ((M_CompositeTexture3D *)node)->addChildren;
2960 2 : return GF_OK;
2961 2 : case 1:
2962 2 : info->name = "removeChildren";
2963 2 : info->eventType = GF_SG_EVENT_IN;
2964 2 : info->on_event_in = ((M_CompositeTexture3D *)node)->on_removeChildren;
2965 2 : info->fieldType = GF_SG_VRML_MFNODE;
2966 2 : info->NDTtype = NDT_SF3DNode;
2967 2 : info->far_ptr = & ((M_CompositeTexture3D *)node)->removeChildren;
2968 2 : return GF_OK;
2969 4 : case 2:
2970 4 : info->name = "children";
2971 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2972 4 : info->fieldType = GF_SG_VRML_MFNODE;
2973 4 : info->NDTtype = NDT_SF3DNode;
2974 4 : info->far_ptr = & ((M_CompositeTexture3D *)node)->children;
2975 4 : return GF_OK;
2976 4 : case 3:
2977 4 : info->name = "pixelWidth";
2978 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2979 4 : info->fieldType = GF_SG_VRML_SFINT32;
2980 4 : info->far_ptr = & ((M_CompositeTexture3D *) node)->pixelWidth;
2981 4 : return GF_OK;
2982 4 : case 4:
2983 4 : info->name = "pixelHeight";
2984 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2985 4 : info->fieldType = GF_SG_VRML_SFINT32;
2986 4 : info->far_ptr = & ((M_CompositeTexture3D *) node)->pixelHeight;
2987 4 : return GF_OK;
2988 2 : case 5:
2989 2 : info->name = "background";
2990 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2991 2 : info->fieldType = GF_SG_VRML_SFNODE;
2992 2 : info->NDTtype = NDT_SFBackground3DNode;
2993 2 : info->far_ptr = & ((M_CompositeTexture3D *)node)->background;
2994 2 : return GF_OK;
2995 2 : case 6:
2996 2 : info->name = "fog";
2997 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
2998 2 : info->fieldType = GF_SG_VRML_SFNODE;
2999 2 : info->NDTtype = NDT_SFFogNode;
3000 2 : info->far_ptr = & ((M_CompositeTexture3D *)node)->fog;
3001 2 : return GF_OK;
3002 2 : case 7:
3003 2 : info->name = "navigationInfo";
3004 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3005 2 : info->fieldType = GF_SG_VRML_SFNODE;
3006 2 : info->NDTtype = NDT_SFNavigationInfoNode;
3007 2 : info->far_ptr = & ((M_CompositeTexture3D *)node)->navigationInfo;
3008 2 : return GF_OK;
3009 2 : case 8:
3010 2 : info->name = "viewpoint";
3011 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3012 2 : info->fieldType = GF_SG_VRML_SFNODE;
3013 2 : info->NDTtype = NDT_SFViewpointNode;
3014 2 : info->far_ptr = & ((M_CompositeTexture3D *)node)->viewpoint;
3015 2 : return GF_OK;
3016 2 : case 9:
3017 2 : info->name = "repeatS";
3018 2 : info->eventType = GF_SG_EVENT_FIELD;
3019 2 : info->fieldType = GF_SG_VRML_SFBOOL;
3020 2 : info->far_ptr = & ((M_CompositeTexture3D *) node)->repeatS;
3021 2 : return GF_OK;
3022 2 : case 10:
3023 2 : info->name = "repeatT";
3024 2 : info->eventType = GF_SG_EVENT_FIELD;
3025 2 : info->fieldType = GF_SG_VRML_SFBOOL;
3026 2 : info->far_ptr = & ((M_CompositeTexture3D *) node)->repeatT;
3027 2 : return GF_OK;
3028 : default:
3029 : return GF_BAD_PARAM;
3030 : }
3031 : }
3032 :
3033 :
3034 17 : static s32 CompositeTexture3D_get_field_index_by_name(char *name)
3035 : {
3036 17 : if (!strcmp("addChildren", name)) return 0;
3037 16 : if (!strcmp("removeChildren", name)) return 1;
3038 15 : if (!strcmp("children", name)) return 2;
3039 12 : if (!strcmp("pixelWidth", name)) return 3;
3040 9 : if (!strcmp("pixelHeight", name)) return 4;
3041 6 : if (!strcmp("background", name)) return 5;
3042 5 : if (!strcmp("fog", name)) return 6;
3043 4 : if (!strcmp("navigationInfo", name)) return 7;
3044 3 : if (!strcmp("viewpoint", name)) return 8;
3045 2 : if (!strcmp("repeatS", name)) return 9;
3046 1 : if (!strcmp("repeatT", name)) return 10;
3047 0 : return -1;
3048 : }
3049 : static Bool CompositeTexture3D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3050 : {
3051 11 : switch (FieldIndex) {
3052 1 : case 3:
3053 1 : *AType = 0;
3054 1 : *QType = 13;
3055 1 : *QT13_bits = 16;
3056 1 : *b_min = FLT2FIX(0);
3057 1 : *b_max = FIX_MAX;
3058 : return 1;
3059 1 : case 4:
3060 1 : *AType = 0;
3061 1 : *QType = 13;
3062 1 : *QT13_bits = 16;
3063 1 : *b_min = FLT2FIX(0);
3064 1 : *b_max = FIX_MAX;
3065 : return 1;
3066 : default:
3067 : return 0;
3068 : }
3069 : }
3070 :
3071 :
3072 :
3073 3 : GF_Node *CompositeTexture3D_Create()
3074 : {
3075 : M_CompositeTexture3D *p;
3076 3 : GF_SAFEALLOC(p, M_CompositeTexture3D);
3077 3 : if(!p) return NULL;
3078 3 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CompositeTexture3D);
3079 3 : gf_sg_vrml_parent_setup((GF_Node *) p);
3080 :
3081 : /*default field values*/
3082 3 : p->pixelWidth = -1;
3083 3 : p->pixelHeight = -1;
3084 3 : p->repeatS = 1;
3085 3 : p->repeatT = 1;
3086 3 : return (GF_Node *)p;
3087 : }
3088 :
3089 :
3090 : /*
3091 : Conditional Node deletion
3092 : */
3093 :
3094 : static void Conditional_Del(GF_Node *node)
3095 : {
3096 : M_Conditional *p = (M_Conditional *) node;
3097 953 : gf_sg_sfcommand_del(p->buffer);
3098 953 : gf_node_free((GF_Node *) p);
3099 : }
3100 :
3101 : static const u16 Conditional_Def2All[] = { 2};
3102 : static const u16 Conditional_In2All[] = { 0, 1, 2};
3103 : static const u16 Conditional_Out2All[] = { 2, 3};
3104 :
3105 : static u32 Conditional_get_field_count(GF_Node *node, u8 IndexMode)
3106 : {
3107 : switch(IndexMode) {
3108 : case GF_SG_FIELD_CODING_IN:
3109 : return 3;
3110 : case GF_SG_FIELD_CODING_DEF:
3111 : return 1;
3112 : case GF_SG_FIELD_CODING_OUT:
3113 : return 2;
3114 : case GF_SG_FIELD_CODING_DYN:
3115 : return 0;
3116 : default:
3117 : return 4;
3118 : }
3119 : }
3120 :
3121 : static GF_Err Conditional_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3122 : {
3123 372 : switch(IndexMode) {
3124 178 : case GF_SG_FIELD_CODING_IN:
3125 178 : *allField = Conditional_In2All[inField];
3126 : return GF_OK;
3127 190 : case GF_SG_FIELD_CODING_DEF:
3128 190 : *allField = Conditional_Def2All[inField];
3129 : return GF_OK;
3130 0 : case GF_SG_FIELD_CODING_OUT:
3131 0 : *allField = Conditional_Out2All[inField];
3132 : return GF_OK;
3133 : default:
3134 : return GF_BAD_PARAM;
3135 : }
3136 : }
3137 2621 : static GF_Err Conditional_get_field(GF_Node *node, GF_FieldInfo *info)
3138 : {
3139 2621 : switch (info->fieldIndex) {
3140 856 : case 0:
3141 856 : info->name = "activate";
3142 856 : info->eventType = GF_SG_EVENT_IN;
3143 856 : info->on_event_in = ((M_Conditional *)node)->on_activate;
3144 856 : info->fieldType = GF_SG_VRML_SFBOOL;
3145 856 : info->far_ptr = & ((M_Conditional *) node)->activate;
3146 856 : return GF_OK;
3147 499 : case 1:
3148 499 : info->name = "reverseActivate";
3149 499 : info->eventType = GF_SG_EVENT_IN;
3150 499 : info->on_event_in = ((M_Conditional *)node)->on_reverseActivate;
3151 499 : info->fieldType = GF_SG_VRML_SFBOOL;
3152 499 : info->far_ptr = & ((M_Conditional *) node)->reverseActivate;
3153 499 : return GF_OK;
3154 1068 : case 2:
3155 1068 : info->name = "buffer";
3156 1068 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3157 1068 : info->fieldType = GF_SG_VRML_SFCOMMANDBUFFER;
3158 1068 : info->far_ptr = & ((M_Conditional *) node)->buffer;
3159 1068 : return GF_OK;
3160 198 : case 3:
3161 198 : info->name = "isActive";
3162 198 : info->eventType = GF_SG_EVENT_OUT;
3163 198 : info->fieldType = GF_SG_VRML_SFBOOL;
3164 198 : info->far_ptr = & ((M_Conditional *) node)->isActive;
3165 198 : return GF_OK;
3166 : default:
3167 : return GF_BAD_PARAM;
3168 : }
3169 : }
3170 :
3171 :
3172 1162 : static s32 Conditional_get_field_index_by_name(char *name)
3173 : {
3174 1162 : if (!strcmp("activate", name)) return 0;
3175 735 : if (!strcmp("reverseActivate", name)) return 1;
3176 558 : if (!strcmp("buffer", name)) return 2;
3177 1 : if (!strcmp("isActive", name)) return 3;
3178 0 : return -1;
3179 : }
3180 : static Bool Conditional_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3181 : {
3182 : switch (FieldIndex) {
3183 : default:
3184 : return 0;
3185 : }
3186 : }
3187 :
3188 :
3189 :
3190 953 : GF_Node *Conditional_Create()
3191 : {
3192 : M_Conditional *p;
3193 953 : GF_SAFEALLOC(p, M_Conditional);
3194 953 : if(!p) return NULL;
3195 953 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Conditional);
3196 953 : p->buffer.commandList = gf_list_new();
3197 :
3198 : /*default field values*/
3199 953 : return (GF_Node *)p;
3200 : }
3201 :
3202 :
3203 : /*
3204 : Cone Node deletion
3205 : */
3206 :
3207 : static void Cone_Del(GF_Node *node)
3208 : {
3209 : M_Cone *p = (M_Cone *) node;
3210 72 : gf_node_free((GF_Node *) p);
3211 : }
3212 :
3213 : static const u16 Cone_Def2All[] = { 0, 1, 2, 3};
3214 :
3215 : static u32 Cone_get_field_count(GF_Node *node, u8 IndexMode)
3216 : {
3217 76 : switch(IndexMode) {
3218 : case GF_SG_FIELD_CODING_IN:
3219 : return 0;
3220 56 : case GF_SG_FIELD_CODING_DEF:
3221 : return 4;
3222 : case GF_SG_FIELD_CODING_OUT:
3223 : return 0;
3224 : case GF_SG_FIELD_CODING_DYN:
3225 : return 0;
3226 17 : default:
3227 : return 4;
3228 : }
3229 : }
3230 :
3231 : static GF_Err Cone_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3232 : {
3233 114 : switch(IndexMode) {
3234 110 : case GF_SG_FIELD_CODING_DEF:
3235 110 : *allField = Cone_Def2All[inField];
3236 : return GF_OK;
3237 : default:
3238 : return GF_BAD_PARAM;
3239 : }
3240 : }
3241 421 : static GF_Err Cone_get_field(GF_Node *node, GF_FieldInfo *info)
3242 : {
3243 421 : switch (info->fieldIndex) {
3244 137 : case 0:
3245 137 : info->name = "bottomRadius";
3246 137 : info->eventType = GF_SG_EVENT_FIELD;
3247 137 : info->fieldType = GF_SG_VRML_SFFLOAT;
3248 137 : info->far_ptr = & ((M_Cone *) node)->bottomRadius;
3249 137 : return GF_OK;
3250 137 : case 1:
3251 137 : info->name = "height";
3252 137 : info->eventType = GF_SG_EVENT_FIELD;
3253 137 : info->fieldType = GF_SG_VRML_SFFLOAT;
3254 137 : info->far_ptr = & ((M_Cone *) node)->height;
3255 137 : return GF_OK;
3256 72 : case 2:
3257 72 : info->name = "side";
3258 72 : info->eventType = GF_SG_EVENT_FIELD;
3259 72 : info->fieldType = GF_SG_VRML_SFBOOL;
3260 72 : info->far_ptr = & ((M_Cone *) node)->side;
3261 72 : return GF_OK;
3262 75 : case 3:
3263 75 : info->name = "bottom";
3264 75 : info->eventType = GF_SG_EVENT_FIELD;
3265 75 : info->fieldType = GF_SG_VRML_SFBOOL;
3266 75 : info->far_ptr = & ((M_Cone *) node)->bottom;
3267 75 : return GF_OK;
3268 : default:
3269 : return GF_BAD_PARAM;
3270 : }
3271 : }
3272 :
3273 :
3274 49 : static s32 Cone_get_field_index_by_name(char *name)
3275 : {
3276 49 : if (!strcmp("bottomRadius", name)) return 0;
3277 27 : if (!strcmp("height", name)) return 1;
3278 5 : if (!strcmp("side", name)) return 2;
3279 4 : if (!strcmp("bottom", name)) return 3;
3280 0 : return -1;
3281 : }
3282 : static Bool Cone_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3283 : {
3284 20 : switch (FieldIndex) {
3285 9 : case 0:
3286 9 : *AType = 0;
3287 9 : *QType = 11;
3288 9 : *b_min = FLT2FIX(0);
3289 9 : *b_max = FIX_MAX;
3290 : return 1;
3291 9 : case 1:
3292 9 : *AType = 0;
3293 9 : *QType = 11;
3294 9 : *b_min = FLT2FIX(0);
3295 9 : *b_max = FIX_MAX;
3296 : return 1;
3297 : default:
3298 : return 0;
3299 : }
3300 : }
3301 :
3302 :
3303 :
3304 72 : GF_Node *Cone_Create()
3305 : {
3306 : M_Cone *p;
3307 72 : GF_SAFEALLOC(p, M_Cone);
3308 72 : if(!p) return NULL;
3309 72 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Cone);
3310 :
3311 : /*default field values*/
3312 72 : p->bottomRadius = FLT2FIX(1);
3313 72 : p->height = FLT2FIX(2);
3314 72 : p->side = 1;
3315 72 : p->bottom = 1;
3316 72 : return (GF_Node *)p;
3317 : }
3318 :
3319 :
3320 : /*
3321 : Coordinate Node deletion
3322 : */
3323 :
3324 : static void Coordinate_Del(GF_Node *node)
3325 : {
3326 : M_Coordinate *p = (M_Coordinate *) node;
3327 200 : gf_sg_mfvec3f_del(p->point);
3328 200 : gf_node_free((GF_Node *) p);
3329 : }
3330 :
3331 : static const u16 Coordinate_Def2All[] = { 0};
3332 : static const u16 Coordinate_In2All[] = { 0};
3333 : static const u16 Coordinate_Out2All[] = { 0};
3334 : static const u16 Coordinate_Dyn2All[] = { 0};
3335 :
3336 : static u32 Coordinate_get_field_count(GF_Node *node, u8 IndexMode)
3337 : {
3338 : switch(IndexMode) {
3339 : case GF_SG_FIELD_CODING_IN:
3340 : return 1;
3341 : case GF_SG_FIELD_CODING_DEF:
3342 : return 1;
3343 : case GF_SG_FIELD_CODING_OUT:
3344 : return 1;
3345 : case GF_SG_FIELD_CODING_DYN:
3346 : return 1;
3347 : default:
3348 : return 1;
3349 : }
3350 : }
3351 :
3352 : static GF_Err Coordinate_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3353 : {
3354 106 : switch(IndexMode) {
3355 0 : case GF_SG_FIELD_CODING_IN:
3356 0 : *allField = Coordinate_In2All[inField];
3357 : return GF_OK;
3358 105 : case GF_SG_FIELD_CODING_DEF:
3359 105 : *allField = Coordinate_Def2All[inField];
3360 : return GF_OK;
3361 0 : case GF_SG_FIELD_CODING_OUT:
3362 0 : *allField = Coordinate_Out2All[inField];
3363 : return GF_OK;
3364 0 : case GF_SG_FIELD_CODING_DYN:
3365 0 : *allField = Coordinate_Dyn2All[inField];
3366 : return GF_OK;
3367 : default:
3368 : return GF_BAD_PARAM;
3369 : }
3370 : }
3371 : static GF_Err Coordinate_get_field(GF_Node *node, GF_FieldInfo *info)
3372 : {
3373 393 : switch (info->fieldIndex) {
3374 393 : case 0:
3375 393 : info->name = "point";
3376 393 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3377 393 : info->fieldType = GF_SG_VRML_MFVEC3F;
3378 393 : info->far_ptr = & ((M_Coordinate *) node)->point;
3379 : return GF_OK;
3380 : default:
3381 : return GF_BAD_PARAM;
3382 : }
3383 : }
3384 :
3385 :
3386 : static s32 Coordinate_get_field_index_by_name(char *name)
3387 : {
3388 50 : if (!strcmp("point", name)) return 0;
3389 : return -1;
3390 : }
3391 : static Bool Coordinate_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3392 : {
3393 193 : switch (FieldIndex) {
3394 193 : case 0:
3395 193 : *AType = 1;
3396 193 : *QType = 1;
3397 193 : *b_min = FIX_MIN;
3398 193 : *b_max = FIX_MAX;
3399 : return 1;
3400 : default:
3401 : return 0;
3402 : }
3403 : }
3404 :
3405 :
3406 :
3407 200 : GF_Node *Coordinate_Create()
3408 : {
3409 : M_Coordinate *p;
3410 200 : GF_SAFEALLOC(p, M_Coordinate);
3411 200 : if(!p) return NULL;
3412 200 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Coordinate);
3413 :
3414 : /*default field values*/
3415 200 : return (GF_Node *)p;
3416 : }
3417 :
3418 :
3419 : /*
3420 : Coordinate2D Node deletion
3421 : */
3422 :
3423 : static void Coordinate2D_Del(GF_Node *node)
3424 : {
3425 : M_Coordinate2D *p = (M_Coordinate2D *) node;
3426 4435 : gf_sg_mfvec2f_del(p->point);
3427 4435 : gf_node_free((GF_Node *) p);
3428 : }
3429 :
3430 : static const u16 Coordinate2D_Def2All[] = { 0};
3431 : static const u16 Coordinate2D_In2All[] = { 0};
3432 : static const u16 Coordinate2D_Out2All[] = { 0};
3433 : static const u16 Coordinate2D_Dyn2All[] = { 0};
3434 :
3435 : static u32 Coordinate2D_get_field_count(GF_Node *node, u8 IndexMode)
3436 : {
3437 : switch(IndexMode) {
3438 : case GF_SG_FIELD_CODING_IN:
3439 : return 1;
3440 : case GF_SG_FIELD_CODING_DEF:
3441 : return 1;
3442 : case GF_SG_FIELD_CODING_OUT:
3443 : return 1;
3444 : case GF_SG_FIELD_CODING_DYN:
3445 : return 1;
3446 : default:
3447 : return 1;
3448 : }
3449 : }
3450 :
3451 : static GF_Err Coordinate2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3452 : {
3453 2126 : switch(IndexMode) {
3454 96 : case GF_SG_FIELD_CODING_IN:
3455 96 : *allField = Coordinate2D_In2All[inField];
3456 : return GF_OK;
3457 2029 : case GF_SG_FIELD_CODING_DEF:
3458 2029 : *allField = Coordinate2D_Def2All[inField];
3459 : return GF_OK;
3460 0 : case GF_SG_FIELD_CODING_OUT:
3461 0 : *allField = Coordinate2D_Out2All[inField];
3462 : return GF_OK;
3463 0 : case GF_SG_FIELD_CODING_DYN:
3464 0 : *allField = Coordinate2D_Dyn2All[inField];
3465 : return GF_OK;
3466 : default:
3467 : return GF_BAD_PARAM;
3468 : }
3469 : }
3470 : static GF_Err Coordinate2D_get_field(GF_Node *node, GF_FieldInfo *info)
3471 : {
3472 10999 : switch (info->fieldIndex) {
3473 10999 : case 0:
3474 10999 : info->name = "point";
3475 10999 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3476 10999 : info->fieldType = GF_SG_VRML_MFVEC2F;
3477 10999 : info->far_ptr = & ((M_Coordinate2D *) node)->point;
3478 : return GF_OK;
3479 : default:
3480 : return GF_BAD_PARAM;
3481 : }
3482 : }
3483 :
3484 :
3485 : static s32 Coordinate2D_get_field_index_by_name(char *name)
3486 : {
3487 4368 : if (!strcmp("point", name)) return 0;
3488 : return -1;
3489 : }
3490 : static Bool Coordinate2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3491 : {
3492 838 : switch (FieldIndex) {
3493 838 : case 0:
3494 838 : *AType = 2;
3495 838 : *QType = 2;
3496 838 : *b_min = FIX_MIN;
3497 838 : *b_max = FIX_MAX;
3498 : return 1;
3499 : default:
3500 : return 0;
3501 : }
3502 : }
3503 :
3504 :
3505 :
3506 4435 : GF_Node *Coordinate2D_Create()
3507 : {
3508 : M_Coordinate2D *p;
3509 4435 : GF_SAFEALLOC(p, M_Coordinate2D);
3510 4435 : if(!p) return NULL;
3511 4435 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Coordinate2D);
3512 :
3513 : /*default field values*/
3514 4435 : return (GF_Node *)p;
3515 : }
3516 :
3517 :
3518 : /*
3519 : CoordinateInterpolator Node deletion
3520 : */
3521 :
3522 2 : static void CoordinateInterpolator_Del(GF_Node *node)
3523 : {
3524 : M_CoordinateInterpolator *p = (M_CoordinateInterpolator *) node;
3525 2 : gf_sg_mffloat_del(p->key);
3526 2 : gf_sg_mfvec3f_del(p->keyValue);
3527 2 : gf_sg_mfvec3f_del(p->value_changed);
3528 2 : gf_node_free((GF_Node *) p);
3529 2 : }
3530 :
3531 : static const u16 CoordinateInterpolator_Def2All[] = { 1, 2};
3532 : static const u16 CoordinateInterpolator_In2All[] = { 0, 1, 2};
3533 : static const u16 CoordinateInterpolator_Out2All[] = { 1, 2, 3};
3534 :
3535 : static u32 CoordinateInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
3536 : {
3537 : switch(IndexMode) {
3538 : case GF_SG_FIELD_CODING_IN:
3539 : return 3;
3540 : case GF_SG_FIELD_CODING_DEF:
3541 : return 2;
3542 : case GF_SG_FIELD_CODING_OUT:
3543 : return 3;
3544 : case GF_SG_FIELD_CODING_DYN:
3545 : return 0;
3546 : default:
3547 : return 4;
3548 : }
3549 : }
3550 :
3551 : static GF_Err CoordinateInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3552 : {
3553 4 : switch(IndexMode) {
3554 0 : case GF_SG_FIELD_CODING_IN:
3555 0 : *allField = CoordinateInterpolator_In2All[inField];
3556 : return GF_OK;
3557 0 : case GF_SG_FIELD_CODING_DEF:
3558 0 : *allField = CoordinateInterpolator_Def2All[inField];
3559 : return GF_OK;
3560 0 : case GF_SG_FIELD_CODING_OUT:
3561 0 : *allField = CoordinateInterpolator_Out2All[inField];
3562 : return GF_OK;
3563 : default:
3564 : return GF_BAD_PARAM;
3565 : }
3566 : }
3567 12 : static GF_Err CoordinateInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
3568 : {
3569 12 : switch (info->fieldIndex) {
3570 4 : case 0:
3571 4 : info->name = "set_fraction";
3572 4 : info->eventType = GF_SG_EVENT_IN;
3573 4 : info->on_event_in = ((M_CoordinateInterpolator *)node)->on_set_fraction;
3574 4 : info->fieldType = GF_SG_VRML_SFFLOAT;
3575 4 : info->far_ptr = & ((M_CoordinateInterpolator *) node)->set_fraction;
3576 4 : return GF_OK;
3577 3 : case 1:
3578 3 : info->name = "key";
3579 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3580 3 : info->fieldType = GF_SG_VRML_MFFLOAT;
3581 3 : info->far_ptr = & ((M_CoordinateInterpolator *) node)->key;
3582 3 : return GF_OK;
3583 3 : case 2:
3584 3 : info->name = "keyValue";
3585 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3586 3 : info->fieldType = GF_SG_VRML_MFVEC3F;
3587 3 : info->far_ptr = & ((M_CoordinateInterpolator *) node)->keyValue;
3588 3 : return GF_OK;
3589 2 : case 3:
3590 2 : info->name = "value_changed";
3591 2 : info->eventType = GF_SG_EVENT_OUT;
3592 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
3593 2 : info->far_ptr = & ((M_CoordinateInterpolator *) node)->value_changed;
3594 2 : return GF_OK;
3595 : default:
3596 : return GF_BAD_PARAM;
3597 : }
3598 : }
3599 :
3600 :
3601 7 : static s32 CoordinateInterpolator_get_field_index_by_name(char *name)
3602 : {
3603 7 : if (!strcmp("set_fraction", name)) return 0;
3604 5 : if (!strcmp("key", name)) return 1;
3605 3 : if (!strcmp("keyValue", name)) return 2;
3606 1 : if (!strcmp("value_changed", name)) return 3;
3607 0 : return -1;
3608 : }
3609 : static Bool CoordinateInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3610 : {
3611 4 : switch (FieldIndex) {
3612 1 : case 1:
3613 1 : *AType = 0;
3614 1 : *QType = 8;
3615 1 : *b_min = FLT2FIX(0);
3616 1 : *b_max = FLT2FIX(1);
3617 : return 1;
3618 1 : case 2:
3619 1 : *AType = 0;
3620 1 : *QType = 1;
3621 1 : *b_min = FIX_MIN;
3622 1 : *b_max = FIX_MAX;
3623 : return 1;
3624 : default:
3625 : return 0;
3626 : }
3627 : }
3628 :
3629 :
3630 :
3631 2 : GF_Node *CoordinateInterpolator_Create()
3632 : {
3633 : M_CoordinateInterpolator *p;
3634 2 : GF_SAFEALLOC(p, M_CoordinateInterpolator);
3635 2 : if(!p) return NULL;
3636 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CoordinateInterpolator);
3637 :
3638 : /*default field values*/
3639 2 : return (GF_Node *)p;
3640 : }
3641 :
3642 :
3643 : /*
3644 : CoordinateInterpolator2D Node deletion
3645 : */
3646 :
3647 3 : static void CoordinateInterpolator2D_Del(GF_Node *node)
3648 : {
3649 : M_CoordinateInterpolator2D *p = (M_CoordinateInterpolator2D *) node;
3650 3 : gf_sg_mffloat_del(p->key);
3651 3 : gf_sg_mfvec2f_del(p->keyValue);
3652 3 : gf_sg_mfvec2f_del(p->value_changed);
3653 3 : gf_node_free((GF_Node *) p);
3654 3 : }
3655 :
3656 : static const u16 CoordinateInterpolator2D_Def2All[] = { 1, 2};
3657 : static const u16 CoordinateInterpolator2D_In2All[] = { 0, 1, 2};
3658 : static const u16 CoordinateInterpolator2D_Out2All[] = { 1, 2, 3};
3659 :
3660 : static u32 CoordinateInterpolator2D_get_field_count(GF_Node *node, u8 IndexMode)
3661 : {
3662 : switch(IndexMode) {
3663 : case GF_SG_FIELD_CODING_IN:
3664 : return 3;
3665 : case GF_SG_FIELD_CODING_DEF:
3666 : return 2;
3667 : case GF_SG_FIELD_CODING_OUT:
3668 : return 3;
3669 : case GF_SG_FIELD_CODING_DYN:
3670 : return 0;
3671 : default:
3672 : return 4;
3673 : }
3674 : }
3675 :
3676 : static GF_Err CoordinateInterpolator2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3677 : {
3678 4 : switch(IndexMode) {
3679 0 : case GF_SG_FIELD_CODING_IN:
3680 0 : *allField = CoordinateInterpolator2D_In2All[inField];
3681 : return GF_OK;
3682 0 : case GF_SG_FIELD_CODING_DEF:
3683 0 : *allField = CoordinateInterpolator2D_Def2All[inField];
3684 : return GF_OK;
3685 0 : case GF_SG_FIELD_CODING_OUT:
3686 0 : *allField = CoordinateInterpolator2D_Out2All[inField];
3687 : return GF_OK;
3688 : default:
3689 : return GF_BAD_PARAM;
3690 : }
3691 : }
3692 20 : static GF_Err CoordinateInterpolator2D_get_field(GF_Node *node, GF_FieldInfo *info)
3693 : {
3694 20 : switch (info->fieldIndex) {
3695 6 : case 0:
3696 6 : info->name = "set_fraction";
3697 6 : info->eventType = GF_SG_EVENT_IN;
3698 6 : info->on_event_in = ((M_CoordinateInterpolator2D *)node)->on_set_fraction;
3699 6 : info->fieldType = GF_SG_VRML_SFFLOAT;
3700 6 : info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->set_fraction;
3701 6 : return GF_OK;
3702 4 : case 1:
3703 4 : info->name = "key";
3704 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3705 4 : info->fieldType = GF_SG_VRML_MFFLOAT;
3706 4 : info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->key;
3707 4 : return GF_OK;
3708 4 : case 2:
3709 4 : info->name = "keyValue";
3710 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3711 4 : info->fieldType = GF_SG_VRML_MFVEC2F;
3712 4 : info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->keyValue;
3713 4 : return GF_OK;
3714 6 : case 3:
3715 6 : info->name = "value_changed";
3716 6 : info->eventType = GF_SG_EVENT_OUT;
3717 6 : info->fieldType = GF_SG_VRML_MFVEC2F;
3718 6 : info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->value_changed;
3719 6 : return GF_OK;
3720 : default:
3721 : return GF_BAD_PARAM;
3722 : }
3723 : }
3724 :
3725 :
3726 12 : static s32 CoordinateInterpolator2D_get_field_index_by_name(char *name)
3727 : {
3728 12 : if (!strcmp("set_fraction", name)) return 0;
3729 9 : if (!strcmp("key", name)) return 1;
3730 6 : if (!strcmp("keyValue", name)) return 2;
3731 3 : if (!strcmp("value_changed", name)) return 3;
3732 0 : return -1;
3733 : }
3734 : static Bool CoordinateInterpolator2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3735 : {
3736 4 : switch (FieldIndex) {
3737 1 : case 1:
3738 1 : *AType = 0;
3739 1 : *QType = 8;
3740 1 : *b_min = FLT2FIX(0);
3741 1 : *b_max = FLT2FIX(1);
3742 : return 1;
3743 1 : case 2:
3744 1 : *AType = 0;
3745 1 : *QType = 2;
3746 1 : *b_min = FIX_MIN;
3747 1 : *b_max = FIX_MAX;
3748 : return 1;
3749 : default:
3750 : return 0;
3751 : }
3752 : }
3753 :
3754 :
3755 :
3756 3 : GF_Node *CoordinateInterpolator2D_Create()
3757 : {
3758 : M_CoordinateInterpolator2D *p;
3759 3 : GF_SAFEALLOC(p, M_CoordinateInterpolator2D);
3760 3 : if(!p) return NULL;
3761 3 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CoordinateInterpolator2D);
3762 :
3763 : /*default field values*/
3764 3 : return (GF_Node *)p;
3765 : }
3766 :
3767 :
3768 : /*
3769 : Curve2D Node deletion
3770 : */
3771 :
3772 2574 : static void Curve2D_Del(GF_Node *node)
3773 : {
3774 : M_Curve2D *p = (M_Curve2D *) node;
3775 2574 : gf_node_unregister((GF_Node *) p->point, (GF_Node *) p);
3776 2574 : gf_sg_mfint32_del(p->type);
3777 2574 : gf_node_free((GF_Node *) p);
3778 2574 : }
3779 :
3780 : static const u16 Curve2D_Def2All[] = { 0, 1, 2};
3781 : static const u16 Curve2D_In2All[] = { 0, 1, 2};
3782 : static const u16 Curve2D_Out2All[] = { 0, 1, 2};
3783 : static const u16 Curve2D_Dyn2All[] = { 1};
3784 :
3785 : static u32 Curve2D_get_field_count(GF_Node *node, u8 IndexMode)
3786 : {
3787 2420 : switch(IndexMode) {
3788 : case GF_SG_FIELD_CODING_IN:
3789 : return 3;
3790 : case GF_SG_FIELD_CODING_DEF:
3791 : return 3;
3792 : case GF_SG_FIELD_CODING_OUT:
3793 : return 3;
3794 1 : case GF_SG_FIELD_CODING_DYN:
3795 : return 1;
3796 : default:
3797 : return 3;
3798 : }
3799 : }
3800 :
3801 : static GF_Err Curve2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3802 : {
3803 3231 : switch(IndexMode) {
3804 0 : case GF_SG_FIELD_CODING_IN:
3805 0 : *allField = Curve2D_In2All[inField];
3806 : return GF_OK;
3807 3228 : case GF_SG_FIELD_CODING_DEF:
3808 3228 : *allField = Curve2D_Def2All[inField];
3809 : return GF_OK;
3810 0 : case GF_SG_FIELD_CODING_OUT:
3811 0 : *allField = Curve2D_Out2All[inField];
3812 : return GF_OK;
3813 0 : case GF_SG_FIELD_CODING_DYN:
3814 0 : *allField = Curve2D_Dyn2All[inField];
3815 : return GF_OK;
3816 : default:
3817 : return GF_BAD_PARAM;
3818 : }
3819 : }
3820 : static GF_Err Curve2D_get_field(GF_Node *node, GF_FieldInfo *info)
3821 : {
3822 15667 : switch (info->fieldIndex) {
3823 6862 : case 0:
3824 6862 : info->name = "point";
3825 6862 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3826 6862 : info->fieldType = GF_SG_VRML_SFNODE;
3827 6862 : info->NDTtype = NDT_SFCoordinate2DNode;
3828 6862 : info->far_ptr = & ((M_Curve2D *)node)->point;
3829 : return GF_OK;
3830 3520 : case 1:
3831 3520 : info->name = "fineness";
3832 3520 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3833 3520 : info->fieldType = GF_SG_VRML_SFFLOAT;
3834 3520 : info->far_ptr = & ((M_Curve2D *) node)->fineness;
3835 : return GF_OK;
3836 5285 : case 2:
3837 5285 : info->name = "type";
3838 5285 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
3839 5285 : info->fieldType = GF_SG_VRML_MFINT32;
3840 5285 : info->far_ptr = & ((M_Curve2D *) node)->type;
3841 : return GF_OK;
3842 : default:
3843 : return GF_BAD_PARAM;
3844 : }
3845 : }
3846 :
3847 :
3848 5717 : static s32 Curve2D_get_field_index_by_name(char *name)
3849 : {
3850 5717 : if (!strcmp("point", name)) return 0;
3851 1503 : if (!strcmp("fineness", name)) return 1;
3852 1499 : if (!strcmp("type", name)) return 2;
3853 0 : return -1;
3854 : }
3855 : static Bool Curve2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3856 : {
3857 3 : switch (FieldIndex) {
3858 1 : case 1:
3859 1 : *AType = 7;
3860 1 : *QType = 0;
3861 1 : *b_min = FLT2FIX(0);
3862 1 : *b_max = FLT2FIX(1);
3863 : return 1;
3864 1 : case 2:
3865 1 : *AType = 0;
3866 1 : *QType = 13;
3867 1 : *QT13_bits = 2;
3868 1 : *b_min = FLT2FIX(0);
3869 1 : *b_max = FLT2FIX(3);
3870 : return 1;
3871 : default:
3872 : return 0;
3873 : }
3874 : }
3875 :
3876 :
3877 :
3878 2574 : GF_Node *Curve2D_Create()
3879 : {
3880 : M_Curve2D *p;
3881 2574 : GF_SAFEALLOC(p, M_Curve2D);
3882 2574 : if(!p) return NULL;
3883 2574 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Curve2D);
3884 :
3885 : /*default field values*/
3886 2574 : p->fineness = FLT2FIX(0.5);
3887 2574 : return (GF_Node *)p;
3888 : }
3889 :
3890 :
3891 : /*
3892 : Cylinder Node deletion
3893 : */
3894 :
3895 : static void Cylinder_Del(GF_Node *node)
3896 : {
3897 : M_Cylinder *p = (M_Cylinder *) node;
3898 81 : gf_node_free((GF_Node *) p);
3899 : }
3900 :
3901 : static const u16 Cylinder_Def2All[] = { 0, 1, 2, 3, 4};
3902 :
3903 : static u32 Cylinder_get_field_count(GF_Node *node, u8 IndexMode)
3904 : {
3905 76 : switch(IndexMode) {
3906 : case GF_SG_FIELD_CODING_IN:
3907 : return 0;
3908 56 : case GF_SG_FIELD_CODING_DEF:
3909 : return 5;
3910 : case GF_SG_FIELD_CODING_OUT:
3911 : return 0;
3912 : case GF_SG_FIELD_CODING_DYN:
3913 : return 0;
3914 17 : default:
3915 : return 5;
3916 : }
3917 : }
3918 :
3919 : static GF_Err Cylinder_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
3920 : {
3921 135 : switch(IndexMode) {
3922 130 : case GF_SG_FIELD_CODING_DEF:
3923 130 : *allField = Cylinder_Def2All[inField];
3924 : return GF_OK;
3925 : default:
3926 : return GF_BAD_PARAM;
3927 : }
3928 : }
3929 523 : static GF_Err Cylinder_get_field(GF_Node *node, GF_FieldInfo *info)
3930 : {
3931 523 : switch (info->fieldIndex) {
3932 78 : case 0:
3933 78 : info->name = "bottom";
3934 78 : info->eventType = GF_SG_EVENT_FIELD;
3935 78 : info->fieldType = GF_SG_VRML_SFBOOL;
3936 78 : info->far_ptr = & ((M_Cylinder *) node)->bottom;
3937 78 : return GF_OK;
3938 146 : case 1:
3939 146 : info->name = "height";
3940 146 : info->eventType = GF_SG_EVENT_FIELD;
3941 146 : info->fieldType = GF_SG_VRML_SFFLOAT;
3942 146 : info->far_ptr = & ((M_Cylinder *) node)->height;
3943 146 : return GF_OK;
3944 146 : case 2:
3945 146 : info->name = "radius";
3946 146 : info->eventType = GF_SG_EVENT_FIELD;
3947 146 : info->fieldType = GF_SG_VRML_SFFLOAT;
3948 146 : info->far_ptr = & ((M_Cylinder *) node)->radius;
3949 146 : return GF_OK;
3950 75 : case 3:
3951 75 : info->name = "side";
3952 75 : info->eventType = GF_SG_EVENT_FIELD;
3953 75 : info->fieldType = GF_SG_VRML_SFBOOL;
3954 75 : info->far_ptr = & ((M_Cylinder *) node)->side;
3955 75 : return GF_OK;
3956 78 : case 4:
3957 78 : info->name = "top";
3958 78 : info->eventType = GF_SG_EVENT_FIELD;
3959 78 : info->fieldType = GF_SG_VRML_SFBOOL;
3960 78 : info->far_ptr = & ((M_Cylinder *) node)->top;
3961 78 : return GF_OK;
3962 : default:
3963 : return GF_BAD_PARAM;
3964 : }
3965 : }
3966 :
3967 :
3968 80 : static s32 Cylinder_get_field_index_by_name(char *name)
3969 : {
3970 80 : if (!strcmp("bottom", name)) return 0;
3971 73 : if (!strcmp("height", name)) return 1;
3972 42 : if (!strcmp("radius", name)) return 2;
3973 11 : if (!strcmp("side", name)) return 3;
3974 7 : if (!strcmp("top", name)) return 4;
3975 0 : return -1;
3976 : }
3977 : static Bool Cylinder_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
3978 : {
3979 21 : switch (FieldIndex) {
3980 9 : case 1:
3981 9 : *AType = 0;
3982 9 : *QType = 11;
3983 9 : *b_min = FLT2FIX(0);
3984 9 : *b_max = FIX_MAX;
3985 : return 1;
3986 9 : case 2:
3987 9 : *AType = 0;
3988 9 : *QType = 11;
3989 9 : *b_min = FLT2FIX(0);
3990 9 : *b_max = FIX_MAX;
3991 : return 1;
3992 : default:
3993 : return 0;
3994 : }
3995 : }
3996 :
3997 :
3998 :
3999 81 : GF_Node *Cylinder_Create()
4000 : {
4001 : M_Cylinder *p;
4002 81 : GF_SAFEALLOC(p, M_Cylinder);
4003 81 : if(!p) return NULL;
4004 81 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Cylinder);
4005 :
4006 : /*default field values*/
4007 81 : p->bottom = 1;
4008 81 : p->height = FLT2FIX(2);
4009 81 : p->radius = FLT2FIX(1);
4010 81 : p->side = 1;
4011 81 : p->top = 1;
4012 81 : return (GF_Node *)p;
4013 : }
4014 :
4015 :
4016 : /*
4017 : CylinderSensor Node deletion
4018 : */
4019 :
4020 : static void CylinderSensor_Del(GF_Node *node)
4021 : {
4022 : M_CylinderSensor *p = (M_CylinderSensor *) node;
4023 67 : gf_node_free((GF_Node *) p);
4024 : }
4025 :
4026 : static const u16 CylinderSensor_Def2All[] = { 0, 1, 2, 3, 4, 5};
4027 : static const u16 CylinderSensor_In2All[] = { 0, 1, 2, 3, 4, 5};
4028 : static const u16 CylinderSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
4029 :
4030 : static u32 CylinderSensor_get_field_count(GF_Node *node, u8 IndexMode)
4031 : {
4032 : switch(IndexMode) {
4033 : case GF_SG_FIELD_CODING_IN:
4034 : return 6;
4035 : case GF_SG_FIELD_CODING_DEF:
4036 : return 6;
4037 : case GF_SG_FIELD_CODING_OUT:
4038 : return 9;
4039 : case GF_SG_FIELD_CODING_DYN:
4040 : return 0;
4041 : default:
4042 : return 9;
4043 : }
4044 : }
4045 :
4046 : static GF_Err CylinderSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4047 : {
4048 129 : switch(IndexMode) {
4049 0 : case GF_SG_FIELD_CODING_IN:
4050 0 : *allField = CylinderSensor_In2All[inField];
4051 : return GF_OK;
4052 120 : case GF_SG_FIELD_CODING_DEF:
4053 120 : *allField = CylinderSensor_Def2All[inField];
4054 : return GF_OK;
4055 0 : case GF_SG_FIELD_CODING_OUT:
4056 0 : *allField = CylinderSensor_Out2All[inField];
4057 : return GF_OK;
4058 : default:
4059 : return GF_BAD_PARAM;
4060 : }
4061 : }
4062 491 : static GF_Err CylinderSensor_get_field(GF_Node *node, GF_FieldInfo *info)
4063 : {
4064 491 : switch (info->fieldIndex) {
4065 72 : case 0:
4066 72 : info->name = "autoOffset";
4067 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4068 72 : info->fieldType = GF_SG_VRML_SFBOOL;
4069 72 : info->far_ptr = & ((M_CylinderSensor *) node)->autoOffset;
4070 72 : return GF_OK;
4071 72 : case 1:
4072 72 : info->name = "diskAngle";
4073 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4074 72 : info->fieldType = GF_SG_VRML_SFFLOAT;
4075 72 : info->far_ptr = & ((M_CylinderSensor *) node)->diskAngle;
4076 72 : return GF_OK;
4077 72 : case 2:
4078 72 : info->name = "enabled";
4079 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4080 72 : info->fieldType = GF_SG_VRML_SFBOOL;
4081 72 : info->far_ptr = & ((M_CylinderSensor *) node)->enabled;
4082 72 : return GF_OK;
4083 72 : case 3:
4084 72 : info->name = "maxAngle";
4085 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4086 72 : info->fieldType = GF_SG_VRML_SFFLOAT;
4087 72 : info->far_ptr = & ((M_CylinderSensor *) node)->maxAngle;
4088 72 : return GF_OK;
4089 72 : case 4:
4090 72 : info->name = "minAngle";
4091 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4092 72 : info->fieldType = GF_SG_VRML_SFFLOAT;
4093 72 : info->far_ptr = & ((M_CylinderSensor *) node)->minAngle;
4094 72 : return GF_OK;
4095 72 : case 5:
4096 72 : info->name = "offset";
4097 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4098 72 : info->fieldType = GF_SG_VRML_SFFLOAT;
4099 72 : info->far_ptr = & ((M_CylinderSensor *) node)->offset;
4100 72 : return GF_OK;
4101 21 : case 6:
4102 21 : info->name = "isActive";
4103 21 : info->eventType = GF_SG_EVENT_OUT;
4104 21 : info->fieldType = GF_SG_VRML_SFBOOL;
4105 21 : info->far_ptr = & ((M_CylinderSensor *) node)->isActive;
4106 21 : return GF_OK;
4107 19 : case 7:
4108 19 : info->name = "rotation_changed";
4109 19 : info->eventType = GF_SG_EVENT_OUT;
4110 19 : info->fieldType = GF_SG_VRML_SFROTATION;
4111 19 : info->far_ptr = & ((M_CylinderSensor *) node)->rotation_changed;
4112 19 : return GF_OK;
4113 19 : case 8:
4114 19 : info->name = "trackPoint_changed";
4115 19 : info->eventType = GF_SG_EVENT_OUT;
4116 19 : info->fieldType = GF_SG_VRML_SFVEC3F;
4117 19 : info->far_ptr = & ((M_CylinderSensor *) node)->trackPoint_changed;
4118 19 : return GF_OK;
4119 : default:
4120 : return GF_BAD_PARAM;
4121 : }
4122 : }
4123 :
4124 :
4125 13 : static s32 CylinderSensor_get_field_index_by_name(char *name)
4126 : {
4127 13 : if (!strcmp("autoOffset", name)) return 0;
4128 12 : if (!strcmp("diskAngle", name)) return 1;
4129 11 : if (!strcmp("enabled", name)) return 2;
4130 10 : if (!strcmp("maxAngle", name)) return 3;
4131 9 : if (!strcmp("minAngle", name)) return 4;
4132 8 : if (!strcmp("offset", name)) return 5;
4133 7 : if (!strcmp("isActive", name)) return 6;
4134 4 : if (!strcmp("rotation_changed", name)) return 7;
4135 2 : if (!strcmp("trackPoint_changed", name)) return 8;
4136 0 : return -1;
4137 : }
4138 : static Bool CylinderSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
4139 : {
4140 9 : switch (FieldIndex) {
4141 1 : case 1:
4142 1 : *AType = 0;
4143 1 : *QType = 6;
4144 1 : *b_min = FLT2FIX(0);
4145 1 : *b_max = FLT2FIX(1.5707963);
4146 : return 1;
4147 1 : case 3:
4148 1 : *AType = 0;
4149 1 : *QType = 6;
4150 1 : *b_min = FLT2FIX(-6.2831853);
4151 1 : *b_max = FLT2FIX(6.2831853);
4152 : return 1;
4153 1 : case 4:
4154 1 : *AType = 0;
4155 1 : *QType = 6;
4156 1 : *b_min = FLT2FIX(-6.2831853);
4157 1 : *b_max = FLT2FIX(6.2831853);
4158 : return 1;
4159 1 : case 5:
4160 1 : *AType = 0;
4161 1 : *QType = 6;
4162 1 : *b_min = FLT2FIX(0);
4163 1 : *b_max = FLT2FIX(6.2831853);
4164 : return 1;
4165 : default:
4166 : return 0;
4167 : }
4168 : }
4169 :
4170 :
4171 :
4172 67 : GF_Node *CylinderSensor_Create()
4173 : {
4174 : M_CylinderSensor *p;
4175 67 : GF_SAFEALLOC(p, M_CylinderSensor);
4176 67 : if(!p) return NULL;
4177 67 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CylinderSensor);
4178 :
4179 : /*default field values*/
4180 67 : p->autoOffset = 1;
4181 67 : p->diskAngle = FLT2FIX(0.262);
4182 67 : p->enabled = 1;
4183 67 : p->maxAngle = FLT2FIX(-1);
4184 67 : p->minAngle = FLT2FIX(0);
4185 67 : p->offset = FLT2FIX(0);
4186 67 : return (GF_Node *)p;
4187 : }
4188 :
4189 :
4190 : /*
4191 : DirectionalLight Node deletion
4192 : */
4193 :
4194 : static void DirectionalLight_Del(GF_Node *node)
4195 : {
4196 : M_DirectionalLight *p = (M_DirectionalLight *) node;
4197 9 : gf_node_free((GF_Node *) p);
4198 : }
4199 :
4200 : static const u16 DirectionalLight_Def2All[] = { 0, 1, 2, 3, 4};
4201 : static const u16 DirectionalLight_In2All[] = { 0, 1, 2, 3, 4};
4202 : static const u16 DirectionalLight_Out2All[] = { 0, 1, 2, 3, 4};
4203 : static const u16 DirectionalLight_Dyn2All[] = { 0, 1, 2, 3};
4204 :
4205 : static u32 DirectionalLight_get_field_count(GF_Node *node, u8 IndexMode)
4206 : {
4207 6 : switch(IndexMode) {
4208 : case GF_SG_FIELD_CODING_IN:
4209 : return 5;
4210 : case GF_SG_FIELD_CODING_DEF:
4211 : return 5;
4212 : case GF_SG_FIELD_CODING_OUT:
4213 : return 5;
4214 1 : case GF_SG_FIELD_CODING_DYN:
4215 : return 4;
4216 : default:
4217 : return 5;
4218 : }
4219 : }
4220 :
4221 : static GF_Err DirectionalLight_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4222 : {
4223 5 : switch(IndexMode) {
4224 0 : case GF_SG_FIELD_CODING_IN:
4225 0 : *allField = DirectionalLight_In2All[inField];
4226 : return GF_OK;
4227 0 : case GF_SG_FIELD_CODING_DEF:
4228 0 : *allField = DirectionalLight_Def2All[inField];
4229 : return GF_OK;
4230 0 : case GF_SG_FIELD_CODING_OUT:
4231 0 : *allField = DirectionalLight_Out2All[inField];
4232 : return GF_OK;
4233 0 : case GF_SG_FIELD_CODING_DYN:
4234 0 : *allField = DirectionalLight_Dyn2All[inField];
4235 : return GF_OK;
4236 : default:
4237 : return GF_BAD_PARAM;
4238 : }
4239 : }
4240 26 : static GF_Err DirectionalLight_get_field(GF_Node *node, GF_FieldInfo *info)
4241 : {
4242 26 : switch (info->fieldIndex) {
4243 2 : case 0:
4244 2 : info->name = "ambientIntensity";
4245 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4246 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
4247 2 : info->far_ptr = & ((M_DirectionalLight *) node)->ambientIntensity;
4248 2 : return GF_OK;
4249 9 : case 1:
4250 9 : info->name = "color";
4251 9 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4252 9 : info->fieldType = GF_SG_VRML_SFCOLOR;
4253 9 : info->far_ptr = & ((M_DirectionalLight *) node)->color;
4254 9 : return GF_OK;
4255 11 : case 2:
4256 11 : info->name = "direction";
4257 11 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4258 11 : info->fieldType = GF_SG_VRML_SFVEC3F;
4259 11 : info->far_ptr = & ((M_DirectionalLight *) node)->direction;
4260 11 : return GF_OK;
4261 2 : case 3:
4262 2 : info->name = "intensity";
4263 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4264 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
4265 2 : info->far_ptr = & ((M_DirectionalLight *) node)->intensity;
4266 2 : return GF_OK;
4267 2 : case 4:
4268 2 : info->name = "on";
4269 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4270 2 : info->fieldType = GF_SG_VRML_SFBOOL;
4271 2 : info->far_ptr = & ((M_DirectionalLight *) node)->on;
4272 2 : return GF_OK;
4273 : default:
4274 : return GF_BAD_PARAM;
4275 : }
4276 : }
4277 :
4278 :
4279 20 : static s32 DirectionalLight_get_field_index_by_name(char *name)
4280 : {
4281 20 : if (!strcmp("ambientIntensity", name)) return 0;
4282 19 : if (!strcmp("color", name)) return 1;
4283 11 : if (!strcmp("direction", name)) return 2;
4284 2 : if (!strcmp("intensity", name)) return 3;
4285 1 : if (!strcmp("on", name)) return 4;
4286 0 : return -1;
4287 : }
4288 : static Bool DirectionalLight_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
4289 : {
4290 5 : switch (FieldIndex) {
4291 1 : case 0:
4292 1 : *AType = 8;
4293 1 : *QType = 4;
4294 1 : *b_min = FLT2FIX(0);
4295 1 : *b_max = FLT2FIX(1);
4296 : return 1;
4297 1 : case 1:
4298 1 : *AType = 4;
4299 1 : *QType = 4;
4300 1 : *b_min = FLT2FIX(0);
4301 1 : *b_max = FLT2FIX(1);
4302 : return 1;
4303 1 : case 2:
4304 1 : *AType = 9;
4305 1 : *QType = 9;
4306 : return 1;
4307 1 : case 3:
4308 1 : *AType = 8;
4309 1 : *QType = 4;
4310 1 : *b_min = FLT2FIX(0);
4311 1 : *b_max = FLT2FIX(1);
4312 : return 1;
4313 : default:
4314 : return 0;
4315 : }
4316 : }
4317 :
4318 :
4319 :
4320 9 : GF_Node *DirectionalLight_Create()
4321 : {
4322 : M_DirectionalLight *p;
4323 9 : GF_SAFEALLOC(p, M_DirectionalLight);
4324 9 : if(!p) return NULL;
4325 9 : gf_node_setup((GF_Node *)p, TAG_MPEG4_DirectionalLight);
4326 :
4327 : /*default field values*/
4328 9 : p->ambientIntensity = FLT2FIX(0);
4329 9 : p->color.red = FLT2FIX(1);
4330 9 : p->color.green = FLT2FIX(1);
4331 9 : p->color.blue = FLT2FIX(1);
4332 9 : p->direction.x = FLT2FIX(0);
4333 9 : p->direction.y = FLT2FIX(0);
4334 9 : p->direction.z = FLT2FIX(-1);
4335 9 : p->intensity = FLT2FIX(1);
4336 9 : p->on = 1;
4337 9 : return (GF_Node *)p;
4338 : }
4339 :
4340 :
4341 : /*
4342 : DiscSensor Node deletion
4343 : */
4344 :
4345 : static void DiscSensor_Del(GF_Node *node)
4346 : {
4347 : M_DiscSensor *p = (M_DiscSensor *) node;
4348 69 : gf_node_free((GF_Node *) p);
4349 : }
4350 :
4351 : static const u16 DiscSensor_Def2All[] = { 0, 1, 2, 3, 4};
4352 : static const u16 DiscSensor_In2All[] = { 0, 1, 2, 3, 4};
4353 : static const u16 DiscSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
4354 :
4355 : static u32 DiscSensor_get_field_count(GF_Node *node, u8 IndexMode)
4356 : {
4357 : switch(IndexMode) {
4358 : case GF_SG_FIELD_CODING_IN:
4359 : return 5;
4360 : case GF_SG_FIELD_CODING_DEF:
4361 : return 5;
4362 : case GF_SG_FIELD_CODING_OUT:
4363 : return 8;
4364 : case GF_SG_FIELD_CODING_DYN:
4365 : return 0;
4366 : default:
4367 : return 8;
4368 : }
4369 : }
4370 :
4371 : static GF_Err DiscSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4372 : {
4373 123 : switch(IndexMode) {
4374 0 : case GF_SG_FIELD_CODING_IN:
4375 0 : *allField = DiscSensor_In2All[inField];
4376 : return GF_OK;
4377 115 : case GF_SG_FIELD_CODING_DEF:
4378 115 : *allField = DiscSensor_Def2All[inField];
4379 : return GF_OK;
4380 0 : case GF_SG_FIELD_CODING_OUT:
4381 0 : *allField = DiscSensor_Out2All[inField];
4382 : return GF_OK;
4383 : default:
4384 : return GF_BAD_PARAM;
4385 : }
4386 : }
4387 476 : static GF_Err DiscSensor_get_field(GF_Node *node, GF_FieldInfo *info)
4388 : {
4389 476 : switch (info->fieldIndex) {
4390 132 : case 0:
4391 132 : info->name = "autoOffset";
4392 132 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4393 132 : info->fieldType = GF_SG_VRML_SFBOOL;
4394 132 : info->far_ptr = & ((M_DiscSensor *) node)->autoOffset;
4395 132 : return GF_OK;
4396 72 : case 1:
4397 72 : info->name = "enabled";
4398 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4399 72 : info->fieldType = GF_SG_VRML_SFBOOL;
4400 72 : info->far_ptr = & ((M_DiscSensor *) node)->enabled;
4401 72 : return GF_OK;
4402 72 : case 2:
4403 72 : info->name = "maxAngle";
4404 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4405 72 : info->fieldType = GF_SG_VRML_SFFLOAT;
4406 72 : info->far_ptr = & ((M_DiscSensor *) node)->maxAngle;
4407 72 : return GF_OK;
4408 72 : case 3:
4409 72 : info->name = "minAngle";
4410 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4411 72 : info->fieldType = GF_SG_VRML_SFFLOAT;
4412 72 : info->far_ptr = & ((M_DiscSensor *) node)->minAngle;
4413 72 : return GF_OK;
4414 72 : case 4:
4415 72 : info->name = "offset";
4416 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4417 72 : info->fieldType = GF_SG_VRML_SFFLOAT;
4418 72 : info->far_ptr = & ((M_DiscSensor *) node)->offset;
4419 72 : return GF_OK;
4420 17 : case 5:
4421 17 : info->name = "isActive";
4422 17 : info->eventType = GF_SG_EVENT_OUT;
4423 17 : info->fieldType = GF_SG_VRML_SFBOOL;
4424 17 : info->far_ptr = & ((M_DiscSensor *) node)->isActive;
4425 17 : return GF_OK;
4426 22 : case 6:
4427 22 : info->name = "rotation_changed";
4428 22 : info->eventType = GF_SG_EVENT_OUT;
4429 22 : info->fieldType = GF_SG_VRML_SFFLOAT;
4430 22 : info->far_ptr = & ((M_DiscSensor *) node)->rotation_changed;
4431 22 : return GF_OK;
4432 17 : case 7:
4433 17 : info->name = "trackPoint_changed";
4434 17 : info->eventType = GF_SG_EVENT_OUT;
4435 17 : info->fieldType = GF_SG_VRML_SFVEC2F;
4436 17 : info->far_ptr = & ((M_DiscSensor *) node)->trackPoint_changed;
4437 17 : return GF_OK;
4438 : default:
4439 : return GF_BAD_PARAM;
4440 : }
4441 : }
4442 :
4443 :
4444 27 : static s32 DiscSensor_get_field_index_by_name(char *name)
4445 : {
4446 27 : if (!strcmp("autoOffset", name)) return 0;
4447 10 : if (!strcmp("enabled", name)) return 1;
4448 9 : if (!strcmp("maxAngle", name)) return 2;
4449 8 : if (!strcmp("minAngle", name)) return 3;
4450 7 : if (!strcmp("offset", name)) return 4;
4451 6 : if (!strcmp("isActive", name)) return 5;
4452 5 : if (!strcmp("rotation_changed", name)) return 6;
4453 1 : if (!strcmp("trackPoint_changed", name)) return 7;
4454 0 : return -1;
4455 : }
4456 : static Bool DiscSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
4457 : {
4458 8 : switch (FieldIndex) {
4459 1 : case 2:
4460 1 : *AType = 0;
4461 1 : *QType = 6;
4462 1 : *b_min = FLT2FIX(-6.2831853);
4463 1 : *b_max = FLT2FIX(6.2831853);
4464 : return 1;
4465 1 : case 3:
4466 1 : *AType = 0;
4467 1 : *QType = 6;
4468 1 : *b_min = FLT2FIX(-6.2831853);
4469 1 : *b_max = FLT2FIX(6.2831853);
4470 : return 1;
4471 1 : case 4:
4472 1 : *AType = 0;
4473 1 : *QType = 6;
4474 1 : *b_min = FLT2FIX(0);
4475 1 : *b_max = FLT2FIX(6.2831853);
4476 : return 1;
4477 : default:
4478 : return 0;
4479 : }
4480 : }
4481 :
4482 :
4483 :
4484 69 : GF_Node *DiscSensor_Create()
4485 : {
4486 : M_DiscSensor *p;
4487 69 : GF_SAFEALLOC(p, M_DiscSensor);
4488 69 : if(!p) return NULL;
4489 69 : gf_node_setup((GF_Node *)p, TAG_MPEG4_DiscSensor);
4490 :
4491 : /*default field values*/
4492 69 : p->autoOffset = 1;
4493 69 : p->enabled = 1;
4494 69 : p->maxAngle = FLT2FIX(-1);
4495 69 : p->minAngle = FLT2FIX(0);
4496 69 : p->offset = FLT2FIX(0);
4497 69 : return (GF_Node *)p;
4498 : }
4499 :
4500 :
4501 : /*
4502 : ElevationGrid Node deletion
4503 : */
4504 :
4505 67 : static void ElevationGrid_Del(GF_Node *node)
4506 : {
4507 : M_ElevationGrid *p = (M_ElevationGrid *) node;
4508 67 : gf_sg_mffloat_del(p->set_height);
4509 67 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
4510 67 : gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
4511 67 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
4512 67 : gf_sg_mffloat_del(p->height);
4513 67 : gf_node_free((GF_Node *) p);
4514 67 : }
4515 :
4516 : static const u16 ElevationGrid_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
4517 : static const u16 ElevationGrid_In2All[] = { 0, 1, 2, 3};
4518 : static const u16 ElevationGrid_Out2All[] = { 1, 2, 3};
4519 :
4520 : static u32 ElevationGrid_get_field_count(GF_Node *node, u8 IndexMode)
4521 : {
4522 : switch(IndexMode) {
4523 : case GF_SG_FIELD_CODING_IN:
4524 : return 4;
4525 : case GF_SG_FIELD_CODING_DEF:
4526 : return 13;
4527 : case GF_SG_FIELD_CODING_OUT:
4528 : return 3;
4529 : case GF_SG_FIELD_CODING_DYN:
4530 : return 0;
4531 : default:
4532 : return 14;
4533 : }
4534 : }
4535 :
4536 : static GF_Err ElevationGrid_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4537 : {
4538 364 : switch(IndexMode) {
4539 0 : case GF_SG_FIELD_CODING_IN:
4540 0 : *allField = ElevationGrid_In2All[inField];
4541 : return GF_OK;
4542 350 : case GF_SG_FIELD_CODING_DEF:
4543 350 : *allField = ElevationGrid_Def2All[inField];
4544 : return GF_OK;
4545 0 : case GF_SG_FIELD_CODING_OUT:
4546 0 : *allField = ElevationGrid_Out2All[inField];
4547 : return GF_OK;
4548 : default:
4549 : return GF_BAD_PARAM;
4550 : }
4551 : }
4552 1208 : static GF_Err ElevationGrid_get_field(GF_Node *node, GF_FieldInfo *info)
4553 : {
4554 1208 : switch (info->fieldIndex) {
4555 17 : case 0:
4556 17 : info->name = "set_height";
4557 17 : info->eventType = GF_SG_EVENT_IN;
4558 17 : info->on_event_in = ((M_ElevationGrid *)node)->on_set_height;
4559 17 : info->fieldType = GF_SG_VRML_MFFLOAT;
4560 17 : info->far_ptr = & ((M_ElevationGrid *) node)->set_height;
4561 17 : return GF_OK;
4562 37 : case 1:
4563 37 : info->name = "color";
4564 37 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4565 37 : info->fieldType = GF_SG_VRML_SFNODE;
4566 37 : info->NDTtype = NDT_SFColorNode;
4567 37 : info->far_ptr = & ((M_ElevationGrid *)node)->color;
4568 37 : return GF_OK;
4569 37 : case 2:
4570 37 : info->name = "normal";
4571 37 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4572 37 : info->fieldType = GF_SG_VRML_SFNODE;
4573 37 : info->NDTtype = NDT_SFNormalNode;
4574 37 : info->far_ptr = & ((M_ElevationGrid *)node)->normal;
4575 37 : return GF_OK;
4576 37 : case 3:
4577 37 : info->name = "texCoord";
4578 37 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4579 37 : info->fieldType = GF_SG_VRML_SFNODE;
4580 37 : info->NDTtype = NDT_SFTextureCoordinateNode;
4581 37 : info->far_ptr = & ((M_ElevationGrid *)node)->texCoord;
4582 37 : return GF_OK;
4583 132 : case 4:
4584 132 : info->name = "height";
4585 132 : info->eventType = GF_SG_EVENT_FIELD;
4586 132 : info->fieldType = GF_SG_VRML_MFFLOAT;
4587 132 : info->far_ptr = & ((M_ElevationGrid *) node)->height;
4588 132 : return GF_OK;
4589 72 : case 5:
4590 72 : info->name = "ccw";
4591 72 : info->eventType = GF_SG_EVENT_FIELD;
4592 72 : info->fieldType = GF_SG_VRML_SFBOOL;
4593 72 : info->far_ptr = & ((M_ElevationGrid *) node)->ccw;
4594 72 : return GF_OK;
4595 72 : case 6:
4596 72 : info->name = "colorPerVertex";
4597 72 : info->eventType = GF_SG_EVENT_FIELD;
4598 72 : info->fieldType = GF_SG_VRML_SFBOOL;
4599 72 : info->far_ptr = & ((M_ElevationGrid *) node)->colorPerVertex;
4600 72 : return GF_OK;
4601 132 : case 7:
4602 132 : info->name = "creaseAngle";
4603 132 : info->eventType = GF_SG_EVENT_FIELD;
4604 132 : info->fieldType = GF_SG_VRML_SFFLOAT;
4605 132 : info->far_ptr = & ((M_ElevationGrid *) node)->creaseAngle;
4606 132 : return GF_OK;
4607 72 : case 8:
4608 72 : info->name = "normalPerVertex";
4609 72 : info->eventType = GF_SG_EVENT_FIELD;
4610 72 : info->fieldType = GF_SG_VRML_SFBOOL;
4611 72 : info->far_ptr = & ((M_ElevationGrid *) node)->normalPerVertex;
4612 72 : return GF_OK;
4613 72 : case 9:
4614 72 : info->name = "solid";
4615 72 : info->eventType = GF_SG_EVENT_FIELD;
4616 72 : info->fieldType = GF_SG_VRML_SFBOOL;
4617 72 : info->far_ptr = & ((M_ElevationGrid *) node)->solid;
4618 72 : return GF_OK;
4619 132 : case 10:
4620 132 : info->name = "xDimension";
4621 132 : info->eventType = GF_SG_EVENT_FIELD;
4622 132 : info->fieldType = GF_SG_VRML_SFINT32;
4623 132 : info->far_ptr = & ((M_ElevationGrid *) node)->xDimension;
4624 132 : return GF_OK;
4625 132 : case 11:
4626 132 : info->name = "xSpacing";
4627 132 : info->eventType = GF_SG_EVENT_FIELD;
4628 132 : info->fieldType = GF_SG_VRML_SFFLOAT;
4629 132 : info->far_ptr = & ((M_ElevationGrid *) node)->xSpacing;
4630 132 : return GF_OK;
4631 132 : case 12:
4632 132 : info->name = "zDimension";
4633 132 : info->eventType = GF_SG_EVENT_FIELD;
4634 132 : info->fieldType = GF_SG_VRML_SFINT32;
4635 132 : info->far_ptr = & ((M_ElevationGrid *) node)->zDimension;
4636 132 : return GF_OK;
4637 132 : case 13:
4638 132 : info->name = "zSpacing";
4639 132 : info->eventType = GF_SG_EVENT_FIELD;
4640 132 : info->fieldType = GF_SG_VRML_SFFLOAT;
4641 132 : info->far_ptr = & ((M_ElevationGrid *) node)->zSpacing;
4642 132 : return GF_OK;
4643 : default:
4644 : return GF_BAD_PARAM;
4645 : }
4646 : }
4647 :
4648 :
4649 110 : static s32 ElevationGrid_get_field_index_by_name(char *name)
4650 : {
4651 110 : if (!strcmp("set_height", name)) return 0;
4652 109 : if (!strcmp("color", name)) return 1;
4653 108 : if (!strcmp("normal", name)) return 2;
4654 107 : if (!strcmp("texCoord", name)) return 3;
4655 106 : if (!strcmp("height", name)) return 4;
4656 89 : if (!strcmp("ccw", name)) return 5;
4657 88 : if (!strcmp("colorPerVertex", name)) return 6;
4658 87 : if (!strcmp("creaseAngle", name)) return 7;
4659 70 : if (!strcmp("normalPerVertex", name)) return 8;
4660 69 : if (!strcmp("solid", name)) return 9;
4661 68 : if (!strcmp("xDimension", name)) return 10;
4662 51 : if (!strcmp("xSpacing", name)) return 11;
4663 34 : if (!strcmp("zDimension", name)) return 12;
4664 17 : if (!strcmp("zSpacing", name)) return 13;
4665 0 : return -1;
4666 : }
4667 1110 : static Bool ElevationGrid_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
4668 : {
4669 1110 : switch (FieldIndex) {
4670 1057 : case 4:
4671 1057 : *AType = 7;
4672 1057 : *QType = 11;
4673 1057 : *b_min = FIX_MIN;
4674 1057 : *b_max = FIX_MAX;
4675 : return 1;
4676 9 : case 7:
4677 9 : *AType = 0;
4678 9 : *QType = 6;
4679 9 : *b_min = FLT2FIX(0);
4680 9 : *b_max = FLT2FIX(6.2831853);
4681 : return 1;
4682 9 : case 10:
4683 9 : *AType = 0;
4684 9 : *QType = 11;
4685 9 : *b_min = FLT2FIX(0);
4686 9 : *b_max = FIX_MAX;
4687 : return 1;
4688 9 : case 11:
4689 9 : *AType = 0;
4690 9 : *QType = 11;
4691 9 : *b_min = FLT2FIX(0);
4692 9 : *b_max = FIX_MAX;
4693 : return 1;
4694 9 : case 12:
4695 9 : *AType = 0;
4696 9 : *QType = 11;
4697 9 : *b_min = FLT2FIX(0);
4698 9 : *b_max = FIX_MAX;
4699 : return 1;
4700 9 : case 13:
4701 9 : *AType = 0;
4702 9 : *QType = 11;
4703 9 : *b_min = FLT2FIX(0);
4704 9 : *b_max = FIX_MAX;
4705 : return 1;
4706 : default:
4707 : return 0;
4708 : }
4709 : }
4710 :
4711 :
4712 :
4713 67 : GF_Node *ElevationGrid_Create()
4714 : {
4715 : M_ElevationGrid *p;
4716 67 : GF_SAFEALLOC(p, M_ElevationGrid);
4717 67 : if(!p) return NULL;
4718 67 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ElevationGrid);
4719 :
4720 : /*default field values*/
4721 67 : p->ccw = 1;
4722 67 : p->colorPerVertex = 1;
4723 67 : p->creaseAngle = FLT2FIX(0.0);
4724 67 : p->normalPerVertex = 1;
4725 67 : p->solid = 1;
4726 67 : p->xDimension = 0;
4727 67 : p->xSpacing = FLT2FIX(1.0);
4728 67 : p->zDimension = 0;
4729 67 : p->zSpacing = FLT2FIX(1.0);
4730 67 : return (GF_Node *)p;
4731 : }
4732 :
4733 :
4734 : /*
4735 : Expression Node deletion
4736 : */
4737 :
4738 : static void Expression_Del(GF_Node *node)
4739 : {
4740 : M_Expression *p = (M_Expression *) node;
4741 1 : gf_node_free((GF_Node *) p);
4742 : }
4743 :
4744 : static const u16 Expression_Def2All[] = { 0, 1, 2, 3, 4, 5};
4745 : static const u16 Expression_In2All[] = { 0, 1, 2, 3, 4, 5};
4746 : static const u16 Expression_Out2All[] = { 0, 1, 2, 3, 4, 5};
4747 :
4748 : static u32 Expression_get_field_count(GF_Node *node, u8 IndexMode)
4749 : {
4750 6 : switch(IndexMode) {
4751 : case GF_SG_FIELD_CODING_IN:
4752 : return 6;
4753 : case GF_SG_FIELD_CODING_DEF:
4754 : return 6;
4755 : case GF_SG_FIELD_CODING_OUT:
4756 : return 6;
4757 1 : case GF_SG_FIELD_CODING_DYN:
4758 : return 0;
4759 : default:
4760 : return 6;
4761 : }
4762 : }
4763 :
4764 : static GF_Err Expression_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4765 : {
4766 6 : switch(IndexMode) {
4767 0 : case GF_SG_FIELD_CODING_IN:
4768 0 : *allField = Expression_In2All[inField];
4769 : return GF_OK;
4770 0 : case GF_SG_FIELD_CODING_DEF:
4771 0 : *allField = Expression_Def2All[inField];
4772 : return GF_OK;
4773 0 : case GF_SG_FIELD_CODING_OUT:
4774 0 : *allField = Expression_Out2All[inField];
4775 : return GF_OK;
4776 : default:
4777 : return GF_BAD_PARAM;
4778 : }
4779 : }
4780 12 : static GF_Err Expression_get_field(GF_Node *node, GF_FieldInfo *info)
4781 : {
4782 12 : switch (info->fieldIndex) {
4783 2 : case 0:
4784 2 : info->name = "expression_select1";
4785 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4786 2 : info->fieldType = GF_SG_VRML_SFINT32;
4787 2 : info->far_ptr = & ((M_Expression *) node)->expression_select1;
4788 2 : return GF_OK;
4789 2 : case 1:
4790 2 : info->name = "expression_intensity1";
4791 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4792 2 : info->fieldType = GF_SG_VRML_SFINT32;
4793 2 : info->far_ptr = & ((M_Expression *) node)->expression_intensity1;
4794 2 : return GF_OK;
4795 2 : case 2:
4796 2 : info->name = "expression_select2";
4797 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4798 2 : info->fieldType = GF_SG_VRML_SFINT32;
4799 2 : info->far_ptr = & ((M_Expression *) node)->expression_select2;
4800 2 : return GF_OK;
4801 2 : case 3:
4802 2 : info->name = "expression_intensity2";
4803 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4804 2 : info->fieldType = GF_SG_VRML_SFINT32;
4805 2 : info->far_ptr = & ((M_Expression *) node)->expression_intensity2;
4806 2 : return GF_OK;
4807 2 : case 4:
4808 2 : info->name = "init_face";
4809 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4810 2 : info->fieldType = GF_SG_VRML_SFBOOL;
4811 2 : info->far_ptr = & ((M_Expression *) node)->init_face;
4812 2 : return GF_OK;
4813 2 : case 5:
4814 2 : info->name = "expression_def";
4815 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
4816 2 : info->fieldType = GF_SG_VRML_SFBOOL;
4817 2 : info->far_ptr = & ((M_Expression *) node)->expression_def;
4818 2 : return GF_OK;
4819 : default:
4820 : return GF_BAD_PARAM;
4821 : }
4822 : }
4823 :
4824 :
4825 6 : static s32 Expression_get_field_index_by_name(char *name)
4826 : {
4827 6 : if (!strcmp("expression_select1", name)) return 0;
4828 5 : if (!strcmp("expression_intensity1", name)) return 1;
4829 4 : if (!strcmp("expression_select2", name)) return 2;
4830 3 : if (!strcmp("expression_intensity2", name)) return 3;
4831 2 : if (!strcmp("init_face", name)) return 4;
4832 1 : if (!strcmp("expression_def", name)) return 5;
4833 0 : return -1;
4834 : }
4835 : static Bool Expression_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
4836 : {
4837 6 : switch (FieldIndex) {
4838 1 : case 0:
4839 1 : *AType = 0;
4840 1 : *QType = 13;
4841 1 : *QT13_bits = 5;
4842 1 : *b_min = FLT2FIX(0);
4843 1 : *b_max = FLT2FIX(31);
4844 : return 1;
4845 1 : case 1:
4846 1 : *AType = 0;
4847 1 : *QType = 13;
4848 1 : *QT13_bits = 6;
4849 1 : *b_min = FLT2FIX(0);
4850 1 : *b_max = FLT2FIX(63);
4851 : return 1;
4852 1 : case 2:
4853 1 : *AType = 0;
4854 1 : *QType = 13;
4855 1 : *QT13_bits = 5;
4856 1 : *b_min = FLT2FIX(0);
4857 1 : *b_max = FLT2FIX(31);
4858 : return 1;
4859 1 : case 3:
4860 1 : *AType = 0;
4861 1 : *QType = 13;
4862 1 : *QT13_bits = 6;
4863 1 : *b_min = FLT2FIX(0);
4864 1 : *b_max = FLT2FIX(63);
4865 : return 1;
4866 : default:
4867 : return 0;
4868 : }
4869 : }
4870 :
4871 :
4872 :
4873 1 : GF_Node *Expression_Create()
4874 : {
4875 : M_Expression *p;
4876 1 : GF_SAFEALLOC(p, M_Expression);
4877 1 : if(!p) return NULL;
4878 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Expression);
4879 :
4880 : /*default field values*/
4881 1 : p->expression_select1 = 0;
4882 1 : p->expression_intensity1 = 0;
4883 1 : p->expression_select2 = 0;
4884 1 : p->expression_intensity2 = 0;
4885 1 : return (GF_Node *)p;
4886 : }
4887 :
4888 :
4889 : /*
4890 : Extrusion Node deletion
4891 : */
4892 :
4893 67 : static void Extrusion_Del(GF_Node *node)
4894 : {
4895 : M_Extrusion *p = (M_Extrusion *) node;
4896 67 : gf_sg_mfvec2f_del(p->set_crossSection);
4897 67 : gf_sg_mfrotation_del(p->set_orientation);
4898 67 : gf_sg_mfvec2f_del(p->set_scale);
4899 67 : gf_sg_mfvec3f_del(p->set_spine);
4900 67 : gf_sg_mfvec2f_del(p->crossSection);
4901 67 : gf_sg_mfrotation_del(p->orientation);
4902 67 : gf_sg_mfvec2f_del(p->scale);
4903 67 : gf_sg_mfvec3f_del(p->spine);
4904 67 : gf_node_free((GF_Node *) p);
4905 67 : }
4906 :
4907 : static const u16 Extrusion_Def2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
4908 : static const u16 Extrusion_In2All[] = { 0, 1, 2, 3};
4909 :
4910 : static u32 Extrusion_get_field_count(GF_Node *node, u8 IndexMode)
4911 : {
4912 : switch(IndexMode) {
4913 : case GF_SG_FIELD_CODING_IN:
4914 : return 4;
4915 : case GF_SG_FIELD_CODING_DEF:
4916 : return 10;
4917 : case GF_SG_FIELD_CODING_OUT:
4918 : return 0;
4919 : case GF_SG_FIELD_CODING_DYN:
4920 : return 0;
4921 : default:
4922 : return 14;
4923 : }
4924 : }
4925 :
4926 : static GF_Err Extrusion_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
4927 : {
4928 304 : switch(IndexMode) {
4929 0 : case GF_SG_FIELD_CODING_IN:
4930 0 : *allField = Extrusion_In2All[inField];
4931 : return GF_OK;
4932 290 : case GF_SG_FIELD_CODING_DEF:
4933 290 : *allField = Extrusion_Def2All[inField];
4934 : return GF_OK;
4935 : default:
4936 : return GF_BAD_PARAM;
4937 : }
4938 : }
4939 1149 : static GF_Err Extrusion_get_field(GF_Node *node, GF_FieldInfo *info)
4940 : {
4941 1149 : switch (info->fieldIndex) {
4942 17 : case 0:
4943 17 : info->name = "set_crossSection";
4944 17 : info->eventType = GF_SG_EVENT_IN;
4945 17 : info->on_event_in = ((M_Extrusion *)node)->on_set_crossSection;
4946 17 : info->fieldType = GF_SG_VRML_MFVEC2F;
4947 17 : info->far_ptr = & ((M_Extrusion *) node)->set_crossSection;
4948 17 : return GF_OK;
4949 17 : case 1:
4950 17 : info->name = "set_orientation";
4951 17 : info->eventType = GF_SG_EVENT_IN;
4952 17 : info->on_event_in = ((M_Extrusion *)node)->on_set_orientation;
4953 17 : info->fieldType = GF_SG_VRML_MFROTATION;
4954 17 : info->far_ptr = & ((M_Extrusion *) node)->set_orientation;
4955 17 : return GF_OK;
4956 17 : case 2:
4957 17 : info->name = "set_scale";
4958 17 : info->eventType = GF_SG_EVENT_IN;
4959 17 : info->on_event_in = ((M_Extrusion *)node)->on_set_scale;
4960 17 : info->fieldType = GF_SG_VRML_MFVEC2F;
4961 17 : info->far_ptr = & ((M_Extrusion *) node)->set_scale;
4962 17 : return GF_OK;
4963 17 : case 3:
4964 17 : info->name = "set_spine";
4965 17 : info->eventType = GF_SG_EVENT_IN;
4966 17 : info->on_event_in = ((M_Extrusion *)node)->on_set_spine;
4967 17 : info->fieldType = GF_SG_VRML_MFVEC3F;
4968 17 : info->far_ptr = & ((M_Extrusion *) node)->set_spine;
4969 17 : return GF_OK;
4970 73 : case 4:
4971 73 : info->name = "beginCap";
4972 73 : info->eventType = GF_SG_EVENT_FIELD;
4973 73 : info->fieldType = GF_SG_VRML_SFBOOL;
4974 73 : info->far_ptr = & ((M_Extrusion *) node)->beginCap;
4975 73 : return GF_OK;
4976 72 : case 5:
4977 72 : info->name = "ccw";
4978 72 : info->eventType = GF_SG_EVENT_FIELD;
4979 72 : info->fieldType = GF_SG_VRML_SFBOOL;
4980 72 : info->far_ptr = & ((M_Extrusion *) node)->ccw;
4981 72 : return GF_OK;
4982 72 : case 6:
4983 72 : info->name = "convex";
4984 72 : info->eventType = GF_SG_EVENT_FIELD;
4985 72 : info->fieldType = GF_SG_VRML_SFBOOL;
4986 72 : info->far_ptr = & ((M_Extrusion *) node)->convex;
4987 72 : return GF_OK;
4988 132 : case 7:
4989 132 : info->name = "creaseAngle";
4990 132 : info->eventType = GF_SG_EVENT_FIELD;
4991 132 : info->fieldType = GF_SG_VRML_SFFLOAT;
4992 132 : info->far_ptr = & ((M_Extrusion *) node)->creaseAngle;
4993 132 : return GF_OK;
4994 132 : case 8:
4995 132 : info->name = "crossSection";
4996 132 : info->eventType = GF_SG_EVENT_FIELD;
4997 132 : info->fieldType = GF_SG_VRML_MFVEC2F;
4998 132 : info->far_ptr = & ((M_Extrusion *) node)->crossSection;
4999 132 : return GF_OK;
5000 132 : case 9:
5001 132 : info->name = "endCap";
5002 132 : info->eventType = GF_SG_EVENT_FIELD;
5003 132 : info->fieldType = GF_SG_VRML_SFBOOL;
5004 132 : info->far_ptr = & ((M_Extrusion *) node)->endCap;
5005 132 : return GF_OK;
5006 72 : case 10:
5007 72 : info->name = "orientation";
5008 72 : info->eventType = GF_SG_EVENT_FIELD;
5009 72 : info->fieldType = GF_SG_VRML_MFROTATION;
5010 72 : info->far_ptr = & ((M_Extrusion *) node)->orientation;
5011 72 : return GF_OK;
5012 132 : case 11:
5013 132 : info->name = "scale";
5014 132 : info->eventType = GF_SG_EVENT_FIELD;
5015 132 : info->fieldType = GF_SG_VRML_MFVEC2F;
5016 132 : info->far_ptr = & ((M_Extrusion *) node)->scale;
5017 132 : return GF_OK;
5018 132 : case 12:
5019 132 : info->name = "solid";
5020 132 : info->eventType = GF_SG_EVENT_FIELD;
5021 132 : info->fieldType = GF_SG_VRML_SFBOOL;
5022 132 : info->far_ptr = & ((M_Extrusion *) node)->solid;
5023 132 : return GF_OK;
5024 132 : case 13:
5025 132 : info->name = "spine";
5026 132 : info->eventType = GF_SG_EVENT_FIELD;
5027 132 : info->fieldType = GF_SG_VRML_MFVEC3F;
5028 132 : info->far_ptr = & ((M_Extrusion *) node)->spine;
5029 132 : return GF_OK;
5030 : default:
5031 : return GF_BAD_PARAM;
5032 : }
5033 : }
5034 :
5035 :
5036 111 : static s32 Extrusion_get_field_index_by_name(char *name)
5037 : {
5038 111 : if (!strcmp("set_crossSection", name)) return 0;
5039 110 : if (!strcmp("set_orientation", name)) return 1;
5040 109 : if (!strcmp("set_scale", name)) return 2;
5041 108 : if (!strcmp("set_spine", name)) return 3;
5042 107 : if (!strcmp("beginCap", name)) return 4;
5043 105 : if (!strcmp("ccw", name)) return 5;
5044 104 : if (!strcmp("convex", name)) return 6;
5045 103 : if (!strcmp("creaseAngle", name)) return 7;
5046 86 : if (!strcmp("crossSection", name)) return 8;
5047 69 : if (!strcmp("endCap", name)) return 9;
5048 52 : if (!strcmp("orientation", name)) return 10;
5049 51 : if (!strcmp("scale", name)) return 11;
5050 34 : if (!strcmp("solid", name)) return 12;
5051 17 : if (!strcmp("spine", name)) return 13;
5052 0 : return -1;
5053 : }
5054 334 : static Bool Extrusion_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
5055 : {
5056 334 : switch (FieldIndex) {
5057 9 : case 7:
5058 9 : *AType = 0;
5059 9 : *QType = 6;
5060 9 : *b_min = FLT2FIX(0);
5061 9 : *b_max = FLT2FIX(6.2831853);
5062 : return 1;
5063 137 : case 8:
5064 137 : *AType = 0;
5065 137 : *QType = 2;
5066 137 : *b_min = FIX_MIN;
5067 137 : *b_max = FIX_MAX;
5068 : return 1;
5069 1 : case 10:
5070 1 : *AType = 0;
5071 1 : *QType = 10;
5072 1 : *b_min = FIX_MIN;
5073 1 : *b_max = FIX_MAX;
5074 : return 1;
5075 89 : case 11:
5076 89 : *AType = 0;
5077 89 : *QType = 7;
5078 89 : *b_min = FLT2FIX(0);
5079 89 : *b_max = FIX_MAX;
5080 : return 1;
5081 89 : case 13:
5082 89 : *AType = 0;
5083 89 : *QType = 1;
5084 89 : *b_min = FIX_MIN;
5085 89 : *b_max = FIX_MAX;
5086 : return 1;
5087 : default:
5088 : return 0;
5089 : }
5090 : }
5091 :
5092 :
5093 :
5094 67 : GF_Node *Extrusion_Create()
5095 : {
5096 : M_Extrusion *p;
5097 67 : GF_SAFEALLOC(p, M_Extrusion);
5098 67 : if(!p) return NULL;
5099 67 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Extrusion);
5100 :
5101 : /*default field values*/
5102 67 : p->beginCap = 1;
5103 67 : p->ccw = 1;
5104 67 : p->convex = 1;
5105 67 : p->creaseAngle = FLT2FIX(0.0);
5106 67 : p->crossSection.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*5);
5107 67 : p->crossSection.count = 5;
5108 67 : p->crossSection.vals[0].x = FLT2FIX(1);
5109 67 : p->crossSection.vals[0].y = FLT2FIX(1);
5110 67 : p->crossSection.vals[1].x = FLT2FIX(1);
5111 67 : p->crossSection.vals[1].y = FLT2FIX(-1);
5112 67 : p->crossSection.vals[2].x = FLT2FIX(-1);
5113 67 : p->crossSection.vals[2].y = FLT2FIX(-1);
5114 67 : p->crossSection.vals[3].x = FLT2FIX(-1);
5115 67 : p->crossSection.vals[3].y = FLT2FIX(1);
5116 67 : p->crossSection.vals[4].x = FLT2FIX(1);
5117 67 : p->crossSection.vals[4].y = FLT2FIX(1);
5118 67 : p->endCap = 1;
5119 67 : p->orientation.vals = (GF_Vec4*)gf_malloc(sizeof(GF_Vec4)*1);
5120 67 : p->orientation.count = 1;
5121 67 : p->orientation.vals[0].x = FLT2FIX(0);
5122 67 : p->orientation.vals[0].y = FLT2FIX(0);
5123 67 : p->orientation.vals[0].z = FLT2FIX(1);
5124 67 : p->orientation.vals[0].q = FLT2FIX(0);
5125 67 : p->scale.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*1);
5126 67 : p->scale.count = 1;
5127 67 : p->scale.vals[0].x = FLT2FIX(1);
5128 67 : p->scale.vals[0].y = FLT2FIX(1);
5129 67 : p->solid = 1;
5130 67 : p->spine.vals = (SFVec3f *)gf_malloc(sizeof(SFVec3f)*2);
5131 67 : p->spine.count = 2;
5132 67 : p->spine.vals[0].x = FLT2FIX(0);
5133 67 : p->spine.vals[0].y = FLT2FIX(0);
5134 67 : p->spine.vals[0].z = FLT2FIX(0);
5135 67 : p->spine.vals[1].x = FLT2FIX(0);
5136 67 : p->spine.vals[1].y = FLT2FIX(1);
5137 67 : p->spine.vals[1].z = FLT2FIX(0);
5138 67 : return (GF_Node *)p;
5139 : }
5140 :
5141 :
5142 : /*
5143 : Face Node deletion
5144 : */
5145 :
5146 1 : static void Face_Del(GF_Node *node)
5147 : {
5148 : M_Face *p = (M_Face *) node;
5149 1 : gf_node_unregister((GF_Node *) p->fap, (GF_Node *) p);
5150 1 : gf_node_unregister((GF_Node *) p->fdp, (GF_Node *) p);
5151 1 : gf_node_unregister((GF_Node *) p->fit, (GF_Node *) p);
5152 1 : gf_node_unregister((GF_Node *) p->ttsSource, (GF_Node *) p);
5153 1 : gf_node_unregister_children((GF_Node *) p, p->renderedFace);
5154 1 : gf_node_free((GF_Node *) p);
5155 1 : }
5156 :
5157 : static const u16 Face_Def2All[] = { 0, 1, 2, 3, 4};
5158 : static const u16 Face_In2All[] = { 0, 1, 2, 3, 4};
5159 : static const u16 Face_Out2All[] = { 0, 1, 2, 3, 4};
5160 :
5161 : static u32 Face_get_field_count(GF_Node *node, u8 IndexMode)
5162 : {
5163 6 : switch(IndexMode) {
5164 : case GF_SG_FIELD_CODING_IN:
5165 : return 5;
5166 : case GF_SG_FIELD_CODING_DEF:
5167 : return 5;
5168 : case GF_SG_FIELD_CODING_OUT:
5169 : return 5;
5170 1 : case GF_SG_FIELD_CODING_DYN:
5171 : return 0;
5172 : default:
5173 : return 5;
5174 : }
5175 : }
5176 :
5177 : static GF_Err Face_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
5178 : {
5179 5 : switch(IndexMode) {
5180 0 : case GF_SG_FIELD_CODING_IN:
5181 0 : *allField = Face_In2All[inField];
5182 : return GF_OK;
5183 0 : case GF_SG_FIELD_CODING_DEF:
5184 0 : *allField = Face_Def2All[inField];
5185 : return GF_OK;
5186 0 : case GF_SG_FIELD_CODING_OUT:
5187 0 : *allField = Face_Out2All[inField];
5188 : return GF_OK;
5189 : default:
5190 : return GF_BAD_PARAM;
5191 : }
5192 : }
5193 10 : static GF_Err Face_get_field(GF_Node *node, GF_FieldInfo *info)
5194 : {
5195 10 : switch (info->fieldIndex) {
5196 2 : case 0:
5197 2 : info->name = "fap";
5198 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5199 2 : info->fieldType = GF_SG_VRML_SFNODE;
5200 2 : info->NDTtype = NDT_SFFAPNode;
5201 2 : info->far_ptr = & ((M_Face *)node)->fap;
5202 2 : return GF_OK;
5203 2 : case 1:
5204 2 : info->name = "fdp";
5205 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5206 2 : info->fieldType = GF_SG_VRML_SFNODE;
5207 2 : info->NDTtype = NDT_SFFDPNode;
5208 2 : info->far_ptr = & ((M_Face *)node)->fdp;
5209 2 : return GF_OK;
5210 2 : case 2:
5211 2 : info->name = "fit";
5212 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5213 2 : info->fieldType = GF_SG_VRML_SFNODE;
5214 2 : info->NDTtype = NDT_SFFITNode;
5215 2 : info->far_ptr = & ((M_Face *)node)->fit;
5216 2 : return GF_OK;
5217 2 : case 3:
5218 2 : info->name = "ttsSource";
5219 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5220 2 : info->fieldType = GF_SG_VRML_SFNODE;
5221 2 : info->NDTtype = NDT_SFAudioNode;
5222 2 : info->far_ptr = & ((M_Face *)node)->ttsSource;
5223 2 : return GF_OK;
5224 2 : case 4:
5225 2 : info->name = "renderedFace";
5226 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5227 2 : info->fieldType = GF_SG_VRML_MFNODE;
5228 2 : info->NDTtype = NDT_SF3DNode;
5229 2 : info->far_ptr = & ((M_Face *)node)->renderedFace;
5230 2 : return GF_OK;
5231 : default:
5232 : return GF_BAD_PARAM;
5233 : }
5234 : }
5235 :
5236 :
5237 5 : static s32 Face_get_field_index_by_name(char *name)
5238 : {
5239 5 : if (!strcmp("fap", name)) return 0;
5240 4 : if (!strcmp("fdp", name)) return 1;
5241 3 : if (!strcmp("fit", name)) return 2;
5242 2 : if (!strcmp("ttsSource", name)) return 3;
5243 1 : if (!strcmp("renderedFace", name)) return 4;
5244 0 : return -1;
5245 : }
5246 : static Bool Face_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
5247 : {
5248 : switch (FieldIndex) {
5249 : default:
5250 : return 0;
5251 : }
5252 : }
5253 :
5254 :
5255 :
5256 1 : GF_Node *Face_Create()
5257 : {
5258 : M_Face *p;
5259 1 : GF_SAFEALLOC(p, M_Face);
5260 1 : if(!p) return NULL;
5261 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Face);
5262 :
5263 : /*default field values*/
5264 1 : return (GF_Node *)p;
5265 : }
5266 :
5267 :
5268 : /*
5269 : FaceDefMesh Node deletion
5270 : */
5271 :
5272 1 : static void FaceDefMesh_Del(GF_Node *node)
5273 : {
5274 : M_FaceDefMesh *p = (M_FaceDefMesh *) node;
5275 1 : gf_node_unregister((GF_Node *) p->faceSceneGraphNode, (GF_Node *) p);
5276 1 : gf_sg_mfint32_del(p->intervalBorders);
5277 1 : gf_sg_mfint32_del(p->coordIndex);
5278 1 : gf_sg_mfvec3f_del(p->displacements);
5279 1 : gf_node_free((GF_Node *) p);
5280 1 : }
5281 :
5282 : static const u16 FaceDefMesh_Def2All[] = { 0, 1, 2, 3};
5283 :
5284 : static u32 FaceDefMesh_get_field_count(GF_Node *node, u8 IndexMode)
5285 : {
5286 6 : switch(IndexMode) {
5287 : case GF_SG_FIELD_CODING_IN:
5288 : return 0;
5289 1 : case GF_SG_FIELD_CODING_DEF:
5290 : return 4;
5291 : case GF_SG_FIELD_CODING_OUT:
5292 : return 0;
5293 : case GF_SG_FIELD_CODING_DYN:
5294 : return 0;
5295 2 : default:
5296 : return 4;
5297 : }
5298 : }
5299 :
5300 : static GF_Err FaceDefMesh_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
5301 : {
5302 4 : switch(IndexMode) {
5303 0 : case GF_SG_FIELD_CODING_DEF:
5304 0 : *allField = FaceDefMesh_Def2All[inField];
5305 : return GF_OK;
5306 : default:
5307 : return GF_BAD_PARAM;
5308 : }
5309 : }
5310 8 : static GF_Err FaceDefMesh_get_field(GF_Node *node, GF_FieldInfo *info)
5311 : {
5312 8 : switch (info->fieldIndex) {
5313 2 : case 0:
5314 2 : info->name = "faceSceneGraphNode";
5315 2 : info->eventType = GF_SG_EVENT_FIELD;
5316 2 : info->fieldType = GF_SG_VRML_SFNODE;
5317 2 : info->NDTtype = NDT_SF3DNode;
5318 2 : info->far_ptr = & ((M_FaceDefMesh *)node)->faceSceneGraphNode;
5319 2 : return GF_OK;
5320 2 : case 1:
5321 2 : info->name = "intervalBorders";
5322 2 : info->eventType = GF_SG_EVENT_FIELD;
5323 2 : info->fieldType = GF_SG_VRML_MFINT32;
5324 2 : info->far_ptr = & ((M_FaceDefMesh *) node)->intervalBorders;
5325 2 : return GF_OK;
5326 2 : case 2:
5327 2 : info->name = "coordIndex";
5328 2 : info->eventType = GF_SG_EVENT_FIELD;
5329 2 : info->fieldType = GF_SG_VRML_MFINT32;
5330 2 : info->far_ptr = & ((M_FaceDefMesh *) node)->coordIndex;
5331 2 : return GF_OK;
5332 2 : case 3:
5333 2 : info->name = "displacements";
5334 2 : info->eventType = GF_SG_EVENT_FIELD;
5335 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
5336 2 : info->far_ptr = & ((M_FaceDefMesh *) node)->displacements;
5337 2 : return GF_OK;
5338 : default:
5339 : return GF_BAD_PARAM;
5340 : }
5341 : }
5342 :
5343 :
5344 4 : static s32 FaceDefMesh_get_field_index_by_name(char *name)
5345 : {
5346 4 : if (!strcmp("faceSceneGraphNode", name)) return 0;
5347 3 : if (!strcmp("intervalBorders", name)) return 1;
5348 2 : if (!strcmp("coordIndex", name)) return 2;
5349 1 : if (!strcmp("displacements", name)) return 3;
5350 0 : return -1;
5351 : }
5352 : static Bool FaceDefMesh_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
5353 : {
5354 4 : switch (FieldIndex) {
5355 1 : case 1:
5356 1 : *AType = 0;
5357 1 : *QType = 0;
5358 : return 1;
5359 1 : case 2:
5360 1 : *AType = 0;
5361 1 : *QType = 0;
5362 : return 1;
5363 1 : case 3:
5364 1 : *AType = 0;
5365 1 : *QType = 0;
5366 : return 1;
5367 : default:
5368 : return 0;
5369 : }
5370 : }
5371 :
5372 :
5373 :
5374 1 : GF_Node *FaceDefMesh_Create()
5375 : {
5376 : M_FaceDefMesh *p;
5377 1 : GF_SAFEALLOC(p, M_FaceDefMesh);
5378 1 : if(!p) return NULL;
5379 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FaceDefMesh);
5380 :
5381 : /*default field values*/
5382 1 : return (GF_Node *)p;
5383 : }
5384 :
5385 :
5386 : /*
5387 : FaceDefTables Node deletion
5388 : */
5389 :
5390 1 : static void FaceDefTables_Del(GF_Node *node)
5391 : {
5392 : M_FaceDefTables *p = (M_FaceDefTables *) node;
5393 1 : gf_node_unregister_children((GF_Node *) p, p->faceDefMesh);
5394 1 : gf_node_unregister_children((GF_Node *) p, p->faceDefTransform);
5395 1 : gf_node_free((GF_Node *) p);
5396 1 : }
5397 :
5398 : static const u16 FaceDefTables_Def2All[] = { 0, 1, 2, 3};
5399 : static const u16 FaceDefTables_In2All[] = { 2, 3};
5400 : static const u16 FaceDefTables_Out2All[] = { 2, 3};
5401 :
5402 : static u32 FaceDefTables_get_field_count(GF_Node *node, u8 IndexMode)
5403 : {
5404 : switch(IndexMode) {
5405 : case GF_SG_FIELD_CODING_IN:
5406 : return 2;
5407 : case GF_SG_FIELD_CODING_DEF:
5408 : return 4;
5409 : case GF_SG_FIELD_CODING_OUT:
5410 : return 2;
5411 : case GF_SG_FIELD_CODING_DYN:
5412 : return 0;
5413 : default:
5414 : return 4;
5415 : }
5416 : }
5417 :
5418 : static GF_Err FaceDefTables_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
5419 : {
5420 4 : switch(IndexMode) {
5421 0 : case GF_SG_FIELD_CODING_IN:
5422 0 : *allField = FaceDefTables_In2All[inField];
5423 : return GF_OK;
5424 0 : case GF_SG_FIELD_CODING_DEF:
5425 0 : *allField = FaceDefTables_Def2All[inField];
5426 : return GF_OK;
5427 0 : case GF_SG_FIELD_CODING_OUT:
5428 0 : *allField = FaceDefTables_Out2All[inField];
5429 : return GF_OK;
5430 : default:
5431 : return GF_BAD_PARAM;
5432 : }
5433 : }
5434 8 : static GF_Err FaceDefTables_get_field(GF_Node *node, GF_FieldInfo *info)
5435 : {
5436 8 : switch (info->fieldIndex) {
5437 2 : case 0:
5438 2 : info->name = "fapID";
5439 2 : info->eventType = GF_SG_EVENT_FIELD;
5440 2 : info->fieldType = GF_SG_VRML_SFINT32;
5441 2 : info->far_ptr = & ((M_FaceDefTables *) node)->fapID;
5442 2 : return GF_OK;
5443 2 : case 1:
5444 2 : info->name = "highLevelSelect";
5445 2 : info->eventType = GF_SG_EVENT_FIELD;
5446 2 : info->fieldType = GF_SG_VRML_SFINT32;
5447 2 : info->far_ptr = & ((M_FaceDefTables *) node)->highLevelSelect;
5448 2 : return GF_OK;
5449 2 : case 2:
5450 2 : info->name = "faceDefMesh";
5451 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5452 2 : info->fieldType = GF_SG_VRML_MFNODE;
5453 2 : info->NDTtype = NDT_SFFaceDefMeshNode;
5454 2 : info->far_ptr = & ((M_FaceDefTables *)node)->faceDefMesh;
5455 2 : return GF_OK;
5456 2 : case 3:
5457 2 : info->name = "faceDefTransform";
5458 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5459 2 : info->fieldType = GF_SG_VRML_MFNODE;
5460 2 : info->NDTtype = NDT_SFFaceDefTransformNode;
5461 2 : info->far_ptr = & ((M_FaceDefTables *)node)->faceDefTransform;
5462 2 : return GF_OK;
5463 : default:
5464 : return GF_BAD_PARAM;
5465 : }
5466 : }
5467 :
5468 :
5469 4 : static s32 FaceDefTables_get_field_index_by_name(char *name)
5470 : {
5471 4 : if (!strcmp("fapID", name)) return 0;
5472 3 : if (!strcmp("highLevelSelect", name)) return 1;
5473 2 : if (!strcmp("faceDefMesh", name)) return 2;
5474 1 : if (!strcmp("faceDefTransform", name)) return 3;
5475 0 : return -1;
5476 : }
5477 : static Bool FaceDefTables_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
5478 : {
5479 4 : switch (FieldIndex) {
5480 1 : case 0:
5481 1 : *AType = 0;
5482 1 : *QType = 13;
5483 1 : *QT13_bits = 7;
5484 1 : *b_min = FLT2FIX(1);
5485 1 : *b_max = FLT2FIX( 68);
5486 : return 1;
5487 1 : case 1:
5488 1 : *AType = 0;
5489 1 : *QType = 13;
5490 1 : *QT13_bits = 6;
5491 1 : *b_min = FLT2FIX(1);
5492 1 : *b_max = FLT2FIX( 64);
5493 : return 1;
5494 : default:
5495 : return 0;
5496 : }
5497 : }
5498 :
5499 :
5500 :
5501 1 : GF_Node *FaceDefTables_Create()
5502 : {
5503 : M_FaceDefTables *p;
5504 1 : GF_SAFEALLOC(p, M_FaceDefTables);
5505 1 : if(!p) return NULL;
5506 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FaceDefTables);
5507 :
5508 : /*default field values*/
5509 1 : p->fapID = 1;
5510 1 : p->highLevelSelect = 1;
5511 1 : return (GF_Node *)p;
5512 : }
5513 :
5514 :
5515 : /*
5516 : FaceDefTransform Node deletion
5517 : */
5518 :
5519 : static void FaceDefTransform_Del(GF_Node *node)
5520 : {
5521 : M_FaceDefTransform *p = (M_FaceDefTransform *) node;
5522 1 : gf_node_unregister((GF_Node *) p->faceSceneGraphNode, (GF_Node *) p);
5523 1 : gf_node_free((GF_Node *) p);
5524 : }
5525 :
5526 : static const u16 FaceDefTransform_Def2All[] = { 0, 1, 2, 3, 4};
5527 :
5528 : static u32 FaceDefTransform_get_field_count(GF_Node *node, u8 IndexMode)
5529 : {
5530 6 : switch(IndexMode) {
5531 : case GF_SG_FIELD_CODING_IN:
5532 : return 0;
5533 1 : case GF_SG_FIELD_CODING_DEF:
5534 : return 5;
5535 : case GF_SG_FIELD_CODING_OUT:
5536 : return 0;
5537 : case GF_SG_FIELD_CODING_DYN:
5538 : return 0;
5539 2 : default:
5540 : return 5;
5541 : }
5542 : }
5543 :
5544 : static GF_Err FaceDefTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
5545 : {
5546 5 : switch(IndexMode) {
5547 0 : case GF_SG_FIELD_CODING_DEF:
5548 0 : *allField = FaceDefTransform_Def2All[inField];
5549 : return GF_OK;
5550 : default:
5551 : return GF_BAD_PARAM;
5552 : }
5553 : }
5554 10 : static GF_Err FaceDefTransform_get_field(GF_Node *node, GF_FieldInfo *info)
5555 : {
5556 10 : switch (info->fieldIndex) {
5557 2 : case 0:
5558 2 : info->name = "faceSceneGraphNode";
5559 2 : info->eventType = GF_SG_EVENT_FIELD;
5560 2 : info->fieldType = GF_SG_VRML_SFNODE;
5561 2 : info->NDTtype = NDT_SF3DNode;
5562 2 : info->far_ptr = & ((M_FaceDefTransform *)node)->faceSceneGraphNode;
5563 2 : return GF_OK;
5564 2 : case 1:
5565 2 : info->name = "fieldId";
5566 2 : info->eventType = GF_SG_EVENT_FIELD;
5567 2 : info->fieldType = GF_SG_VRML_SFINT32;
5568 2 : info->far_ptr = & ((M_FaceDefTransform *) node)->fieldId;
5569 2 : return GF_OK;
5570 2 : case 2:
5571 2 : info->name = "rotationDef";
5572 2 : info->eventType = GF_SG_EVENT_FIELD;
5573 2 : info->fieldType = GF_SG_VRML_SFROTATION;
5574 2 : info->far_ptr = & ((M_FaceDefTransform *) node)->rotationDef;
5575 2 : return GF_OK;
5576 2 : case 3:
5577 2 : info->name = "scaleDef";
5578 2 : info->eventType = GF_SG_EVENT_FIELD;
5579 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
5580 2 : info->far_ptr = & ((M_FaceDefTransform *) node)->scaleDef;
5581 2 : return GF_OK;
5582 2 : case 4:
5583 2 : info->name = "translationDef";
5584 2 : info->eventType = GF_SG_EVENT_FIELD;
5585 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
5586 2 : info->far_ptr = & ((M_FaceDefTransform *) node)->translationDef;
5587 2 : return GF_OK;
5588 : default:
5589 : return GF_BAD_PARAM;
5590 : }
5591 : }
5592 :
5593 :
5594 5 : static s32 FaceDefTransform_get_field_index_by_name(char *name)
5595 : {
5596 5 : if (!strcmp("faceSceneGraphNode", name)) return 0;
5597 4 : if (!strcmp("fieldId", name)) return 1;
5598 3 : if (!strcmp("rotationDef", name)) return 2;
5599 2 : if (!strcmp("scaleDef", name)) return 3;
5600 1 : if (!strcmp("translationDef", name)) return 4;
5601 0 : return -1;
5602 : }
5603 : static Bool FaceDefTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
5604 : {
5605 5 : switch (FieldIndex) {
5606 1 : case 2:
5607 1 : *AType = 0;
5608 1 : *QType = 10;
5609 1 : *b_min = FIX_MIN;
5610 1 : *b_max = FIX_MAX;
5611 : return 1;
5612 1 : case 3:
5613 1 : *AType = 0;
5614 1 : *QType = 7;
5615 : return 1;
5616 1 : case 4:
5617 1 : *AType = 0;
5618 1 : *QType = 1;
5619 : return 1;
5620 : default:
5621 : return 0;
5622 : }
5623 : }
5624 :
5625 :
5626 :
5627 1 : GF_Node *FaceDefTransform_Create()
5628 : {
5629 : M_FaceDefTransform *p;
5630 1 : GF_SAFEALLOC(p, M_FaceDefTransform);
5631 1 : if(!p) return NULL;
5632 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FaceDefTransform);
5633 :
5634 : /*default field values*/
5635 1 : p->fieldId = 1;
5636 1 : p->rotationDef.x = FLT2FIX(0);
5637 1 : p->rotationDef.y = FLT2FIX(0);
5638 1 : p->rotationDef.z = FLT2FIX(1);
5639 1 : p->rotationDef.q = FLT2FIX(0);
5640 1 : p->scaleDef.x = FLT2FIX(1);
5641 1 : p->scaleDef.y = FLT2FIX(1);
5642 1 : p->scaleDef.z = FLT2FIX(1);
5643 1 : p->translationDef.x = FLT2FIX(0);
5644 1 : p->translationDef.y = FLT2FIX(0);
5645 1 : p->translationDef.z = FLT2FIX(0);
5646 1 : return (GF_Node *)p;
5647 : }
5648 :
5649 :
5650 : /*
5651 : FAP Node deletion
5652 : */
5653 :
5654 1 : static void FAP_Del(GF_Node *node)
5655 : {
5656 : M_FAP *p = (M_FAP *) node;
5657 1 : gf_node_unregister((GF_Node *) p->viseme, (GF_Node *) p);
5658 1 : gf_node_unregister((GF_Node *) p->expression, (GF_Node *) p);
5659 1 : gf_node_free((GF_Node *) p);
5660 1 : }
5661 :
5662 : static const u16 FAP_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67};
5663 : static const u16 FAP_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67};
5664 : static const u16 FAP_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67};
5665 :
5666 : static u32 FAP_get_field_count(GF_Node *node, u8 IndexMode)
5667 : {
5668 6 : switch(IndexMode) {
5669 : case GF_SG_FIELD_CODING_IN:
5670 : return 68;
5671 : case GF_SG_FIELD_CODING_DEF:
5672 : return 68;
5673 : case GF_SG_FIELD_CODING_OUT:
5674 : return 68;
5675 1 : case GF_SG_FIELD_CODING_DYN:
5676 : return 0;
5677 : default:
5678 : return 68;
5679 : }
5680 : }
5681 :
5682 : static GF_Err FAP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
5683 : {
5684 68 : switch(IndexMode) {
5685 0 : case GF_SG_FIELD_CODING_IN:
5686 0 : *allField = FAP_In2All[inField];
5687 : return GF_OK;
5688 0 : case GF_SG_FIELD_CODING_DEF:
5689 0 : *allField = FAP_Def2All[inField];
5690 : return GF_OK;
5691 0 : case GF_SG_FIELD_CODING_OUT:
5692 0 : *allField = FAP_Out2All[inField];
5693 : return GF_OK;
5694 : default:
5695 : return GF_BAD_PARAM;
5696 : }
5697 : }
5698 136 : static GF_Err FAP_get_field(GF_Node *node, GF_FieldInfo *info)
5699 : {
5700 136 : switch (info->fieldIndex) {
5701 2 : case 0:
5702 2 : info->name = "viseme";
5703 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5704 2 : info->fieldType = GF_SG_VRML_SFNODE;
5705 2 : info->NDTtype = NDT_SFVisemeNode;
5706 2 : info->far_ptr = & ((M_FAP *)node)->viseme;
5707 2 : return GF_OK;
5708 2 : case 1:
5709 2 : info->name = "expression";
5710 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5711 2 : info->fieldType = GF_SG_VRML_SFNODE;
5712 2 : info->NDTtype = NDT_SFExpressionNode;
5713 2 : info->far_ptr = & ((M_FAP *)node)->expression;
5714 2 : return GF_OK;
5715 2 : case 2:
5716 2 : info->name = "open_jaw";
5717 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5718 2 : info->fieldType = GF_SG_VRML_SFINT32;
5719 2 : info->far_ptr = & ((M_FAP *) node)->open_jaw;
5720 2 : return GF_OK;
5721 2 : case 3:
5722 2 : info->name = "lower_t_midlip";
5723 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5724 2 : info->fieldType = GF_SG_VRML_SFINT32;
5725 2 : info->far_ptr = & ((M_FAP *) node)->lower_t_midlip;
5726 2 : return GF_OK;
5727 2 : case 4:
5728 2 : info->name = "raise_b_midlip";
5729 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5730 2 : info->fieldType = GF_SG_VRML_SFINT32;
5731 2 : info->far_ptr = & ((M_FAP *) node)->raise_b_midlip;
5732 2 : return GF_OK;
5733 2 : case 5:
5734 2 : info->name = "stretch_l_corner";
5735 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5736 2 : info->fieldType = GF_SG_VRML_SFINT32;
5737 2 : info->far_ptr = & ((M_FAP *) node)->stretch_l_corner;
5738 2 : return GF_OK;
5739 2 : case 6:
5740 2 : info->name = "stretch_r_corner";
5741 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5742 2 : info->fieldType = GF_SG_VRML_SFINT32;
5743 2 : info->far_ptr = & ((M_FAP *) node)->stretch_r_corner;
5744 2 : return GF_OK;
5745 2 : case 7:
5746 2 : info->name = "lower_t_lip_lm";
5747 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5748 2 : info->fieldType = GF_SG_VRML_SFINT32;
5749 2 : info->far_ptr = & ((M_FAP *) node)->lower_t_lip_lm;
5750 2 : return GF_OK;
5751 2 : case 8:
5752 2 : info->name = "lower_t_lip_rm";
5753 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5754 2 : info->fieldType = GF_SG_VRML_SFINT32;
5755 2 : info->far_ptr = & ((M_FAP *) node)->lower_t_lip_rm;
5756 2 : return GF_OK;
5757 2 : case 9:
5758 2 : info->name = "lower_b_lip_lm";
5759 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5760 2 : info->fieldType = GF_SG_VRML_SFINT32;
5761 2 : info->far_ptr = & ((M_FAP *) node)->lower_b_lip_lm;
5762 2 : return GF_OK;
5763 2 : case 10:
5764 2 : info->name = "lower_b_lip_rm";
5765 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5766 2 : info->fieldType = GF_SG_VRML_SFINT32;
5767 2 : info->far_ptr = & ((M_FAP *) node)->lower_b_lip_rm;
5768 2 : return GF_OK;
5769 2 : case 11:
5770 2 : info->name = "raise_l_cornerlip";
5771 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5772 2 : info->fieldType = GF_SG_VRML_SFINT32;
5773 2 : info->far_ptr = & ((M_FAP *) node)->raise_l_cornerlip;
5774 2 : return GF_OK;
5775 2 : case 12:
5776 2 : info->name = "raise_r_cornerlip";
5777 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5778 2 : info->fieldType = GF_SG_VRML_SFINT32;
5779 2 : info->far_ptr = & ((M_FAP *) node)->raise_r_cornerlip;
5780 2 : return GF_OK;
5781 2 : case 13:
5782 2 : info->name = "thrust_jaw";
5783 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5784 2 : info->fieldType = GF_SG_VRML_SFINT32;
5785 2 : info->far_ptr = & ((M_FAP *) node)->thrust_jaw;
5786 2 : return GF_OK;
5787 2 : case 14:
5788 2 : info->name = "shift_jaw";
5789 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5790 2 : info->fieldType = GF_SG_VRML_SFINT32;
5791 2 : info->far_ptr = & ((M_FAP *) node)->shift_jaw;
5792 2 : return GF_OK;
5793 2 : case 15:
5794 2 : info->name = "push_b_lip";
5795 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5796 2 : info->fieldType = GF_SG_VRML_SFINT32;
5797 2 : info->far_ptr = & ((M_FAP *) node)->push_b_lip;
5798 2 : return GF_OK;
5799 2 : case 16:
5800 2 : info->name = "push_t_lip";
5801 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5802 2 : info->fieldType = GF_SG_VRML_SFINT32;
5803 2 : info->far_ptr = & ((M_FAP *) node)->push_t_lip;
5804 2 : return GF_OK;
5805 2 : case 17:
5806 2 : info->name = "depress_chin";
5807 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5808 2 : info->fieldType = GF_SG_VRML_SFINT32;
5809 2 : info->far_ptr = & ((M_FAP *) node)->depress_chin;
5810 2 : return GF_OK;
5811 2 : case 18:
5812 2 : info->name = "close_t_l_eyelid";
5813 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5814 2 : info->fieldType = GF_SG_VRML_SFINT32;
5815 2 : info->far_ptr = & ((M_FAP *) node)->close_t_l_eyelid;
5816 2 : return GF_OK;
5817 2 : case 19:
5818 2 : info->name = "close_t_r_eyelid";
5819 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5820 2 : info->fieldType = GF_SG_VRML_SFINT32;
5821 2 : info->far_ptr = & ((M_FAP *) node)->close_t_r_eyelid;
5822 2 : return GF_OK;
5823 2 : case 20:
5824 2 : info->name = "close_b_l_eyelid";
5825 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5826 2 : info->fieldType = GF_SG_VRML_SFINT32;
5827 2 : info->far_ptr = & ((M_FAP *) node)->close_b_l_eyelid;
5828 2 : return GF_OK;
5829 2 : case 21:
5830 2 : info->name = "close_b_r_eyelid";
5831 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5832 2 : info->fieldType = GF_SG_VRML_SFINT32;
5833 2 : info->far_ptr = & ((M_FAP *) node)->close_b_r_eyelid;
5834 2 : return GF_OK;
5835 2 : case 22:
5836 2 : info->name = "yaw_l_eyeball";
5837 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5838 2 : info->fieldType = GF_SG_VRML_SFINT32;
5839 2 : info->far_ptr = & ((M_FAP *) node)->yaw_l_eyeball;
5840 2 : return GF_OK;
5841 2 : case 23:
5842 2 : info->name = "yaw_r_eyeball";
5843 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5844 2 : info->fieldType = GF_SG_VRML_SFINT32;
5845 2 : info->far_ptr = & ((M_FAP *) node)->yaw_r_eyeball;
5846 2 : return GF_OK;
5847 2 : case 24:
5848 2 : info->name = "pitch_l_eyeball";
5849 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5850 2 : info->fieldType = GF_SG_VRML_SFINT32;
5851 2 : info->far_ptr = & ((M_FAP *) node)->pitch_l_eyeball;
5852 2 : return GF_OK;
5853 2 : case 25:
5854 2 : info->name = "pitch_r_eyeball";
5855 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5856 2 : info->fieldType = GF_SG_VRML_SFINT32;
5857 2 : info->far_ptr = & ((M_FAP *) node)->pitch_r_eyeball;
5858 2 : return GF_OK;
5859 2 : case 26:
5860 2 : info->name = "thrust_l_eyeball";
5861 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5862 2 : info->fieldType = GF_SG_VRML_SFINT32;
5863 2 : info->far_ptr = & ((M_FAP *) node)->thrust_l_eyeball;
5864 2 : return GF_OK;
5865 2 : case 27:
5866 2 : info->name = "thrust_r_eyeball";
5867 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5868 2 : info->fieldType = GF_SG_VRML_SFINT32;
5869 2 : info->far_ptr = & ((M_FAP *) node)->thrust_r_eyeball;
5870 2 : return GF_OK;
5871 2 : case 28:
5872 2 : info->name = "dilate_l_pupil";
5873 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5874 2 : info->fieldType = GF_SG_VRML_SFINT32;
5875 2 : info->far_ptr = & ((M_FAP *) node)->dilate_l_pupil;
5876 2 : return GF_OK;
5877 2 : case 29:
5878 2 : info->name = "dilate_r_pupil";
5879 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5880 2 : info->fieldType = GF_SG_VRML_SFINT32;
5881 2 : info->far_ptr = & ((M_FAP *) node)->dilate_r_pupil;
5882 2 : return GF_OK;
5883 2 : case 30:
5884 2 : info->name = "raise_l_i_eyebrow";
5885 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5886 2 : info->fieldType = GF_SG_VRML_SFINT32;
5887 2 : info->far_ptr = & ((M_FAP *) node)->raise_l_i_eyebrow;
5888 2 : return GF_OK;
5889 2 : case 31:
5890 2 : info->name = "raise_r_i_eyebrow";
5891 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5892 2 : info->fieldType = GF_SG_VRML_SFINT32;
5893 2 : info->far_ptr = & ((M_FAP *) node)->raise_r_i_eyebrow;
5894 2 : return GF_OK;
5895 2 : case 32:
5896 2 : info->name = "raise_l_m_eyebrow";
5897 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5898 2 : info->fieldType = GF_SG_VRML_SFINT32;
5899 2 : info->far_ptr = & ((M_FAP *) node)->raise_l_m_eyebrow;
5900 2 : return GF_OK;
5901 2 : case 33:
5902 2 : info->name = "raise_r_m_eyebrow";
5903 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5904 2 : info->fieldType = GF_SG_VRML_SFINT32;
5905 2 : info->far_ptr = & ((M_FAP *) node)->raise_r_m_eyebrow;
5906 2 : return GF_OK;
5907 2 : case 34:
5908 2 : info->name = "raise_l_o_eyebrow";
5909 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5910 2 : info->fieldType = GF_SG_VRML_SFINT32;
5911 2 : info->far_ptr = & ((M_FAP *) node)->raise_l_o_eyebrow;
5912 2 : return GF_OK;
5913 2 : case 35:
5914 2 : info->name = "raise_r_o_eyebrow";
5915 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5916 2 : info->fieldType = GF_SG_VRML_SFINT32;
5917 2 : info->far_ptr = & ((M_FAP *) node)->raise_r_o_eyebrow;
5918 2 : return GF_OK;
5919 2 : case 36:
5920 2 : info->name = "squeeze_l_eyebrow";
5921 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5922 2 : info->fieldType = GF_SG_VRML_SFINT32;
5923 2 : info->far_ptr = & ((M_FAP *) node)->squeeze_l_eyebrow;
5924 2 : return GF_OK;
5925 2 : case 37:
5926 2 : info->name = "squeeze_r_eyebrow";
5927 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5928 2 : info->fieldType = GF_SG_VRML_SFINT32;
5929 2 : info->far_ptr = & ((M_FAP *) node)->squeeze_r_eyebrow;
5930 2 : return GF_OK;
5931 2 : case 38:
5932 2 : info->name = "puff_l_cheek";
5933 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5934 2 : info->fieldType = GF_SG_VRML_SFINT32;
5935 2 : info->far_ptr = & ((M_FAP *) node)->puff_l_cheek;
5936 2 : return GF_OK;
5937 2 : case 39:
5938 2 : info->name = "puff_r_cheek";
5939 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5940 2 : info->fieldType = GF_SG_VRML_SFINT32;
5941 2 : info->far_ptr = & ((M_FAP *) node)->puff_r_cheek;
5942 2 : return GF_OK;
5943 2 : case 40:
5944 2 : info->name = "lift_l_cheek";
5945 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5946 2 : info->fieldType = GF_SG_VRML_SFINT32;
5947 2 : info->far_ptr = & ((M_FAP *) node)->lift_l_cheek;
5948 2 : return GF_OK;
5949 2 : case 41:
5950 2 : info->name = "lift_r_cheek";
5951 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5952 2 : info->fieldType = GF_SG_VRML_SFINT32;
5953 2 : info->far_ptr = & ((M_FAP *) node)->lift_r_cheek;
5954 2 : return GF_OK;
5955 2 : case 42:
5956 2 : info->name = "shift_tongue_tip";
5957 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5958 2 : info->fieldType = GF_SG_VRML_SFINT32;
5959 2 : info->far_ptr = & ((M_FAP *) node)->shift_tongue_tip;
5960 2 : return GF_OK;
5961 2 : case 43:
5962 2 : info->name = "raise_tongue_tip";
5963 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5964 2 : info->fieldType = GF_SG_VRML_SFINT32;
5965 2 : info->far_ptr = & ((M_FAP *) node)->raise_tongue_tip;
5966 2 : return GF_OK;
5967 2 : case 44:
5968 2 : info->name = "thrust_tongue_tip";
5969 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5970 2 : info->fieldType = GF_SG_VRML_SFINT32;
5971 2 : info->far_ptr = & ((M_FAP *) node)->thrust_tongue_tip;
5972 2 : return GF_OK;
5973 2 : case 45:
5974 2 : info->name = "raise_tongue";
5975 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5976 2 : info->fieldType = GF_SG_VRML_SFINT32;
5977 2 : info->far_ptr = & ((M_FAP *) node)->raise_tongue;
5978 2 : return GF_OK;
5979 2 : case 46:
5980 2 : info->name = "tongue_roll";
5981 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5982 2 : info->fieldType = GF_SG_VRML_SFINT32;
5983 2 : info->far_ptr = & ((M_FAP *) node)->tongue_roll;
5984 2 : return GF_OK;
5985 2 : case 47:
5986 2 : info->name = "head_pitch";
5987 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5988 2 : info->fieldType = GF_SG_VRML_SFINT32;
5989 2 : info->far_ptr = & ((M_FAP *) node)->head_pitch;
5990 2 : return GF_OK;
5991 2 : case 48:
5992 2 : info->name = "head_yaw";
5993 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
5994 2 : info->fieldType = GF_SG_VRML_SFINT32;
5995 2 : info->far_ptr = & ((M_FAP *) node)->head_yaw;
5996 2 : return GF_OK;
5997 2 : case 49:
5998 2 : info->name = "head_roll";
5999 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6000 2 : info->fieldType = GF_SG_VRML_SFINT32;
6001 2 : info->far_ptr = & ((M_FAP *) node)->head_roll;
6002 2 : return GF_OK;
6003 2 : case 50:
6004 2 : info->name = "lower_t_midlip_o";
6005 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6006 2 : info->fieldType = GF_SG_VRML_SFINT32;
6007 2 : info->far_ptr = & ((M_FAP *) node)->lower_t_midlip_o;
6008 2 : return GF_OK;
6009 2 : case 51:
6010 2 : info->name = "raise_b_midlip_o";
6011 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6012 2 : info->fieldType = GF_SG_VRML_SFINT32;
6013 2 : info->far_ptr = & ((M_FAP *) node)->raise_b_midlip_o;
6014 2 : return GF_OK;
6015 2 : case 52:
6016 2 : info->name = "stretch_l_cornerlip";
6017 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6018 2 : info->fieldType = GF_SG_VRML_SFINT32;
6019 2 : info->far_ptr = & ((M_FAP *) node)->stretch_l_cornerlip;
6020 2 : return GF_OK;
6021 2 : case 53:
6022 2 : info->name = "stretch_r_cornerlip";
6023 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6024 2 : info->fieldType = GF_SG_VRML_SFINT32;
6025 2 : info->far_ptr = & ((M_FAP *) node)->stretch_r_cornerlip;
6026 2 : return GF_OK;
6027 2 : case 54:
6028 2 : info->name = "lower_t_lip_lm_o";
6029 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6030 2 : info->fieldType = GF_SG_VRML_SFINT32;
6031 2 : info->far_ptr = & ((M_FAP *) node)->lower_t_lip_lm_o;
6032 2 : return GF_OK;
6033 2 : case 55:
6034 2 : info->name = "lower_t_lip_rm_o";
6035 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6036 2 : info->fieldType = GF_SG_VRML_SFINT32;
6037 2 : info->far_ptr = & ((M_FAP *) node)->lower_t_lip_rm_o;
6038 2 : return GF_OK;
6039 2 : case 56:
6040 2 : info->name = "raise_b_lip_lm_o";
6041 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6042 2 : info->fieldType = GF_SG_VRML_SFINT32;
6043 2 : info->far_ptr = & ((M_FAP *) node)->raise_b_lip_lm_o;
6044 2 : return GF_OK;
6045 2 : case 57:
6046 2 : info->name = "raise_b_lip_rm_o";
6047 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6048 2 : info->fieldType = GF_SG_VRML_SFINT32;
6049 2 : info->far_ptr = & ((M_FAP *) node)->raise_b_lip_rm_o;
6050 2 : return GF_OK;
6051 2 : case 58:
6052 2 : info->name = "raise_l_cornerlip_o";
6053 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6054 2 : info->fieldType = GF_SG_VRML_SFINT32;
6055 2 : info->far_ptr = & ((M_FAP *) node)->raise_l_cornerlip_o;
6056 2 : return GF_OK;
6057 2 : case 59:
6058 2 : info->name = "raise_r_cornerlip_o";
6059 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6060 2 : info->fieldType = GF_SG_VRML_SFINT32;
6061 2 : info->far_ptr = & ((M_FAP *) node)->raise_r_cornerlip_o;
6062 2 : return GF_OK;
6063 2 : case 60:
6064 2 : info->name = "stretch_l_nose";
6065 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6066 2 : info->fieldType = GF_SG_VRML_SFINT32;
6067 2 : info->far_ptr = & ((M_FAP *) node)->stretch_l_nose;
6068 2 : return GF_OK;
6069 2 : case 61:
6070 2 : info->name = "stretch_r_nose";
6071 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6072 2 : info->fieldType = GF_SG_VRML_SFINT32;
6073 2 : info->far_ptr = & ((M_FAP *) node)->stretch_r_nose;
6074 2 : return GF_OK;
6075 2 : case 62:
6076 2 : info->name = "raise_nose";
6077 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6078 2 : info->fieldType = GF_SG_VRML_SFINT32;
6079 2 : info->far_ptr = & ((M_FAP *) node)->raise_nose;
6080 2 : return GF_OK;
6081 2 : case 63:
6082 2 : info->name = "bend_nose";
6083 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6084 2 : info->fieldType = GF_SG_VRML_SFINT32;
6085 2 : info->far_ptr = & ((M_FAP *) node)->bend_nose;
6086 2 : return GF_OK;
6087 2 : case 64:
6088 2 : info->name = "raise_l_ear";
6089 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6090 2 : info->fieldType = GF_SG_VRML_SFINT32;
6091 2 : info->far_ptr = & ((M_FAP *) node)->raise_l_ear;
6092 2 : return GF_OK;
6093 2 : case 65:
6094 2 : info->name = "raise_r_ear";
6095 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6096 2 : info->fieldType = GF_SG_VRML_SFINT32;
6097 2 : info->far_ptr = & ((M_FAP *) node)->raise_r_ear;
6098 2 : return GF_OK;
6099 2 : case 66:
6100 2 : info->name = "pull_l_ear";
6101 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6102 2 : info->fieldType = GF_SG_VRML_SFINT32;
6103 2 : info->far_ptr = & ((M_FAP *) node)->pull_l_ear;
6104 2 : return GF_OK;
6105 2 : case 67:
6106 2 : info->name = "pull_r_ear";
6107 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6108 2 : info->fieldType = GF_SG_VRML_SFINT32;
6109 2 : info->far_ptr = & ((M_FAP *) node)->pull_r_ear;
6110 2 : return GF_OK;
6111 : default:
6112 : return GF_BAD_PARAM;
6113 : }
6114 : }
6115 :
6116 :
6117 68 : static s32 FAP_get_field_index_by_name(char *name)
6118 : {
6119 68 : if (!strcmp("viseme", name)) return 0;
6120 67 : if (!strcmp("expression", name)) return 1;
6121 66 : if (!strcmp("open_jaw", name)) return 2;
6122 65 : if (!strcmp("lower_t_midlip", name)) return 3;
6123 64 : if (!strcmp("raise_b_midlip", name)) return 4;
6124 63 : if (!strcmp("stretch_l_corner", name)) return 5;
6125 62 : if (!strcmp("stretch_r_corner", name)) return 6;
6126 61 : if (!strcmp("lower_t_lip_lm", name)) return 7;
6127 60 : if (!strcmp("lower_t_lip_rm", name)) return 8;
6128 59 : if (!strcmp("lower_b_lip_lm", name)) return 9;
6129 58 : if (!strcmp("lower_b_lip_rm", name)) return 10;
6130 57 : if (!strcmp("raise_l_cornerlip", name)) return 11;
6131 56 : if (!strcmp("raise_r_cornerlip", name)) return 12;
6132 55 : if (!strcmp("thrust_jaw", name)) return 13;
6133 54 : if (!strcmp("shift_jaw", name)) return 14;
6134 53 : if (!strcmp("push_b_lip", name)) return 15;
6135 52 : if (!strcmp("push_t_lip", name)) return 16;
6136 51 : if (!strcmp("depress_chin", name)) return 17;
6137 50 : if (!strcmp("close_t_l_eyelid", name)) return 18;
6138 49 : if (!strcmp("close_t_r_eyelid", name)) return 19;
6139 48 : if (!strcmp("close_b_l_eyelid", name)) return 20;
6140 47 : if (!strcmp("close_b_r_eyelid", name)) return 21;
6141 46 : if (!strcmp("yaw_l_eyeball", name)) return 22;
6142 45 : if (!strcmp("yaw_r_eyeball", name)) return 23;
6143 44 : if (!strcmp("pitch_l_eyeball", name)) return 24;
6144 43 : if (!strcmp("pitch_r_eyeball", name)) return 25;
6145 42 : if (!strcmp("thrust_l_eyeball", name)) return 26;
6146 41 : if (!strcmp("thrust_r_eyeball", name)) return 27;
6147 40 : if (!strcmp("dilate_l_pupil", name)) return 28;
6148 39 : if (!strcmp("dilate_r_pupil", name)) return 29;
6149 38 : if (!strcmp("raise_l_i_eyebrow", name)) return 30;
6150 37 : if (!strcmp("raise_r_i_eyebrow", name)) return 31;
6151 36 : if (!strcmp("raise_l_m_eyebrow", name)) return 32;
6152 35 : if (!strcmp("raise_r_m_eyebrow", name)) return 33;
6153 34 : if (!strcmp("raise_l_o_eyebrow", name)) return 34;
6154 33 : if (!strcmp("raise_r_o_eyebrow", name)) return 35;
6155 32 : if (!strcmp("squeeze_l_eyebrow", name)) return 36;
6156 31 : if (!strcmp("squeeze_r_eyebrow", name)) return 37;
6157 30 : if (!strcmp("puff_l_cheek", name)) return 38;
6158 29 : if (!strcmp("puff_r_cheek", name)) return 39;
6159 28 : if (!strcmp("lift_l_cheek", name)) return 40;
6160 27 : if (!strcmp("lift_r_cheek", name)) return 41;
6161 26 : if (!strcmp("shift_tongue_tip", name)) return 42;
6162 25 : if (!strcmp("raise_tongue_tip", name)) return 43;
6163 24 : if (!strcmp("thrust_tongue_tip", name)) return 44;
6164 23 : if (!strcmp("raise_tongue", name)) return 45;
6165 22 : if (!strcmp("tongue_roll", name)) return 46;
6166 21 : if (!strcmp("head_pitch", name)) return 47;
6167 20 : if (!strcmp("head_yaw", name)) return 48;
6168 19 : if (!strcmp("head_roll", name)) return 49;
6169 18 : if (!strcmp("lower_t_midlip_o", name)) return 50;
6170 17 : if (!strcmp("raise_b_midlip_o", name)) return 51;
6171 16 : if (!strcmp("stretch_l_cornerlip", name)) return 52;
6172 15 : if (!strcmp("stretch_r_cornerlip", name)) return 53;
6173 14 : if (!strcmp("lower_t_lip_lm_o", name)) return 54;
6174 13 : if (!strcmp("lower_t_lip_rm_o", name)) return 55;
6175 12 : if (!strcmp("raise_b_lip_lm_o", name)) return 56;
6176 11 : if (!strcmp("raise_b_lip_rm_o", name)) return 57;
6177 10 : if (!strcmp("raise_l_cornerlip_o", name)) return 58;
6178 9 : if (!strcmp("raise_r_cornerlip_o", name)) return 59;
6179 8 : if (!strcmp("stretch_l_nose", name)) return 60;
6180 7 : if (!strcmp("stretch_r_nose", name)) return 61;
6181 6 : if (!strcmp("raise_nose", name)) return 62;
6182 5 : if (!strcmp("bend_nose", name)) return 63;
6183 4 : if (!strcmp("raise_l_ear", name)) return 64;
6184 3 : if (!strcmp("raise_r_ear", name)) return 65;
6185 2 : if (!strcmp("pull_l_ear", name)) return 66;
6186 1 : if (!strcmp("pull_r_ear", name)) return 67;
6187 0 : return -1;
6188 : }
6189 68 : static Bool FAP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
6190 : {
6191 68 : switch (FieldIndex) {
6192 1 : case 2:
6193 1 : *AType = 0;
6194 1 : *QType = 0;
6195 1 : *b_min = FLT2FIX(0);
6196 1 : *b_max = FIX_MAX;
6197 : return 1;
6198 1 : case 3:
6199 1 : *AType = 0;
6200 1 : *QType = 0;
6201 1 : *b_min = FIX_MIN;
6202 1 : *b_max = FIX_MAX;
6203 : return 1;
6204 1 : case 4:
6205 1 : *AType = 0;
6206 1 : *QType = 0;
6207 1 : *b_min = FIX_MIN;
6208 1 : *b_max = FIX_MAX;
6209 : return 1;
6210 1 : case 5:
6211 1 : *AType = 0;
6212 1 : *QType = 0;
6213 1 : *b_min = FIX_MIN;
6214 1 : *b_max = FIX_MAX;
6215 : return 1;
6216 1 : case 6:
6217 1 : *AType = 0;
6218 1 : *QType = 0;
6219 1 : *b_min = FIX_MIN;
6220 1 : *b_max = FIX_MAX;
6221 : return 1;
6222 1 : case 7:
6223 1 : *AType = 0;
6224 1 : *QType = 0;
6225 1 : *b_min = FIX_MIN;
6226 1 : *b_max = FIX_MAX;
6227 : return 1;
6228 1 : case 8:
6229 1 : *AType = 0;
6230 1 : *QType = 0;
6231 1 : *b_min = FIX_MIN;
6232 1 : *b_max = FIX_MAX;
6233 : return 1;
6234 1 : case 9:
6235 1 : *AType = 0;
6236 1 : *QType = 0;
6237 1 : *b_min = FIX_MIN;
6238 1 : *b_max = FIX_MAX;
6239 : return 1;
6240 1 : case 10:
6241 1 : *AType = 0;
6242 1 : *QType = 0;
6243 1 : *b_min = FIX_MIN;
6244 1 : *b_max = FIX_MAX;
6245 : return 1;
6246 1 : case 11:
6247 1 : *AType = 0;
6248 1 : *QType = 0;
6249 1 : *b_min = FIX_MIN;
6250 1 : *b_max = FIX_MAX;
6251 : return 1;
6252 1 : case 12:
6253 1 : *AType = 0;
6254 1 : *QType = 0;
6255 1 : *b_min = FIX_MIN;
6256 1 : *b_max = FIX_MAX;
6257 : return 1;
6258 1 : case 13:
6259 1 : *AType = 0;
6260 1 : *QType = 0;
6261 1 : *b_min = FLT2FIX(0);
6262 1 : *b_max = FIX_MAX;
6263 : return 1;
6264 1 : case 14:
6265 1 : *AType = 0;
6266 1 : *QType = 0;
6267 1 : *b_min = FIX_MIN;
6268 1 : *b_max = FIX_MAX;
6269 : return 1;
6270 1 : case 15:
6271 1 : *AType = 0;
6272 1 : *QType = 0;
6273 1 : *b_min = FIX_MIN;
6274 1 : *b_max = FIX_MAX;
6275 : return 1;
6276 1 : case 16:
6277 1 : *AType = 0;
6278 1 : *QType = 0;
6279 1 : *b_min = FIX_MIN;
6280 1 : *b_max = FIX_MAX;
6281 : return 1;
6282 1 : case 17:
6283 1 : *AType = 0;
6284 1 : *QType = 0;
6285 1 : *b_min = FIX_MIN;
6286 1 : *b_max = FIX_MAX;
6287 : return 1;
6288 1 : case 18:
6289 1 : *AType = 0;
6290 1 : *QType = 0;
6291 1 : *b_min = FIX_MIN;
6292 1 : *b_max = FIX_MAX;
6293 : return 1;
6294 1 : case 19:
6295 1 : *AType = 0;
6296 1 : *QType = 0;
6297 1 : *b_min = FIX_MIN;
6298 1 : *b_max = FIX_MAX;
6299 : return 1;
6300 1 : case 20:
6301 1 : *AType = 0;
6302 1 : *QType = 0;
6303 1 : *b_min = FIX_MIN;
6304 1 : *b_max = FIX_MAX;
6305 : return 1;
6306 1 : case 21:
6307 1 : *AType = 0;
6308 1 : *QType = 0;
6309 1 : *b_min = FIX_MIN;
6310 1 : *b_max = FIX_MAX;
6311 : return 1;
6312 1 : case 22:
6313 1 : *AType = 0;
6314 1 : *QType = 0;
6315 1 : *b_min = FIX_MIN;
6316 1 : *b_max = FIX_MAX;
6317 : return 1;
6318 1 : case 23:
6319 1 : *AType = 0;
6320 1 : *QType = 0;
6321 1 : *b_min = FIX_MIN;
6322 1 : *b_max = FIX_MAX;
6323 : return 1;
6324 1 : case 24:
6325 1 : *AType = 0;
6326 1 : *QType = 0;
6327 1 : *b_min = FIX_MIN;
6328 1 : *b_max = FIX_MAX;
6329 : return 1;
6330 1 : case 25:
6331 1 : *AType = 0;
6332 1 : *QType = 0;
6333 1 : *b_min = FIX_MIN;
6334 1 : *b_max = FIX_MAX;
6335 : return 1;
6336 1 : case 26:
6337 1 : *AType = 0;
6338 1 : *QType = 0;
6339 1 : *b_min = FIX_MIN;
6340 1 : *b_max = FIX_MAX;
6341 : return 1;
6342 1 : case 27:
6343 1 : *AType = 0;
6344 1 : *QType = 0;
6345 1 : *b_min = FIX_MIN;
6346 1 : *b_max = FIX_MAX;
6347 : return 1;
6348 1 : case 28:
6349 1 : *AType = 0;
6350 1 : *QType = 0;
6351 1 : *b_min = FIX_MIN;
6352 1 : *b_max = FIX_MAX;
6353 : return 1;
6354 1 : case 29:
6355 1 : *AType = 0;
6356 1 : *QType = 0;
6357 1 : *b_min = FIX_MIN;
6358 1 : *b_max = FIX_MAX;
6359 : return 1;
6360 1 : case 30:
6361 1 : *AType = 0;
6362 1 : *QType = 0;
6363 1 : *b_min = FIX_MIN;
6364 1 : *b_max = FIX_MAX;
6365 : return 1;
6366 1 : case 31:
6367 1 : *AType = 0;
6368 1 : *QType = 0;
6369 1 : *b_min = FIX_MIN;
6370 1 : *b_max = FIX_MAX;
6371 : return 1;
6372 1 : case 32:
6373 1 : *AType = 0;
6374 1 : *QType = 0;
6375 1 : *b_min = FIX_MIN;
6376 1 : *b_max = FIX_MAX;
6377 : return 1;
6378 1 : case 33:
6379 1 : *AType = 0;
6380 1 : *QType = 0;
6381 1 : *b_min = FIX_MIN;
6382 1 : *b_max = FIX_MAX;
6383 : return 1;
6384 1 : case 34:
6385 1 : *AType = 0;
6386 1 : *QType = 0;
6387 1 : *b_min = FIX_MIN;
6388 1 : *b_max = FIX_MAX;
6389 : return 1;
6390 1 : case 35:
6391 1 : *AType = 0;
6392 1 : *QType = 0;
6393 1 : *b_min = FIX_MIN;
6394 1 : *b_max = FIX_MAX;
6395 : return 1;
6396 1 : case 36:
6397 1 : *AType = 0;
6398 1 : *QType = 0;
6399 1 : *b_min = FIX_MIN;
6400 1 : *b_max = FIX_MAX;
6401 : return 1;
6402 1 : case 37:
6403 1 : *AType = 0;
6404 1 : *QType = 0;
6405 1 : *b_min = FIX_MIN;
6406 1 : *b_max = FIX_MAX;
6407 : return 1;
6408 1 : case 38:
6409 1 : *AType = 0;
6410 1 : *QType = 0;
6411 1 : *b_min = FIX_MIN;
6412 1 : *b_max = FIX_MAX;
6413 : return 1;
6414 1 : case 39:
6415 1 : *AType = 0;
6416 1 : *QType = 0;
6417 1 : *b_min = FIX_MIN;
6418 1 : *b_max = FIX_MAX;
6419 : return 1;
6420 1 : case 40:
6421 1 : *AType = 0;
6422 1 : *QType = 0;
6423 1 : *b_min = FLT2FIX(0);
6424 1 : *b_max = FIX_MAX;
6425 : return 1;
6426 1 : case 41:
6427 1 : *AType = 0;
6428 1 : *QType = 0;
6429 1 : *b_min = FLT2FIX(0);
6430 1 : *b_max = FIX_MAX;
6431 : return 1;
6432 1 : case 42:
6433 1 : *AType = 0;
6434 1 : *QType = 0;
6435 1 : *b_min = FIX_MIN;
6436 1 : *b_max = FIX_MAX;
6437 : return 1;
6438 1 : case 43:
6439 1 : *AType = 0;
6440 1 : *QType = 0;
6441 1 : *b_min = FIX_MIN;
6442 1 : *b_max = FIX_MAX;
6443 : return 1;
6444 1 : case 44:
6445 1 : *AType = 0;
6446 1 : *QType = 0;
6447 1 : *b_min = FIX_MIN;
6448 1 : *b_max = FIX_MAX;
6449 : return 1;
6450 1 : case 45:
6451 1 : *AType = 0;
6452 1 : *QType = 0;
6453 1 : *b_min = FIX_MIN;
6454 1 : *b_max = FIX_MAX;
6455 : return 1;
6456 1 : case 46:
6457 1 : *AType = 0;
6458 1 : *QType = 0;
6459 1 : *b_min = FLT2FIX(0);
6460 1 : *b_max = FIX_MAX;
6461 : return 1;
6462 1 : case 47:
6463 1 : *AType = 0;
6464 1 : *QType = 0;
6465 1 : *b_min = FIX_MIN;
6466 1 : *b_max = FIX_MAX;
6467 : return 1;
6468 1 : case 48:
6469 1 : *AType = 0;
6470 1 : *QType = 0;
6471 1 : *b_min = FIX_MIN;
6472 1 : *b_max = FIX_MAX;
6473 : return 1;
6474 1 : case 49:
6475 1 : *AType = 0;
6476 1 : *QType = 0;
6477 1 : *b_min = FIX_MIN;
6478 1 : *b_max = FIX_MAX;
6479 : return 1;
6480 1 : case 50:
6481 1 : *AType = 0;
6482 1 : *QType = 0;
6483 1 : *b_min = FIX_MIN;
6484 1 : *b_max = FIX_MAX;
6485 : return 1;
6486 1 : case 51:
6487 1 : *AType = 0;
6488 1 : *QType = 0;
6489 1 : *b_min = FIX_MIN;
6490 1 : *b_max = FIX_MAX;
6491 : return 1;
6492 1 : case 52:
6493 1 : *AType = 0;
6494 1 : *QType = 0;
6495 1 : *b_min = FIX_MIN;
6496 1 : *b_max = FIX_MAX;
6497 : return 1;
6498 1 : case 53:
6499 1 : *AType = 0;
6500 1 : *QType = 0;
6501 1 : *b_min = FIX_MIN;
6502 1 : *b_max = FIX_MAX;
6503 : return 1;
6504 1 : case 54:
6505 1 : *AType = 0;
6506 1 : *QType = 0;
6507 1 : *b_min = FIX_MIN;
6508 1 : *b_max = FIX_MAX;
6509 : return 1;
6510 1 : case 55:
6511 1 : *AType = 0;
6512 1 : *QType = 0;
6513 1 : *b_min = FIX_MIN;
6514 1 : *b_max = FIX_MAX;
6515 : return 1;
6516 1 : case 56:
6517 1 : *AType = 0;
6518 1 : *QType = 0;
6519 1 : *b_min = FIX_MIN;
6520 1 : *b_max = FIX_MAX;
6521 : return 1;
6522 1 : case 57:
6523 1 : *AType = 0;
6524 1 : *QType = 0;
6525 1 : *b_min = FIX_MIN;
6526 1 : *b_max = FIX_MAX;
6527 : return 1;
6528 1 : case 58:
6529 1 : *AType = 0;
6530 1 : *QType = 0;
6531 1 : *b_min = FIX_MIN;
6532 1 : *b_max = FIX_MAX;
6533 : return 1;
6534 1 : case 59:
6535 1 : *AType = 0;
6536 1 : *QType = 0;
6537 1 : *b_min = FIX_MIN;
6538 1 : *b_max = FIX_MAX;
6539 : return 1;
6540 1 : case 60:
6541 1 : *AType = 0;
6542 1 : *QType = 0;
6543 1 : *b_min = FIX_MIN;
6544 1 : *b_max = FIX_MAX;
6545 : return 1;
6546 1 : case 61:
6547 1 : *AType = 0;
6548 1 : *QType = 0;
6549 1 : *b_min = FIX_MIN;
6550 1 : *b_max = FIX_MAX;
6551 : return 1;
6552 1 : case 62:
6553 1 : *AType = 0;
6554 1 : *QType = 0;
6555 1 : *b_min = FIX_MIN;
6556 1 : *b_max = FIX_MAX;
6557 : return 1;
6558 1 : case 63:
6559 1 : *AType = 0;
6560 1 : *QType = 0;
6561 1 : *b_min = FIX_MIN;
6562 1 : *b_max = FIX_MAX;
6563 : return 1;
6564 1 : case 64:
6565 1 : *AType = 0;
6566 1 : *QType = 0;
6567 1 : *b_min = FIX_MIN;
6568 1 : *b_max = FIX_MAX;
6569 : return 1;
6570 1 : case 65:
6571 1 : *AType = 0;
6572 1 : *QType = 0;
6573 1 : *b_min = FIX_MIN;
6574 1 : *b_max = FIX_MAX;
6575 : return 1;
6576 1 : case 66:
6577 1 : *AType = 0;
6578 1 : *QType = 0;
6579 1 : *b_min = FIX_MIN;
6580 1 : *b_max = FIX_MAX;
6581 : return 1;
6582 1 : case 67:
6583 1 : *AType = 0;
6584 1 : *QType = 0;
6585 1 : *b_min = FIX_MIN;
6586 1 : *b_max = FIX_MAX;
6587 : return 1;
6588 : default:
6589 : return 0;
6590 : }
6591 : }
6592 :
6593 :
6594 :
6595 1 : GF_Node *FAP_Create()
6596 : {
6597 : M_FAP *p;
6598 1 : GF_SAFEALLOC(p, M_FAP);
6599 1 : if(!p) return NULL;
6600 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FAP);
6601 :
6602 : /*default field values*/
6603 1 : p->open_jaw = 0x80000000;
6604 1 : p->lower_t_midlip = 0x80000000;
6605 1 : p->raise_b_midlip = 0x80000000;
6606 1 : p->stretch_l_corner = 0x80000000;
6607 1 : p->stretch_r_corner = 0x80000000;
6608 1 : p->lower_t_lip_lm = 0x80000000;
6609 1 : p->lower_t_lip_rm = 0x80000000;
6610 1 : p->lower_b_lip_lm = 0x80000000;
6611 1 : p->lower_b_lip_rm = 0x80000000;
6612 1 : p->raise_l_cornerlip = 0x80000000;
6613 1 : p->raise_r_cornerlip = 0x80000000;
6614 1 : p->thrust_jaw = 0x80000000;
6615 1 : p->shift_jaw = 0x80000000;
6616 1 : p->push_b_lip = 0x80000000;
6617 1 : p->push_t_lip = 0x80000000;
6618 1 : p->depress_chin = 0x80000000;
6619 1 : p->close_t_l_eyelid = 0x80000000;
6620 1 : p->close_t_r_eyelid = 0x80000000;
6621 1 : p->close_b_l_eyelid = 0x80000000;
6622 1 : p->close_b_r_eyelid = 0x80000000;
6623 1 : p->yaw_l_eyeball = 0x80000000;
6624 1 : p->yaw_r_eyeball = 0x80000000;
6625 1 : p->pitch_l_eyeball = 0x80000000;
6626 1 : p->pitch_r_eyeball = 0x80000000;
6627 1 : p->thrust_l_eyeball = 0x80000000;
6628 1 : p->thrust_r_eyeball = 0x80000000;
6629 1 : p->dilate_l_pupil = 0x80000000;
6630 1 : p->dilate_r_pupil = 0x80000000;
6631 1 : p->raise_l_i_eyebrow = 0x80000000;
6632 1 : p->raise_r_i_eyebrow = 0x80000000;
6633 1 : p->raise_l_m_eyebrow = 0x80000000;
6634 1 : p->raise_r_m_eyebrow = 0x80000000;
6635 1 : p->raise_l_o_eyebrow = 0x80000000;
6636 1 : p->raise_r_o_eyebrow = 0x80000000;
6637 1 : p->squeeze_l_eyebrow = 0x80000000;
6638 1 : p->squeeze_r_eyebrow = 0x80000000;
6639 1 : p->puff_l_cheek = 0x80000000;
6640 1 : p->puff_r_cheek = 0x80000000;
6641 1 : p->lift_l_cheek = 0x80000000;
6642 1 : p->lift_r_cheek = 0x80000000;
6643 1 : p->shift_tongue_tip = 0x80000000;
6644 1 : p->raise_tongue_tip = 0x80000000;
6645 1 : p->thrust_tongue_tip = 0x80000000;
6646 1 : p->raise_tongue = 0x80000000;
6647 1 : p->tongue_roll = 0x80000000;
6648 1 : p->head_pitch = 0x80000000;
6649 1 : p->head_yaw = 0x80000000;
6650 1 : p->head_roll = 0x80000000;
6651 1 : p->lower_t_midlip_o = 0x80000000;
6652 1 : p->raise_b_midlip_o = 0x80000000;
6653 1 : p->stretch_l_cornerlip = 0x80000000;
6654 1 : p->stretch_r_cornerlip = 0x80000000;
6655 1 : p->lower_t_lip_lm_o = 0x80000000;
6656 1 : p->lower_t_lip_rm_o = 0x80000000;
6657 1 : p->raise_b_lip_lm_o = 0x80000000;
6658 1 : p->raise_b_lip_rm_o = 0x80000000;
6659 1 : p->raise_l_cornerlip_o = 0x80000000;
6660 1 : p->raise_r_cornerlip_o = 0x80000000;
6661 1 : p->stretch_l_nose = 0x80000000;
6662 1 : p->stretch_r_nose = 0x80000000;
6663 1 : p->raise_nose = 0x80000000;
6664 1 : p->bend_nose = 0x80000000;
6665 1 : p->raise_l_ear = 0x80000000;
6666 1 : p->raise_r_ear = 0x80000000;
6667 1 : p->pull_l_ear = 0x80000000;
6668 1 : p->pull_r_ear = 0x80000000;
6669 1 : return (GF_Node *)p;
6670 : }
6671 :
6672 :
6673 : /*
6674 : FDP Node deletion
6675 : */
6676 :
6677 1 : static void FDP_Del(GF_Node *node)
6678 : {
6679 : M_FDP *p = (M_FDP *) node;
6680 1 : gf_node_unregister((GF_Node *) p->featurePointsCoord, (GF_Node *) p);
6681 1 : gf_node_unregister((GF_Node *) p->textureCoord, (GF_Node *) p);
6682 1 : gf_node_unregister_children((GF_Node *) p, p->faceDefTables);
6683 1 : gf_node_unregister_children((GF_Node *) p, p->faceSceneGraph);
6684 1 : gf_node_free((GF_Node *) p);
6685 1 : }
6686 :
6687 : static const u16 FDP_Def2All[] = { 0, 1, 2, 3, 4};
6688 : static const u16 FDP_In2All[] = { 0, 1, 2, 3};
6689 : static const u16 FDP_Out2All[] = { 0, 1, 2, 3};
6690 :
6691 : static u32 FDP_get_field_count(GF_Node *node, u8 IndexMode)
6692 : {
6693 : switch(IndexMode) {
6694 : case GF_SG_FIELD_CODING_IN:
6695 : return 4;
6696 : case GF_SG_FIELD_CODING_DEF:
6697 : return 5;
6698 : case GF_SG_FIELD_CODING_OUT:
6699 : return 4;
6700 : case GF_SG_FIELD_CODING_DYN:
6701 : return 0;
6702 : default:
6703 : return 5;
6704 : }
6705 : }
6706 :
6707 : static GF_Err FDP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
6708 : {
6709 5 : switch(IndexMode) {
6710 0 : case GF_SG_FIELD_CODING_IN:
6711 0 : *allField = FDP_In2All[inField];
6712 : return GF_OK;
6713 0 : case GF_SG_FIELD_CODING_DEF:
6714 0 : *allField = FDP_Def2All[inField];
6715 : return GF_OK;
6716 0 : case GF_SG_FIELD_CODING_OUT:
6717 0 : *allField = FDP_Out2All[inField];
6718 : return GF_OK;
6719 : default:
6720 : return GF_BAD_PARAM;
6721 : }
6722 : }
6723 10 : static GF_Err FDP_get_field(GF_Node *node, GF_FieldInfo *info)
6724 : {
6725 10 : switch (info->fieldIndex) {
6726 2 : case 0:
6727 2 : info->name = "featurePointsCoord";
6728 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6729 2 : info->fieldType = GF_SG_VRML_SFNODE;
6730 2 : info->NDTtype = NDT_SFCoordinateNode;
6731 2 : info->far_ptr = & ((M_FDP *)node)->featurePointsCoord;
6732 2 : return GF_OK;
6733 2 : case 1:
6734 2 : info->name = "textureCoord";
6735 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6736 2 : info->fieldType = GF_SG_VRML_SFNODE;
6737 2 : info->NDTtype = NDT_SFTextureCoordinateNode;
6738 2 : info->far_ptr = & ((M_FDP *)node)->textureCoord;
6739 2 : return GF_OK;
6740 2 : case 2:
6741 2 : info->name = "faceDefTables";
6742 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6743 2 : info->fieldType = GF_SG_VRML_MFNODE;
6744 2 : info->NDTtype = NDT_SFFaceDefTablesNode;
6745 2 : info->far_ptr = & ((M_FDP *)node)->faceDefTables;
6746 2 : return GF_OK;
6747 2 : case 3:
6748 2 : info->name = "faceSceneGraph";
6749 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6750 2 : info->fieldType = GF_SG_VRML_MFNODE;
6751 2 : info->NDTtype = NDT_SF3DNode;
6752 2 : info->far_ptr = & ((M_FDP *)node)->faceSceneGraph;
6753 2 : return GF_OK;
6754 2 : case 4:
6755 2 : info->name = "useOrthoTexture";
6756 2 : info->eventType = GF_SG_EVENT_FIELD;
6757 2 : info->fieldType = GF_SG_VRML_SFBOOL;
6758 2 : info->far_ptr = & ((M_FDP *) node)->useOrthoTexture;
6759 2 : return GF_OK;
6760 : default:
6761 : return GF_BAD_PARAM;
6762 : }
6763 : }
6764 :
6765 :
6766 5 : static s32 FDP_get_field_index_by_name(char *name)
6767 : {
6768 5 : if (!strcmp("featurePointsCoord", name)) return 0;
6769 4 : if (!strcmp("textureCoord", name)) return 1;
6770 3 : if (!strcmp("faceDefTables", name)) return 2;
6771 2 : if (!strcmp("faceSceneGraph", name)) return 3;
6772 1 : if (!strcmp("useOrthoTexture", name)) return 4;
6773 0 : return -1;
6774 : }
6775 : static Bool FDP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
6776 : {
6777 : switch (FieldIndex) {
6778 : default:
6779 : return 0;
6780 : }
6781 : }
6782 :
6783 :
6784 :
6785 1 : GF_Node *FDP_Create()
6786 : {
6787 : M_FDP *p;
6788 1 : GF_SAFEALLOC(p, M_FDP);
6789 1 : if(!p) return NULL;
6790 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FDP);
6791 :
6792 : /*default field values*/
6793 1 : return (GF_Node *)p;
6794 : }
6795 :
6796 :
6797 : /*
6798 : FIT Node deletion
6799 : */
6800 :
6801 1 : static void FIT_Del(GF_Node *node)
6802 : {
6803 : M_FIT *p = (M_FIT *) node;
6804 1 : gf_sg_mfint32_del(p->FAPs);
6805 1 : gf_sg_mfint32_del(p->Graph);
6806 1 : gf_sg_mfint32_del(p->numeratorExp);
6807 1 : gf_sg_mfint32_del(p->denominatorExp);
6808 1 : gf_sg_mfint32_del(p->numeratorImpulse);
6809 1 : gf_sg_mfint32_del(p->numeratorTerms);
6810 1 : gf_sg_mfint32_del(p->denominatorTerms);
6811 1 : gf_sg_mffloat_del(p->numeratorCoefs);
6812 1 : gf_sg_mffloat_del(p->denominatorCoefs);
6813 1 : gf_node_free((GF_Node *) p);
6814 1 : }
6815 :
6816 : static const u16 FIT_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
6817 : static const u16 FIT_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
6818 : static const u16 FIT_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
6819 :
6820 : static u32 FIT_get_field_count(GF_Node *node, u8 IndexMode)
6821 : {
6822 6 : switch(IndexMode) {
6823 : case GF_SG_FIELD_CODING_IN:
6824 : return 9;
6825 : case GF_SG_FIELD_CODING_DEF:
6826 : return 9;
6827 : case GF_SG_FIELD_CODING_OUT:
6828 : return 9;
6829 1 : case GF_SG_FIELD_CODING_DYN:
6830 : return 0;
6831 : default:
6832 : return 9;
6833 : }
6834 : }
6835 :
6836 : static GF_Err FIT_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
6837 : {
6838 9 : switch(IndexMode) {
6839 0 : case GF_SG_FIELD_CODING_IN:
6840 0 : *allField = FIT_In2All[inField];
6841 : return GF_OK;
6842 0 : case GF_SG_FIELD_CODING_DEF:
6843 0 : *allField = FIT_Def2All[inField];
6844 : return GF_OK;
6845 0 : case GF_SG_FIELD_CODING_OUT:
6846 0 : *allField = FIT_Out2All[inField];
6847 : return GF_OK;
6848 : default:
6849 : return GF_BAD_PARAM;
6850 : }
6851 : }
6852 18 : static GF_Err FIT_get_field(GF_Node *node, GF_FieldInfo *info)
6853 : {
6854 18 : switch (info->fieldIndex) {
6855 2 : case 0:
6856 2 : info->name = "FAPs";
6857 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6858 2 : info->fieldType = GF_SG_VRML_MFINT32;
6859 2 : info->far_ptr = & ((M_FIT *) node)->FAPs;
6860 2 : return GF_OK;
6861 2 : case 1:
6862 2 : info->name = "Graph";
6863 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6864 2 : info->fieldType = GF_SG_VRML_MFINT32;
6865 2 : info->far_ptr = & ((M_FIT *) node)->Graph;
6866 2 : return GF_OK;
6867 2 : case 2:
6868 2 : info->name = "numeratorExp";
6869 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6870 2 : info->fieldType = GF_SG_VRML_MFINT32;
6871 2 : info->far_ptr = & ((M_FIT *) node)->numeratorExp;
6872 2 : return GF_OK;
6873 2 : case 3:
6874 2 : info->name = "denominatorExp";
6875 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6876 2 : info->fieldType = GF_SG_VRML_MFINT32;
6877 2 : info->far_ptr = & ((M_FIT *) node)->denominatorExp;
6878 2 : return GF_OK;
6879 2 : case 4:
6880 2 : info->name = "numeratorImpulse";
6881 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6882 2 : info->fieldType = GF_SG_VRML_MFINT32;
6883 2 : info->far_ptr = & ((M_FIT *) node)->numeratorImpulse;
6884 2 : return GF_OK;
6885 2 : case 5:
6886 2 : info->name = "numeratorTerms";
6887 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6888 2 : info->fieldType = GF_SG_VRML_MFINT32;
6889 2 : info->far_ptr = & ((M_FIT *) node)->numeratorTerms;
6890 2 : return GF_OK;
6891 2 : case 6:
6892 2 : info->name = "denominatorTerms";
6893 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6894 2 : info->fieldType = GF_SG_VRML_MFINT32;
6895 2 : info->far_ptr = & ((M_FIT *) node)->denominatorTerms;
6896 2 : return GF_OK;
6897 2 : case 7:
6898 2 : info->name = "numeratorCoefs";
6899 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6900 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
6901 2 : info->far_ptr = & ((M_FIT *) node)->numeratorCoefs;
6902 2 : return GF_OK;
6903 2 : case 8:
6904 2 : info->name = "denominatorCoefs";
6905 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
6906 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
6907 2 : info->far_ptr = & ((M_FIT *) node)->denominatorCoefs;
6908 2 : return GF_OK;
6909 : default:
6910 : return GF_BAD_PARAM;
6911 : }
6912 : }
6913 :
6914 :
6915 9 : static s32 FIT_get_field_index_by_name(char *name)
6916 : {
6917 9 : if (!strcmp("FAPs", name)) return 0;
6918 8 : if (!strcmp("Graph", name)) return 1;
6919 7 : if (!strcmp("numeratorExp", name)) return 2;
6920 6 : if (!strcmp("denominatorExp", name)) return 3;
6921 5 : if (!strcmp("numeratorImpulse", name)) return 4;
6922 4 : if (!strcmp("numeratorTerms", name)) return 5;
6923 3 : if (!strcmp("denominatorTerms", name)) return 6;
6924 2 : if (!strcmp("numeratorCoefs", name)) return 7;
6925 1 : if (!strcmp("denominatorCoefs", name)) return 8;
6926 0 : return -1;
6927 : }
6928 9 : static Bool FIT_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
6929 : {
6930 9 : switch (FieldIndex) {
6931 1 : case 0:
6932 1 : *AType = 0;
6933 1 : *QType = 13;
6934 1 : *QT13_bits = 7;
6935 1 : *b_min = FLT2FIX(-1);
6936 1 : *b_max = FLT2FIX(68);
6937 : return 1;
6938 1 : case 1:
6939 1 : *AType = 0;
6940 1 : *QType = 13;
6941 1 : *QT13_bits = 7;
6942 1 : *b_min = FLT2FIX(0);
6943 1 : *b_max = FLT2FIX(68);
6944 : return 1;
6945 1 : case 2:
6946 1 : *AType = 0;
6947 1 : *QType = 13;
6948 1 : *QT13_bits = 4;
6949 1 : *b_min = FLT2FIX(0);
6950 1 : *b_max = FLT2FIX(15);
6951 : return 1;
6952 1 : case 3:
6953 1 : *AType = 0;
6954 1 : *QType = 13;
6955 1 : *QT13_bits = 4;
6956 1 : *b_min = FLT2FIX(0);
6957 1 : *b_max = FLT2FIX(15);
6958 : return 1;
6959 1 : case 4:
6960 1 : *AType = 0;
6961 1 : *QType = 13;
6962 1 : *QT13_bits = 10;
6963 1 : *b_min = FLT2FIX(0);
6964 1 : *b_max = FLT2FIX(1023);
6965 : return 1;
6966 1 : case 5:
6967 1 : *AType = 0;
6968 1 : *QType = 13;
6969 1 : *QT13_bits = 4;
6970 1 : *b_min = FLT2FIX(0);
6971 1 : *b_max = FLT2FIX(10);
6972 : return 1;
6973 1 : case 6:
6974 1 : *AType = 0;
6975 1 : *QType = 13;
6976 1 : *QT13_bits = 4;
6977 1 : *b_min = FLT2FIX(0);
6978 1 : *b_max = FLT2FIX(10);
6979 : return 1;
6980 : default:
6981 : return 0;
6982 : }
6983 : }
6984 :
6985 :
6986 :
6987 1 : GF_Node *FIT_Create()
6988 : {
6989 : M_FIT *p;
6990 1 : GF_SAFEALLOC(p, M_FIT);
6991 1 : if(!p) return NULL;
6992 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FIT);
6993 :
6994 : /*default field values*/
6995 1 : return (GF_Node *)p;
6996 : }
6997 :
6998 :
6999 : /*
7000 : Fog Node deletion
7001 : */
7002 :
7003 : static void Fog_Del(GF_Node *node)
7004 : {
7005 : M_Fog *p = (M_Fog *) node;
7006 5 : gf_sg_sfstring_del(p->fogType);
7007 5 : gf_node_free((GF_Node *) p);
7008 : }
7009 :
7010 : static const u16 Fog_Def2All[] = { 0, 1, 2};
7011 : static const u16 Fog_In2All[] = { 0, 1, 2, 3};
7012 : static const u16 Fog_Out2All[] = { 0, 1, 2, 4};
7013 : static const u16 Fog_Dyn2All[] = { 0, 2};
7014 :
7015 : static u32 Fog_get_field_count(GF_Node *node, u8 IndexMode)
7016 : {
7017 : switch(IndexMode) {
7018 : case GF_SG_FIELD_CODING_IN:
7019 : return 4;
7020 : case GF_SG_FIELD_CODING_DEF:
7021 : return 3;
7022 : case GF_SG_FIELD_CODING_OUT:
7023 : return 4;
7024 : case GF_SG_FIELD_CODING_DYN:
7025 : return 2;
7026 : default:
7027 : return 5;
7028 : }
7029 : }
7030 :
7031 : static GF_Err Fog_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7032 : {
7033 5 : switch(IndexMode) {
7034 0 : case GF_SG_FIELD_CODING_IN:
7035 0 : *allField = Fog_In2All[inField];
7036 : return GF_OK;
7037 0 : case GF_SG_FIELD_CODING_DEF:
7038 0 : *allField = Fog_Def2All[inField];
7039 : return GF_OK;
7040 0 : case GF_SG_FIELD_CODING_OUT:
7041 0 : *allField = Fog_Out2All[inField];
7042 : return GF_OK;
7043 0 : case GF_SG_FIELD_CODING_DYN:
7044 0 : *allField = Fog_Dyn2All[inField];
7045 : return GF_OK;
7046 : default:
7047 : return GF_BAD_PARAM;
7048 : }
7049 : }
7050 31 : static GF_Err Fog_get_field(GF_Node *node, GF_FieldInfo *info)
7051 : {
7052 31 : switch (info->fieldIndex) {
7053 6 : case 0:
7054 6 : info->name = "color";
7055 6 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7056 6 : info->fieldType = GF_SG_VRML_SFCOLOR;
7057 6 : info->far_ptr = & ((M_Fog *) node)->color;
7058 6 : return GF_OK;
7059 2 : case 1:
7060 2 : info->name = "fogType";
7061 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7062 2 : info->fieldType = GF_SG_VRML_SFSTRING;
7063 2 : info->far_ptr = & ((M_Fog *) node)->fogType;
7064 2 : return GF_OK;
7065 14 : case 2:
7066 14 : info->name = "visibilityRange";
7067 14 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7068 14 : info->fieldType = GF_SG_VRML_SFFLOAT;
7069 14 : info->far_ptr = & ((M_Fog *) node)->visibilityRange;
7070 14 : return GF_OK;
7071 7 : case 3:
7072 7 : info->name = "set_bind";
7073 7 : info->eventType = GF_SG_EVENT_IN;
7074 7 : info->on_event_in = ((M_Fog *)node)->on_set_bind;
7075 7 : info->fieldType = GF_SG_VRML_SFBOOL;
7076 7 : info->far_ptr = & ((M_Fog *) node)->set_bind;
7077 7 : return GF_OK;
7078 2 : case 4:
7079 2 : info->name = "isBound";
7080 2 : info->eventType = GF_SG_EVENT_OUT;
7081 2 : info->fieldType = GF_SG_VRML_SFBOOL;
7082 2 : info->far_ptr = & ((M_Fog *) node)->isBound;
7083 2 : return GF_OK;
7084 : default:
7085 : return GF_BAD_PARAM;
7086 : }
7087 : }
7088 :
7089 :
7090 21 : static s32 Fog_get_field_index_by_name(char *name)
7091 : {
7092 21 : if (!strcmp("color", name)) return 0;
7093 16 : if (!strcmp("fogType", name)) return 1;
7094 15 : if (!strcmp("visibilityRange", name)) return 2;
7095 6 : if (!strcmp("set_bind", name)) return 3;
7096 1 : if (!strcmp("isBound", name)) return 4;
7097 0 : return -1;
7098 : }
7099 : static Bool Fog_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7100 : {
7101 5 : switch (FieldIndex) {
7102 1 : case 0:
7103 1 : *AType = 4;
7104 1 : *QType = 4;
7105 1 : *b_min = FLT2FIX(0);
7106 1 : *b_max = FLT2FIX(1);
7107 : return 1;
7108 1 : case 2:
7109 1 : *AType = 7;
7110 1 : *QType = 11;
7111 1 : *b_min = FLT2FIX(0);
7112 1 : *b_max = FIX_MAX;
7113 : return 1;
7114 : default:
7115 : return 0;
7116 : }
7117 : }
7118 :
7119 :
7120 :
7121 5 : GF_Node *Fog_Create()
7122 : {
7123 : M_Fog *p;
7124 5 : GF_SAFEALLOC(p, M_Fog);
7125 5 : if(!p) return NULL;
7126 5 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Fog);
7127 :
7128 : /*default field values*/
7129 5 : p->color.red = FLT2FIX(1);
7130 5 : p->color.green = FLT2FIX(1);
7131 5 : p->color.blue = FLT2FIX(1);
7132 5 : p->fogType.buffer = (char*)gf_malloc(sizeof(char) * 7);
7133 : strcpy(p->fogType.buffer, "LINEAR");
7134 5 : p->visibilityRange = FLT2FIX(0);
7135 5 : return (GF_Node *)p;
7136 : }
7137 :
7138 :
7139 : /*
7140 : FontStyle Node deletion
7141 : */
7142 :
7143 573 : static void FontStyle_Del(GF_Node *node)
7144 : {
7145 : M_FontStyle *p = (M_FontStyle *) node;
7146 573 : gf_sg_mfstring_del(p->family);
7147 573 : gf_sg_mfstring_del(p->justify);
7148 573 : gf_sg_sfstring_del(p->language);
7149 573 : gf_sg_sfstring_del(p->style);
7150 573 : gf_node_free((GF_Node *) p);
7151 573 : }
7152 :
7153 : static const u16 FontStyle_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
7154 : static const u16 FontStyle_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
7155 : static const u16 FontStyle_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
7156 :
7157 : static u32 FontStyle_get_field_count(GF_Node *node, u8 IndexMode)
7158 : {
7159 160 : switch(IndexMode) {
7160 : case GF_SG_FIELD_CODING_IN:
7161 : return 9;
7162 : case GF_SG_FIELD_CODING_DEF:
7163 : return 9;
7164 : case GF_SG_FIELD_CODING_OUT:
7165 : return 9;
7166 1 : case GF_SG_FIELD_CODING_DYN:
7167 : return 0;
7168 : default:
7169 : return 9;
7170 : }
7171 : }
7172 :
7173 : static GF_Err FontStyle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7174 : {
7175 352 : switch(IndexMode) {
7176 0 : case GF_SG_FIELD_CODING_IN:
7177 0 : *allField = FontStyle_In2All[inField];
7178 : return GF_OK;
7179 343 : case GF_SG_FIELD_CODING_DEF:
7180 343 : *allField = FontStyle_Def2All[inField];
7181 : return GF_OK;
7182 0 : case GF_SG_FIELD_CODING_OUT:
7183 0 : *allField = FontStyle_Out2All[inField];
7184 : return GF_OK;
7185 : default:
7186 : return GF_BAD_PARAM;
7187 : }
7188 : }
7189 3419 : static GF_Err FontStyle_get_field(GF_Node *node, GF_FieldInfo *info)
7190 : {
7191 3419 : switch (info->fieldIndex) {
7192 304 : case 0:
7193 304 : info->name = "family";
7194 304 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7195 304 : info->fieldType = GF_SG_VRML_MFSTRING;
7196 304 : info->far_ptr = & ((M_FontStyle *) node)->family;
7197 304 : return GF_OK;
7198 236 : case 1:
7199 236 : info->name = "horizontal";
7200 236 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7201 236 : info->fieldType = GF_SG_VRML_SFBOOL;
7202 236 : info->far_ptr = & ((M_FontStyle *) node)->horizontal;
7203 236 : return GF_OK;
7204 921 : case 2:
7205 921 : info->name = "justify";
7206 921 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7207 921 : info->fieldType = GF_SG_VRML_MFSTRING;
7208 921 : info->far_ptr = & ((M_FontStyle *) node)->justify;
7209 921 : return GF_OK;
7210 195 : case 3:
7211 195 : info->name = "language";
7212 195 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7213 195 : info->fieldType = GF_SG_VRML_SFSTRING;
7214 195 : info->far_ptr = & ((M_FontStyle *) node)->language;
7215 195 : return GF_OK;
7216 245 : case 4:
7217 245 : info->name = "leftToRight";
7218 245 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7219 245 : info->fieldType = GF_SG_VRML_SFBOOL;
7220 245 : info->far_ptr = & ((M_FontStyle *) node)->leftToRight;
7221 245 : return GF_OK;
7222 847 : case 5:
7223 847 : info->name = "size";
7224 847 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7225 847 : info->fieldType = GF_SG_VRML_SFFLOAT;
7226 847 : info->far_ptr = & ((M_FontStyle *) node)->size;
7227 847 : return GF_OK;
7228 198 : case 6:
7229 198 : info->name = "spacing";
7230 198 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7231 198 : info->fieldType = GF_SG_VRML_SFFLOAT;
7232 198 : info->far_ptr = & ((M_FontStyle *) node)->spacing;
7233 198 : return GF_OK;
7234 228 : case 7:
7235 228 : info->name = "style";
7236 228 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7237 228 : info->fieldType = GF_SG_VRML_SFSTRING;
7238 228 : info->far_ptr = & ((M_FontStyle *) node)->style;
7239 228 : return GF_OK;
7240 245 : case 8:
7241 245 : info->name = "topToBottom";
7242 245 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7243 245 : info->fieldType = GF_SG_VRML_SFBOOL;
7244 245 : info->far_ptr = & ((M_FontStyle *) node)->topToBottom;
7245 245 : return GF_OK;
7246 : default:
7247 : return GF_BAD_PARAM;
7248 : }
7249 : }
7250 :
7251 :
7252 1454 : static s32 FontStyle_get_field_index_by_name(char *name)
7253 : {
7254 1454 : if (!strcmp("family", name)) return 0;
7255 1385 : if (!strcmp("horizontal", name)) return 1;
7256 1343 : if (!strcmp("justify", name)) return 2;
7257 746 : if (!strcmp("language", name)) return 3;
7258 745 : if (!strcmp("leftToRight", name)) return 4;
7259 694 : if (!strcmp("size", name)) return 5;
7260 111 : if (!strcmp("spacing", name)) return 6;
7261 109 : if (!strcmp("style", name)) return 7;
7262 84 : if (!strcmp("topToBottom", name)) return 8;
7263 33 : return -1;
7264 : }
7265 : static Bool FontStyle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7266 : {
7267 19 : switch (FieldIndex) {
7268 11 : case 5:
7269 11 : *AType = 0;
7270 11 : *QType = 11;
7271 11 : *b_min = FLT2FIX(0);
7272 11 : *b_max = FIX_MAX;
7273 : return 1;
7274 1 : case 6:
7275 1 : *AType = 0;
7276 1 : *QType = 11;
7277 1 : *b_min = FLT2FIX(0);
7278 1 : *b_max = FIX_MAX;
7279 : return 1;
7280 : default:
7281 : return 0;
7282 : }
7283 : }
7284 :
7285 :
7286 :
7287 573 : GF_Node *FontStyle_Create()
7288 : {
7289 : M_FontStyle *p;
7290 573 : GF_SAFEALLOC(p, M_FontStyle);
7291 573 : if(!p) return NULL;
7292 573 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FontStyle);
7293 :
7294 : /*default field values*/
7295 573 : p->family.vals = (char**)gf_malloc(sizeof(SFString)*1);
7296 573 : p->family.count = 1;
7297 573 : p->family.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
7298 573 : strcpy(p->family.vals[0], "SERIF");
7299 573 : p->horizontal = 1;
7300 573 : p->justify.vals = (char**)gf_malloc(sizeof(SFString)*1);
7301 573 : p->justify.count = 1;
7302 573 : p->justify.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
7303 573 : strcpy(p->justify.vals[0], "BEGIN");
7304 573 : p->leftToRight = 1;
7305 573 : p->size = FLT2FIX(1.0);
7306 573 : p->spacing = FLT2FIX(1.0);
7307 573 : p->style.buffer = (char*)gf_malloc(sizeof(char) * 6);
7308 : strcpy(p->style.buffer, "PLAIN");
7309 573 : p->topToBottom = 1;
7310 573 : return (GF_Node *)p;
7311 : }
7312 :
7313 :
7314 : /*
7315 : Form Node deletion
7316 : */
7317 :
7318 108 : static void Form_Del(GF_Node *node)
7319 : {
7320 : M_Form *p = (M_Form *) node;
7321 108 : gf_sg_mfint32_del(p->groups);
7322 108 : gf_sg_mfstring_del(p->constraints);
7323 108 : gf_sg_mfint32_del(p->groupsIndex);
7324 108 : gf_sg_vrml_parent_destroy((GF_Node *) p);
7325 108 : gf_node_free((GF_Node *) p);
7326 108 : }
7327 :
7328 : static const u16 Form_Def2All[] = { 2, 3, 4, 5, 6};
7329 : static const u16 Form_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
7330 : static const u16 Form_Out2All[] = { 2, 3, 4, 5, 6};
7331 : static const u16 Form_Dyn2All[] = { 3};
7332 :
7333 : static u32 Form_get_field_count(GF_Node *node, u8 IndexMode)
7334 : {
7335 : switch(IndexMode) {
7336 : case GF_SG_FIELD_CODING_IN:
7337 : return 7;
7338 : case GF_SG_FIELD_CODING_DEF:
7339 : return 5;
7340 : case GF_SG_FIELD_CODING_OUT:
7341 : return 5;
7342 : case GF_SG_FIELD_CODING_DYN:
7343 : return 1;
7344 : default:
7345 : return 7;
7346 : }
7347 : }
7348 :
7349 : static GF_Err Form_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7350 : {
7351 167 : switch(IndexMode) {
7352 0 : case GF_SG_FIELD_CODING_IN:
7353 0 : *allField = Form_In2All[inField];
7354 : return GF_OK;
7355 160 : case GF_SG_FIELD_CODING_DEF:
7356 160 : *allField = Form_Def2All[inField];
7357 : return GF_OK;
7358 0 : case GF_SG_FIELD_CODING_OUT:
7359 0 : *allField = Form_Out2All[inField];
7360 : return GF_OK;
7361 0 : case GF_SG_FIELD_CODING_DYN:
7362 0 : *allField = Form_Dyn2All[inField];
7363 : return GF_OK;
7364 : default:
7365 : return GF_BAD_PARAM;
7366 : }
7367 : }
7368 1026 : static GF_Err Form_get_field(GF_Node *node, GF_FieldInfo *info)
7369 : {
7370 1026 : switch (info->fieldIndex) {
7371 17 : case 0:
7372 17 : info->name = "addChildren";
7373 17 : info->eventType = GF_SG_EVENT_IN;
7374 17 : info->on_event_in = ((M_Form *)node)->on_addChildren;
7375 17 : info->fieldType = GF_SG_VRML_MFNODE;
7376 17 : info->NDTtype = NDT_SF2DNode;
7377 17 : info->far_ptr = & ((M_Form *)node)->addChildren;
7378 17 : return GF_OK;
7379 17 : case 1:
7380 17 : info->name = "removeChildren";
7381 17 : info->eventType = GF_SG_EVENT_IN;
7382 17 : info->on_event_in = ((M_Form *)node)->on_removeChildren;
7383 17 : info->fieldType = GF_SG_VRML_MFNODE;
7384 17 : info->NDTtype = NDT_SF2DNode;
7385 17 : info->far_ptr = & ((M_Form *)node)->removeChildren;
7386 17 : return GF_OK;
7387 392 : case 2:
7388 392 : info->name = "children";
7389 392 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7390 392 : info->fieldType = GF_SG_VRML_MFNODE;
7391 392 : info->NDTtype = NDT_SF2DNode;
7392 392 : info->far_ptr = & ((M_Form *)node)->children;
7393 392 : return GF_OK;
7394 150 : case 3:
7395 150 : info->name = "size";
7396 150 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7397 150 : info->fieldType = GF_SG_VRML_SFVEC2F;
7398 150 : info->far_ptr = & ((M_Form *) node)->size;
7399 150 : return GF_OK;
7400 150 : case 4:
7401 150 : info->name = "groups";
7402 150 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7403 150 : info->fieldType = GF_SG_VRML_MFINT32;
7404 150 : info->far_ptr = & ((M_Form *) node)->groups;
7405 150 : return GF_OK;
7406 150 : case 5:
7407 150 : info->name = "constraints";
7408 150 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7409 150 : info->fieldType = GF_SG_VRML_MFSTRING;
7410 150 : info->far_ptr = & ((M_Form *) node)->constraints;
7411 150 : return GF_OK;
7412 150 : case 6:
7413 150 : info->name = "groupsIndex";
7414 150 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7415 150 : info->fieldType = GF_SG_VRML_MFINT32;
7416 150 : info->far_ptr = & ((M_Form *) node)->groupsIndex;
7417 150 : return GF_OK;
7418 : default:
7419 : return GF_BAD_PARAM;
7420 : }
7421 : }
7422 :
7423 :
7424 495 : static s32 Form_get_field_index_by_name(char *name)
7425 : {
7426 495 : if (!strcmp("addChildren", name)) return 0;
7427 494 : if (!strcmp("removeChildren", name)) return 1;
7428 493 : if (!strcmp("children", name)) return 2;
7429 140 : if (!strcmp("size", name)) return 3;
7430 105 : if (!strcmp("groups", name)) return 4;
7431 70 : if (!strcmp("constraints", name)) return 5;
7432 35 : if (!strcmp("groupsIndex", name)) return 6;
7433 0 : return -1;
7434 : }
7435 : static Bool Form_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7436 : {
7437 119 : switch (FieldIndex) {
7438 9 : case 3:
7439 9 : *AType = 12;
7440 9 : *QType = 12;
7441 9 : *b_min = FLT2FIX(0);
7442 9 : *b_max = FIX_MAX;
7443 : return 1;
7444 33 : case 4:
7445 33 : *AType = 0;
7446 33 : *QType = 13;
7447 33 : *QT13_bits = 10;
7448 33 : *b_min = FLT2FIX(-1);
7449 33 : *b_max = FLT2FIX(1022);
7450 : return 1;
7451 73 : case 6:
7452 73 : *AType = 0;
7453 73 : *QType = 13;
7454 73 : *QT13_bits = 10;
7455 73 : *b_min = FLT2FIX(-1);
7456 73 : *b_max = FLT2FIX(1022);
7457 : return 1;
7458 : default:
7459 : return 0;
7460 : }
7461 : }
7462 :
7463 :
7464 :
7465 108 : GF_Node *Form_Create()
7466 : {
7467 : M_Form *p;
7468 108 : GF_SAFEALLOC(p, M_Form);
7469 108 : if(!p) return NULL;
7470 108 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Form);
7471 108 : gf_sg_vrml_parent_setup((GF_Node *) p);
7472 :
7473 : /*default field values*/
7474 108 : p->size.x = FLT2FIX(-1);
7475 108 : p->size.y = FLT2FIX(-1);
7476 108 : return (GF_Node *)p;
7477 : }
7478 :
7479 :
7480 : /*
7481 : Group Node deletion
7482 : */
7483 :
7484 : static void Group_Del(GF_Node *node)
7485 : {
7486 : M_Group *p = (M_Group *) node;
7487 113 : gf_sg_vrml_parent_destroy((GF_Node *) p);
7488 113 : gf_node_free((GF_Node *) p);
7489 : }
7490 :
7491 : static const u16 Group_Def2All[] = { 2};
7492 : static const u16 Group_In2All[] = { 0, 1, 2};
7493 : static const u16 Group_Out2All[] = { 2};
7494 :
7495 : static u32 Group_get_field_count(GF_Node *node, u8 IndexMode)
7496 : {
7497 : switch(IndexMode) {
7498 : case GF_SG_FIELD_CODING_IN:
7499 : return 3;
7500 : case GF_SG_FIELD_CODING_DEF:
7501 : return 1;
7502 : case GF_SG_FIELD_CODING_OUT:
7503 : return 1;
7504 : case GF_SG_FIELD_CODING_DYN:
7505 : return 0;
7506 : default:
7507 : return 3;
7508 : }
7509 : }
7510 :
7511 : static GF_Err Group_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7512 : {
7513 207 : switch(IndexMode) {
7514 192 : case GF_SG_FIELD_CODING_IN:
7515 192 : *allField = Group_In2All[inField];
7516 : return GF_OK;
7517 12 : case GF_SG_FIELD_CODING_DEF:
7518 12 : *allField = Group_Def2All[inField];
7519 : return GF_OK;
7520 0 : case GF_SG_FIELD_CODING_OUT:
7521 0 : *allField = Group_Out2All[inField];
7522 : return GF_OK;
7523 : default:
7524 : return GF_BAD_PARAM;
7525 : }
7526 : }
7527 : static GF_Err Group_get_field(GF_Node *node, GF_FieldInfo *info)
7528 : {
7529 192 : switch (info->fieldIndex) {
7530 6 : case 0:
7531 6 : info->name = "addChildren";
7532 6 : info->eventType = GF_SG_EVENT_IN;
7533 6 : info->on_event_in = ((M_Group *)node)->on_addChildren;
7534 6 : info->fieldType = GF_SG_VRML_MFNODE;
7535 6 : info->NDTtype = NDT_SF3DNode;
7536 6 : info->far_ptr = & ((M_Group *)node)->addChildren;
7537 : return GF_OK;
7538 6 : case 1:
7539 6 : info->name = "removeChildren";
7540 6 : info->eventType = GF_SG_EVENT_IN;
7541 6 : info->on_event_in = ((M_Group *)node)->on_removeChildren;
7542 6 : info->fieldType = GF_SG_VRML_MFNODE;
7543 6 : info->NDTtype = NDT_SF3DNode;
7544 6 : info->far_ptr = & ((M_Group *)node)->removeChildren;
7545 : return GF_OK;
7546 180 : case 2:
7547 180 : info->name = "children";
7548 180 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7549 180 : info->fieldType = GF_SG_VRML_MFNODE;
7550 180 : info->NDTtype = NDT_SF3DNode;
7551 180 : info->far_ptr = & ((M_Group *)node)->children;
7552 : return GF_OK;
7553 : default:
7554 : return GF_BAD_PARAM;
7555 : }
7556 : }
7557 :
7558 :
7559 88 : static s32 Group_get_field_index_by_name(char *name)
7560 : {
7561 88 : if (!strcmp("addChildren", name)) return 0;
7562 87 : if (!strcmp("removeChildren", name)) return 1;
7563 86 : if (!strcmp("children", name)) return 2;
7564 0 : return -1;
7565 : }
7566 : static Bool Group_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7567 : {
7568 : switch (FieldIndex) {
7569 : default:
7570 : return 0;
7571 : }
7572 : }
7573 :
7574 :
7575 :
7576 113 : GF_Node *Group_Create()
7577 : {
7578 : M_Group *p;
7579 113 : GF_SAFEALLOC(p, M_Group);
7580 113 : if(!p) return NULL;
7581 113 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Group);
7582 113 : gf_sg_vrml_parent_setup((GF_Node *) p);
7583 :
7584 : /*default field values*/
7585 113 : return (GF_Node *)p;
7586 : }
7587 :
7588 :
7589 : /*
7590 : ImageTexture Node deletion
7591 : */
7592 :
7593 : static void ImageTexture_Del(GF_Node *node)
7594 : {
7595 : M_ImageTexture *p = (M_ImageTexture *) node;
7596 224 : gf_sg_mfurl_del(p->url);
7597 224 : gf_node_free((GF_Node *) p);
7598 : }
7599 :
7600 : static const u16 ImageTexture_Def2All[] = { 0, 1, 2};
7601 : static const u16 ImageTexture_In2All[] = { 0};
7602 : static const u16 ImageTexture_Out2All[] = { 0};
7603 :
7604 : static u32 ImageTexture_get_field_count(GF_Node *node, u8 IndexMode)
7605 : {
7606 : switch(IndexMode) {
7607 : case GF_SG_FIELD_CODING_IN:
7608 : return 1;
7609 : case GF_SG_FIELD_CODING_DEF:
7610 : return 3;
7611 : case GF_SG_FIELD_CODING_OUT:
7612 : return 1;
7613 : case GF_SG_FIELD_CODING_DYN:
7614 : return 0;
7615 : default:
7616 : return 3;
7617 : }
7618 : }
7619 :
7620 : static GF_Err ImageTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7621 : {
7622 171 : switch(IndexMode) {
7623 0 : case GF_SG_FIELD_CODING_IN:
7624 0 : *allField = ImageTexture_In2All[inField];
7625 : return GF_OK;
7626 168 : case GF_SG_FIELD_CODING_DEF:
7627 168 : *allField = ImageTexture_Def2All[inField];
7628 : return GF_OK;
7629 0 : case GF_SG_FIELD_CODING_OUT:
7630 0 : *allField = ImageTexture_Out2All[inField];
7631 : return GF_OK;
7632 : default:
7633 : return GF_BAD_PARAM;
7634 : }
7635 : }
7636 : static GF_Err ImageTexture_get_field(GF_Node *node, GF_FieldInfo *info)
7637 : {
7638 2563 : switch (info->fieldIndex) {
7639 921 : case 0:
7640 921 : info->name = "url";
7641 921 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7642 921 : info->fieldType = GF_SG_VRML_MFURL;
7643 921 : info->far_ptr = & ((M_ImageTexture *) node)->url;
7644 : return GF_OK;
7645 821 : case 1:
7646 821 : info->name = "repeatS";
7647 821 : info->eventType = GF_SG_EVENT_FIELD;
7648 821 : info->fieldType = GF_SG_VRML_SFBOOL;
7649 821 : info->far_ptr = & ((M_ImageTexture *) node)->repeatS;
7650 : return GF_OK;
7651 821 : case 2:
7652 821 : info->name = "repeatT";
7653 821 : info->eventType = GF_SG_EVENT_FIELD;
7654 821 : info->fieldType = GF_SG_VRML_SFBOOL;
7655 821 : info->far_ptr = & ((M_ImageTexture *) node)->repeatT;
7656 : return GF_OK;
7657 : default:
7658 : return GF_BAD_PARAM;
7659 : }
7660 : }
7661 :
7662 :
7663 169 : static s32 ImageTexture_get_field_index_by_name(char *name)
7664 : {
7665 169 : if (!strcmp("url", name)) return 0;
7666 60 : if (!strcmp("repeatS", name)) return 1;
7667 30 : if (!strcmp("repeatT", name)) return 2;
7668 0 : return -1;
7669 : }
7670 : static Bool ImageTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7671 : {
7672 : switch (FieldIndex) {
7673 : default:
7674 : return 0;
7675 : }
7676 : }
7677 :
7678 :
7679 :
7680 224 : GF_Node *ImageTexture_Create()
7681 : {
7682 : M_ImageTexture *p;
7683 224 : GF_SAFEALLOC(p, M_ImageTexture);
7684 224 : if(!p) return NULL;
7685 224 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ImageTexture);
7686 :
7687 : /*default field values*/
7688 224 : p->repeatS = 1;
7689 224 : p->repeatT = 1;
7690 224 : return (GF_Node *)p;
7691 : }
7692 :
7693 :
7694 : /*
7695 : IndexedFaceSet Node deletion
7696 : */
7697 :
7698 199 : static void IndexedFaceSet_Del(GF_Node *node)
7699 : {
7700 : M_IndexedFaceSet *p = (M_IndexedFaceSet *) node;
7701 199 : gf_sg_mfint32_del(p->set_colorIndex);
7702 199 : gf_sg_mfint32_del(p->set_coordIndex);
7703 199 : gf_sg_mfint32_del(p->set_normalIndex);
7704 199 : gf_sg_mfint32_del(p->set_texCoordIndex);
7705 199 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
7706 199 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
7707 199 : gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
7708 199 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
7709 199 : gf_sg_mfint32_del(p->colorIndex);
7710 199 : gf_sg_mfint32_del(p->coordIndex);
7711 199 : gf_sg_mfint32_del(p->normalIndex);
7712 199 : gf_sg_mfint32_del(p->texCoordIndex);
7713 199 : gf_node_free((GF_Node *) p);
7714 199 : }
7715 :
7716 : static const u16 IndexedFaceSet_Def2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
7717 : static const u16 IndexedFaceSet_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
7718 : static const u16 IndexedFaceSet_Out2All[] = { 4, 5, 6, 7};
7719 :
7720 : static u32 IndexedFaceSet_get_field_count(GF_Node *node, u8 IndexMode)
7721 : {
7722 : switch(IndexMode) {
7723 : case GF_SG_FIELD_CODING_IN:
7724 : return 8;
7725 : case GF_SG_FIELD_CODING_DEF:
7726 : return 14;
7727 : case GF_SG_FIELD_CODING_OUT:
7728 : return 4;
7729 : case GF_SG_FIELD_CODING_DYN:
7730 : return 0;
7731 : default:
7732 : return 18;
7733 : }
7734 : }
7735 :
7736 : static GF_Err IndexedFaceSet_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7737 : {
7738 948 : switch(IndexMode) {
7739 0 : case GF_SG_FIELD_CODING_IN:
7740 0 : *allField = IndexedFaceSet_In2All[inField];
7741 : return GF_OK;
7742 930 : case GF_SG_FIELD_CODING_DEF:
7743 930 : *allField = IndexedFaceSet_Def2All[inField];
7744 : return GF_OK;
7745 0 : case GF_SG_FIELD_CODING_OUT:
7746 0 : *allField = IndexedFaceSet_Out2All[inField];
7747 : return GF_OK;
7748 : default:
7749 : return GF_BAD_PARAM;
7750 : }
7751 : }
7752 3104 : static GF_Err IndexedFaceSet_get_field(GF_Node *node, GF_FieldInfo *info)
7753 : {
7754 3104 : switch (info->fieldIndex) {
7755 47 : case 0:
7756 47 : info->name = "set_colorIndex";
7757 47 : info->eventType = GF_SG_EVENT_IN;
7758 47 : info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_colorIndex;
7759 47 : info->fieldType = GF_SG_VRML_MFINT32;
7760 47 : info->far_ptr = & ((M_IndexedFaceSet *) node)->set_colorIndex;
7761 47 : return GF_OK;
7762 47 : case 1:
7763 47 : info->name = "set_coordIndex";
7764 47 : info->eventType = GF_SG_EVENT_IN;
7765 47 : info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_coordIndex;
7766 47 : info->fieldType = GF_SG_VRML_MFINT32;
7767 47 : info->far_ptr = & ((M_IndexedFaceSet *) node)->set_coordIndex;
7768 47 : return GF_OK;
7769 47 : case 2:
7770 47 : info->name = "set_normalIndex";
7771 47 : info->eventType = GF_SG_EVENT_IN;
7772 47 : info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_normalIndex;
7773 47 : info->fieldType = GF_SG_VRML_MFINT32;
7774 47 : info->far_ptr = & ((M_IndexedFaceSet *) node)->set_normalIndex;
7775 47 : return GF_OK;
7776 47 : case 3:
7777 47 : info->name = "set_texCoordIndex";
7778 47 : info->eventType = GF_SG_EVENT_IN;
7779 47 : info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_texCoordIndex;
7780 47 : info->fieldType = GF_SG_VRML_MFINT32;
7781 47 : info->far_ptr = & ((M_IndexedFaceSet *) node)->set_texCoordIndex;
7782 47 : return GF_OK;
7783 168 : case 4:
7784 168 : info->name = "color";
7785 168 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7786 168 : info->fieldType = GF_SG_VRML_SFNODE;
7787 168 : info->NDTtype = NDT_SFColorNode;
7788 168 : info->far_ptr = & ((M_IndexedFaceSet *)node)->color;
7789 168 : return GF_OK;
7790 169 : case 5:
7791 169 : info->name = "coord";
7792 169 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7793 169 : info->fieldType = GF_SG_VRML_SFNODE;
7794 169 : info->NDTtype = NDT_SFCoordinateNode;
7795 169 : info->far_ptr = & ((M_IndexedFaceSet *)node)->coord;
7796 169 : return GF_OK;
7797 166 : case 6:
7798 166 : info->name = "normal";
7799 166 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7800 166 : info->fieldType = GF_SG_VRML_SFNODE;
7801 166 : info->NDTtype = NDT_SFNormalNode;
7802 166 : info->far_ptr = & ((M_IndexedFaceSet *)node)->normal;
7803 166 : return GF_OK;
7804 107 : case 7:
7805 107 : info->name = "texCoord";
7806 107 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
7807 107 : info->fieldType = GF_SG_VRML_SFNODE;
7808 107 : info->NDTtype = NDT_SFTextureCoordinateNode;
7809 107 : info->far_ptr = & ((M_IndexedFaceSet *)node)->texCoord;
7810 107 : return GF_OK;
7811 213 : case 8:
7812 213 : info->name = "ccw";
7813 213 : info->eventType = GF_SG_EVENT_FIELD;
7814 213 : info->fieldType = GF_SG_VRML_SFBOOL;
7815 213 : info->far_ptr = & ((M_IndexedFaceSet *) node)->ccw;
7816 213 : return GF_OK;
7817 213 : case 9:
7818 213 : info->name = "colorIndex";
7819 213 : info->eventType = GF_SG_EVENT_FIELD;
7820 213 : info->fieldType = GF_SG_VRML_MFINT32;
7821 213 : info->far_ptr = & ((M_IndexedFaceSet *) node)->colorIndex;
7822 213 : return GF_OK;
7823 214 : case 10:
7824 214 : info->name = "colorPerVertex";
7825 214 : info->eventType = GF_SG_EVENT_FIELD;
7826 214 : info->fieldType = GF_SG_VRML_SFBOOL;
7827 214 : info->far_ptr = & ((M_IndexedFaceSet *) node)->colorPerVertex;
7828 214 : return GF_OK;
7829 212 : case 11:
7830 212 : info->name = "convex";
7831 212 : info->eventType = GF_SG_EVENT_FIELD;
7832 212 : info->fieldType = GF_SG_VRML_SFBOOL;
7833 212 : info->far_ptr = & ((M_IndexedFaceSet *) node)->convex;
7834 212 : return GF_OK;
7835 274 : case 12:
7836 274 : info->name = "coordIndex";
7837 274 : info->eventType = GF_SG_EVENT_FIELD;
7838 274 : info->fieldType = GF_SG_VRML_MFINT32;
7839 274 : info->far_ptr = & ((M_IndexedFaceSet *) node)->coordIndex;
7840 274 : return GF_OK;
7841 272 : case 13:
7842 272 : info->name = "creaseAngle";
7843 272 : info->eventType = GF_SG_EVENT_FIELD;
7844 272 : info->fieldType = GF_SG_VRML_SFFLOAT;
7845 272 : info->far_ptr = & ((M_IndexedFaceSet *) node)->creaseAngle;
7846 272 : return GF_OK;
7847 212 : case 14:
7848 212 : info->name = "normalIndex";
7849 212 : info->eventType = GF_SG_EVENT_FIELD;
7850 212 : info->fieldType = GF_SG_VRML_MFINT32;
7851 212 : info->far_ptr = & ((M_IndexedFaceSet *) node)->normalIndex;
7852 212 : return GF_OK;
7853 212 : case 15:
7854 212 : info->name = "normalPerVertex";
7855 212 : info->eventType = GF_SG_EVENT_FIELD;
7856 212 : info->fieldType = GF_SG_VRML_SFBOOL;
7857 212 : info->far_ptr = & ((M_IndexedFaceSet *) node)->normalPerVertex;
7858 212 : return GF_OK;
7859 272 : case 16:
7860 272 : info->name = "solid";
7861 272 : info->eventType = GF_SG_EVENT_FIELD;
7862 272 : info->fieldType = GF_SG_VRML_SFBOOL;
7863 272 : info->far_ptr = & ((M_IndexedFaceSet *) node)->solid;
7864 272 : return GF_OK;
7865 212 : case 17:
7866 212 : info->name = "texCoordIndex";
7867 212 : info->eventType = GF_SG_EVENT_FIELD;
7868 212 : info->fieldType = GF_SG_VRML_MFINT32;
7869 212 : info->far_ptr = & ((M_IndexedFaceSet *) node)->texCoordIndex;
7870 212 : return GF_OK;
7871 : default:
7872 : return GF_BAD_PARAM;
7873 : }
7874 : }
7875 :
7876 :
7877 122 : static s32 IndexedFaceSet_get_field_index_by_name(char *name)
7878 : {
7879 122 : if (!strcmp("set_colorIndex", name)) return 0;
7880 121 : if (!strcmp("set_coordIndex", name)) return 1;
7881 120 : if (!strcmp("set_normalIndex", name)) return 2;
7882 119 : if (!strcmp("set_texCoordIndex", name)) return 3;
7883 118 : if (!strcmp("color", name)) return 4;
7884 100 : if (!strcmp("coord", name)) return 5;
7885 81 : if (!strcmp("normal", name)) return 6;
7886 65 : if (!strcmp("texCoord", name)) return 7;
7887 64 : if (!strcmp("ccw", name)) return 8;
7888 62 : if (!strcmp("colorIndex", name)) return 9;
7889 60 : if (!strcmp("colorPerVertex", name)) return 10;
7890 57 : if (!strcmp("convex", name)) return 11;
7891 56 : if (!strcmp("coordIndex", name)) return 12;
7892 37 : if (!strcmp("creaseAngle", name)) return 13;
7893 20 : if (!strcmp("normalIndex", name)) return 14;
7894 19 : if (!strcmp("normalPerVertex", name)) return 15;
7895 18 : if (!strcmp("solid", name)) return 16;
7896 1 : if (!strcmp("texCoordIndex", name)) return 17;
7897 0 : return -1;
7898 : }
7899 266 : static Bool IndexedFaceSet_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
7900 : {
7901 266 : switch (FieldIndex) {
7902 1 : case 9:
7903 1 : *AType = 0;
7904 1 : *QType = 14;
7905 1 : *b_min = FLT2FIX(-1);
7906 1 : *b_max = FIX_MAX;
7907 : return 1;
7908 241 : case 12:
7909 241 : *AType = 0;
7910 241 : *QType = 14;
7911 241 : *b_min = FLT2FIX(-1);
7912 241 : *b_max = FIX_MAX;
7913 : return 1;
7914 9 : case 13:
7915 9 : *AType = 0;
7916 9 : *QType = 6;
7917 9 : *b_min = FLT2FIX(0);
7918 9 : *b_max = FLT2FIX(6.2831853);
7919 : return 1;
7920 1 : case 14:
7921 1 : *AType = 0;
7922 1 : *QType = 14;
7923 1 : *b_min = FLT2FIX(-1);
7924 1 : *b_max = FIX_MAX;
7925 : return 1;
7926 1 : case 17:
7927 1 : *AType = 0;
7928 1 : *QType = 14;
7929 1 : *b_min = FLT2FIX(-1);
7930 1 : *b_max = FIX_MAX;
7931 : return 1;
7932 : default:
7933 : return 0;
7934 : }
7935 : }
7936 :
7937 :
7938 :
7939 199 : GF_Node *IndexedFaceSet_Create()
7940 : {
7941 : M_IndexedFaceSet *p;
7942 199 : GF_SAFEALLOC(p, M_IndexedFaceSet);
7943 199 : if(!p) return NULL;
7944 199 : gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedFaceSet);
7945 :
7946 : /*default field values*/
7947 199 : p->ccw = 1;
7948 199 : p->colorPerVertex = 1;
7949 199 : p->convex = 1;
7950 199 : p->creaseAngle = FLT2FIX(0.0);
7951 199 : p->normalPerVertex = 1;
7952 199 : p->solid = 1;
7953 199 : return (GF_Node *)p;
7954 : }
7955 :
7956 :
7957 : /*
7958 : IndexedFaceSet2D Node deletion
7959 : */
7960 :
7961 363 : static void IndexedFaceSet2D_Del(GF_Node *node)
7962 : {
7963 : M_IndexedFaceSet2D *p = (M_IndexedFaceSet2D *) node;
7964 363 : gf_sg_mfint32_del(p->set_colorIndex);
7965 363 : gf_sg_mfint32_del(p->set_coordIndex);
7966 363 : gf_sg_mfint32_del(p->set_texCoordIndex);
7967 363 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
7968 363 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
7969 363 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
7970 363 : gf_sg_mfint32_del(p->colorIndex);
7971 363 : gf_sg_mfint32_del(p->coordIndex);
7972 363 : gf_sg_mfint32_del(p->texCoordIndex);
7973 363 : gf_node_free((GF_Node *) p);
7974 363 : }
7975 :
7976 : static const u16 IndexedFaceSet2D_Def2All[] = { 3, 4, 5, 6, 7, 8, 9, 10};
7977 : static const u16 IndexedFaceSet2D_In2All[] = { 0, 1, 2, 3, 4, 5};
7978 : static const u16 IndexedFaceSet2D_Out2All[] = { 3, 4, 5};
7979 :
7980 : static u32 IndexedFaceSet2D_get_field_count(GF_Node *node, u8 IndexMode)
7981 : {
7982 : switch(IndexMode) {
7983 : case GF_SG_FIELD_CODING_IN:
7984 : return 6;
7985 : case GF_SG_FIELD_CODING_DEF:
7986 : return 8;
7987 : case GF_SG_FIELD_CODING_OUT:
7988 : return 3;
7989 : case GF_SG_FIELD_CODING_DYN:
7990 : return 0;
7991 : default:
7992 : return 11;
7993 : }
7994 : }
7995 :
7996 : static GF_Err IndexedFaceSet2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
7997 : {
7998 667 : switch(IndexMode) {
7999 0 : case GF_SG_FIELD_CODING_IN:
8000 0 : *allField = IndexedFaceSet2D_In2All[inField];
8001 : return GF_OK;
8002 656 : case GF_SG_FIELD_CODING_DEF:
8003 656 : *allField = IndexedFaceSet2D_Def2All[inField];
8004 : return GF_OK;
8005 0 : case GF_SG_FIELD_CODING_OUT:
8006 0 : *allField = IndexedFaceSet2D_Out2All[inField];
8007 : return GF_OK;
8008 : default:
8009 : return GF_BAD_PARAM;
8010 : }
8011 : }
8012 2727 : static GF_Err IndexedFaceSet2D_get_field(GF_Node *node, GF_FieldInfo *info)
8013 : {
8014 2727 : switch (info->fieldIndex) {
8015 87 : case 0:
8016 87 : info->name = "set_colorIndex";
8017 87 : info->eventType = GF_SG_EVENT_IN;
8018 87 : info->on_event_in = ((M_IndexedFaceSet2D *)node)->on_set_colorIndex;
8019 87 : info->fieldType = GF_SG_VRML_MFINT32;
8020 87 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->set_colorIndex;
8021 87 : return GF_OK;
8022 87 : case 1:
8023 87 : info->name = "set_coordIndex";
8024 87 : info->eventType = GF_SG_EVENT_IN;
8025 87 : info->on_event_in = ((M_IndexedFaceSet2D *)node)->on_set_coordIndex;
8026 87 : info->fieldType = GF_SG_VRML_MFINT32;
8027 87 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->set_coordIndex;
8028 87 : return GF_OK;
8029 87 : case 2:
8030 87 : info->name = "set_texCoordIndex";
8031 87 : info->eventType = GF_SG_EVENT_IN;
8032 87 : info->on_event_in = ((M_IndexedFaceSet2D *)node)->on_set_texCoordIndex;
8033 87 : info->fieldType = GF_SG_VRML_MFINT32;
8034 87 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->set_texCoordIndex;
8035 87 : return GF_OK;
8036 162 : case 3:
8037 162 : info->name = "color";
8038 162 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8039 162 : info->fieldType = GF_SG_VRML_SFNODE;
8040 162 : info->NDTtype = NDT_SFColorNode;
8041 162 : info->far_ptr = & ((M_IndexedFaceSet2D *)node)->color;
8042 162 : return GF_OK;
8043 486 : case 4:
8044 486 : info->name = "coord";
8045 486 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8046 486 : info->fieldType = GF_SG_VRML_SFNODE;
8047 486 : info->NDTtype = NDT_SFCoordinate2DNode;
8048 486 : info->far_ptr = & ((M_IndexedFaceSet2D *)node)->coord;
8049 486 : return GF_OK;
8050 159 : case 5:
8051 159 : info->name = "texCoord";
8052 159 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8053 159 : info->fieldType = GF_SG_VRML_SFNODE;
8054 159 : info->NDTtype = NDT_SFTextureCoordinateNode;
8055 159 : info->far_ptr = & ((M_IndexedFaceSet2D *)node)->texCoord;
8056 159 : return GF_OK;
8057 380 : case 6:
8058 380 : info->name = "colorIndex";
8059 380 : info->eventType = GF_SG_EVENT_FIELD;
8060 380 : info->fieldType = GF_SG_VRML_MFINT32;
8061 380 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->colorIndex;
8062 380 : return GF_OK;
8063 324 : case 7:
8064 324 : info->name = "colorPerVertex";
8065 324 : info->eventType = GF_SG_EVENT_FIELD;
8066 324 : info->fieldType = GF_SG_VRML_SFBOOL;
8067 324 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->colorPerVertex;
8068 324 : return GF_OK;
8069 306 : case 8:
8070 306 : info->name = "convex";
8071 306 : info->eventType = GF_SG_EVENT_FIELD;
8072 306 : info->fieldType = GF_SG_VRML_SFBOOL;
8073 306 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->convex;
8074 306 : return GF_OK;
8075 343 : case 9:
8076 343 : info->name = "coordIndex";
8077 343 : info->eventType = GF_SG_EVENT_FIELD;
8078 343 : info->fieldType = GF_SG_VRML_MFINT32;
8079 343 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->coordIndex;
8080 343 : return GF_OK;
8081 306 : case 10:
8082 306 : info->name = "texCoordIndex";
8083 306 : info->eventType = GF_SG_EVENT_FIELD;
8084 306 : info->fieldType = GF_SG_VRML_MFINT32;
8085 306 : info->far_ptr = & ((M_IndexedFaceSet2D *) node)->texCoordIndex;
8086 306 : return GF_OK;
8087 : default:
8088 : return GF_BAD_PARAM;
8089 : }
8090 : }
8091 :
8092 :
8093 262 : static s32 IndexedFaceSet2D_get_field_index_by_name(char *name)
8094 : {
8095 262 : if (!strcmp("set_colorIndex", name)) return 0;
8096 261 : if (!strcmp("set_coordIndex", name)) return 1;
8097 260 : if (!strcmp("set_texCoordIndex", name)) return 2;
8098 259 : if (!strcmp("color", name)) return 3;
8099 255 : if (!strcmp("coord", name)) return 4;
8100 119 : if (!strcmp("texCoord", name)) return 5;
8101 118 : if (!strcmp("colorIndex", name)) return 6;
8102 44 : if (!strcmp("colorPerVertex", name)) return 7;
8103 25 : if (!strcmp("convex", name)) return 8;
8104 24 : if (!strcmp("coordIndex", name)) return 9;
8105 1 : if (!strcmp("texCoordIndex", name)) return 10;
8106 0 : return -1;
8107 : }
8108 : static Bool IndexedFaceSet2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8109 : {
8110 83 : switch (FieldIndex) {
8111 1 : case 6:
8112 1 : *AType = 0;
8113 1 : *QType = 14;
8114 1 : *b_min = FLT2FIX(-1);
8115 1 : *b_max = FIX_MAX;
8116 : return 1;
8117 73 : case 9:
8118 73 : *AType = 0;
8119 73 : *QType = 14;
8120 73 : *b_min = FLT2FIX(-1);
8121 73 : *b_max = FIX_MAX;
8122 : return 1;
8123 1 : case 10:
8124 1 : *AType = 0;
8125 1 : *QType = 14;
8126 1 : *b_min = FLT2FIX(-1);
8127 1 : *b_max = FIX_MAX;
8128 : return 1;
8129 : default:
8130 : return 0;
8131 : }
8132 : }
8133 :
8134 :
8135 :
8136 363 : GF_Node *IndexedFaceSet2D_Create()
8137 : {
8138 : M_IndexedFaceSet2D *p;
8139 363 : GF_SAFEALLOC(p, M_IndexedFaceSet2D);
8140 363 : if(!p) return NULL;
8141 363 : gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedFaceSet2D);
8142 :
8143 : /*default field values*/
8144 363 : p->colorPerVertex = 1;
8145 363 : p->convex = 1;
8146 363 : return (GF_Node *)p;
8147 : }
8148 :
8149 :
8150 : /*
8151 : IndexedLineSet Node deletion
8152 : */
8153 :
8154 68 : static void IndexedLineSet_Del(GF_Node *node)
8155 : {
8156 : M_IndexedLineSet *p = (M_IndexedLineSet *) node;
8157 68 : gf_sg_mfint32_del(p->set_colorIndex);
8158 68 : gf_sg_mfint32_del(p->set_coordIndex);
8159 68 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
8160 68 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
8161 68 : gf_sg_mfint32_del(p->colorIndex);
8162 68 : gf_sg_mfint32_del(p->coordIndex);
8163 68 : gf_node_free((GF_Node *) p);
8164 68 : }
8165 :
8166 : static const u16 IndexedLineSet_Def2All[] = { 2, 3, 4, 5, 6};
8167 : static const u16 IndexedLineSet_In2All[] = { 0, 1, 2, 3};
8168 : static const u16 IndexedLineSet_Out2All[] = { 2, 3};
8169 :
8170 : static u32 IndexedLineSet_get_field_count(GF_Node *node, u8 IndexMode)
8171 : {
8172 : switch(IndexMode) {
8173 : case GF_SG_FIELD_CODING_IN:
8174 : return 4;
8175 : case GF_SG_FIELD_CODING_DEF:
8176 : return 5;
8177 : case GF_SG_FIELD_CODING_OUT:
8178 : return 2;
8179 : case GF_SG_FIELD_CODING_DYN:
8180 : return 0;
8181 : default:
8182 : return 7;
8183 : }
8184 : }
8185 :
8186 : static GF_Err IndexedLineSet_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8187 : {
8188 167 : switch(IndexMode) {
8189 0 : case GF_SG_FIELD_CODING_IN:
8190 0 : *allField = IndexedLineSet_In2All[inField];
8191 : return GF_OK;
8192 160 : case GF_SG_FIELD_CODING_DEF:
8193 160 : *allField = IndexedLineSet_Def2All[inField];
8194 : return GF_OK;
8195 0 : case GF_SG_FIELD_CODING_OUT:
8196 0 : *allField = IndexedLineSet_Out2All[inField];
8197 : return GF_OK;
8198 : default:
8199 : return GF_BAD_PARAM;
8200 : }
8201 : }
8202 570 : static GF_Err IndexedLineSet_get_field(GF_Node *node, GF_FieldInfo *info)
8203 : {
8204 570 : switch (info->fieldIndex) {
8205 17 : case 0:
8206 17 : info->name = "set_colorIndex";
8207 17 : info->eventType = GF_SG_EVENT_IN;
8208 17 : info->on_event_in = ((M_IndexedLineSet *)node)->on_set_colorIndex;
8209 17 : info->fieldType = GF_SG_VRML_MFINT32;
8210 17 : info->far_ptr = & ((M_IndexedLineSet *) node)->set_colorIndex;
8211 17 : return GF_OK;
8212 17 : case 1:
8213 17 : info->name = "set_coordIndex";
8214 17 : info->eventType = GF_SG_EVENT_IN;
8215 17 : info->on_event_in = ((M_IndexedLineSet *)node)->on_set_coordIndex;
8216 17 : info->fieldType = GF_SG_VRML_MFINT32;
8217 17 : info->far_ptr = & ((M_IndexedLineSet *) node)->set_coordIndex;
8218 17 : return GF_OK;
8219 98 : case 2:
8220 98 : info->name = "color";
8221 98 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8222 98 : info->fieldType = GF_SG_VRML_SFNODE;
8223 98 : info->NDTtype = NDT_SFColorNode;
8224 98 : info->far_ptr = & ((M_IndexedLineSet *)node)->color;
8225 98 : return GF_OK;
8226 98 : case 3:
8227 98 : info->name = "coord";
8228 98 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8229 98 : info->fieldType = GF_SG_VRML_SFNODE;
8230 98 : info->NDTtype = NDT_SFCoordinateNode;
8231 98 : info->far_ptr = & ((M_IndexedLineSet *)node)->coord;
8232 98 : return GF_OK;
8233 133 : case 4:
8234 133 : info->name = "colorIndex";
8235 133 : info->eventType = GF_SG_EVENT_FIELD;
8236 133 : info->fieldType = GF_SG_VRML_MFINT32;
8237 133 : info->far_ptr = & ((M_IndexedLineSet *) node)->colorIndex;
8238 133 : return GF_OK;
8239 74 : case 5:
8240 74 : info->name = "colorPerVertex";
8241 74 : info->eventType = GF_SG_EVENT_FIELD;
8242 74 : info->fieldType = GF_SG_VRML_SFBOOL;
8243 74 : info->far_ptr = & ((M_IndexedLineSet *) node)->colorPerVertex;
8244 74 : return GF_OK;
8245 133 : case 6:
8246 133 : info->name = "coordIndex";
8247 133 : info->eventType = GF_SG_EVENT_FIELD;
8248 133 : info->fieldType = GF_SG_VRML_MFINT32;
8249 133 : info->far_ptr = & ((M_IndexedLineSet *) node)->coordIndex;
8250 133 : return GF_OK;
8251 : default:
8252 : return GF_BAD_PARAM;
8253 : }
8254 : }
8255 :
8256 :
8257 77 : static s32 IndexedLineSet_get_field_index_by_name(char *name)
8258 : {
8259 77 : if (!strcmp("set_colorIndex", name)) return 0;
8260 76 : if (!strcmp("set_coordIndex", name)) return 1;
8261 75 : if (!strcmp("color", name)) return 2;
8262 57 : if (!strcmp("coord", name)) return 3;
8263 39 : if (!strcmp("colorIndex", name)) return 4;
8264 21 : if (!strcmp("colorPerVertex", name)) return 5;
8265 18 : if (!strcmp("coordIndex", name)) return 6;
8266 0 : return -1;
8267 : }
8268 : static Bool IndexedLineSet_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8269 : {
8270 375 : switch (FieldIndex) {
8271 185 : case 4:
8272 185 : *AType = 0;
8273 185 : *QType = 14;
8274 185 : *b_min = FLT2FIX(-1);
8275 185 : *b_max = FIX_MAX;
8276 : return 1;
8277 185 : case 6:
8278 185 : *AType = 0;
8279 185 : *QType = 14;
8280 185 : *b_min = FLT2FIX(-1);
8281 185 : *b_max = FIX_MAX;
8282 : return 1;
8283 : default:
8284 : return 0;
8285 : }
8286 : }
8287 :
8288 :
8289 :
8290 68 : GF_Node *IndexedLineSet_Create()
8291 : {
8292 : M_IndexedLineSet *p;
8293 68 : GF_SAFEALLOC(p, M_IndexedLineSet);
8294 68 : if(!p) return NULL;
8295 68 : gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedLineSet);
8296 :
8297 : /*default field values*/
8298 68 : p->colorPerVertex = 1;
8299 68 : return (GF_Node *)p;
8300 : }
8301 :
8302 :
8303 : /*
8304 : IndexedLineSet2D Node deletion
8305 : */
8306 :
8307 109 : static void IndexedLineSet2D_Del(GF_Node *node)
8308 : {
8309 : M_IndexedLineSet2D *p = (M_IndexedLineSet2D *) node;
8310 109 : gf_sg_mfint32_del(p->set_colorIndex);
8311 109 : gf_sg_mfint32_del(p->set_coordIndex);
8312 109 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
8313 109 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
8314 109 : gf_sg_mfint32_del(p->colorIndex);
8315 109 : gf_sg_mfint32_del(p->coordIndex);
8316 109 : gf_node_free((GF_Node *) p);
8317 109 : }
8318 :
8319 : static const u16 IndexedLineSet2D_Def2All[] = { 2, 3, 4, 5, 6};
8320 : static const u16 IndexedLineSet2D_In2All[] = { 0, 1, 2, 3};
8321 : static const u16 IndexedLineSet2D_Out2All[] = { 2, 3};
8322 :
8323 : static u32 IndexedLineSet2D_get_field_count(GF_Node *node, u8 IndexMode)
8324 : {
8325 : switch(IndexMode) {
8326 : case GF_SG_FIELD_CODING_IN:
8327 : return 4;
8328 : case GF_SG_FIELD_CODING_DEF:
8329 : return 5;
8330 : case GF_SG_FIELD_CODING_OUT:
8331 : return 2;
8332 : case GF_SG_FIELD_CODING_DYN:
8333 : return 0;
8334 : default:
8335 : return 7;
8336 : }
8337 : }
8338 :
8339 : static GF_Err IndexedLineSet2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8340 : {
8341 122 : switch(IndexMode) {
8342 0 : case GF_SG_FIELD_CODING_IN:
8343 0 : *allField = IndexedLineSet2D_In2All[inField];
8344 : return GF_OK;
8345 115 : case GF_SG_FIELD_CODING_DEF:
8346 115 : *allField = IndexedLineSet2D_Def2All[inField];
8347 : return GF_OK;
8348 0 : case GF_SG_FIELD_CODING_OUT:
8349 0 : *allField = IndexedLineSet2D_Out2All[inField];
8350 : return GF_OK;
8351 : default:
8352 : return GF_BAD_PARAM;
8353 : }
8354 : }
8355 445 : static GF_Err IndexedLineSet2D_get_field(GF_Node *node, GF_FieldInfo *info)
8356 : {
8357 445 : switch (info->fieldIndex) {
8358 17 : case 0:
8359 17 : info->name = "set_colorIndex";
8360 17 : info->eventType = GF_SG_EVENT_IN;
8361 17 : info->on_event_in = ((M_IndexedLineSet2D *)node)->on_set_colorIndex;
8362 17 : info->fieldType = GF_SG_VRML_MFINT32;
8363 17 : info->far_ptr = & ((M_IndexedLineSet2D *) node)->set_colorIndex;
8364 17 : return GF_OK;
8365 17 : case 1:
8366 17 : info->name = "set_coordIndex";
8367 17 : info->eventType = GF_SG_EVENT_IN;
8368 17 : info->on_event_in = ((M_IndexedLineSet2D *)node)->on_set_coordIndex;
8369 17 : info->fieldType = GF_SG_VRML_MFINT32;
8370 17 : info->far_ptr = & ((M_IndexedLineSet2D *) node)->set_coordIndex;
8371 17 : return GF_OK;
8372 39 : case 2:
8373 39 : info->name = "color";
8374 39 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8375 39 : info->fieldType = GF_SG_VRML_SFNODE;
8376 39 : info->NDTtype = NDT_SFColorNode;
8377 39 : info->far_ptr = & ((M_IndexedLineSet2D *)node)->color;
8378 39 : return GF_OK;
8379 139 : case 3:
8380 139 : info->name = "coord";
8381 139 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8382 139 : info->fieldType = GF_SG_VRML_SFNODE;
8383 139 : info->NDTtype = NDT_SFCoordinate2DNode;
8384 139 : info->far_ptr = & ((M_IndexedLineSet2D *)node)->coord;
8385 139 : return GF_OK;
8386 74 : case 4:
8387 74 : info->name = "colorIndex";
8388 74 : info->eventType = GF_SG_EVENT_FIELD;
8389 74 : info->fieldType = GF_SG_VRML_MFINT32;
8390 74 : info->far_ptr = & ((M_IndexedLineSet2D *) node)->colorIndex;
8391 74 : return GF_OK;
8392 74 : case 5:
8393 74 : info->name = "colorPerVertex";
8394 74 : info->eventType = GF_SG_EVENT_FIELD;
8395 74 : info->fieldType = GF_SG_VRML_SFBOOL;
8396 74 : info->far_ptr = & ((M_IndexedLineSet2D *) node)->colorPerVertex;
8397 74 : return GF_OK;
8398 85 : case 6:
8399 85 : info->name = "coordIndex";
8400 85 : info->eventType = GF_SG_EVENT_FIELD;
8401 85 : info->fieldType = GF_SG_VRML_MFINT32;
8402 85 : info->far_ptr = & ((M_IndexedLineSet2D *) node)->coordIndex;
8403 85 : return GF_OK;
8404 : default:
8405 : return GF_BAD_PARAM;
8406 : }
8407 : }
8408 :
8409 :
8410 84 : static s32 IndexedLineSet2D_get_field_index_by_name(char *name)
8411 : {
8412 84 : if (!strcmp("set_colorIndex", name)) return 0;
8413 83 : if (!strcmp("set_coordIndex", name)) return 1;
8414 82 : if (!strcmp("color", name)) return 2;
8415 79 : if (!strcmp("coord", name)) return 3;
8416 20 : if (!strcmp("colorIndex", name)) return 4;
8417 17 : if (!strcmp("colorPerVertex", name)) return 5;
8418 14 : if (!strcmp("coordIndex", name)) return 6;
8419 0 : return -1;
8420 : }
8421 : static Bool IndexedLineSet2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8422 : {
8423 7 : switch (FieldIndex) {
8424 1 : case 4:
8425 1 : *AType = 0;
8426 1 : *QType = 14;
8427 1 : *b_min = FLT2FIX(-1);
8428 1 : *b_max = FIX_MAX;
8429 : return 1;
8430 1 : case 6:
8431 1 : *AType = 0;
8432 1 : *QType = 14;
8433 1 : *b_min = FLT2FIX(-1);
8434 1 : *b_max = FIX_MAX;
8435 : return 1;
8436 : default:
8437 : return 0;
8438 : }
8439 : }
8440 :
8441 :
8442 :
8443 109 : GF_Node *IndexedLineSet2D_Create()
8444 : {
8445 : M_IndexedLineSet2D *p;
8446 109 : GF_SAFEALLOC(p, M_IndexedLineSet2D);
8447 109 : if(!p) return NULL;
8448 109 : gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedLineSet2D);
8449 :
8450 : /*default field values*/
8451 109 : p->colorPerVertex = 1;
8452 109 : return (GF_Node *)p;
8453 : }
8454 :
8455 :
8456 : /*
8457 : Inline Node deletion
8458 : */
8459 :
8460 : static void Inline_Del(GF_Node *node)
8461 : {
8462 : M_Inline *p = (M_Inline *) node;
8463 729 : gf_sg_mfurl_del(p->url);
8464 729 : gf_node_free((GF_Node *) p);
8465 : }
8466 :
8467 : static const u16 Inline_Def2All[] = { 0};
8468 : static const u16 Inline_In2All[] = { 0};
8469 : static const u16 Inline_Out2All[] = { 0};
8470 :
8471 : static u32 Inline_get_field_count(GF_Node *node, u8 IndexMode)
8472 : {
8473 6 : switch(IndexMode) {
8474 : case GF_SG_FIELD_CODING_IN:
8475 : return 1;
8476 : case GF_SG_FIELD_CODING_DEF:
8477 : return 1;
8478 : case GF_SG_FIELD_CODING_OUT:
8479 : return 1;
8480 1 : case GF_SG_FIELD_CODING_DYN:
8481 : return 0;
8482 : default:
8483 : return 1;
8484 : }
8485 : }
8486 :
8487 : static GF_Err Inline_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8488 : {
8489 1 : switch(IndexMode) {
8490 0 : case GF_SG_FIELD_CODING_IN:
8491 0 : *allField = Inline_In2All[inField];
8492 : return GF_OK;
8493 0 : case GF_SG_FIELD_CODING_DEF:
8494 0 : *allField = Inline_Def2All[inField];
8495 : return GF_OK;
8496 0 : case GF_SG_FIELD_CODING_OUT:
8497 0 : *allField = Inline_Out2All[inField];
8498 : return GF_OK;
8499 : default:
8500 : return GF_BAD_PARAM;
8501 : }
8502 : }
8503 : static GF_Err Inline_get_field(GF_Node *node, GF_FieldInfo *info)
8504 : {
8505 202 : switch (info->fieldIndex) {
8506 202 : case 0:
8507 202 : info->name = "url";
8508 202 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8509 202 : info->fieldType = GF_SG_VRML_MFURL;
8510 202 : info->far_ptr = & ((M_Inline *) node)->url;
8511 : return GF_OK;
8512 : default:
8513 : return GF_BAD_PARAM;
8514 : }
8515 : }
8516 :
8517 :
8518 : static s32 Inline_get_field_index_by_name(char *name)
8519 : {
8520 188 : if (!strcmp("url", name)) return 0;
8521 : return -1;
8522 : }
8523 : static Bool Inline_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8524 : {
8525 : switch (FieldIndex) {
8526 : default:
8527 : return 0;
8528 : }
8529 : }
8530 :
8531 :
8532 :
8533 729 : GF_Node *Inline_Create()
8534 : {
8535 : M_Inline *p;
8536 729 : GF_SAFEALLOC(p, M_Inline);
8537 729 : if(!p) return NULL;
8538 729 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Inline);
8539 :
8540 : /*default field values*/
8541 729 : return (GF_Node *)p;
8542 : }
8543 :
8544 :
8545 : /*
8546 : LOD Node deletion
8547 : */
8548 :
8549 2 : static void LOD_Del(GF_Node *node)
8550 : {
8551 : M_LOD *p = (M_LOD *) node;
8552 2 : gf_node_unregister_children((GF_Node *) p, p->level);
8553 2 : gf_sg_mffloat_del(p->range);
8554 2 : gf_node_free((GF_Node *) p);
8555 2 : }
8556 :
8557 : static const u16 LOD_Def2All[] = { 0, 1, 2};
8558 : static const u16 LOD_In2All[] = { 0};
8559 : static const u16 LOD_Out2All[] = { 0};
8560 :
8561 : static u32 LOD_get_field_count(GF_Node *node, u8 IndexMode)
8562 : {
8563 : switch(IndexMode) {
8564 : case GF_SG_FIELD_CODING_IN:
8565 : return 1;
8566 : case GF_SG_FIELD_CODING_DEF:
8567 : return 3;
8568 : case GF_SG_FIELD_CODING_OUT:
8569 : return 1;
8570 : case GF_SG_FIELD_CODING_DYN:
8571 : return 0;
8572 : default:
8573 : return 3;
8574 : }
8575 : }
8576 :
8577 : static GF_Err LOD_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8578 : {
8579 3 : switch(IndexMode) {
8580 0 : case GF_SG_FIELD_CODING_IN:
8581 0 : *allField = LOD_In2All[inField];
8582 : return GF_OK;
8583 0 : case GF_SG_FIELD_CODING_DEF:
8584 0 : *allField = LOD_Def2All[inField];
8585 : return GF_OK;
8586 0 : case GF_SG_FIELD_CODING_OUT:
8587 0 : *allField = LOD_Out2All[inField];
8588 : return GF_OK;
8589 : default:
8590 : return GF_BAD_PARAM;
8591 : }
8592 : }
8593 : static GF_Err LOD_get_field(GF_Node *node, GF_FieldInfo *info)
8594 : {
8595 9 : switch (info->fieldIndex) {
8596 3 : case 0:
8597 3 : info->name = "level";
8598 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8599 3 : info->fieldType = GF_SG_VRML_MFNODE;
8600 3 : info->NDTtype = NDT_SF3DNode;
8601 3 : info->far_ptr = & ((M_LOD *)node)->level;
8602 : return GF_OK;
8603 3 : case 1:
8604 3 : info->name = "center";
8605 3 : info->eventType = GF_SG_EVENT_FIELD;
8606 3 : info->fieldType = GF_SG_VRML_SFVEC3F;
8607 3 : info->far_ptr = & ((M_LOD *) node)->center;
8608 : return GF_OK;
8609 3 : case 2:
8610 3 : info->name = "range";
8611 3 : info->eventType = GF_SG_EVENT_FIELD;
8612 3 : info->fieldType = GF_SG_VRML_MFFLOAT;
8613 3 : info->far_ptr = & ((M_LOD *) node)->range;
8614 : return GF_OK;
8615 : default:
8616 : return GF_BAD_PARAM;
8617 : }
8618 : }
8619 :
8620 :
8621 6 : static s32 LOD_get_field_index_by_name(char *name)
8622 : {
8623 6 : if (!strcmp("level", name)) return 0;
8624 4 : if (!strcmp("center", name)) return 1;
8625 2 : if (!strcmp("range", name)) return 2;
8626 0 : return -1;
8627 : }
8628 : static Bool LOD_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8629 : {
8630 3 : switch (FieldIndex) {
8631 1 : case 1:
8632 1 : *AType = 0;
8633 1 : *QType = 1;
8634 1 : *b_min = FIX_MIN;
8635 1 : *b_max = FIX_MAX;
8636 : return 1;
8637 1 : case 2:
8638 1 : *AType = 0;
8639 1 : *QType = 11;
8640 1 : *b_min = FLT2FIX(0);
8641 1 : *b_max = FIX_MAX;
8642 : return 1;
8643 : default:
8644 : return 0;
8645 : }
8646 : }
8647 :
8648 :
8649 :
8650 2 : GF_Node *LOD_Create()
8651 : {
8652 : M_LOD *p;
8653 2 : GF_SAFEALLOC(p, M_LOD);
8654 2 : if(!p) return NULL;
8655 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_LOD);
8656 :
8657 : /*default field values*/
8658 2 : p->center.x = FLT2FIX(0);
8659 2 : p->center.y = FLT2FIX(0);
8660 2 : p->center.z = FLT2FIX(0);
8661 2 : return (GF_Node *)p;
8662 : }
8663 :
8664 :
8665 : /*
8666 : Layer2D Node deletion
8667 : */
8668 :
8669 444 : static void Layer2D_Del(GF_Node *node)
8670 : {
8671 : M_Layer2D *p = (M_Layer2D *) node;
8672 444 : gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
8673 444 : gf_node_unregister((GF_Node *) p->viewport, (GF_Node *) p);
8674 444 : gf_sg_vrml_parent_destroy((GF_Node *) p);
8675 444 : gf_node_free((GF_Node *) p);
8676 444 : }
8677 :
8678 : static const u16 Layer2D_Def2All[] = { 2, 3, 4, 5};
8679 : static const u16 Layer2D_In2All[] = { 0, 1, 2, 3, 4, 5};
8680 : static const u16 Layer2D_Out2All[] = { 2, 3, 4, 5};
8681 : static const u16 Layer2D_Dyn2All[] = { 3};
8682 :
8683 : static u32 Layer2D_get_field_count(GF_Node *node, u8 IndexMode)
8684 : {
8685 : switch(IndexMode) {
8686 : case GF_SG_FIELD_CODING_IN:
8687 : return 6;
8688 : case GF_SG_FIELD_CODING_DEF:
8689 : return 4;
8690 : case GF_SG_FIELD_CODING_OUT:
8691 : return 4;
8692 : case GF_SG_FIELD_CODING_DYN:
8693 : return 1;
8694 : default:
8695 : return 6;
8696 : }
8697 : }
8698 :
8699 : static GF_Err Layer2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8700 : {
8701 101 : switch(IndexMode) {
8702 0 : case GF_SG_FIELD_CODING_IN:
8703 0 : *allField = Layer2D_In2All[inField];
8704 : return GF_OK;
8705 95 : case GF_SG_FIELD_CODING_DEF:
8706 95 : *allField = Layer2D_Def2All[inField];
8707 : return GF_OK;
8708 0 : case GF_SG_FIELD_CODING_OUT:
8709 0 : *allField = Layer2D_Out2All[inField];
8710 : return GF_OK;
8711 0 : case GF_SG_FIELD_CODING_DYN:
8712 0 : *allField = Layer2D_Dyn2All[inField];
8713 : return GF_OK;
8714 : default:
8715 : return GF_BAD_PARAM;
8716 : }
8717 : }
8718 2585 : static GF_Err Layer2D_get_field(GF_Node *node, GF_FieldInfo *info)
8719 : {
8720 2585 : switch (info->fieldIndex) {
8721 17 : case 0:
8722 17 : info->name = "addChildren";
8723 17 : info->eventType = GF_SG_EVENT_IN;
8724 17 : info->on_event_in = ((M_Layer2D *)node)->on_addChildren;
8725 17 : info->fieldType = GF_SG_VRML_MFNODE;
8726 17 : info->NDTtype = NDT_SF2DNode;
8727 17 : info->far_ptr = & ((M_Layer2D *)node)->addChildren;
8728 17 : return GF_OK;
8729 17 : case 1:
8730 17 : info->name = "removeChildren";
8731 17 : info->eventType = GF_SG_EVENT_IN;
8732 17 : info->on_event_in = ((M_Layer2D *)node)->on_removeChildren;
8733 17 : info->fieldType = GF_SG_VRML_MFNODE;
8734 17 : info->NDTtype = NDT_SF2DNode;
8735 17 : info->far_ptr = & ((M_Layer2D *)node)->removeChildren;
8736 17 : return GF_OK;
8737 423 : case 2:
8738 423 : info->name = "children";
8739 423 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8740 423 : info->fieldType = GF_SG_VRML_MFNODE;
8741 423 : info->NDTtype = NDT_SF2DNode;
8742 423 : info->far_ptr = & ((M_Layer2D *)node)->children;
8743 423 : return GF_OK;
8744 2003 : case 3:
8745 2003 : info->name = "size";
8746 2003 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8747 2003 : info->fieldType = GF_SG_VRML_SFVEC2F;
8748 2003 : info->far_ptr = & ((M_Layer2D *) node)->size;
8749 2003 : return GF_OK;
8750 46 : case 4:
8751 46 : info->name = "background";
8752 46 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8753 46 : info->fieldType = GF_SG_VRML_SFNODE;
8754 46 : info->NDTtype = NDT_SFBackground2DNode;
8755 46 : info->far_ptr = & ((M_Layer2D *)node)->background;
8756 46 : return GF_OK;
8757 79 : case 5:
8758 79 : info->name = "viewport";
8759 79 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8760 79 : info->fieldType = GF_SG_VRML_SFNODE;
8761 79 : info->NDTtype = NDT_SFViewportNode;
8762 79 : info->far_ptr = & ((M_Layer2D *)node)->viewport;
8763 79 : return GF_OK;
8764 : default:
8765 : return GF_BAD_PARAM;
8766 : }
8767 : }
8768 :
8769 :
8770 2090 : static s32 Layer2D_get_field_index_by_name(char *name)
8771 : {
8772 2090 : if (!strcmp("addChildren", name)) return 0;
8773 2089 : if (!strcmp("removeChildren", name)) return 1;
8774 2088 : if (!strcmp("children", name)) return 2;
8775 1784 : if (!strcmp("size", name)) return 3;
8776 53 : if (!strcmp("background", name)) return 4;
8777 43 : if (!strcmp("viewport", name)) return 5;
8778 0 : return -1;
8779 : }
8780 : static Bool Layer2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8781 : {
8782 14 : switch (FieldIndex) {
8783 9 : case 3:
8784 9 : *AType = 12;
8785 9 : *QType = 12;
8786 9 : *b_min = FIX_MIN;
8787 9 : *b_max = FIX_MAX;
8788 : return 1;
8789 : default:
8790 : return 0;
8791 : }
8792 : }
8793 :
8794 :
8795 :
8796 444 : GF_Node *Layer2D_Create()
8797 : {
8798 : M_Layer2D *p;
8799 444 : GF_SAFEALLOC(p, M_Layer2D);
8800 444 : if(!p) return NULL;
8801 444 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Layer2D);
8802 444 : gf_sg_vrml_parent_setup((GF_Node *) p);
8803 :
8804 : /*default field values*/
8805 444 : p->size.x = FLT2FIX(-1);
8806 444 : p->size.y = FLT2FIX(-1);
8807 444 : return (GF_Node *)p;
8808 : }
8809 :
8810 :
8811 : /*
8812 : Layer3D Node deletion
8813 : */
8814 :
8815 75 : static void Layer3D_Del(GF_Node *node)
8816 : {
8817 : M_Layer3D *p = (M_Layer3D *) node;
8818 75 : gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
8819 75 : gf_node_unregister((GF_Node *) p->fog, (GF_Node *) p);
8820 75 : gf_node_unregister((GF_Node *) p->navigationInfo, (GF_Node *) p);
8821 75 : gf_node_unregister((GF_Node *) p->viewpoint, (GF_Node *) p);
8822 75 : gf_sg_vrml_parent_destroy((GF_Node *) p);
8823 75 : gf_node_free((GF_Node *) p);
8824 75 : }
8825 :
8826 : static const u16 Layer3D_Def2All[] = { 2, 3, 4, 5, 6, 7};
8827 : static const u16 Layer3D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
8828 : static const u16 Layer3D_Out2All[] = { 2, 3, 4, 5, 6, 7};
8829 : static const u16 Layer3D_Dyn2All[] = { 3};
8830 :
8831 : static u32 Layer3D_get_field_count(GF_Node *node, u8 IndexMode)
8832 : {
8833 : switch(IndexMode) {
8834 : case GF_SG_FIELD_CODING_IN:
8835 : return 8;
8836 : case GF_SG_FIELD_CODING_DEF:
8837 : return 6;
8838 : case GF_SG_FIELD_CODING_OUT:
8839 : return 6;
8840 : case GF_SG_FIELD_CODING_DYN:
8841 : return 1;
8842 : default:
8843 : return 8;
8844 : }
8845 : }
8846 :
8847 : static GF_Err Layer3D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
8848 : {
8849 158 : switch(IndexMode) {
8850 0 : case GF_SG_FIELD_CODING_IN:
8851 0 : *allField = Layer3D_In2All[inField];
8852 : return GF_OK;
8853 150 : case GF_SG_FIELD_CODING_DEF:
8854 150 : *allField = Layer3D_Def2All[inField];
8855 : return GF_OK;
8856 0 : case GF_SG_FIELD_CODING_OUT:
8857 0 : *allField = Layer3D_Out2All[inField];
8858 : return GF_OK;
8859 0 : case GF_SG_FIELD_CODING_DYN:
8860 0 : *allField = Layer3D_Dyn2All[inField];
8861 : return GF_OK;
8862 : default:
8863 : return GF_BAD_PARAM;
8864 : }
8865 : }
8866 442 : static GF_Err Layer3D_get_field(GF_Node *node, GF_FieldInfo *info)
8867 : {
8868 442 : switch (info->fieldIndex) {
8869 17 : case 0:
8870 17 : info->name = "addChildren";
8871 17 : info->eventType = GF_SG_EVENT_IN;
8872 17 : info->on_event_in = ((M_Layer3D *)node)->on_addChildren;
8873 17 : info->fieldType = GF_SG_VRML_MFNODE;
8874 17 : info->NDTtype = NDT_SF3DNode;
8875 17 : info->far_ptr = & ((M_Layer3D *)node)->addChildren;
8876 17 : return GF_OK;
8877 17 : case 1:
8878 17 : info->name = "removeChildren";
8879 17 : info->eventType = GF_SG_EVENT_IN;
8880 17 : info->on_event_in = ((M_Layer3D *)node)->on_removeChildren;
8881 17 : info->fieldType = GF_SG_VRML_MFNODE;
8882 17 : info->NDTtype = NDT_SF3DNode;
8883 17 : info->far_ptr = & ((M_Layer3D *)node)->removeChildren;
8884 17 : return GF_OK;
8885 105 : case 2:
8886 105 : info->name = "children";
8887 105 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8888 105 : info->fieldType = GF_SG_VRML_MFNODE;
8889 105 : info->NDTtype = NDT_SF3DNode;
8890 105 : info->far_ptr = & ((M_Layer3D *)node)->children;
8891 105 : return GF_OK;
8892 140 : case 3:
8893 140 : info->name = "size";
8894 140 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8895 140 : info->fieldType = GF_SG_VRML_SFVEC2F;
8896 140 : info->far_ptr = & ((M_Layer3D *) node)->size;
8897 140 : return GF_OK;
8898 37 : case 4:
8899 37 : info->name = "background";
8900 37 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8901 37 : info->fieldType = GF_SG_VRML_SFNODE;
8902 37 : info->NDTtype = NDT_SFBackground3DNode;
8903 37 : info->far_ptr = & ((M_Layer3D *)node)->background;
8904 37 : return GF_OK;
8905 37 : case 5:
8906 37 : info->name = "fog";
8907 37 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8908 37 : info->fieldType = GF_SG_VRML_SFNODE;
8909 37 : info->NDTtype = NDT_SFFogNode;
8910 37 : info->far_ptr = & ((M_Layer3D *)node)->fog;
8911 37 : return GF_OK;
8912 46 : case 6:
8913 46 : info->name = "navigationInfo";
8914 46 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8915 46 : info->fieldType = GF_SG_VRML_SFNODE;
8916 46 : info->NDTtype = NDT_SFNavigationInfoNode;
8917 46 : info->far_ptr = & ((M_Layer3D *)node)->navigationInfo;
8918 46 : return GF_OK;
8919 43 : case 7:
8920 43 : info->name = "viewpoint";
8921 43 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
8922 43 : info->fieldType = GF_SG_VRML_SFNODE;
8923 43 : info->NDTtype = NDT_SFViewpointNode;
8924 43 : info->far_ptr = & ((M_Layer3D *)node)->viewpoint;
8925 43 : return GF_OK;
8926 : default:
8927 : return GF_BAD_PARAM;
8928 : }
8929 : }
8930 :
8931 :
8932 71 : static s32 Layer3D_get_field_index_by_name(char *name)
8933 : {
8934 71 : if (!strcmp("addChildren", name)) return 0;
8935 70 : if (!strcmp("removeChildren", name)) return 1;
8936 69 : if (!strcmp("children", name)) return 2;
8937 44 : if (!strcmp("size", name)) return 3;
8938 19 : if (!strcmp("background", name)) return 4;
8939 18 : if (!strcmp("fog", name)) return 5;
8940 17 : if (!strcmp("navigationInfo", name)) return 6;
8941 7 : if (!strcmp("viewpoint", name)) return 7;
8942 0 : return -1;
8943 : }
8944 : static Bool Layer3D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
8945 : {
8946 16 : switch (FieldIndex) {
8947 9 : case 3:
8948 9 : *AType = 12;
8949 9 : *QType = 12;
8950 9 : *b_min = FIX_MIN;
8951 9 : *b_max = FIX_MAX;
8952 : return 1;
8953 : default:
8954 : return 0;
8955 : }
8956 : }
8957 :
8958 :
8959 :
8960 75 : GF_Node *Layer3D_Create()
8961 : {
8962 : M_Layer3D *p;
8963 75 : GF_SAFEALLOC(p, M_Layer3D);
8964 75 : if(!p) return NULL;
8965 75 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Layer3D);
8966 75 : gf_sg_vrml_parent_setup((GF_Node *) p);
8967 :
8968 : /*default field values*/
8969 75 : p->size.x = FLT2FIX(-1);
8970 75 : p->size.y = FLT2FIX(-1);
8971 75 : return (GF_Node *)p;
8972 : }
8973 :
8974 :
8975 : /*
8976 : Layout Node deletion
8977 : */
8978 :
8979 230 : static void Layout_Del(GF_Node *node)
8980 : {
8981 : M_Layout *p = (M_Layout *) node;
8982 230 : gf_sg_mfstring_del(p->justify);
8983 230 : gf_sg_vrml_parent_destroy((GF_Node *) p);
8984 230 : gf_node_free((GF_Node *) p);
8985 230 : }
8986 :
8987 : static const u16 Layout_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
8988 : static const u16 Layout_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
8989 : static const u16 Layout_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
8990 : static const u16 Layout_Dyn2All[] = { 4, 9, 13};
8991 :
8992 : static u32 Layout_get_field_count(GF_Node *node, u8 IndexMode)
8993 : {
8994 : switch(IndexMode) {
8995 : case GF_SG_FIELD_CODING_IN:
8996 : return 15;
8997 : case GF_SG_FIELD_CODING_DEF:
8998 : return 13;
8999 : case GF_SG_FIELD_CODING_OUT:
9000 : return 13;
9001 : case GF_SG_FIELD_CODING_DYN:
9002 : return 3;
9003 : default:
9004 : return 15;
9005 : }
9006 : }
9007 :
9008 : static GF_Err Layout_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9009 : {
9010 275 : switch(IndexMode) {
9011 0 : case GF_SG_FIELD_CODING_IN:
9012 0 : *allField = Layout_In2All[inField];
9013 : return GF_OK;
9014 260 : case GF_SG_FIELD_CODING_DEF:
9015 260 : *allField = Layout_Def2All[inField];
9016 : return GF_OK;
9017 0 : case GF_SG_FIELD_CODING_OUT:
9018 0 : *allField = Layout_Out2All[inField];
9019 : return GF_OK;
9020 0 : case GF_SG_FIELD_CODING_DYN:
9021 0 : *allField = Layout_Dyn2All[inField];
9022 : return GF_OK;
9023 : default:
9024 : return GF_BAD_PARAM;
9025 : }
9026 : }
9027 1831 : static GF_Err Layout_get_field(GF_Node *node, GF_FieldInfo *info)
9028 : {
9029 1831 : switch (info->fieldIndex) {
9030 17 : case 0:
9031 17 : info->name = "addChildren";
9032 17 : info->eventType = GF_SG_EVENT_IN;
9033 17 : info->on_event_in = ((M_Layout *)node)->on_addChildren;
9034 17 : info->fieldType = GF_SG_VRML_MFNODE;
9035 17 : info->NDTtype = NDT_SF2DNode;
9036 17 : info->far_ptr = & ((M_Layout *)node)->addChildren;
9037 17 : return GF_OK;
9038 17 : case 1:
9039 17 : info->name = "removeChildren";
9040 17 : info->eventType = GF_SG_EVENT_IN;
9041 17 : info->on_event_in = ((M_Layout *)node)->on_removeChildren;
9042 17 : info->fieldType = GF_SG_VRML_MFNODE;
9043 17 : info->NDTtype = NDT_SF2DNode;
9044 17 : info->far_ptr = & ((M_Layout *)node)->removeChildren;
9045 17 : return GF_OK;
9046 201 : case 2:
9047 201 : info->name = "children";
9048 201 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9049 201 : info->fieldType = GF_SG_VRML_MFNODE;
9050 201 : info->NDTtype = NDT_SF2DNode;
9051 201 : info->far_ptr = & ((M_Layout *)node)->children;
9052 201 : return GF_OK;
9053 169 : case 3:
9054 169 : info->name = "wrap";
9055 169 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9056 169 : info->fieldType = GF_SG_VRML_SFBOOL;
9057 169 : info->far_ptr = & ((M_Layout *) node)->wrap;
9058 169 : return GF_OK;
9059 236 : case 4:
9060 236 : info->name = "size";
9061 236 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9062 236 : info->fieldType = GF_SG_VRML_SFVEC2F;
9063 236 : info->far_ptr = & ((M_Layout *) node)->size;
9064 236 : return GF_OK;
9065 131 : case 5:
9066 131 : info->name = "horizontal";
9067 131 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9068 131 : info->fieldType = GF_SG_VRML_SFBOOL;
9069 131 : info->far_ptr = & ((M_Layout *) node)->horizontal;
9070 131 : return GF_OK;
9071 242 : case 6:
9072 242 : info->name = "justify";
9073 242 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9074 242 : info->fieldType = GF_SG_VRML_MFSTRING;
9075 242 : info->far_ptr = & ((M_Layout *) node)->justify;
9076 242 : return GF_OK;
9077 126 : case 7:
9078 126 : info->name = "leftToRight";
9079 126 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9080 126 : info->fieldType = GF_SG_VRML_SFBOOL;
9081 126 : info->far_ptr = & ((M_Layout *) node)->leftToRight;
9082 126 : return GF_OK;
9083 123 : case 8:
9084 123 : info->name = "topToBottom";
9085 123 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9086 123 : info->fieldType = GF_SG_VRML_SFBOOL;
9087 123 : info->far_ptr = & ((M_Layout *) node)->topToBottom;
9088 123 : return GF_OK;
9089 133 : case 9:
9090 133 : info->name = "spacing";
9091 133 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9092 133 : info->fieldType = GF_SG_VRML_SFFLOAT;
9093 133 : info->far_ptr = & ((M_Layout *) node)->spacing;
9094 133 : return GF_OK;
9095 85 : case 10:
9096 85 : info->name = "smoothScroll";
9097 85 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9098 85 : info->fieldType = GF_SG_VRML_SFBOOL;
9099 85 : info->far_ptr = & ((M_Layout *) node)->smoothScroll;
9100 85 : return GF_OK;
9101 85 : case 11:
9102 85 : info->name = "loop";
9103 85 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9104 85 : info->fieldType = GF_SG_VRML_SFBOOL;
9105 85 : info->far_ptr = & ((M_Layout *) node)->loop;
9106 85 : return GF_OK;
9107 86 : case 12:
9108 86 : info->name = "scrollVertical";
9109 86 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9110 86 : info->fieldType = GF_SG_VRML_SFBOOL;
9111 86 : info->far_ptr = & ((M_Layout *) node)->scrollVertical;
9112 86 : return GF_OK;
9113 100 : case 13:
9114 100 : info->name = "scrollRate";
9115 100 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9116 100 : info->fieldType = GF_SG_VRML_SFFLOAT;
9117 100 : info->far_ptr = & ((M_Layout *) node)->scrollRate;
9118 100 : return GF_OK;
9119 80 : case 14:
9120 80 : info->name = "scrollMode";
9121 80 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9122 80 : info->fieldType = GF_SG_VRML_SFINT32;
9123 80 : info->far_ptr = & ((M_Layout *) node)->scrollMode;
9124 80 : return GF_OK;
9125 : default:
9126 : return GF_BAD_PARAM;
9127 : }
9128 : }
9129 :
9130 :
9131 903 : static s32 Layout_get_field_index_by_name(char *name)
9132 : {
9133 903 : if (!strcmp("addChildren", name)) return 0;
9134 902 : if (!strcmp("removeChildren", name)) return 1;
9135 901 : if (!strcmp("children", name)) return 2;
9136 736 : if (!strcmp("wrap", name)) return 3;
9137 638 : if (!strcmp("size", name)) return 4;
9138 473 : if (!strcmp("horizontal", name)) return 5;
9139 413 : if (!strcmp("justify", name)) return 6;
9140 244 : if (!strcmp("leftToRight", name)) return 7;
9141 189 : if (!strcmp("topToBottom", name)) return 8;
9142 137 : if (!strcmp("spacing", name)) return 9;
9143 75 : if (!strcmp("smoothScroll", name)) return 10;
9144 61 : if (!strcmp("loop", name)) return 11;
9145 47 : if (!strcmp("scrollVertical", name)) return 12;
9146 35 : if (!strcmp("scrollRate", name)) return 13;
9147 9 : if (!strcmp("scrollMode", name)) return 14;
9148 0 : return -1;
9149 : }
9150 : static Bool Layout_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9151 : {
9152 15 : switch (FieldIndex) {
9153 1 : case 4:
9154 1 : *AType = 12;
9155 1 : *QType = 12;
9156 1 : *b_min = FLT2FIX(0);
9157 1 : *b_max = FIX_MAX;
9158 : return 1;
9159 1 : case 9:
9160 1 : *AType = 7;
9161 1 : *QType = 0;
9162 1 : *b_min = FLT2FIX(0);
9163 1 : *b_max = FIX_MAX;
9164 : return 1;
9165 1 : case 13:
9166 1 : *AType = 7;
9167 1 : *QType = 0;
9168 1 : *b_min = FIX_MIN;
9169 1 : *b_max = FIX_MAX;
9170 : return 1;
9171 1 : case 14:
9172 1 : *AType = 0;
9173 1 : *QType = 13;
9174 1 : *QT13_bits = 2;
9175 1 : *b_min = FLT2FIX(-1);
9176 1 : *b_max = FLT2FIX(1);
9177 : return 1;
9178 : default:
9179 : return 0;
9180 : }
9181 : }
9182 :
9183 :
9184 :
9185 230 : GF_Node *Layout_Create()
9186 : {
9187 : M_Layout *p;
9188 230 : GF_SAFEALLOC(p, M_Layout);
9189 230 : if(!p) return NULL;
9190 230 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Layout);
9191 230 : gf_sg_vrml_parent_setup((GF_Node *) p);
9192 :
9193 : /*default field values*/
9194 230 : p->size.x = FLT2FIX(-1);
9195 230 : p->size.y = FLT2FIX(-1);
9196 230 : p->horizontal = 1;
9197 230 : p->justify.vals = (char**)gf_malloc(sizeof(SFString)*1);
9198 230 : p->justify.count = 1;
9199 230 : p->justify.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
9200 230 : strcpy(p->justify.vals[0], "BEGIN");
9201 230 : p->leftToRight = 1;
9202 230 : p->topToBottom = 1;
9203 230 : p->spacing = FLT2FIX(1);
9204 230 : p->scrollVertical = 1;
9205 230 : p->scrollRate = FLT2FIX(0);
9206 230 : p->scrollMode = 0;
9207 230 : return (GF_Node *)p;
9208 : }
9209 :
9210 :
9211 : /*
9212 : LineProperties Node deletion
9213 : */
9214 :
9215 : static void LineProperties_Del(GF_Node *node)
9216 : {
9217 : M_LineProperties *p = (M_LineProperties *) node;
9218 1140 : gf_node_free((GF_Node *) p);
9219 : }
9220 :
9221 : static const u16 LineProperties_Def2All[] = { 0, 1, 2};
9222 : static const u16 LineProperties_In2All[] = { 0, 1, 2};
9223 : static const u16 LineProperties_Out2All[] = { 0, 1, 2};
9224 : static const u16 LineProperties_Dyn2All[] = { 0, 2};
9225 :
9226 : static u32 LineProperties_get_field_count(GF_Node *node, u8 IndexMode)
9227 : {
9228 1562 : switch(IndexMode) {
9229 : case GF_SG_FIELD_CODING_IN:
9230 : return 3;
9231 : case GF_SG_FIELD_CODING_DEF:
9232 : return 3;
9233 : case GF_SG_FIELD_CODING_OUT:
9234 : return 3;
9235 1 : case GF_SG_FIELD_CODING_DYN:
9236 : return 2;
9237 : default:
9238 : return 3;
9239 : }
9240 : }
9241 :
9242 : static GF_Err LineProperties_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9243 : {
9244 749 : switch(IndexMode) {
9245 0 : case GF_SG_FIELD_CODING_IN:
9246 0 : *allField = LineProperties_In2All[inField];
9247 : return GF_OK;
9248 746 : case GF_SG_FIELD_CODING_DEF:
9249 746 : *allField = LineProperties_Def2All[inField];
9250 : return GF_OK;
9251 0 : case GF_SG_FIELD_CODING_OUT:
9252 0 : *allField = LineProperties_Out2All[inField];
9253 : return GF_OK;
9254 0 : case GF_SG_FIELD_CODING_DYN:
9255 0 : *allField = LineProperties_Dyn2All[inField];
9256 : return GF_OK;
9257 : default:
9258 : return GF_BAD_PARAM;
9259 : }
9260 : }
9261 : static GF_Err LineProperties_get_field(GF_Node *node, GF_FieldInfo *info)
9262 : {
9263 6611 : switch (info->fieldIndex) {
9264 2230 : case 0:
9265 2230 : info->name = "lineColor";
9266 2230 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9267 2230 : info->fieldType = GF_SG_VRML_SFCOLOR;
9268 2230 : info->far_ptr = & ((M_LineProperties *) node)->lineColor;
9269 : return GF_OK;
9270 1922 : case 1:
9271 1922 : info->name = "lineStyle";
9272 1922 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9273 1922 : info->fieldType = GF_SG_VRML_SFINT32;
9274 1922 : info->far_ptr = & ((M_LineProperties *) node)->lineStyle;
9275 : return GF_OK;
9276 2459 : case 2:
9277 2459 : info->name = "width";
9278 2459 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9279 2459 : info->fieldType = GF_SG_VRML_SFFLOAT;
9280 2459 : info->far_ptr = & ((M_LineProperties *) node)->width;
9281 : return GF_OK;
9282 : default:
9283 : return GF_BAD_PARAM;
9284 : }
9285 : }
9286 :
9287 :
9288 389 : static s32 LineProperties_get_field_index_by_name(char *name)
9289 : {
9290 389 : if (!strcmp("lineColor", name)) return 0;
9291 234 : if (!strcmp("lineStyle", name)) return 1;
9292 227 : if (!strcmp("width", name)) return 2;
9293 0 : return -1;
9294 : }
9295 : static Bool LineProperties_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9296 : {
9297 9 : switch (FieldIndex) {
9298 4 : case 0:
9299 4 : *AType = 4;
9300 4 : *QType = 4;
9301 4 : *b_min = FLT2FIX(0);
9302 4 : *b_max = FLT2FIX(1);
9303 : return 1;
9304 1 : case 1:
9305 1 : *AType = 0;
9306 1 : *QType = 13;
9307 1 : *QT13_bits = 3;
9308 1 : *b_min = FLT2FIX(0);
9309 1 : *b_max = FLT2FIX(5);
9310 : return 1;
9311 4 : case 2:
9312 4 : *AType = 7;
9313 4 : *QType = 12;
9314 4 : *b_min = FLT2FIX(0);
9315 4 : *b_max = FIX_MAX;
9316 : return 1;
9317 : default:
9318 : return 0;
9319 : }
9320 : }
9321 :
9322 :
9323 :
9324 1140 : GF_Node *LineProperties_Create()
9325 : {
9326 : M_LineProperties *p;
9327 1140 : GF_SAFEALLOC(p, M_LineProperties);
9328 1140 : if(!p) return NULL;
9329 1140 : gf_node_setup((GF_Node *)p, TAG_MPEG4_LineProperties);
9330 :
9331 : /*default field values*/
9332 1140 : p->lineColor.red = FLT2FIX(0);
9333 1140 : p->lineColor.green = FLT2FIX(0);
9334 1140 : p->lineColor.blue = FLT2FIX(0);
9335 1140 : p->lineStyle = 0;
9336 1140 : p->width = FLT2FIX(1);
9337 1140 : return (GF_Node *)p;
9338 : }
9339 :
9340 :
9341 : /*
9342 : ListeningPoint Node deletion
9343 : */
9344 :
9345 : static void ListeningPoint_Del(GF_Node *node)
9346 : {
9347 : M_ListeningPoint *p = (M_ListeningPoint *) node;
9348 1 : gf_sg_sfstring_del(p->description);
9349 1 : gf_node_free((GF_Node *) p);
9350 : }
9351 :
9352 : static const u16 ListeningPoint_Def2All[] = { 1, 2, 3, 4};
9353 : static const u16 ListeningPoint_In2All[] = { 0, 1, 2, 3};
9354 : static const u16 ListeningPoint_Out2All[] = { 1, 2, 3, 5, 6};
9355 : static const u16 ListeningPoint_Dyn2All[] = { 2, 3};
9356 :
9357 : static u32 ListeningPoint_get_field_count(GF_Node *node, u8 IndexMode)
9358 : {
9359 : switch(IndexMode) {
9360 : case GF_SG_FIELD_CODING_IN:
9361 : return 4;
9362 : case GF_SG_FIELD_CODING_DEF:
9363 : return 4;
9364 : case GF_SG_FIELD_CODING_OUT:
9365 : return 5;
9366 : case GF_SG_FIELD_CODING_DYN:
9367 : return 2;
9368 : default:
9369 : return 7;
9370 : }
9371 : }
9372 :
9373 : static GF_Err ListeningPoint_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9374 : {
9375 7 : switch(IndexMode) {
9376 0 : case GF_SG_FIELD_CODING_IN:
9377 0 : *allField = ListeningPoint_In2All[inField];
9378 : return GF_OK;
9379 0 : case GF_SG_FIELD_CODING_DEF:
9380 0 : *allField = ListeningPoint_Def2All[inField];
9381 : return GF_OK;
9382 0 : case GF_SG_FIELD_CODING_OUT:
9383 0 : *allField = ListeningPoint_Out2All[inField];
9384 : return GF_OK;
9385 0 : case GF_SG_FIELD_CODING_DYN:
9386 0 : *allField = ListeningPoint_Dyn2All[inField];
9387 : return GF_OK;
9388 : default:
9389 : return GF_BAD_PARAM;
9390 : }
9391 : }
9392 14 : static GF_Err ListeningPoint_get_field(GF_Node *node, GF_FieldInfo *info)
9393 : {
9394 14 : switch (info->fieldIndex) {
9395 2 : case 0:
9396 2 : info->name = "set_bind";
9397 2 : info->eventType = GF_SG_EVENT_IN;
9398 2 : info->on_event_in = ((M_ListeningPoint *)node)->on_set_bind;
9399 2 : info->fieldType = GF_SG_VRML_SFBOOL;
9400 2 : info->far_ptr = & ((M_ListeningPoint *) node)->set_bind;
9401 2 : return GF_OK;
9402 2 : case 1:
9403 2 : info->name = "jump";
9404 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9405 2 : info->fieldType = GF_SG_VRML_SFBOOL;
9406 2 : info->far_ptr = & ((M_ListeningPoint *) node)->jump;
9407 2 : return GF_OK;
9408 2 : case 2:
9409 2 : info->name = "orientation";
9410 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9411 2 : info->fieldType = GF_SG_VRML_SFROTATION;
9412 2 : info->far_ptr = & ((M_ListeningPoint *) node)->orientation;
9413 2 : return GF_OK;
9414 2 : case 3:
9415 2 : info->name = "position";
9416 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9417 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
9418 2 : info->far_ptr = & ((M_ListeningPoint *) node)->position;
9419 2 : return GF_OK;
9420 2 : case 4:
9421 2 : info->name = "description";
9422 2 : info->eventType = GF_SG_EVENT_FIELD;
9423 2 : info->fieldType = GF_SG_VRML_SFSTRING;
9424 2 : info->far_ptr = & ((M_ListeningPoint *) node)->description;
9425 2 : return GF_OK;
9426 2 : case 5:
9427 2 : info->name = "bindTime";
9428 2 : info->eventType = GF_SG_EVENT_OUT;
9429 2 : info->fieldType = GF_SG_VRML_SFTIME;
9430 2 : info->far_ptr = & ((M_ListeningPoint *) node)->bindTime;
9431 2 : return GF_OK;
9432 2 : case 6:
9433 2 : info->name = "isBound";
9434 2 : info->eventType = GF_SG_EVENT_OUT;
9435 2 : info->fieldType = GF_SG_VRML_SFBOOL;
9436 2 : info->far_ptr = & ((M_ListeningPoint *) node)->isBound;
9437 2 : return GF_OK;
9438 : default:
9439 : return GF_BAD_PARAM;
9440 : }
9441 : }
9442 :
9443 :
9444 7 : static s32 ListeningPoint_get_field_index_by_name(char *name)
9445 : {
9446 7 : if (!strcmp("set_bind", name)) return 0;
9447 6 : if (!strcmp("jump", name)) return 1;
9448 5 : if (!strcmp("orientation", name)) return 2;
9449 4 : if (!strcmp("position", name)) return 3;
9450 3 : if (!strcmp("description", name)) return 4;
9451 2 : if (!strcmp("bindTime", name)) return 5;
9452 1 : if (!strcmp("isBound", name)) return 6;
9453 0 : return -1;
9454 : }
9455 : static Bool ListeningPoint_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9456 : {
9457 7 : switch (FieldIndex) {
9458 1 : case 2:
9459 1 : *AType = 10;
9460 1 : *QType = 10;
9461 : return 1;
9462 1 : case 3:
9463 1 : *AType = 1;
9464 1 : *QType = 1;
9465 1 : *b_min = FIX_MIN;
9466 1 : *b_max = FIX_MAX;
9467 : return 1;
9468 : default:
9469 : return 0;
9470 : }
9471 : }
9472 :
9473 :
9474 :
9475 1 : GF_Node *ListeningPoint_Create()
9476 : {
9477 : M_ListeningPoint *p;
9478 1 : GF_SAFEALLOC(p, M_ListeningPoint);
9479 1 : if(!p) return NULL;
9480 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ListeningPoint);
9481 :
9482 : /*default field values*/
9483 1 : p->jump = 1;
9484 1 : p->orientation.x = FLT2FIX(0);
9485 1 : p->orientation.y = FLT2FIX(0);
9486 1 : p->orientation.z = FLT2FIX(1);
9487 1 : p->orientation.q = FLT2FIX(0);
9488 1 : p->position.x = FLT2FIX(0);
9489 1 : p->position.y = FLT2FIX(0);
9490 1 : p->position.z = FLT2FIX(10);
9491 1 : return (GF_Node *)p;
9492 : }
9493 :
9494 :
9495 : /*
9496 : Material Node deletion
9497 : */
9498 :
9499 : static void Material_Del(GF_Node *node)
9500 : {
9501 : M_Material *p = (M_Material *) node;
9502 135 : gf_node_free((GF_Node *) p);
9503 : }
9504 :
9505 : static const u16 Material_Def2All[] = { 0, 1, 2, 3, 4, 5};
9506 : static const u16 Material_In2All[] = { 0, 1, 2, 3, 4, 5};
9507 : static const u16 Material_Out2All[] = { 0, 1, 2, 3, 4, 5};
9508 : static const u16 Material_Dyn2All[] = { 0, 1, 2, 3, 4, 5};
9509 :
9510 : static u32 Material_get_field_count(GF_Node *node, u8 IndexMode)
9511 : {
9512 : switch(IndexMode) {
9513 : case GF_SG_FIELD_CODING_IN:
9514 : return 6;
9515 : case GF_SG_FIELD_CODING_DEF:
9516 : return 6;
9517 : case GF_SG_FIELD_CODING_OUT:
9518 : return 6;
9519 : case GF_SG_FIELD_CODING_DYN:
9520 : return 6;
9521 : default:
9522 : return 6;
9523 : }
9524 : }
9525 :
9526 : static GF_Err Material_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9527 : {
9528 117 : switch(IndexMode) {
9529 0 : case GF_SG_FIELD_CODING_IN:
9530 0 : *allField = Material_In2All[inField];
9531 : return GF_OK;
9532 111 : case GF_SG_FIELD_CODING_DEF:
9533 111 : *allField = Material_Def2All[inField];
9534 : return GF_OK;
9535 0 : case GF_SG_FIELD_CODING_OUT:
9536 0 : *allField = Material_Out2All[inField];
9537 : return GF_OK;
9538 0 : case GF_SG_FIELD_CODING_DYN:
9539 0 : *allField = Material_Dyn2All[inField];
9540 : return GF_OK;
9541 : default:
9542 : return GF_BAD_PARAM;
9543 : }
9544 : }
9545 7128 : static GF_Err Material_get_field(GF_Node *node, GF_FieldInfo *info)
9546 : {
9547 7128 : switch (info->fieldIndex) {
9548 1160 : case 0:
9549 1160 : info->name = "ambientIntensity";
9550 1160 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9551 1160 : info->fieldType = GF_SG_VRML_SFFLOAT;
9552 1160 : info->far_ptr = & ((M_Material *) node)->ambientIntensity;
9553 1160 : return GF_OK;
9554 1308 : case 1:
9555 1308 : info->name = "diffuseColor";
9556 1308 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9557 1308 : info->fieldType = GF_SG_VRML_SFCOLOR;
9558 1308 : info->far_ptr = & ((M_Material *) node)->diffuseColor;
9559 1308 : return GF_OK;
9560 1163 : case 2:
9561 1163 : info->name = "emissiveColor";
9562 1163 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9563 1163 : info->fieldType = GF_SG_VRML_SFCOLOR;
9564 1163 : info->far_ptr = & ((M_Material *) node)->emissiveColor;
9565 1163 : return GF_OK;
9566 1165 : case 3:
9567 1165 : info->name = "shininess";
9568 1165 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9569 1165 : info->fieldType = GF_SG_VRML_SFFLOAT;
9570 1165 : info->far_ptr = & ((M_Material *) node)->shininess;
9571 1165 : return GF_OK;
9572 1160 : case 4:
9573 1160 : info->name = "specularColor";
9574 1160 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9575 1160 : info->fieldType = GF_SG_VRML_SFCOLOR;
9576 1160 : info->far_ptr = & ((M_Material *) node)->specularColor;
9577 1160 : return GF_OK;
9578 1172 : case 5:
9579 1172 : info->name = "transparency";
9580 1172 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9581 1172 : info->fieldType = GF_SG_VRML_SFFLOAT;
9582 1172 : info->far_ptr = & ((M_Material *) node)->transparency;
9583 1172 : return GF_OK;
9584 : default:
9585 : return GF_BAD_PARAM;
9586 : }
9587 : }
9588 :
9589 :
9590 119 : static s32 Material_get_field_index_by_name(char *name)
9591 : {
9592 119 : if (!strcmp("ambientIntensity", name)) return 0;
9593 118 : if (!strcmp("diffuseColor", name)) return 1;
9594 19 : if (!strcmp("emissiveColor", name)) return 2;
9595 15 : if (!strcmp("shininess", name)) return 3;
9596 9 : if (!strcmp("specularColor", name)) return 4;
9597 8 : if (!strcmp("transparency", name)) return 5;
9598 0 : return -1;
9599 : }
9600 10 : static Bool Material_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9601 : {
9602 10 : switch (FieldIndex) {
9603 1 : case 0:
9604 1 : *AType = 8;
9605 1 : *QType = 4;
9606 1 : *b_min = FLT2FIX(0);
9607 1 : *b_max = FLT2FIX(1);
9608 : return 1;
9609 5 : case 1:
9610 5 : *AType = 4;
9611 5 : *QType = 4;
9612 5 : *b_min = FLT2FIX(0);
9613 5 : *b_max = FLT2FIX(1);
9614 : return 1;
9615 1 : case 2:
9616 1 : *AType = 4;
9617 1 : *QType = 4;
9618 1 : *b_min = FLT2FIX(0);
9619 1 : *b_max = FLT2FIX(1);
9620 : return 1;
9621 1 : case 3:
9622 1 : *AType = 8;
9623 1 : *QType = 4;
9624 1 : *b_min = FLT2FIX(0);
9625 1 : *b_max = FLT2FIX(1);
9626 : return 1;
9627 1 : case 4:
9628 1 : *AType = 4;
9629 1 : *QType = 4;
9630 1 : *b_min = FLT2FIX(0);
9631 1 : *b_max = FLT2FIX(1);
9632 : return 1;
9633 1 : case 5:
9634 1 : *AType = 8;
9635 1 : *QType = 4;
9636 1 : *b_min = FLT2FIX(0);
9637 1 : *b_max = FLT2FIX(1);
9638 : return 1;
9639 : default:
9640 : return 0;
9641 : }
9642 : }
9643 :
9644 :
9645 :
9646 135 : GF_Node *Material_Create()
9647 : {
9648 : M_Material *p;
9649 135 : GF_SAFEALLOC(p, M_Material);
9650 135 : if(!p) return NULL;
9651 135 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Material);
9652 :
9653 : /*default field values*/
9654 135 : p->ambientIntensity = FLT2FIX(0.2);
9655 135 : p->diffuseColor.red = FLT2FIX(0.8);
9656 135 : p->diffuseColor.green = FLT2FIX(0.8);
9657 135 : p->diffuseColor.blue = FLT2FIX(0.8);
9658 135 : p->emissiveColor.red = FLT2FIX(0);
9659 135 : p->emissiveColor.green = FLT2FIX(0);
9660 135 : p->emissiveColor.blue = FLT2FIX(0);
9661 135 : p->shininess = FLT2FIX(0.2);
9662 135 : p->specularColor.red = FLT2FIX(0);
9663 135 : p->specularColor.green = FLT2FIX(0);
9664 135 : p->specularColor.blue = FLT2FIX(0);
9665 135 : p->transparency = FLT2FIX(0);
9666 135 : return (GF_Node *)p;
9667 : }
9668 :
9669 :
9670 : /*
9671 : Material2D Node deletion
9672 : */
9673 :
9674 : static void Material2D_Del(GF_Node *node)
9675 : {
9676 : M_Material2D *p = (M_Material2D *) node;
9677 5460 : gf_node_unregister((GF_Node *) p->lineProps, (GF_Node *) p);
9678 5460 : gf_node_free((GF_Node *) p);
9679 : }
9680 :
9681 : static const u16 Material2D_Def2All[] = { 0, 1, 2, 3};
9682 : static const u16 Material2D_In2All[] = { 0, 1, 2, 3};
9683 : static const u16 Material2D_Out2All[] = { 0, 1, 2, 3};
9684 : static const u16 Material2D_Dyn2All[] = { 0, 3};
9685 :
9686 : static u32 Material2D_get_field_count(GF_Node *node, u8 IndexMode)
9687 : {
9688 9991 : switch(IndexMode) {
9689 : case GF_SG_FIELD_CODING_IN:
9690 : return 4;
9691 : case GF_SG_FIELD_CODING_DEF:
9692 : return 4;
9693 : case GF_SG_FIELD_CODING_OUT:
9694 : return 4;
9695 1 : case GF_SG_FIELD_CODING_DYN:
9696 : return 2;
9697 : default:
9698 : return 4;
9699 : }
9700 : }
9701 :
9702 : static GF_Err Material2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9703 : {
9704 6011 : switch(IndexMode) {
9705 89 : case GF_SG_FIELD_CODING_IN:
9706 89 : *allField = Material2D_In2All[inField];
9707 : return GF_OK;
9708 5918 : case GF_SG_FIELD_CODING_DEF:
9709 5918 : *allField = Material2D_Def2All[inField];
9710 : return GF_OK;
9711 0 : case GF_SG_FIELD_CODING_OUT:
9712 0 : *allField = Material2D_Out2All[inField];
9713 : return GF_OK;
9714 0 : case GF_SG_FIELD_CODING_DYN:
9715 0 : *allField = Material2D_Dyn2All[inField];
9716 : return GF_OK;
9717 : default:
9718 : return GF_BAD_PARAM;
9719 : }
9720 : }
9721 48726 : static GF_Err Material2D_get_field(GF_Node *node, GF_FieldInfo *info)
9722 : {
9723 48726 : switch (info->fieldIndex) {
9724 13546 : case 0:
9725 13546 : info->name = "emissiveColor";
9726 13546 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9727 13546 : info->fieldType = GF_SG_VRML_SFCOLOR;
9728 13546 : info->far_ptr = & ((M_Material2D *) node)->emissiveColor;
9729 13546 : return GF_OK;
9730 13398 : case 1:
9731 13398 : info->name = "filled";
9732 13398 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9733 13398 : info->fieldType = GF_SG_VRML_SFBOOL;
9734 13398 : info->far_ptr = & ((M_Material2D *) node)->filled;
9735 13398 : return GF_OK;
9736 10243 : case 2:
9737 10243 : info->name = "lineProps";
9738 10243 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9739 10243 : info->fieldType = GF_SG_VRML_SFNODE;
9740 10243 : info->NDTtype = NDT_SFLinePropertiesNode;
9741 10243 : info->far_ptr = & ((M_Material2D *)node)->lineProps;
9742 10243 : return GF_OK;
9743 11539 : case 3:
9744 11539 : info->name = "transparency";
9745 11539 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9746 11539 : info->fieldType = GF_SG_VRML_SFFLOAT;
9747 11539 : info->far_ptr = & ((M_Material2D *) node)->transparency;
9748 11539 : return GF_OK;
9749 : default:
9750 : return GF_BAD_PARAM;
9751 : }
9752 : }
9753 :
9754 :
9755 2727 : static s32 Material2D_get_field_index_by_name(char *name)
9756 : {
9757 2727 : if (!strcmp("emissiveColor", name)) return 0;
9758 1691 : if (!strcmp("filled", name)) return 1;
9759 692 : if (!strcmp("lineProps", name)) return 2;
9760 289 : if (!strcmp("transparency", name)) return 3;
9761 0 : return -1;
9762 : }
9763 : static Bool Material2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9764 : {
9765 223 : switch (FieldIndex) {
9766 145 : case 0:
9767 145 : *AType = 4;
9768 145 : *QType = 4;
9769 145 : *b_min = FLT2FIX(0);
9770 145 : *b_max = FLT2FIX(1);
9771 : return 1;
9772 76 : case 3:
9773 76 : *AType = 8;
9774 76 : *QType = 4;
9775 76 : *b_min = FLT2FIX(0);
9776 76 : *b_max = FLT2FIX(1);
9777 : return 1;
9778 : default:
9779 : return 0;
9780 : }
9781 : }
9782 :
9783 :
9784 :
9785 5460 : GF_Node *Material2D_Create()
9786 : {
9787 : M_Material2D *p;
9788 5460 : GF_SAFEALLOC(p, M_Material2D);
9789 5460 : if(!p) return NULL;
9790 5460 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Material2D);
9791 :
9792 : /*default field values*/
9793 5460 : p->emissiveColor.red = FLT2FIX(0.8);
9794 5460 : p->emissiveColor.green = FLT2FIX(0.8);
9795 5460 : p->emissiveColor.blue = FLT2FIX(0.8);
9796 5460 : p->transparency = FLT2FIX(0);
9797 5460 : return (GF_Node *)p;
9798 : }
9799 :
9800 :
9801 : /*
9802 : MovieTexture Node deletion
9803 : */
9804 :
9805 : static void MovieTexture_Del(GF_Node *node)
9806 : {
9807 : M_MovieTexture *p = (M_MovieTexture *) node;
9808 321 : gf_sg_mfurl_del(p->url);
9809 321 : gf_node_free((GF_Node *) p);
9810 : }
9811 :
9812 : static const u16 MovieTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
9813 : static const u16 MovieTexture_In2All[] = { 0, 1, 2, 3, 4};
9814 : static const u16 MovieTexture_Out2All[] = { 0, 1, 2, 3, 4, 7, 8};
9815 : static const u16 MovieTexture_Dyn2All[] = { 1};
9816 :
9817 : static u32 MovieTexture_get_field_count(GF_Node *node, u8 IndexMode)
9818 : {
9819 : switch(IndexMode) {
9820 : case GF_SG_FIELD_CODING_IN:
9821 : return 5;
9822 : case GF_SG_FIELD_CODING_DEF:
9823 : return 7;
9824 : case GF_SG_FIELD_CODING_OUT:
9825 : return 7;
9826 : case GF_SG_FIELD_CODING_DYN:
9827 : return 1;
9828 : default:
9829 : return 9;
9830 : }
9831 : }
9832 :
9833 : static GF_Err MovieTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9834 : {
9835 194 : switch(IndexMode) {
9836 0 : case GF_SG_FIELD_CODING_IN:
9837 0 : *allField = MovieTexture_In2All[inField];
9838 : return GF_OK;
9839 185 : case GF_SG_FIELD_CODING_DEF:
9840 185 : *allField = MovieTexture_Def2All[inField];
9841 : return GF_OK;
9842 0 : case GF_SG_FIELD_CODING_OUT:
9843 0 : *allField = MovieTexture_Out2All[inField];
9844 : return GF_OK;
9845 0 : case GF_SG_FIELD_CODING_DYN:
9846 0 : *allField = MovieTexture_Dyn2All[inField];
9847 : return GF_OK;
9848 : default:
9849 : return GF_BAD_PARAM;
9850 : }
9851 : }
9852 786 : static GF_Err MovieTexture_get_field(GF_Node *node, GF_FieldInfo *info)
9853 : {
9854 786 : switch (info->fieldIndex) {
9855 112 : case 0:
9856 112 : info->name = "loop";
9857 112 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9858 112 : info->fieldType = GF_SG_VRML_SFBOOL;
9859 112 : info->far_ptr = & ((M_MovieTexture *) node)->loop;
9860 112 : return GF_OK;
9861 82 : case 1:
9862 82 : info->name = "speed";
9863 82 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9864 82 : info->fieldType = GF_SG_VRML_SFFLOAT;
9865 82 : info->far_ptr = & ((M_MovieTexture *) node)->speed;
9866 82 : return GF_OK;
9867 144 : case 2:
9868 144 : info->name = "startTime";
9869 144 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9870 144 : info->fieldType = GF_SG_VRML_SFTIME;
9871 144 : info->far_ptr = & ((M_MovieTexture *) node)->startTime;
9872 144 : return GF_OK;
9873 93 : case 3:
9874 93 : info->name = "stopTime";
9875 93 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9876 93 : info->fieldType = GF_SG_VRML_SFTIME;
9877 93 : info->far_ptr = & ((M_MovieTexture *) node)->stopTime;
9878 93 : return GF_OK;
9879 133 : case 4:
9880 133 : info->name = "url";
9881 133 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
9882 133 : info->fieldType = GF_SG_VRML_MFURL;
9883 133 : info->far_ptr = & ((M_MovieTexture *) node)->url;
9884 133 : return GF_OK;
9885 92 : case 5:
9886 92 : info->name = "repeatS";
9887 92 : info->eventType = GF_SG_EVENT_FIELD;
9888 92 : info->fieldType = GF_SG_VRML_SFBOOL;
9889 92 : info->far_ptr = & ((M_MovieTexture *) node)->repeatS;
9890 92 : return GF_OK;
9891 92 : case 6:
9892 92 : info->name = "repeatT";
9893 92 : info->eventType = GF_SG_EVENT_FIELD;
9894 92 : info->fieldType = GF_SG_VRML_SFBOOL;
9895 92 : info->far_ptr = & ((M_MovieTexture *) node)->repeatT;
9896 92 : return GF_OK;
9897 19 : case 7:
9898 19 : info->name = "duration_changed";
9899 19 : info->eventType = GF_SG_EVENT_OUT;
9900 19 : info->fieldType = GF_SG_VRML_SFTIME;
9901 19 : info->far_ptr = & ((M_MovieTexture *) node)->duration_changed;
9902 19 : return GF_OK;
9903 19 : case 8:
9904 19 : info->name = "isActive";
9905 19 : info->eventType = GF_SG_EVENT_OUT;
9906 19 : info->fieldType = GF_SG_VRML_SFBOOL;
9907 19 : info->far_ptr = & ((M_MovieTexture *) node)->isActive;
9908 19 : return GF_OK;
9909 : default:
9910 : return GF_BAD_PARAM;
9911 : }
9912 : }
9913 :
9914 :
9915 119 : static s32 MovieTexture_get_field_index_by_name(char *name)
9916 : {
9917 119 : if (!strcmp("loop", name)) return 0;
9918 90 : if (!strcmp("speed", name)) return 1;
9919 89 : if (!strcmp("startTime", name)) return 2;
9920 71 : if (!strcmp("stopTime", name)) return 3;
9921 62 : if (!strcmp("url", name)) return 4;
9922 20 : if (!strcmp("repeatS", name)) return 5;
9923 11 : if (!strcmp("repeatT", name)) return 6;
9924 2 : if (!strcmp("duration_changed", name)) return 7;
9925 1 : if (!strcmp("isActive", name)) return 8;
9926 0 : return -1;
9927 : }
9928 : static Bool MovieTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
9929 : {
9930 9 : switch (FieldIndex) {
9931 1 : case 1:
9932 1 : *AType = 7;
9933 1 : *QType = 0;
9934 1 : *b_min = FIX_MIN;
9935 1 : *b_max = FIX_MAX;
9936 : return 1;
9937 : default:
9938 : return 0;
9939 : }
9940 : }
9941 :
9942 :
9943 :
9944 321 : GF_Node *MovieTexture_Create()
9945 : {
9946 : M_MovieTexture *p;
9947 321 : GF_SAFEALLOC(p, M_MovieTexture);
9948 321 : if(!p) return NULL;
9949 321 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MovieTexture);
9950 :
9951 : /*default field values*/
9952 321 : p->speed = FLT2FIX(1.0);
9953 321 : p->startTime = 0;
9954 321 : p->stopTime = 0;
9955 321 : p->repeatS = 1;
9956 321 : p->repeatT = 1;
9957 321 : return (GF_Node *)p;
9958 : }
9959 :
9960 :
9961 : /*
9962 : NavigationInfo Node deletion
9963 : */
9964 :
9965 93 : static void NavigationInfo_Del(GF_Node *node)
9966 : {
9967 : M_NavigationInfo *p = (M_NavigationInfo *) node;
9968 93 : gf_sg_mffloat_del(p->avatarSize);
9969 93 : gf_sg_mfstring_del(p->type);
9970 93 : gf_node_free((GF_Node *) p);
9971 93 : }
9972 :
9973 : static const u16 NavigationInfo_Def2All[] = { 1, 2, 3, 4, 5};
9974 : static const u16 NavigationInfo_In2All[] = { 0, 1, 2, 3, 4, 5};
9975 : static const u16 NavigationInfo_Out2All[] = { 1, 2, 3, 4, 5, 6};
9976 : static const u16 NavigationInfo_Dyn2All[] = { 5};
9977 :
9978 : static u32 NavigationInfo_get_field_count(GF_Node *node, u8 IndexMode)
9979 : {
9980 : switch(IndexMode) {
9981 : case GF_SG_FIELD_CODING_IN:
9982 : return 6;
9983 : case GF_SG_FIELD_CODING_DEF:
9984 : return 5;
9985 : case GF_SG_FIELD_CODING_OUT:
9986 : return 6;
9987 : case GF_SG_FIELD_CODING_DYN:
9988 : return 1;
9989 : default:
9990 : return 7;
9991 : }
9992 : }
9993 :
9994 : static GF_Err NavigationInfo_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
9995 : {
9996 137 : switch(IndexMode) {
9997 0 : case GF_SG_FIELD_CODING_IN:
9998 0 : *allField = NavigationInfo_In2All[inField];
9999 : return GF_OK;
10000 130 : case GF_SG_FIELD_CODING_DEF:
10001 130 : *allField = NavigationInfo_Def2All[inField];
10002 : return GF_OK;
10003 0 : case GF_SG_FIELD_CODING_OUT:
10004 0 : *allField = NavigationInfo_Out2All[inField];
10005 : return GF_OK;
10006 0 : case GF_SG_FIELD_CODING_DYN:
10007 0 : *allField = NavigationInfo_Dyn2All[inField];
10008 : return GF_OK;
10009 : default:
10010 : return GF_BAD_PARAM;
10011 : }
10012 : }
10013 509 : static GF_Err NavigationInfo_get_field(GF_Node *node, GF_FieldInfo *info)
10014 : {
10015 509 : switch (info->fieldIndex) {
10016 17 : case 0:
10017 17 : info->name = "set_bind";
10018 17 : info->eventType = GF_SG_EVENT_IN;
10019 17 : info->on_event_in = ((M_NavigationInfo *)node)->on_set_bind;
10020 17 : info->fieldType = GF_SG_VRML_SFBOOL;
10021 17 : info->far_ptr = & ((M_NavigationInfo *) node)->set_bind;
10022 17 : return GF_OK;
10023 138 : case 1:
10024 138 : info->name = "avatarSize";
10025 138 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10026 138 : info->fieldType = GF_SG_VRML_MFFLOAT;
10027 138 : info->far_ptr = & ((M_NavigationInfo *) node)->avatarSize;
10028 138 : return GF_OK;
10029 83 : case 2:
10030 83 : info->name = "headlight";
10031 83 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10032 83 : info->fieldType = GF_SG_VRML_SFBOOL;
10033 83 : info->far_ptr = & ((M_NavigationInfo *) node)->headlight;
10034 83 : return GF_OK;
10035 78 : case 3:
10036 78 : info->name = "speed";
10037 78 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10038 78 : info->fieldType = GF_SG_VRML_SFFLOAT;
10039 78 : info->far_ptr = & ((M_NavigationInfo *) node)->speed;
10040 78 : return GF_OK;
10041 98 : case 4:
10042 98 : info->name = "type";
10043 98 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10044 98 : info->fieldType = GF_SG_VRML_MFSTRING;
10045 98 : info->far_ptr = & ((M_NavigationInfo *) node)->type;
10046 98 : return GF_OK;
10047 78 : case 5:
10048 78 : info->name = "visibilityLimit";
10049 78 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10050 78 : info->fieldType = GF_SG_VRML_SFFLOAT;
10051 78 : info->far_ptr = & ((M_NavigationInfo *) node)->visibilityLimit;
10052 78 : return GF_OK;
10053 17 : case 6:
10054 17 : info->name = "isBound";
10055 17 : info->eventType = GF_SG_EVENT_OUT;
10056 17 : info->fieldType = GF_SG_VRML_SFBOOL;
10057 17 : info->far_ptr = & ((M_NavigationInfo *) node)->isBound;
10058 17 : return GF_OK;
10059 : default:
10060 : return GF_BAD_PARAM;
10061 : }
10062 : }
10063 :
10064 :
10065 45 : static s32 NavigationInfo_get_field_index_by_name(char *name)
10066 : {
10067 45 : if (!strcmp("set_bind", name)) return 0;
10068 44 : if (!strcmp("avatarSize", name)) return 1;
10069 27 : if (!strcmp("headlight", name)) return 2;
10070 21 : if (!strcmp("speed", name)) return 3;
10071 20 : if (!strcmp("type", name)) return 4;
10072 2 : if (!strcmp("visibilityLimit", name)) return 5;
10073 1 : if (!strcmp("isBound", name)) return 6;
10074 0 : return -1;
10075 : }
10076 : static Bool NavigationInfo_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10077 : {
10078 31 : switch (FieldIndex) {
10079 25 : case 1:
10080 25 : *AType = 0;
10081 25 : *QType = 11;
10082 25 : *b_min = FLT2FIX(0);
10083 25 : *b_max = FIX_MAX;
10084 : return 1;
10085 1 : case 3:
10086 1 : *AType = 0;
10087 1 : *QType = 0;
10088 1 : *b_min = FLT2FIX(0);
10089 1 : *b_max = FIX_MAX;
10090 : return 1;
10091 1 : case 5:
10092 1 : *AType = 7;
10093 1 : *QType = 11;
10094 1 : *b_min = FLT2FIX(0);
10095 1 : *b_max = FIX_MAX;
10096 : return 1;
10097 : default:
10098 : return 0;
10099 : }
10100 : }
10101 :
10102 :
10103 :
10104 93 : GF_Node *NavigationInfo_Create()
10105 : {
10106 : M_NavigationInfo *p;
10107 93 : GF_SAFEALLOC(p, M_NavigationInfo);
10108 93 : if(!p) return NULL;
10109 93 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NavigationInfo);
10110 :
10111 : /*default field values*/
10112 93 : p->avatarSize.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*3);
10113 93 : p->avatarSize.count = 3;
10114 93 : p->avatarSize.vals[0] = FLT2FIX(0.25);
10115 93 : p->avatarSize.vals[1] = FLT2FIX(1.6);
10116 93 : p->avatarSize.vals[2] = FLT2FIX(0.75);
10117 93 : p->headlight = 1;
10118 93 : p->speed = FLT2FIX(1.0);
10119 93 : p->type.vals = (char**)gf_malloc(sizeof(SFString)*2);
10120 93 : p->type.count = 2;
10121 93 : p->type.vals[0] = (char*)gf_malloc(sizeof(char) * 5);
10122 93 : strcpy(p->type.vals[0], "WALK");
10123 93 : p->type.vals[1] = (char*)gf_malloc(sizeof(char) * 4);
10124 93 : strcpy(p->type.vals[1], "ANY");
10125 93 : p->visibilityLimit = FLT2FIX(0.0);
10126 93 : return (GF_Node *)p;
10127 : }
10128 :
10129 :
10130 : /*
10131 : Normal Node deletion
10132 : */
10133 :
10134 : static void Normal_Del(GF_Node *node)
10135 : {
10136 : M_Normal *p = (M_Normal *) node;
10137 66 : gf_sg_mfvec3f_del(p->vector);
10138 66 : gf_node_free((GF_Node *) p);
10139 : }
10140 :
10141 : static const u16 Normal_Def2All[] = { 0};
10142 : static const u16 Normal_In2All[] = { 0};
10143 : static const u16 Normal_Out2All[] = { 0};
10144 : static const u16 Normal_Dyn2All[] = { 0};
10145 :
10146 : static u32 Normal_get_field_count(GF_Node *node, u8 IndexMode)
10147 : {
10148 : switch(IndexMode) {
10149 : case GF_SG_FIELD_CODING_IN:
10150 : return 1;
10151 : case GF_SG_FIELD_CODING_DEF:
10152 : return 1;
10153 : case GF_SG_FIELD_CODING_OUT:
10154 : return 1;
10155 : case GF_SG_FIELD_CODING_DYN:
10156 : return 1;
10157 : default:
10158 : return 1;
10159 : }
10160 : }
10161 :
10162 : static GF_Err Normal_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10163 : {
10164 36 : switch(IndexMode) {
10165 0 : case GF_SG_FIELD_CODING_IN:
10166 0 : *allField = Normal_In2All[inField];
10167 : return GF_OK;
10168 35 : case GF_SG_FIELD_CODING_DEF:
10169 35 : *allField = Normal_Def2All[inField];
10170 : return GF_OK;
10171 0 : case GF_SG_FIELD_CODING_OUT:
10172 0 : *allField = Normal_Out2All[inField];
10173 : return GF_OK;
10174 0 : case GF_SG_FIELD_CODING_DYN:
10175 0 : *allField = Normal_Dyn2All[inField];
10176 : return GF_OK;
10177 : default:
10178 : return GF_BAD_PARAM;
10179 : }
10180 : }
10181 : static GF_Err Normal_get_field(GF_Node *node, GF_FieldInfo *info)
10182 : {
10183 131 : switch (info->fieldIndex) {
10184 131 : case 0:
10185 131 : info->name = "vector";
10186 131 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10187 131 : info->fieldType = GF_SG_VRML_MFVEC3F;
10188 131 : info->far_ptr = & ((M_Normal *) node)->vector;
10189 : return GF_OK;
10190 : default:
10191 : return GF_BAD_PARAM;
10192 : }
10193 : }
10194 :
10195 :
10196 : static s32 Normal_get_field_index_by_name(char *name)
10197 : {
10198 16 : if (!strcmp("vector", name)) return 0;
10199 : return -1;
10200 : }
10201 : static Bool Normal_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10202 : {
10203 106 : switch (FieldIndex) {
10204 106 : case 0:
10205 106 : *AType = 9;
10206 106 : *QType = 9;
10207 : return 1;
10208 : default:
10209 : return 0;
10210 : }
10211 : }
10212 :
10213 :
10214 :
10215 66 : GF_Node *Normal_Create()
10216 : {
10217 : M_Normal *p;
10218 66 : GF_SAFEALLOC(p, M_Normal);
10219 66 : if(!p) return NULL;
10220 66 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Normal);
10221 :
10222 : /*default field values*/
10223 66 : return (GF_Node *)p;
10224 : }
10225 :
10226 :
10227 : /*
10228 : NormalInterpolator Node deletion
10229 : */
10230 :
10231 2 : static void NormalInterpolator_Del(GF_Node *node)
10232 : {
10233 : M_NormalInterpolator *p = (M_NormalInterpolator *) node;
10234 2 : gf_sg_mffloat_del(p->key);
10235 2 : gf_sg_mfvec3f_del(p->keyValue);
10236 2 : gf_sg_mfvec3f_del(p->value_changed);
10237 2 : gf_node_free((GF_Node *) p);
10238 2 : }
10239 :
10240 : static const u16 NormalInterpolator_Def2All[] = { 1, 2};
10241 : static const u16 NormalInterpolator_In2All[] = { 0, 1, 2};
10242 : static const u16 NormalInterpolator_Out2All[] = { 1, 2, 3};
10243 :
10244 : static u32 NormalInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
10245 : {
10246 : switch(IndexMode) {
10247 : case GF_SG_FIELD_CODING_IN:
10248 : return 3;
10249 : case GF_SG_FIELD_CODING_DEF:
10250 : return 2;
10251 : case GF_SG_FIELD_CODING_OUT:
10252 : return 3;
10253 : case GF_SG_FIELD_CODING_DYN:
10254 : return 0;
10255 : default:
10256 : return 4;
10257 : }
10258 : }
10259 :
10260 : static GF_Err NormalInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10261 : {
10262 4 : switch(IndexMode) {
10263 0 : case GF_SG_FIELD_CODING_IN:
10264 0 : *allField = NormalInterpolator_In2All[inField];
10265 : return GF_OK;
10266 0 : case GF_SG_FIELD_CODING_DEF:
10267 0 : *allField = NormalInterpolator_Def2All[inField];
10268 : return GF_OK;
10269 0 : case GF_SG_FIELD_CODING_OUT:
10270 0 : *allField = NormalInterpolator_Out2All[inField];
10271 : return GF_OK;
10272 : default:
10273 : return GF_BAD_PARAM;
10274 : }
10275 : }
10276 12 : static GF_Err NormalInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
10277 : {
10278 12 : switch (info->fieldIndex) {
10279 4 : case 0:
10280 4 : info->name = "set_fraction";
10281 4 : info->eventType = GF_SG_EVENT_IN;
10282 4 : info->on_event_in = ((M_NormalInterpolator *)node)->on_set_fraction;
10283 4 : info->fieldType = GF_SG_VRML_SFFLOAT;
10284 4 : info->far_ptr = & ((M_NormalInterpolator *) node)->set_fraction;
10285 4 : return GF_OK;
10286 3 : case 1:
10287 3 : info->name = "key";
10288 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10289 3 : info->fieldType = GF_SG_VRML_MFFLOAT;
10290 3 : info->far_ptr = & ((M_NormalInterpolator *) node)->key;
10291 3 : return GF_OK;
10292 3 : case 2:
10293 3 : info->name = "keyValue";
10294 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10295 3 : info->fieldType = GF_SG_VRML_MFVEC3F;
10296 3 : info->far_ptr = & ((M_NormalInterpolator *) node)->keyValue;
10297 3 : return GF_OK;
10298 2 : case 3:
10299 2 : info->name = "value_changed";
10300 2 : info->eventType = GF_SG_EVENT_OUT;
10301 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
10302 2 : info->far_ptr = & ((M_NormalInterpolator *) node)->value_changed;
10303 2 : return GF_OK;
10304 : default:
10305 : return GF_BAD_PARAM;
10306 : }
10307 : }
10308 :
10309 :
10310 7 : static s32 NormalInterpolator_get_field_index_by_name(char *name)
10311 : {
10312 7 : if (!strcmp("set_fraction", name)) return 0;
10313 5 : if (!strcmp("key", name)) return 1;
10314 3 : if (!strcmp("keyValue", name)) return 2;
10315 1 : if (!strcmp("value_changed", name)) return 3;
10316 0 : return -1;
10317 : }
10318 : static Bool NormalInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10319 : {
10320 4 : switch (FieldIndex) {
10321 1 : case 1:
10322 1 : *AType = 0;
10323 1 : *QType = 8;
10324 1 : *b_min = FLT2FIX(0);
10325 1 : *b_max = FLT2FIX(1);
10326 : return 1;
10327 1 : case 2:
10328 1 : *AType = 0;
10329 1 : *QType = 9;
10330 1 : *b_min = FIX_MIN;
10331 1 : *b_max = FIX_MAX;
10332 : return 1;
10333 : default:
10334 : return 0;
10335 : }
10336 : }
10337 :
10338 :
10339 :
10340 2 : GF_Node *NormalInterpolator_Create()
10341 : {
10342 : M_NormalInterpolator *p;
10343 2 : GF_SAFEALLOC(p, M_NormalInterpolator);
10344 2 : if(!p) return NULL;
10345 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NormalInterpolator);
10346 :
10347 : /*default field values*/
10348 2 : return (GF_Node *)p;
10349 : }
10350 :
10351 :
10352 : /*
10353 : OrderedGroup Node deletion
10354 : */
10355 :
10356 1525 : static void OrderedGroup_Del(GF_Node *node)
10357 : {
10358 : M_OrderedGroup *p = (M_OrderedGroup *) node;
10359 1525 : gf_sg_mffloat_del(p->order);
10360 1525 : gf_sg_vrml_parent_destroy((GF_Node *) p);
10361 1525 : gf_node_free((GF_Node *) p);
10362 1525 : }
10363 :
10364 : static const u16 OrderedGroup_Def2All[] = { 2, 3};
10365 : static const u16 OrderedGroup_In2All[] = { 0, 1, 2, 3};
10366 : static const u16 OrderedGroup_Out2All[] = { 2, 3};
10367 :
10368 : static u32 OrderedGroup_get_field_count(GF_Node *node, u8 IndexMode)
10369 : {
10370 : switch(IndexMode) {
10371 : case GF_SG_FIELD_CODING_IN:
10372 : return 4;
10373 : case GF_SG_FIELD_CODING_DEF:
10374 : return 2;
10375 : case GF_SG_FIELD_CODING_OUT:
10376 : return 2;
10377 : case GF_SG_FIELD_CODING_DYN:
10378 : return 0;
10379 : default:
10380 : return 4;
10381 : }
10382 : }
10383 :
10384 : static GF_Err OrderedGroup_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10385 : {
10386 948 : switch(IndexMode) {
10387 5 : case GF_SG_FIELD_CODING_IN:
10388 5 : *allField = OrderedGroup_In2All[inField];
10389 : return GF_OK;
10390 939 : case GF_SG_FIELD_CODING_DEF:
10391 939 : *allField = OrderedGroup_Def2All[inField];
10392 : return GF_OK;
10393 0 : case GF_SG_FIELD_CODING_OUT:
10394 0 : *allField = OrderedGroup_Out2All[inField];
10395 : return GF_OK;
10396 : default:
10397 : return GF_BAD_PARAM;
10398 : }
10399 : }
10400 2685 : static GF_Err OrderedGroup_get_field(GF_Node *node, GF_FieldInfo *info)
10401 : {
10402 2685 : switch (info->fieldIndex) {
10403 139 : case 0:
10404 139 : info->name = "addChildren";
10405 139 : info->eventType = GF_SG_EVENT_IN;
10406 139 : info->on_event_in = ((M_OrderedGroup *)node)->on_addChildren;
10407 139 : info->fieldType = GF_SG_VRML_MFNODE;
10408 139 : info->NDTtype = NDT_SF3DNode;
10409 139 : info->far_ptr = & ((M_OrderedGroup *)node)->addChildren;
10410 139 : return GF_OK;
10411 130 : case 1:
10412 130 : info->name = "removeChildren";
10413 130 : info->eventType = GF_SG_EVENT_IN;
10414 130 : info->on_event_in = ((M_OrderedGroup *)node)->on_removeChildren;
10415 130 : info->fieldType = GF_SG_VRML_MFNODE;
10416 130 : info->NDTtype = NDT_SF3DNode;
10417 130 : info->far_ptr = & ((M_OrderedGroup *)node)->removeChildren;
10418 130 : return GF_OK;
10419 1542 : case 2:
10420 1542 : info->name = "children";
10421 1542 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10422 1542 : info->fieldType = GF_SG_VRML_MFNODE;
10423 1542 : info->NDTtype = NDT_SF3DNode;
10424 1542 : info->far_ptr = & ((M_OrderedGroup *)node)->children;
10425 1542 : return GF_OK;
10426 874 : case 3:
10427 874 : info->name = "order";
10428 874 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10429 874 : info->fieldType = GF_SG_VRML_MFFLOAT;
10430 874 : info->far_ptr = & ((M_OrderedGroup *) node)->order;
10431 874 : return GF_OK;
10432 : default:
10433 : return GF_BAD_PARAM;
10434 : }
10435 : }
10436 :
10437 :
10438 449 : static s32 OrderedGroup_get_field_index_by_name(char *name)
10439 : {
10440 449 : if (!strcmp("addChildren", name)) return 0;
10441 448 : if (!strcmp("removeChildren", name)) return 1;
10442 447 : if (!strcmp("children", name)) return 2;
10443 4 : if (!strcmp("order", name)) return 3;
10444 0 : return -1;
10445 : }
10446 : static Bool OrderedGroup_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10447 : {
10448 4 : switch (FieldIndex) {
10449 1 : case 3:
10450 1 : *AType = 0;
10451 1 : *QType = 3;
10452 1 : *b_min = FLT2FIX(0);
10453 1 : *b_max = FIX_MAX;
10454 : return 1;
10455 : default:
10456 : return 0;
10457 : }
10458 : }
10459 :
10460 :
10461 :
10462 1525 : GF_Node *OrderedGroup_Create()
10463 : {
10464 : M_OrderedGroup *p;
10465 1525 : GF_SAFEALLOC(p, M_OrderedGroup);
10466 1525 : if(!p) return NULL;
10467 1525 : gf_node_setup((GF_Node *)p, TAG_MPEG4_OrderedGroup);
10468 1525 : gf_sg_vrml_parent_setup((GF_Node *) p);
10469 :
10470 : /*default field values*/
10471 1525 : return (GF_Node *)p;
10472 : }
10473 :
10474 :
10475 : /*
10476 : OrientationInterpolator Node deletion
10477 : */
10478 :
10479 19 : static void OrientationInterpolator_Del(GF_Node *node)
10480 : {
10481 : M_OrientationInterpolator *p = (M_OrientationInterpolator *) node;
10482 19 : gf_sg_mffloat_del(p->key);
10483 19 : gf_sg_mfrotation_del(p->keyValue);
10484 19 : gf_node_free((GF_Node *) p);
10485 19 : }
10486 :
10487 : static const u16 OrientationInterpolator_Def2All[] = { 1, 2};
10488 : static const u16 OrientationInterpolator_In2All[] = { 0, 1, 2};
10489 : static const u16 OrientationInterpolator_Out2All[] = { 1, 2, 3};
10490 :
10491 : static u32 OrientationInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
10492 : {
10493 : switch(IndexMode) {
10494 : case GF_SG_FIELD_CODING_IN:
10495 : return 3;
10496 : case GF_SG_FIELD_CODING_DEF:
10497 : return 2;
10498 : case GF_SG_FIELD_CODING_OUT:
10499 : return 3;
10500 : case GF_SG_FIELD_CODING_DYN:
10501 : return 0;
10502 : default:
10503 : return 4;
10504 : }
10505 : }
10506 :
10507 : static GF_Err OrientationInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10508 : {
10509 4 : switch(IndexMode) {
10510 0 : case GF_SG_FIELD_CODING_IN:
10511 0 : *allField = OrientationInterpolator_In2All[inField];
10512 : return GF_OK;
10513 0 : case GF_SG_FIELD_CODING_DEF:
10514 0 : *allField = OrientationInterpolator_Def2All[inField];
10515 : return GF_OK;
10516 0 : case GF_SG_FIELD_CODING_OUT:
10517 0 : *allField = OrientationInterpolator_Out2All[inField];
10518 : return GF_OK;
10519 : default:
10520 : return GF_BAD_PARAM;
10521 : }
10522 : }
10523 116 : static GF_Err OrientationInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
10524 : {
10525 116 : switch (info->fieldIndex) {
10526 37 : case 0:
10527 37 : info->name = "set_fraction";
10528 37 : info->eventType = GF_SG_EVENT_IN;
10529 37 : info->on_event_in = ((M_OrientationInterpolator *)node)->on_set_fraction;
10530 37 : info->fieldType = GF_SG_VRML_SFFLOAT;
10531 37 : info->far_ptr = & ((M_OrientationInterpolator *) node)->set_fraction;
10532 37 : return GF_OK;
10533 20 : case 1:
10534 20 : info->name = "key";
10535 20 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10536 20 : info->fieldType = GF_SG_VRML_MFFLOAT;
10537 20 : info->far_ptr = & ((M_OrientationInterpolator *) node)->key;
10538 20 : return GF_OK;
10539 20 : case 2:
10540 20 : info->name = "keyValue";
10541 20 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10542 20 : info->fieldType = GF_SG_VRML_MFROTATION;
10543 20 : info->far_ptr = & ((M_OrientationInterpolator *) node)->keyValue;
10544 20 : return GF_OK;
10545 39 : case 3:
10546 39 : info->name = "value_changed";
10547 39 : info->eventType = GF_SG_EVENT_OUT;
10548 39 : info->fieldType = GF_SG_VRML_SFROTATION;
10549 39 : info->far_ptr = & ((M_OrientationInterpolator *) node)->value_changed;
10550 39 : return GF_OK;
10551 : default:
10552 : return GF_BAD_PARAM;
10553 : }
10554 : }
10555 :
10556 :
10557 77 : static s32 OrientationInterpolator_get_field_index_by_name(char *name)
10558 : {
10559 77 : if (!strcmp("set_fraction", name)) return 0;
10560 58 : if (!strcmp("key", name)) return 1;
10561 39 : if (!strcmp("keyValue", name)) return 2;
10562 20 : if (!strcmp("value_changed", name)) return 3;
10563 0 : return -1;
10564 : }
10565 : static Bool OrientationInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10566 : {
10567 4 : switch (FieldIndex) {
10568 1 : case 1:
10569 1 : *AType = 0;
10570 1 : *QType = 8;
10571 1 : *b_min = FLT2FIX(0);
10572 1 : *b_max = FLT2FIX(1);
10573 : return 1;
10574 1 : case 2:
10575 1 : *AType = 0;
10576 1 : *QType = 10;
10577 1 : *b_min = FIX_MIN;
10578 1 : *b_max = FIX_MAX;
10579 : return 1;
10580 : default:
10581 : return 0;
10582 : }
10583 : }
10584 :
10585 :
10586 :
10587 19 : GF_Node *OrientationInterpolator_Create()
10588 : {
10589 : M_OrientationInterpolator *p;
10590 19 : GF_SAFEALLOC(p, M_OrientationInterpolator);
10591 19 : if(!p) return NULL;
10592 19 : gf_node_setup((GF_Node *)p, TAG_MPEG4_OrientationInterpolator);
10593 :
10594 : /*default field values*/
10595 19 : return (GF_Node *)p;
10596 : }
10597 :
10598 :
10599 : /*
10600 : PixelTexture Node deletion
10601 : */
10602 :
10603 : static void PixelTexture_Del(GF_Node *node)
10604 : {
10605 : M_PixelTexture *p = (M_PixelTexture *) node;
10606 70 : gf_sg_sfimage_del(p->image);
10607 70 : gf_node_free((GF_Node *) p);
10608 : }
10609 :
10610 : static const u16 PixelTexture_Def2All[] = { 0, 1, 2};
10611 : static const u16 PixelTexture_In2All[] = { 0};
10612 : static const u16 PixelTexture_Out2All[] = { 0};
10613 :
10614 : static u32 PixelTexture_get_field_count(GF_Node *node, u8 IndexMode)
10615 : {
10616 : switch(IndexMode) {
10617 : case GF_SG_FIELD_CODING_IN:
10618 : return 1;
10619 : case GF_SG_FIELD_CODING_DEF:
10620 : return 3;
10621 : case GF_SG_FIELD_CODING_OUT:
10622 : return 1;
10623 : case GF_SG_FIELD_CODING_DYN:
10624 : return 0;
10625 : default:
10626 : return 3;
10627 : }
10628 : }
10629 :
10630 : static GF_Err PixelTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10631 : {
10632 78 : switch(IndexMode) {
10633 0 : case GF_SG_FIELD_CODING_IN:
10634 0 : *allField = PixelTexture_In2All[inField];
10635 : return GF_OK;
10636 75 : case GF_SG_FIELD_CODING_DEF:
10637 75 : *allField = PixelTexture_Def2All[inField];
10638 : return GF_OK;
10639 0 : case GF_SG_FIELD_CODING_OUT:
10640 0 : *allField = PixelTexture_Out2All[inField];
10641 : return GF_OK;
10642 : default:
10643 : return GF_BAD_PARAM;
10644 : }
10645 : }
10646 : static GF_Err PixelTexture_get_field(GF_Node *node, GF_FieldInfo *info)
10647 : {
10648 279 : switch (info->fieldIndex) {
10649 135 : case 0:
10650 135 : info->name = "image";
10651 135 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10652 135 : info->fieldType = GF_SG_VRML_SFIMAGE;
10653 135 : info->far_ptr = & ((M_PixelTexture *) node)->image;
10654 : return GF_OK;
10655 72 : case 1:
10656 72 : info->name = "repeatS";
10657 72 : info->eventType = GF_SG_EVENT_FIELD;
10658 72 : info->fieldType = GF_SG_VRML_SFBOOL;
10659 72 : info->far_ptr = & ((M_PixelTexture *) node)->repeatS;
10660 : return GF_OK;
10661 72 : case 2:
10662 72 : info->name = "repeatT";
10663 72 : info->eventType = GF_SG_EVENT_FIELD;
10664 72 : info->fieldType = GF_SG_VRML_SFBOOL;
10665 72 : info->far_ptr = & ((M_PixelTexture *) node)->repeatT;
10666 : return GF_OK;
10667 : default:
10668 : return GF_BAD_PARAM;
10669 : }
10670 : }
10671 :
10672 :
10673 22 : static s32 PixelTexture_get_field_index_by_name(char *name)
10674 : {
10675 22 : if (!strcmp("image", name)) return 0;
10676 2 : if (!strcmp("repeatS", name)) return 1;
10677 1 : if (!strcmp("repeatT", name)) return 2;
10678 0 : return -1;
10679 : }
10680 : static Bool PixelTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10681 : {
10682 3 : switch (FieldIndex) {
10683 1 : case 0:
10684 1 : *AType = 0;
10685 1 : *QType = 0;
10686 : return 1;
10687 : default:
10688 : return 0;
10689 : }
10690 : }
10691 :
10692 :
10693 :
10694 70 : GF_Node *PixelTexture_Create()
10695 : {
10696 : M_PixelTexture *p;
10697 70 : GF_SAFEALLOC(p, M_PixelTexture);
10698 70 : if(!p) return NULL;
10699 70 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PixelTexture);
10700 :
10701 : /*default field values*/
10702 70 : p->repeatS = 1;
10703 70 : p->repeatT = 1;
10704 70 : return (GF_Node *)p;
10705 : }
10706 :
10707 :
10708 : /*
10709 : PlaneSensor Node deletion
10710 : */
10711 :
10712 : static void PlaneSensor_Del(GF_Node *node)
10713 : {
10714 : M_PlaneSensor *p = (M_PlaneSensor *) node;
10715 67 : gf_node_free((GF_Node *) p);
10716 : }
10717 :
10718 : static const u16 PlaneSensor_Def2All[] = { 0, 1, 2, 3, 4};
10719 : static const u16 PlaneSensor_In2All[] = { 0, 1, 2, 3, 4};
10720 : static const u16 PlaneSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
10721 :
10722 : static u32 PlaneSensor_get_field_count(GF_Node *node, u8 IndexMode)
10723 : {
10724 : switch(IndexMode) {
10725 : case GF_SG_FIELD_CODING_IN:
10726 : return 5;
10727 : case GF_SG_FIELD_CODING_DEF:
10728 : return 5;
10729 : case GF_SG_FIELD_CODING_OUT:
10730 : return 8;
10731 : case GF_SG_FIELD_CODING_DYN:
10732 : return 0;
10733 : default:
10734 : return 8;
10735 : }
10736 : }
10737 :
10738 : static GF_Err PlaneSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10739 : {
10740 108 : switch(IndexMode) {
10741 0 : case GF_SG_FIELD_CODING_IN:
10742 0 : *allField = PlaneSensor_In2All[inField];
10743 : return GF_OK;
10744 100 : case GF_SG_FIELD_CODING_DEF:
10745 100 : *allField = PlaneSensor_Def2All[inField];
10746 : return GF_OK;
10747 0 : case GF_SG_FIELD_CODING_OUT:
10748 0 : *allField = PlaneSensor_Out2All[inField];
10749 : return GF_OK;
10750 : default:
10751 : return GF_BAD_PARAM;
10752 : }
10753 : }
10754 422 : static GF_Err PlaneSensor_get_field(GF_Node *node, GF_FieldInfo *info)
10755 : {
10756 422 : switch (info->fieldIndex) {
10757 72 : case 0:
10758 72 : info->name = "autoOffset";
10759 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10760 72 : info->fieldType = GF_SG_VRML_SFBOOL;
10761 72 : info->far_ptr = & ((M_PlaneSensor *) node)->autoOffset;
10762 72 : return GF_OK;
10763 72 : case 1:
10764 72 : info->name = "enabled";
10765 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10766 72 : info->fieldType = GF_SG_VRML_SFBOOL;
10767 72 : info->far_ptr = & ((M_PlaneSensor *) node)->enabled;
10768 72 : return GF_OK;
10769 73 : case 2:
10770 73 : info->name = "maxPosition";
10771 73 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10772 73 : info->fieldType = GF_SG_VRML_SFVEC2F;
10773 73 : info->far_ptr = & ((M_PlaneSensor *) node)->maxPosition;
10774 73 : return GF_OK;
10775 73 : case 3:
10776 73 : info->name = "minPosition";
10777 73 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10778 73 : info->fieldType = GF_SG_VRML_SFVEC2F;
10779 73 : info->far_ptr = & ((M_PlaneSensor *) node)->minPosition;
10780 73 : return GF_OK;
10781 73 : case 4:
10782 73 : info->name = "offset";
10783 73 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10784 73 : info->fieldType = GF_SG_VRML_SFVEC3F;
10785 73 : info->far_ptr = & ((M_PlaneSensor *) node)->offset;
10786 73 : return GF_OK;
10787 21 : case 5:
10788 21 : info->name = "isActive";
10789 21 : info->eventType = GF_SG_EVENT_OUT;
10790 21 : info->fieldType = GF_SG_VRML_SFBOOL;
10791 21 : info->far_ptr = & ((M_PlaneSensor *) node)->isActive;
10792 21 : return GF_OK;
10793 19 : case 6:
10794 19 : info->name = "trackPoint_changed";
10795 19 : info->eventType = GF_SG_EVENT_OUT;
10796 19 : info->fieldType = GF_SG_VRML_SFVEC3F;
10797 19 : info->far_ptr = & ((M_PlaneSensor *) node)->trackPoint_changed;
10798 19 : return GF_OK;
10799 19 : case 7:
10800 19 : info->name = "translation_changed";
10801 19 : info->eventType = GF_SG_EVENT_OUT;
10802 19 : info->fieldType = GF_SG_VRML_SFVEC3F;
10803 19 : info->far_ptr = & ((M_PlaneSensor *) node)->translation_changed;
10804 19 : return GF_OK;
10805 : default:
10806 : return GF_BAD_PARAM;
10807 : }
10808 : }
10809 :
10810 :
10811 15 : static s32 PlaneSensor_get_field_index_by_name(char *name)
10812 : {
10813 15 : if (!strcmp("autoOffset", name)) return 0;
10814 14 : if (!strcmp("enabled", name)) return 1;
10815 13 : if (!strcmp("maxPosition", name)) return 2;
10816 11 : if (!strcmp("minPosition", name)) return 3;
10817 9 : if (!strcmp("offset", name)) return 4;
10818 7 : if (!strcmp("isActive", name)) return 5;
10819 4 : if (!strcmp("trackPoint_changed", name)) return 6;
10820 2 : if (!strcmp("translation_changed", name)) return 7;
10821 0 : return -1;
10822 : }
10823 : static Bool PlaneSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10824 : {
10825 8 : switch (FieldIndex) {
10826 1 : case 2:
10827 1 : *AType = 0;
10828 1 : *QType = 2;
10829 1 : *b_min = FIX_MIN;
10830 1 : *b_max = FIX_MAX;
10831 : return 1;
10832 1 : case 3:
10833 1 : *AType = 0;
10834 1 : *QType = 2;
10835 1 : *b_min = FIX_MIN;
10836 1 : *b_max = FIX_MAX;
10837 : return 1;
10838 1 : case 4:
10839 1 : *AType = 0;
10840 1 : *QType = 1;
10841 1 : *b_min = FIX_MIN;
10842 1 : *b_max = FIX_MAX;
10843 : return 1;
10844 : default:
10845 : return 0;
10846 : }
10847 : }
10848 :
10849 :
10850 :
10851 67 : GF_Node *PlaneSensor_Create()
10852 : {
10853 : M_PlaneSensor *p;
10854 67 : GF_SAFEALLOC(p, M_PlaneSensor);
10855 67 : if(!p) return NULL;
10856 67 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PlaneSensor);
10857 :
10858 : /*default field values*/
10859 67 : p->autoOffset = 1;
10860 67 : p->enabled = 1;
10861 67 : p->maxPosition.x = FLT2FIX(-1);
10862 67 : p->maxPosition.y = FLT2FIX(-1);
10863 67 : p->minPosition.x = FLT2FIX(0);
10864 67 : p->minPosition.y = FLT2FIX(0);
10865 67 : p->offset.x = FLT2FIX(0);
10866 67 : p->offset.y = FLT2FIX(0);
10867 67 : p->offset.z = FLT2FIX(0);
10868 67 : return (GF_Node *)p;
10869 : }
10870 :
10871 :
10872 : /*
10873 : PlaneSensor2D Node deletion
10874 : */
10875 :
10876 : static void PlaneSensor2D_Del(GF_Node *node)
10877 : {
10878 : M_PlaneSensor2D *p = (M_PlaneSensor2D *) node;
10879 103 : gf_node_free((GF_Node *) p);
10880 : }
10881 :
10882 : static const u16 PlaneSensor2D_Def2All[] = { 0, 1, 2, 3, 4};
10883 : static const u16 PlaneSensor2D_In2All[] = { 0, 1, 2, 3, 4};
10884 : static const u16 PlaneSensor2D_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
10885 :
10886 : static u32 PlaneSensor2D_get_field_count(GF_Node *node, u8 IndexMode)
10887 : {
10888 : switch(IndexMode) {
10889 : case GF_SG_FIELD_CODING_IN:
10890 : return 5;
10891 : case GF_SG_FIELD_CODING_DEF:
10892 : return 5;
10893 : case GF_SG_FIELD_CODING_OUT:
10894 : return 8;
10895 : case GF_SG_FIELD_CODING_DYN:
10896 : return 0;
10897 : default:
10898 : return 8;
10899 : }
10900 : }
10901 :
10902 : static GF_Err PlaneSensor2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
10903 : {
10904 137 : switch(IndexMode) {
10905 0 : case GF_SG_FIELD_CODING_IN:
10906 0 : *allField = PlaneSensor2D_In2All[inField];
10907 : return GF_OK;
10908 112 : case GF_SG_FIELD_CODING_DEF:
10909 112 : *allField = PlaneSensor2D_Def2All[inField];
10910 : return GF_OK;
10911 17 : case GF_SG_FIELD_CODING_OUT:
10912 17 : *allField = PlaneSensor2D_Out2All[inField];
10913 : return GF_OK;
10914 : default:
10915 : return GF_BAD_PARAM;
10916 : }
10917 : }
10918 591 : static GF_Err PlaneSensor2D_get_field(GF_Node *node, GF_FieldInfo *info)
10919 : {
10920 591 : switch (info->fieldIndex) {
10921 80 : case 0:
10922 80 : info->name = "autoOffset";
10923 80 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10924 80 : info->fieldType = GF_SG_VRML_SFBOOL;
10925 80 : info->far_ptr = & ((M_PlaneSensor2D *) node)->autoOffset;
10926 80 : return GF_OK;
10927 76 : case 1:
10928 76 : info->name = "enabled";
10929 76 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10930 76 : info->fieldType = GF_SG_VRML_SFBOOL;
10931 76 : info->far_ptr = & ((M_PlaneSensor2D *) node)->enabled;
10932 76 : return GF_OK;
10933 129 : case 2:
10934 129 : info->name = "maxPosition";
10935 129 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10936 129 : info->fieldType = GF_SG_VRML_SFVEC2F;
10937 129 : info->far_ptr = & ((M_PlaneSensor2D *) node)->maxPosition;
10938 129 : return GF_OK;
10939 103 : case 3:
10940 103 : info->name = "minPosition";
10941 103 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10942 103 : info->fieldType = GF_SG_VRML_SFVEC2F;
10943 103 : info->far_ptr = & ((M_PlaneSensor2D *) node)->minPosition;
10944 103 : return GF_OK;
10945 83 : case 4:
10946 83 : info->name = "offset";
10947 83 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
10948 83 : info->fieldType = GF_SG_VRML_SFVEC2F;
10949 83 : info->far_ptr = & ((M_PlaneSensor2D *) node)->offset;
10950 83 : return GF_OK;
10951 33 : case 5:
10952 33 : info->name = "isActive";
10953 33 : info->eventType = GF_SG_EVENT_OUT;
10954 33 : info->fieldType = GF_SG_VRML_SFBOOL;
10955 33 : info->far_ptr = & ((M_PlaneSensor2D *) node)->isActive;
10956 33 : return GF_OK;
10957 31 : case 6:
10958 31 : info->name = "trackPoint_changed";
10959 31 : info->eventType = GF_SG_EVENT_OUT;
10960 31 : info->fieldType = GF_SG_VRML_SFVEC2F;
10961 31 : info->far_ptr = & ((M_PlaneSensor2D *) node)->trackPoint_changed;
10962 31 : return GF_OK;
10963 56 : case 7:
10964 56 : info->name = "translation_changed";
10965 56 : info->eventType = GF_SG_EVENT_OUT;
10966 56 : info->fieldType = GF_SG_VRML_SFVEC2F;
10967 56 : info->far_ptr = & ((M_PlaneSensor2D *) node)->translation_changed;
10968 56 : return GF_OK;
10969 : default:
10970 : return GF_BAD_PARAM;
10971 : }
10972 : }
10973 :
10974 :
10975 126 : static s32 PlaneSensor2D_get_field_index_by_name(char *name)
10976 : {
10977 126 : if (!strcmp("autoOffset", name)) return 0;
10978 121 : if (!strcmp("enabled", name)) return 1;
10979 120 : if (!strcmp("maxPosition", name)) return 2;
10980 77 : if (!strcmp("minPosition", name)) return 3;
10981 52 : if (!strcmp("offset", name)) return 4;
10982 45 : if (!strcmp("isActive", name)) return 5;
10983 36 : if (!strcmp("trackPoint_changed", name)) return 6;
10984 28 : if (!strcmp("translation_changed", name)) return 7;
10985 0 : return -1;
10986 : }
10987 : static Bool PlaneSensor2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
10988 : {
10989 8 : switch (FieldIndex) {
10990 1 : case 2:
10991 1 : *AType = 0;
10992 1 : *QType = 2;
10993 1 : *b_min = FIX_MIN;
10994 1 : *b_max = FIX_MAX;
10995 : return 1;
10996 1 : case 3:
10997 1 : *AType = 0;
10998 1 : *QType = 2;
10999 1 : *b_min = FIX_MIN;
11000 1 : *b_max = FIX_MAX;
11001 : return 1;
11002 1 : case 4:
11003 1 : *AType = 0;
11004 1 : *QType = 12;
11005 1 : *b_min = FIX_MIN;
11006 1 : *b_max = FIX_MAX;
11007 : return 1;
11008 : default:
11009 : return 0;
11010 : }
11011 : }
11012 :
11013 :
11014 :
11015 103 : GF_Node *PlaneSensor2D_Create()
11016 : {
11017 : M_PlaneSensor2D *p;
11018 103 : GF_SAFEALLOC(p, M_PlaneSensor2D);
11019 103 : if(!p) return NULL;
11020 103 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PlaneSensor2D);
11021 :
11022 : /*default field values*/
11023 103 : p->autoOffset = 1;
11024 103 : p->enabled = 1;
11025 103 : p->maxPosition.x = FLT2FIX(0);
11026 103 : p->maxPosition.y = FLT2FIX(0);
11027 103 : p->minPosition.x = FLT2FIX(0);
11028 103 : p->minPosition.y = FLT2FIX(0);
11029 103 : p->offset.x = FLT2FIX(0);
11030 103 : p->offset.y = FLT2FIX(0);
11031 103 : return (GF_Node *)p;
11032 : }
11033 :
11034 :
11035 : /*
11036 : PointLight Node deletion
11037 : */
11038 :
11039 : static void PointLight_Del(GF_Node *node)
11040 : {
11041 : M_PointLight *p = (M_PointLight *) node;
11042 2 : gf_node_free((GF_Node *) p);
11043 : }
11044 :
11045 : static const u16 PointLight_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
11046 : static const u16 PointLight_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
11047 : static const u16 PointLight_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
11048 : static const u16 PointLight_Dyn2All[] = { 0, 1, 2, 3, 4, 6};
11049 :
11050 : static u32 PointLight_get_field_count(GF_Node *node, u8 IndexMode)
11051 : {
11052 6 : switch(IndexMode) {
11053 : case GF_SG_FIELD_CODING_IN:
11054 : return 7;
11055 : case GF_SG_FIELD_CODING_DEF:
11056 : return 7;
11057 : case GF_SG_FIELD_CODING_OUT:
11058 : return 7;
11059 1 : case GF_SG_FIELD_CODING_DYN:
11060 : return 6;
11061 : default:
11062 : return 7;
11063 : }
11064 : }
11065 :
11066 : static GF_Err PointLight_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11067 : {
11068 7 : switch(IndexMode) {
11069 0 : case GF_SG_FIELD_CODING_IN:
11070 0 : *allField = PointLight_In2All[inField];
11071 : return GF_OK;
11072 0 : case GF_SG_FIELD_CODING_DEF:
11073 0 : *allField = PointLight_Def2All[inField];
11074 : return GF_OK;
11075 0 : case GF_SG_FIELD_CODING_OUT:
11076 0 : *allField = PointLight_Out2All[inField];
11077 : return GF_OK;
11078 0 : case GF_SG_FIELD_CODING_DYN:
11079 0 : *allField = PointLight_Dyn2All[inField];
11080 : return GF_OK;
11081 : default:
11082 : return GF_BAD_PARAM;
11083 : }
11084 : }
11085 19 : static GF_Err PointLight_get_field(GF_Node *node, GF_FieldInfo *info)
11086 : {
11087 19 : switch (info->fieldIndex) {
11088 2 : case 0:
11089 2 : info->name = "ambientIntensity";
11090 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11091 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
11092 2 : info->far_ptr = & ((M_PointLight *) node)->ambientIntensity;
11093 2 : return GF_OK;
11094 5 : case 1:
11095 5 : info->name = "attenuation";
11096 5 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11097 5 : info->fieldType = GF_SG_VRML_SFVEC3F;
11098 5 : info->far_ptr = & ((M_PointLight *) node)->attenuation;
11099 5 : return GF_OK;
11100 3 : case 2:
11101 3 : info->name = "color";
11102 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11103 3 : info->fieldType = GF_SG_VRML_SFCOLOR;
11104 3 : info->far_ptr = & ((M_PointLight *) node)->color;
11105 3 : return GF_OK;
11106 2 : case 3:
11107 2 : info->name = "intensity";
11108 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11109 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
11110 2 : info->far_ptr = & ((M_PointLight *) node)->intensity;
11111 2 : return GF_OK;
11112 3 : case 4:
11113 3 : info->name = "location";
11114 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11115 3 : info->fieldType = GF_SG_VRML_SFVEC3F;
11116 3 : info->far_ptr = & ((M_PointLight *) node)->location;
11117 3 : return GF_OK;
11118 2 : case 5:
11119 2 : info->name = "on";
11120 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11121 2 : info->fieldType = GF_SG_VRML_SFBOOL;
11122 2 : info->far_ptr = & ((M_PointLight *) node)->on;
11123 2 : return GF_OK;
11124 2 : case 6:
11125 2 : info->name = "radius";
11126 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11127 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
11128 2 : info->far_ptr = & ((M_PointLight *) node)->radius;
11129 2 : return GF_OK;
11130 : default:
11131 : return GF_BAD_PARAM;
11132 : }
11133 : }
11134 :
11135 :
11136 11 : static s32 PointLight_get_field_index_by_name(char *name)
11137 : {
11138 11 : if (!strcmp("ambientIntensity", name)) return 0;
11139 10 : if (!strcmp("attenuation", name)) return 1;
11140 7 : if (!strcmp("color", name)) return 2;
11141 5 : if (!strcmp("intensity", name)) return 3;
11142 4 : if (!strcmp("location", name)) return 4;
11143 2 : if (!strcmp("on", name)) return 5;
11144 1 : if (!strcmp("radius", name)) return 6;
11145 0 : return -1;
11146 : }
11147 7 : static Bool PointLight_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11148 : {
11149 7 : switch (FieldIndex) {
11150 1 : case 0:
11151 1 : *AType = 8;
11152 1 : *QType = 4;
11153 1 : *b_min = FLT2FIX(0);
11154 1 : *b_max = FLT2FIX(1);
11155 : return 1;
11156 1 : case 1:
11157 1 : *AType = 1;
11158 1 : *QType = 11;
11159 1 : *b_min = FLT2FIX(0);
11160 1 : *b_max = FIX_MAX;
11161 : return 1;
11162 1 : case 2:
11163 1 : *AType = 4;
11164 1 : *QType = 4;
11165 1 : *b_min = FLT2FIX(0);
11166 1 : *b_max = FLT2FIX(1);
11167 : return 1;
11168 1 : case 3:
11169 1 : *AType = 8;
11170 1 : *QType = 4;
11171 1 : *b_min = FLT2FIX(0);
11172 1 : *b_max = FLT2FIX(1);
11173 : return 1;
11174 1 : case 4:
11175 1 : *AType = 1;
11176 1 : *QType = 1;
11177 1 : *b_min = FIX_MIN;
11178 1 : *b_max = FIX_MAX;
11179 : return 1;
11180 1 : case 6:
11181 1 : *AType = 7;
11182 1 : *QType = 11;
11183 1 : *b_min = FLT2FIX(0);
11184 1 : *b_max = FIX_MAX;
11185 : return 1;
11186 : default:
11187 : return 0;
11188 : }
11189 : }
11190 :
11191 :
11192 :
11193 2 : GF_Node *PointLight_Create()
11194 : {
11195 : M_PointLight *p;
11196 2 : GF_SAFEALLOC(p, M_PointLight);
11197 2 : if(!p) return NULL;
11198 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PointLight);
11199 :
11200 : /*default field values*/
11201 2 : p->ambientIntensity = FLT2FIX(0);
11202 2 : p->attenuation.x = FLT2FIX(1);
11203 2 : p->attenuation.y = FLT2FIX(0);
11204 2 : p->attenuation.z = FLT2FIX(0);
11205 2 : p->color.red = FLT2FIX(1);
11206 2 : p->color.green = FLT2FIX(1);
11207 2 : p->color.blue = FLT2FIX(1);
11208 2 : p->intensity = FLT2FIX(1);
11209 2 : p->location.x = FLT2FIX(0);
11210 2 : p->location.y = FLT2FIX(0);
11211 2 : p->location.z = FLT2FIX(0);
11212 2 : p->on = 1;
11213 2 : p->radius = FLT2FIX(100);
11214 2 : return (GF_Node *)p;
11215 : }
11216 :
11217 :
11218 : /*
11219 : PointSet Node deletion
11220 : */
11221 :
11222 67 : static void PointSet_Del(GF_Node *node)
11223 : {
11224 : M_PointSet *p = (M_PointSet *) node;
11225 67 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
11226 67 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
11227 67 : gf_node_free((GF_Node *) p);
11228 67 : }
11229 :
11230 : static const u16 PointSet_Def2All[] = { 0, 1};
11231 : static const u16 PointSet_In2All[] = { 0, 1};
11232 : static const u16 PointSet_Out2All[] = { 0, 1};
11233 :
11234 : static u32 PointSet_get_field_count(GF_Node *node, u8 IndexMode)
11235 : {
11236 76 : switch(IndexMode) {
11237 : case GF_SG_FIELD_CODING_IN:
11238 : return 2;
11239 : case GF_SG_FIELD_CODING_DEF:
11240 : return 2;
11241 : case GF_SG_FIELD_CODING_OUT:
11242 : return 2;
11243 1 : case GF_SG_FIELD_CODING_DYN:
11244 : return 0;
11245 : default:
11246 : return 2;
11247 : }
11248 : }
11249 :
11250 : static GF_Err PointSet_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11251 : {
11252 57 : switch(IndexMode) {
11253 0 : case GF_SG_FIELD_CODING_IN:
11254 0 : *allField = PointSet_In2All[inField];
11255 : return GF_OK;
11256 55 : case GF_SG_FIELD_CODING_DEF:
11257 55 : *allField = PointSet_Def2All[inField];
11258 : return GF_OK;
11259 0 : case GF_SG_FIELD_CODING_OUT:
11260 0 : *allField = PointSet_Out2All[inField];
11261 : return GF_OK;
11262 : default:
11263 : return GF_BAD_PARAM;
11264 : }
11265 : }
11266 : static GF_Err PointSet_get_field(GF_Node *node, GF_FieldInfo *info)
11267 : {
11268 134 : switch (info->fieldIndex) {
11269 37 : case 0:
11270 37 : info->name = "color";
11271 37 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11272 37 : info->fieldType = GF_SG_VRML_SFNODE;
11273 37 : info->NDTtype = NDT_SFColorNode;
11274 37 : info->far_ptr = & ((M_PointSet *)node)->color;
11275 : return GF_OK;
11276 97 : case 1:
11277 97 : info->name = "coord";
11278 97 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11279 97 : info->fieldType = GF_SG_VRML_SFNODE;
11280 97 : info->NDTtype = NDT_SFCoordinateNode;
11281 97 : info->far_ptr = & ((M_PointSet *)node)->coord;
11282 : return GF_OK;
11283 : default:
11284 : return GF_BAD_PARAM;
11285 : }
11286 : }
11287 :
11288 :
11289 18 : static s32 PointSet_get_field_index_by_name(char *name)
11290 : {
11291 18 : if (!strcmp("color", name)) return 0;
11292 17 : if (!strcmp("coord", name)) return 1;
11293 0 : return -1;
11294 : }
11295 : static Bool PointSet_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11296 : {
11297 : switch (FieldIndex) {
11298 : default:
11299 : return 0;
11300 : }
11301 : }
11302 :
11303 :
11304 :
11305 67 : GF_Node *PointSet_Create()
11306 : {
11307 : M_PointSet *p;
11308 67 : GF_SAFEALLOC(p, M_PointSet);
11309 67 : if(!p) return NULL;
11310 67 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PointSet);
11311 :
11312 : /*default field values*/
11313 67 : return (GF_Node *)p;
11314 : }
11315 :
11316 :
11317 : /*
11318 : PointSet2D Node deletion
11319 : */
11320 :
11321 78 : static void PointSet2D_Del(GF_Node *node)
11322 : {
11323 : M_PointSet2D *p = (M_PointSet2D *) node;
11324 78 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
11325 78 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
11326 78 : gf_node_free((GF_Node *) p);
11327 78 : }
11328 :
11329 : static const u16 PointSet2D_Def2All[] = { 0, 1};
11330 : static const u16 PointSet2D_In2All[] = { 0, 1};
11331 : static const u16 PointSet2D_Out2All[] = { 0, 1};
11332 :
11333 : static u32 PointSet2D_get_field_count(GF_Node *node, u8 IndexMode)
11334 : {
11335 76 : switch(IndexMode) {
11336 : case GF_SG_FIELD_CODING_IN:
11337 : return 2;
11338 : case GF_SG_FIELD_CODING_DEF:
11339 : return 2;
11340 : case GF_SG_FIELD_CODING_OUT:
11341 : return 2;
11342 1 : case GF_SG_FIELD_CODING_DYN:
11343 : return 0;
11344 : default:
11345 : return 2;
11346 : }
11347 : }
11348 :
11349 : static GF_Err PointSet2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11350 : {
11351 57 : switch(IndexMode) {
11352 0 : case GF_SG_FIELD_CODING_IN:
11353 0 : *allField = PointSet2D_In2All[inField];
11354 : return GF_OK;
11355 55 : case GF_SG_FIELD_CODING_DEF:
11356 55 : *allField = PointSet2D_Def2All[inField];
11357 : return GF_OK;
11358 0 : case GF_SG_FIELD_CODING_OUT:
11359 0 : *allField = PointSet2D_Out2All[inField];
11360 : return GF_OK;
11361 : default:
11362 : return GF_BAD_PARAM;
11363 : }
11364 : }
11365 : static GF_Err PointSet2D_get_field(GF_Node *node, GF_FieldInfo *info)
11366 : {
11367 145 : switch (info->fieldIndex) {
11368 37 : case 0:
11369 37 : info->name = "color";
11370 37 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11371 37 : info->fieldType = GF_SG_VRML_SFNODE;
11372 37 : info->NDTtype = NDT_SFColorNode;
11373 37 : info->far_ptr = & ((M_PointSet2D *)node)->color;
11374 : return GF_OK;
11375 108 : case 1:
11376 108 : info->name = "coord";
11377 108 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11378 108 : info->fieldType = GF_SG_VRML_SFNODE;
11379 108 : info->NDTtype = NDT_SFCoordinate2DNode;
11380 108 : info->far_ptr = & ((M_PointSet2D *)node)->coord;
11381 : return GF_OK;
11382 : default:
11383 : return GF_BAD_PARAM;
11384 : }
11385 : }
11386 :
11387 :
11388 29 : static s32 PointSet2D_get_field_index_by_name(char *name)
11389 : {
11390 29 : if (!strcmp("color", name)) return 0;
11391 28 : if (!strcmp("coord", name)) return 1;
11392 0 : return -1;
11393 : }
11394 : static Bool PointSet2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11395 : {
11396 : switch (FieldIndex) {
11397 : default:
11398 : return 0;
11399 : }
11400 : }
11401 :
11402 :
11403 :
11404 78 : GF_Node *PointSet2D_Create()
11405 : {
11406 : M_PointSet2D *p;
11407 78 : GF_SAFEALLOC(p, M_PointSet2D);
11408 78 : if(!p) return NULL;
11409 78 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PointSet2D);
11410 :
11411 : /*default field values*/
11412 78 : return (GF_Node *)p;
11413 : }
11414 :
11415 :
11416 : /*
11417 : PositionInterpolator Node deletion
11418 : */
11419 :
11420 12 : static void PositionInterpolator_Del(GF_Node *node)
11421 : {
11422 : M_PositionInterpolator *p = (M_PositionInterpolator *) node;
11423 12 : gf_sg_mffloat_del(p->key);
11424 12 : gf_sg_mfvec3f_del(p->keyValue);
11425 12 : gf_node_free((GF_Node *) p);
11426 12 : }
11427 :
11428 : static const u16 PositionInterpolator_Def2All[] = { 1, 2};
11429 : static const u16 PositionInterpolator_In2All[] = { 0, 1, 2};
11430 : static const u16 PositionInterpolator_Out2All[] = { 1, 2, 3};
11431 :
11432 : static u32 PositionInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
11433 : {
11434 : switch(IndexMode) {
11435 : case GF_SG_FIELD_CODING_IN:
11436 : return 3;
11437 : case GF_SG_FIELD_CODING_DEF:
11438 : return 2;
11439 : case GF_SG_FIELD_CODING_OUT:
11440 : return 3;
11441 : case GF_SG_FIELD_CODING_DYN:
11442 : return 0;
11443 : default:
11444 : return 4;
11445 : }
11446 : }
11447 :
11448 : static GF_Err PositionInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11449 : {
11450 4 : switch(IndexMode) {
11451 0 : case GF_SG_FIELD_CODING_IN:
11452 0 : *allField = PositionInterpolator_In2All[inField];
11453 : return GF_OK;
11454 0 : case GF_SG_FIELD_CODING_DEF:
11455 0 : *allField = PositionInterpolator_Def2All[inField];
11456 : return GF_OK;
11457 0 : case GF_SG_FIELD_CODING_OUT:
11458 0 : *allField = PositionInterpolator_Out2All[inField];
11459 : return GF_OK;
11460 : default:
11461 : return GF_BAD_PARAM;
11462 : }
11463 : }
11464 74 : static GF_Err PositionInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
11465 : {
11466 74 : switch (info->fieldIndex) {
11467 24 : case 0:
11468 24 : info->name = "set_fraction";
11469 24 : info->eventType = GF_SG_EVENT_IN;
11470 24 : info->on_event_in = ((M_PositionInterpolator *)node)->on_set_fraction;
11471 24 : info->fieldType = GF_SG_VRML_SFFLOAT;
11472 24 : info->far_ptr = & ((M_PositionInterpolator *) node)->set_fraction;
11473 24 : return GF_OK;
11474 13 : case 1:
11475 13 : info->name = "key";
11476 13 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11477 13 : info->fieldType = GF_SG_VRML_MFFLOAT;
11478 13 : info->far_ptr = & ((M_PositionInterpolator *) node)->key;
11479 13 : return GF_OK;
11480 13 : case 2:
11481 13 : info->name = "keyValue";
11482 13 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11483 13 : info->fieldType = GF_SG_VRML_MFVEC3F;
11484 13 : info->far_ptr = & ((M_PositionInterpolator *) node)->keyValue;
11485 13 : return GF_OK;
11486 24 : case 3:
11487 24 : info->name = "value_changed";
11488 24 : info->eventType = GF_SG_EVENT_OUT;
11489 24 : info->fieldType = GF_SG_VRML_SFVEC3F;
11490 24 : info->far_ptr = & ((M_PositionInterpolator *) node)->value_changed;
11491 24 : return GF_OK;
11492 : default:
11493 : return GF_BAD_PARAM;
11494 : }
11495 : }
11496 :
11497 :
11498 48 : static s32 PositionInterpolator_get_field_index_by_name(char *name)
11499 : {
11500 48 : if (!strcmp("set_fraction", name)) return 0;
11501 36 : if (!strcmp("key", name)) return 1;
11502 24 : if (!strcmp("keyValue", name)) return 2;
11503 12 : if (!strcmp("value_changed", name)) return 3;
11504 0 : return -1;
11505 : }
11506 : static Bool PositionInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11507 : {
11508 4 : switch (FieldIndex) {
11509 1 : case 1:
11510 1 : *AType = 0;
11511 1 : *QType = 8;
11512 1 : *b_min = FLT2FIX(0);
11513 1 : *b_max = FLT2FIX(1);
11514 : return 1;
11515 1 : case 2:
11516 1 : *AType = 0;
11517 1 : *QType = 1;
11518 1 : *b_min = FIX_MIN;
11519 1 : *b_max = FIX_MAX;
11520 : return 1;
11521 : default:
11522 : return 0;
11523 : }
11524 : }
11525 :
11526 :
11527 :
11528 12 : GF_Node *PositionInterpolator_Create()
11529 : {
11530 : M_PositionInterpolator *p;
11531 12 : GF_SAFEALLOC(p, M_PositionInterpolator);
11532 12 : if(!p) return NULL;
11533 12 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionInterpolator);
11534 :
11535 : /*default field values*/
11536 12 : return (GF_Node *)p;
11537 : }
11538 :
11539 :
11540 : /*
11541 : PositionInterpolator2D Node deletion
11542 : */
11543 :
11544 410 : static void PositionInterpolator2D_Del(GF_Node *node)
11545 : {
11546 : M_PositionInterpolator2D *p = (M_PositionInterpolator2D *) node;
11547 410 : gf_sg_mffloat_del(p->key);
11548 410 : gf_sg_mfvec2f_del(p->keyValue);
11549 410 : gf_node_free((GF_Node *) p);
11550 410 : }
11551 :
11552 : static const u16 PositionInterpolator2D_Def2All[] = { 1, 2};
11553 : static const u16 PositionInterpolator2D_In2All[] = { 0, 1, 2};
11554 : static const u16 PositionInterpolator2D_Out2All[] = { 1, 2, 3};
11555 :
11556 : static u32 PositionInterpolator2D_get_field_count(GF_Node *node, u8 IndexMode)
11557 : {
11558 : switch(IndexMode) {
11559 : case GF_SG_FIELD_CODING_IN:
11560 : return 3;
11561 : case GF_SG_FIELD_CODING_DEF:
11562 : return 2;
11563 : case GF_SG_FIELD_CODING_OUT:
11564 : return 3;
11565 : case GF_SG_FIELD_CODING_DYN:
11566 : return 0;
11567 : default:
11568 : return 4;
11569 : }
11570 : }
11571 :
11572 : static GF_Err PositionInterpolator2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11573 : {
11574 4 : switch(IndexMode) {
11575 0 : case GF_SG_FIELD_CODING_IN:
11576 0 : *allField = PositionInterpolator2D_In2All[inField];
11577 : return GF_OK;
11578 0 : case GF_SG_FIELD_CODING_DEF:
11579 0 : *allField = PositionInterpolator2D_Def2All[inField];
11580 : return GF_OK;
11581 0 : case GF_SG_FIELD_CODING_OUT:
11582 0 : *allField = PositionInterpolator2D_Out2All[inField];
11583 : return GF_OK;
11584 : default:
11585 : return GF_BAD_PARAM;
11586 : }
11587 : }
11588 3236 : static GF_Err PositionInterpolator2D_get_field(GF_Node *node, GF_FieldInfo *info)
11589 : {
11590 3236 : switch (info->fieldIndex) {
11591 845 : case 0:
11592 845 : info->name = "set_fraction";
11593 845 : info->eventType = GF_SG_EVENT_IN;
11594 845 : info->on_event_in = ((M_PositionInterpolator2D *)node)->on_set_fraction;
11595 845 : info->fieldType = GF_SG_VRML_SFFLOAT;
11596 845 : info->far_ptr = & ((M_PositionInterpolator2D *) node)->set_fraction;
11597 845 : return GF_OK;
11598 772 : case 1:
11599 772 : info->name = "key";
11600 772 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11601 772 : info->fieldType = GF_SG_VRML_MFFLOAT;
11602 772 : info->far_ptr = & ((M_PositionInterpolator2D *) node)->key;
11603 772 : return GF_OK;
11604 772 : case 2:
11605 772 : info->name = "keyValue";
11606 772 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11607 772 : info->fieldType = GF_SG_VRML_MFVEC2F;
11608 772 : info->far_ptr = & ((M_PositionInterpolator2D *) node)->keyValue;
11609 772 : return GF_OK;
11610 847 : case 3:
11611 847 : info->name = "value_changed";
11612 847 : info->eventType = GF_SG_EVENT_OUT;
11613 847 : info->fieldType = GF_SG_VRML_SFVEC2F;
11614 847 : info->far_ptr = & ((M_PositionInterpolator2D *) node)->value_changed;
11615 847 : return GF_OK;
11616 : default:
11617 : return GF_BAD_PARAM;
11618 : }
11619 : }
11620 :
11621 :
11622 193 : static s32 PositionInterpolator2D_get_field_index_by_name(char *name)
11623 : {
11624 193 : if (!strcmp("set_fraction", name)) return 0;
11625 146 : if (!strcmp("key", name)) return 1;
11626 97 : if (!strcmp("keyValue", name)) return 2;
11627 48 : if (!strcmp("value_changed", name)) return 3;
11628 0 : return -1;
11629 : }
11630 : static Bool PositionInterpolator2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11631 : {
11632 4 : switch (FieldIndex) {
11633 1 : case 1:
11634 1 : *AType = 0;
11635 1 : *QType = 8;
11636 1 : *b_min = FLT2FIX(0);
11637 1 : *b_max = FLT2FIX(1);
11638 : return 1;
11639 1 : case 2:
11640 1 : *AType = 0;
11641 1 : *QType = 2;
11642 1 : *b_min = FIX_MIN;
11643 1 : *b_max = FIX_MAX;
11644 : return 1;
11645 : default:
11646 : return 0;
11647 : }
11648 : }
11649 :
11650 :
11651 :
11652 410 : GF_Node *PositionInterpolator2D_Create()
11653 : {
11654 : M_PositionInterpolator2D *p;
11655 410 : GF_SAFEALLOC(p, M_PositionInterpolator2D);
11656 410 : if(!p) return NULL;
11657 410 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionInterpolator2D);
11658 :
11659 : /*default field values*/
11660 410 : return (GF_Node *)p;
11661 : }
11662 :
11663 :
11664 : /*
11665 : ProximitySensor2D Node deletion
11666 : */
11667 :
11668 : static void ProximitySensor2D_Del(GF_Node *node)
11669 : {
11670 : M_ProximitySensor2D *p = (M_ProximitySensor2D *) node;
11671 68 : gf_node_free((GF_Node *) p);
11672 : }
11673 :
11674 : static const u16 ProximitySensor2D_Def2All[] = { 0, 1, 2};
11675 : static const u16 ProximitySensor2D_In2All[] = { 0, 1, 2};
11676 : static const u16 ProximitySensor2D_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
11677 :
11678 : static u32 ProximitySensor2D_get_field_count(GF_Node *node, u8 IndexMode)
11679 : {
11680 : switch(IndexMode) {
11681 : case GF_SG_FIELD_CODING_IN:
11682 : return 3;
11683 : case GF_SG_FIELD_CODING_DEF:
11684 : return 3;
11685 : case GF_SG_FIELD_CODING_OUT:
11686 : return 8;
11687 : case GF_SG_FIELD_CODING_DYN:
11688 : return 0;
11689 : default:
11690 : return 8;
11691 : }
11692 : }
11693 :
11694 : static GF_Err ProximitySensor2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11695 : {
11696 68 : switch(IndexMode) {
11697 0 : case GF_SG_FIELD_CODING_IN:
11698 0 : *allField = ProximitySensor2D_In2All[inField];
11699 : return GF_OK;
11700 60 : case GF_SG_FIELD_CODING_DEF:
11701 60 : *allField = ProximitySensor2D_Def2All[inField];
11702 : return GF_OK;
11703 0 : case GF_SG_FIELD_CODING_OUT:
11704 0 : *allField = ProximitySensor2D_Out2All[inField];
11705 : return GF_OK;
11706 : default:
11707 : return GF_BAD_PARAM;
11708 : }
11709 : }
11710 311 : static GF_Err ProximitySensor2D_get_field(GF_Node *node, GF_FieldInfo *info)
11711 : {
11712 311 : switch (info->fieldIndex) {
11713 72 : case 0:
11714 72 : info->name = "center";
11715 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11716 72 : info->fieldType = GF_SG_VRML_SFVEC2F;
11717 72 : info->far_ptr = & ((M_ProximitySensor2D *) node)->center;
11718 72 : return GF_OK;
11719 74 : case 1:
11720 74 : info->name = "size";
11721 74 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11722 74 : info->fieldType = GF_SG_VRML_SFVEC2F;
11723 74 : info->far_ptr = & ((M_ProximitySensor2D *) node)->size;
11724 74 : return GF_OK;
11725 72 : case 2:
11726 72 : info->name = "enabled";
11727 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11728 72 : info->fieldType = GF_SG_VRML_SFBOOL;
11729 72 : info->far_ptr = & ((M_ProximitySensor2D *) node)->enabled;
11730 72 : return GF_OK;
11731 25 : case 3:
11732 25 : info->name = "isActive";
11733 25 : info->eventType = GF_SG_EVENT_OUT;
11734 25 : info->fieldType = GF_SG_VRML_SFBOOL;
11735 25 : info->far_ptr = & ((M_ProximitySensor2D *) node)->isActive;
11736 25 : return GF_OK;
11737 17 : case 4:
11738 17 : info->name = "position_changed";
11739 17 : info->eventType = GF_SG_EVENT_OUT;
11740 17 : info->fieldType = GF_SG_VRML_SFVEC2F;
11741 17 : info->far_ptr = & ((M_ProximitySensor2D *) node)->position_changed;
11742 17 : return GF_OK;
11743 17 : case 5:
11744 17 : info->name = "orientation_changed";
11745 17 : info->eventType = GF_SG_EVENT_OUT;
11746 17 : info->fieldType = GF_SG_VRML_SFFLOAT;
11747 17 : info->far_ptr = & ((M_ProximitySensor2D *) node)->orientation_changed;
11748 17 : return GF_OK;
11749 17 : case 6:
11750 17 : info->name = "enterTime";
11751 17 : info->eventType = GF_SG_EVENT_OUT;
11752 17 : info->fieldType = GF_SG_VRML_SFTIME;
11753 17 : info->far_ptr = & ((M_ProximitySensor2D *) node)->enterTime;
11754 17 : return GF_OK;
11755 17 : case 7:
11756 17 : info->name = "exitTime";
11757 17 : info->eventType = GF_SG_EVENT_OUT;
11758 17 : info->fieldType = GF_SG_VRML_SFTIME;
11759 17 : info->far_ptr = & ((M_ProximitySensor2D *) node)->exitTime;
11760 17 : return GF_OK;
11761 : default:
11762 : return GF_BAD_PARAM;
11763 : }
11764 : }
11765 :
11766 :
11767 14 : static s32 ProximitySensor2D_get_field_index_by_name(char *name)
11768 : {
11769 14 : if (!strcmp("center", name)) return 0;
11770 13 : if (!strcmp("size", name)) return 1;
11771 10 : if (!strcmp("enabled", name)) return 2;
11772 9 : if (!strcmp("isActive", name)) return 3;
11773 4 : if (!strcmp("position_changed", name)) return 4;
11774 3 : if (!strcmp("orientation_changed", name)) return 5;
11775 2 : if (!strcmp("enterTime", name)) return 6;
11776 1 : if (!strcmp("exitTime", name)) return 7;
11777 0 : return -1;
11778 : }
11779 : static Bool ProximitySensor2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11780 : {
11781 8 : switch (FieldIndex) {
11782 1 : case 0:
11783 1 : *AType = 0;
11784 1 : *QType = 2;
11785 1 : *b_min = FLT2FIX(-1);
11786 1 : *b_max = FIX_MAX;
11787 : return 1;
11788 1 : case 1:
11789 1 : *AType = 0;
11790 1 : *QType = 12;
11791 1 : *b_min = FLT2FIX(0);
11792 1 : *b_max = FIX_MAX;
11793 : return 1;
11794 : default:
11795 : return 0;
11796 : }
11797 : }
11798 :
11799 :
11800 :
11801 68 : GF_Node *ProximitySensor2D_Create()
11802 : {
11803 : M_ProximitySensor2D *p;
11804 68 : GF_SAFEALLOC(p, M_ProximitySensor2D);
11805 68 : if(!p) return NULL;
11806 68 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ProximitySensor2D);
11807 :
11808 : /*default field values*/
11809 68 : p->center.x = FLT2FIX(0);
11810 68 : p->center.y = FLT2FIX(0);
11811 68 : p->size.x = FLT2FIX(0);
11812 68 : p->size.y = FLT2FIX(0);
11813 68 : p->enabled = 1;
11814 68 : return (GF_Node *)p;
11815 : }
11816 :
11817 :
11818 : /*
11819 : ProximitySensor Node deletion
11820 : */
11821 :
11822 : static void ProximitySensor_Del(GF_Node *node)
11823 : {
11824 : M_ProximitySensor *p = (M_ProximitySensor *) node;
11825 2 : gf_node_free((GF_Node *) p);
11826 : }
11827 :
11828 : static const u16 ProximitySensor_Def2All[] = { 0, 1, 2};
11829 : static const u16 ProximitySensor_In2All[] = { 0, 1, 2};
11830 : static const u16 ProximitySensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
11831 :
11832 : static u32 ProximitySensor_get_field_count(GF_Node *node, u8 IndexMode)
11833 : {
11834 : switch(IndexMode) {
11835 : case GF_SG_FIELD_CODING_IN:
11836 : return 3;
11837 : case GF_SG_FIELD_CODING_DEF:
11838 : return 3;
11839 : case GF_SG_FIELD_CODING_OUT:
11840 : return 8;
11841 : case GF_SG_FIELD_CODING_DYN:
11842 : return 0;
11843 : default:
11844 : return 8;
11845 : }
11846 : }
11847 :
11848 : static GF_Err ProximitySensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
11849 : {
11850 8 : switch(IndexMode) {
11851 0 : case GF_SG_FIELD_CODING_IN:
11852 0 : *allField = ProximitySensor_In2All[inField];
11853 : return GF_OK;
11854 0 : case GF_SG_FIELD_CODING_DEF:
11855 0 : *allField = ProximitySensor_Def2All[inField];
11856 : return GF_OK;
11857 0 : case GF_SG_FIELD_CODING_OUT:
11858 0 : *allField = ProximitySensor_Out2All[inField];
11859 : return GF_OK;
11860 : default:
11861 : return GF_BAD_PARAM;
11862 : }
11863 : }
11864 20 : static GF_Err ProximitySensor_get_field(GF_Node *node, GF_FieldInfo *info)
11865 : {
11866 20 : switch (info->fieldIndex) {
11867 3 : case 0:
11868 3 : info->name = "center";
11869 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11870 3 : info->fieldType = GF_SG_VRML_SFVEC3F;
11871 3 : info->far_ptr = & ((M_ProximitySensor *) node)->center;
11872 3 : return GF_OK;
11873 3 : case 1:
11874 3 : info->name = "size";
11875 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11876 3 : info->fieldType = GF_SG_VRML_SFVEC3F;
11877 3 : info->far_ptr = & ((M_ProximitySensor *) node)->size;
11878 3 : return GF_OK;
11879 2 : case 2:
11880 2 : info->name = "enabled";
11881 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
11882 2 : info->fieldType = GF_SG_VRML_SFBOOL;
11883 2 : info->far_ptr = & ((M_ProximitySensor *) node)->enabled;
11884 2 : return GF_OK;
11885 2 : case 3:
11886 2 : info->name = "isActive";
11887 2 : info->eventType = GF_SG_EVENT_OUT;
11888 2 : info->fieldType = GF_SG_VRML_SFBOOL;
11889 2 : info->far_ptr = & ((M_ProximitySensor *) node)->isActive;
11890 2 : return GF_OK;
11891 2 : case 4:
11892 2 : info->name = "position_changed";
11893 2 : info->eventType = GF_SG_EVENT_OUT;
11894 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
11895 2 : info->far_ptr = & ((M_ProximitySensor *) node)->position_changed;
11896 2 : return GF_OK;
11897 2 : case 5:
11898 2 : info->name = "orientation_changed";
11899 2 : info->eventType = GF_SG_EVENT_OUT;
11900 2 : info->fieldType = GF_SG_VRML_SFROTATION;
11901 2 : info->far_ptr = & ((M_ProximitySensor *) node)->orientation_changed;
11902 2 : return GF_OK;
11903 3 : case 6:
11904 3 : info->name = "enterTime";
11905 3 : info->eventType = GF_SG_EVENT_OUT;
11906 3 : info->fieldType = GF_SG_VRML_SFTIME;
11907 3 : info->far_ptr = & ((M_ProximitySensor *) node)->enterTime;
11908 3 : return GF_OK;
11909 3 : case 7:
11910 3 : info->name = "exitTime";
11911 3 : info->eventType = GF_SG_EVENT_OUT;
11912 3 : info->fieldType = GF_SG_VRML_SFTIME;
11913 3 : info->far_ptr = & ((M_ProximitySensor *) node)->exitTime;
11914 3 : return GF_OK;
11915 : default:
11916 : return GF_BAD_PARAM;
11917 : }
11918 : }
11919 :
11920 :
11921 12 : static s32 ProximitySensor_get_field_index_by_name(char *name)
11922 : {
11923 12 : if (!strcmp("center", name)) return 0;
11924 10 : if (!strcmp("size", name)) return 1;
11925 8 : if (!strcmp("enabled", name)) return 2;
11926 7 : if (!strcmp("isActive", name)) return 3;
11927 6 : if (!strcmp("position_changed", name)) return 4;
11928 5 : if (!strcmp("orientation_changed", name)) return 5;
11929 4 : if (!strcmp("enterTime", name)) return 6;
11930 2 : if (!strcmp("exitTime", name)) return 7;
11931 0 : return -1;
11932 : }
11933 : static Bool ProximitySensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
11934 : {
11935 8 : switch (FieldIndex) {
11936 1 : case 0:
11937 1 : *AType = 0;
11938 1 : *QType = 1;
11939 1 : *b_min = FIX_MIN;
11940 1 : *b_max = FIX_MAX;
11941 : return 1;
11942 1 : case 1:
11943 1 : *AType = 0;
11944 1 : *QType = 11;
11945 1 : *b_min = FLT2FIX(0);
11946 1 : *b_max = FIX_MAX;
11947 : return 1;
11948 : default:
11949 : return 0;
11950 : }
11951 : }
11952 :
11953 :
11954 :
11955 2 : GF_Node *ProximitySensor_Create()
11956 : {
11957 : M_ProximitySensor *p;
11958 2 : GF_SAFEALLOC(p, M_ProximitySensor);
11959 2 : if(!p) return NULL;
11960 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ProximitySensor);
11961 :
11962 : /*default field values*/
11963 2 : p->center.x = FLT2FIX(0);
11964 2 : p->center.y = FLT2FIX(0);
11965 2 : p->center.z = FLT2FIX(0);
11966 2 : p->size.x = FLT2FIX(0);
11967 2 : p->size.y = FLT2FIX(0);
11968 2 : p->size.z = FLT2FIX(0);
11969 2 : p->enabled = 1;
11970 2 : return (GF_Node *)p;
11971 : }
11972 :
11973 :
11974 : /*
11975 : QuantizationParameter Node deletion
11976 : */
11977 :
11978 : static void QuantizationParameter_Del(GF_Node *node)
11979 : {
11980 : M_QuantizationParameter *p = (M_QuantizationParameter *) node;
11981 233 : gf_node_free((GF_Node *) p);
11982 : }
11983 :
11984 : static const u16 QuantizationParameter_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39};
11985 :
11986 : static u32 QuantizationParameter_get_field_count(GF_Node *node, u8 IndexMode)
11987 : {
11988 236 : switch(IndexMode) {
11989 : case GF_SG_FIELD_CODING_IN:
11990 : return 0;
11991 177 : case GF_SG_FIELD_CODING_DEF:
11992 : return 40;
11993 : case GF_SG_FIELD_CODING_OUT:
11994 : return 0;
11995 : case GF_SG_FIELD_CODING_DYN:
11996 : return 0;
11997 56 : default:
11998 : return 40;
11999 : }
12000 : }
12001 :
12002 : static GF_Err QuantizationParameter_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
12003 : {
12004 2645 : switch(IndexMode) {
12005 2605 : case GF_SG_FIELD_CODING_DEF:
12006 2605 : *allField = QuantizationParameter_Def2All[inField];
12007 : return GF_OK;
12008 : default:
12009 : return GF_BAD_PARAM;
12010 : }
12011 : }
12012 10092 : static GF_Err QuantizationParameter_get_field(GF_Node *node, GF_FieldInfo *info)
12013 : {
12014 10092 : switch (info->fieldIndex) {
12015 285 : case 0:
12016 285 : info->name = "isLocal";
12017 285 : info->eventType = GF_SG_EVENT_FIELD;
12018 285 : info->fieldType = GF_SG_VRML_SFBOOL;
12019 285 : info->far_ptr = & ((M_QuantizationParameter *) node)->isLocal;
12020 285 : return GF_OK;
12021 295 : case 1:
12022 295 : info->name = "position3DQuant";
12023 295 : info->eventType = GF_SG_EVENT_FIELD;
12024 295 : info->fieldType = GF_SG_VRML_SFBOOL;
12025 295 : info->far_ptr = & ((M_QuantizationParameter *) node)->position3DQuant;
12026 295 : return GF_OK;
12027 285 : case 2:
12028 285 : info->name = "position3DMin";
12029 285 : info->eventType = GF_SG_EVENT_FIELD;
12030 285 : info->fieldType = GF_SG_VRML_SFVEC3F;
12031 285 : info->far_ptr = & ((M_QuantizationParameter *) node)->position3DMin;
12032 285 : return GF_OK;
12033 285 : case 3:
12034 285 : info->name = "position3DMax";
12035 285 : info->eventType = GF_SG_EVENT_FIELD;
12036 285 : info->fieldType = GF_SG_VRML_SFVEC3F;
12037 285 : info->far_ptr = & ((M_QuantizationParameter *) node)->position3DMax;
12038 285 : return GF_OK;
12039 285 : case 4:
12040 285 : info->name = "position3DNbBits";
12041 285 : info->eventType = GF_SG_EVENT_FIELD;
12042 285 : info->fieldType = GF_SG_VRML_SFINT32;
12043 285 : info->far_ptr = & ((M_QuantizationParameter *) node)->position3DNbBits;
12044 285 : return GF_OK;
12045 381 : case 5:
12046 381 : info->name = "position2DQuant";
12047 381 : info->eventType = GF_SG_EVENT_FIELD;
12048 381 : info->fieldType = GF_SG_VRML_SFBOOL;
12049 381 : info->far_ptr = & ((M_QuantizationParameter *) node)->position2DQuant;
12050 381 : return GF_OK;
12051 381 : case 6:
12052 381 : info->name = "position2DMin";
12053 381 : info->eventType = GF_SG_EVENT_FIELD;
12054 381 : info->fieldType = GF_SG_VRML_SFVEC2F;
12055 381 : info->far_ptr = & ((M_QuantizationParameter *) node)->position2DMin;
12056 381 : return GF_OK;
12057 381 : case 7:
12058 381 : info->name = "position2DMax";
12059 381 : info->eventType = GF_SG_EVENT_FIELD;
12060 381 : info->fieldType = GF_SG_VRML_SFVEC2F;
12061 381 : info->far_ptr = & ((M_QuantizationParameter *) node)->position2DMax;
12062 381 : return GF_OK;
12063 381 : case 8:
12064 381 : info->name = "position2DNbBits";
12065 381 : info->eventType = GF_SG_EVENT_FIELD;
12066 381 : info->fieldType = GF_SG_VRML_SFINT32;
12067 381 : info->far_ptr = & ((M_QuantizationParameter *) node)->position2DNbBits;
12068 381 : return GF_OK;
12069 226 : case 9:
12070 226 : info->name = "drawOrderQuant";
12071 226 : info->eventType = GF_SG_EVENT_FIELD;
12072 226 : info->fieldType = GF_SG_VRML_SFBOOL;
12073 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderQuant;
12074 226 : return GF_OK;
12075 226 : case 10:
12076 226 : info->name = "drawOrderMin";
12077 226 : info->eventType = GF_SG_EVENT_FIELD;
12078 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12079 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderMin;
12080 226 : return GF_OK;
12081 226 : case 11:
12082 226 : info->name = "drawOrderMax";
12083 226 : info->eventType = GF_SG_EVENT_FIELD;
12084 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12085 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderMax;
12086 226 : return GF_OK;
12087 226 : case 12:
12088 226 : info->name = "drawOrderNbBits";
12089 226 : info->eventType = GF_SG_EVENT_FIELD;
12090 226 : info->fieldType = GF_SG_VRML_SFINT32;
12091 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderNbBits;
12092 226 : return GF_OK;
12093 284 : case 13:
12094 284 : info->name = "colorQuant";
12095 284 : info->eventType = GF_SG_EVENT_FIELD;
12096 284 : info->fieldType = GF_SG_VRML_SFBOOL;
12097 284 : info->far_ptr = & ((M_QuantizationParameter *) node)->colorQuant;
12098 284 : return GF_OK;
12099 226 : case 14:
12100 226 : info->name = "colorMin";
12101 226 : info->eventType = GF_SG_EVENT_FIELD;
12102 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12103 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->colorMin;
12104 226 : return GF_OK;
12105 226 : case 15:
12106 226 : info->name = "colorMax";
12107 226 : info->eventType = GF_SG_EVENT_FIELD;
12108 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12109 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->colorMax;
12110 226 : return GF_OK;
12111 226 : case 16:
12112 226 : info->name = "colorNbBits";
12113 226 : info->eventType = GF_SG_EVENT_FIELD;
12114 226 : info->fieldType = GF_SG_VRML_SFINT32;
12115 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->colorNbBits;
12116 226 : return GF_OK;
12117 226 : case 17:
12118 226 : info->name = "textureCoordinateQuant";
12119 226 : info->eventType = GF_SG_EVENT_FIELD;
12120 226 : info->fieldType = GF_SG_VRML_SFBOOL;
12121 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateQuant;
12122 226 : return GF_OK;
12123 226 : case 18:
12124 226 : info->name = "textureCoordinateMin";
12125 226 : info->eventType = GF_SG_EVENT_FIELD;
12126 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12127 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateMin;
12128 226 : return GF_OK;
12129 226 : case 19:
12130 226 : info->name = "textureCoordinateMax";
12131 226 : info->eventType = GF_SG_EVENT_FIELD;
12132 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12133 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateMax;
12134 226 : return GF_OK;
12135 226 : case 20:
12136 226 : info->name = "textureCoordinateNbBits";
12137 226 : info->eventType = GF_SG_EVENT_FIELD;
12138 226 : info->fieldType = GF_SG_VRML_SFINT32;
12139 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateNbBits;
12140 226 : return GF_OK;
12141 236 : case 21:
12142 236 : info->name = "angleQuant";
12143 236 : info->eventType = GF_SG_EVENT_FIELD;
12144 236 : info->fieldType = GF_SG_VRML_SFBOOL;
12145 236 : info->far_ptr = & ((M_QuantizationParameter *) node)->angleQuant;
12146 236 : return GF_OK;
12147 226 : case 22:
12148 226 : info->name = "angleMin";
12149 226 : info->eventType = GF_SG_EVENT_FIELD;
12150 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12151 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->angleMin;
12152 226 : return GF_OK;
12153 226 : case 23:
12154 226 : info->name = "angleMax";
12155 226 : info->eventType = GF_SG_EVENT_FIELD;
12156 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12157 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->angleMax;
12158 226 : return GF_OK;
12159 226 : case 24:
12160 226 : info->name = "angleNbBits";
12161 226 : info->eventType = GF_SG_EVENT_FIELD;
12162 226 : info->fieldType = GF_SG_VRML_SFINT32;
12163 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->angleNbBits;
12164 226 : return GF_OK;
12165 226 : case 25:
12166 226 : info->name = "scaleQuant";
12167 226 : info->eventType = GF_SG_EVENT_FIELD;
12168 226 : info->fieldType = GF_SG_VRML_SFBOOL;
12169 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->scaleQuant;
12170 226 : return GF_OK;
12171 226 : case 26:
12172 226 : info->name = "scaleMin";
12173 226 : info->eventType = GF_SG_EVENT_FIELD;
12174 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12175 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->scaleMin;
12176 226 : return GF_OK;
12177 226 : case 27:
12178 226 : info->name = "scaleMax";
12179 226 : info->eventType = GF_SG_EVENT_FIELD;
12180 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12181 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->scaleMax;
12182 226 : return GF_OK;
12183 226 : case 28:
12184 226 : info->name = "scaleNbBits";
12185 226 : info->eventType = GF_SG_EVENT_FIELD;
12186 226 : info->fieldType = GF_SG_VRML_SFINT32;
12187 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->scaleNbBits;
12188 226 : return GF_OK;
12189 226 : case 29:
12190 226 : info->name = "keyQuant";
12191 226 : info->eventType = GF_SG_EVENT_FIELD;
12192 226 : info->fieldType = GF_SG_VRML_SFBOOL;
12193 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->keyQuant;
12194 226 : return GF_OK;
12195 226 : case 30:
12196 226 : info->name = "keyMin";
12197 226 : info->eventType = GF_SG_EVENT_FIELD;
12198 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12199 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->keyMin;
12200 226 : return GF_OK;
12201 226 : case 31:
12202 226 : info->name = "keyMax";
12203 226 : info->eventType = GF_SG_EVENT_FIELD;
12204 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12205 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->keyMax;
12206 226 : return GF_OK;
12207 226 : case 32:
12208 226 : info->name = "keyNbBits";
12209 226 : info->eventType = GF_SG_EVENT_FIELD;
12210 226 : info->fieldType = GF_SG_VRML_SFINT32;
12211 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->keyNbBits;
12212 226 : return GF_OK;
12213 226 : case 33:
12214 226 : info->name = "normalQuant";
12215 226 : info->eventType = GF_SG_EVENT_FIELD;
12216 226 : info->fieldType = GF_SG_VRML_SFBOOL;
12217 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->normalQuant;
12218 226 : return GF_OK;
12219 226 : case 34:
12220 226 : info->name = "normalNbBits";
12221 226 : info->eventType = GF_SG_EVENT_FIELD;
12222 226 : info->fieldType = GF_SG_VRML_SFINT32;
12223 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->normalNbBits;
12224 226 : return GF_OK;
12225 226 : case 35:
12226 226 : info->name = "sizeQuant";
12227 226 : info->eventType = GF_SG_EVENT_FIELD;
12228 226 : info->fieldType = GF_SG_VRML_SFBOOL;
12229 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->sizeQuant;
12230 226 : return GF_OK;
12231 226 : case 36:
12232 226 : info->name = "sizeMin";
12233 226 : info->eventType = GF_SG_EVENT_FIELD;
12234 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12235 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->sizeMin;
12236 226 : return GF_OK;
12237 226 : case 37:
12238 226 : info->name = "sizeMax";
12239 226 : info->eventType = GF_SG_EVENT_FIELD;
12240 226 : info->fieldType = GF_SG_VRML_SFFLOAT;
12241 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->sizeMax;
12242 226 : return GF_OK;
12243 226 : case 38:
12244 226 : info->name = "sizeNbBits";
12245 226 : info->eventType = GF_SG_EVENT_FIELD;
12246 226 : info->fieldType = GF_SG_VRML_SFINT32;
12247 226 : info->far_ptr = & ((M_QuantizationParameter *) node)->sizeNbBits;
12248 226 : return GF_OK;
12249 285 : case 39:
12250 285 : info->name = "useEfficientCoding";
12251 285 : info->eventType = GF_SG_EVENT_FIELD;
12252 285 : info->fieldType = GF_SG_VRML_SFBOOL;
12253 285 : info->far_ptr = & ((M_QuantizationParameter *) node)->useEfficientCoding;
12254 285 : return GF_OK;
12255 : default:
12256 : return GF_BAD_PARAM;
12257 : }
12258 : }
12259 :
12260 :
12261 355 : static s32 QuantizationParameter_get_field_index_by_name(char *name)
12262 : {
12263 355 : if (!strcmp("isLocal", name)) return 0;
12264 339 : if (!strcmp("position3DQuant", name)) return 1;
12265 313 : if (!strcmp("position3DMin", name)) return 2;
12266 297 : if (!strcmp("position3DMax", name)) return 3;
12267 281 : if (!strcmp("position3DNbBits", name)) return 4;
12268 265 : if (!strcmp("position2DQuant", name)) return 5;
12269 219 : if (!strcmp("position2DMin", name)) return 6;
12270 173 : if (!strcmp("position2DMax", name)) return 7;
12271 127 : if (!strcmp("position2DNbBits", name)) return 8;
12272 81 : if (!strcmp("drawOrderQuant", name)) return 9;
12273 80 : if (!strcmp("drawOrderMin", name)) return 10;
12274 79 : if (!strcmp("drawOrderMax", name)) return 11;
12275 78 : if (!strcmp("drawOrderNbBits", name)) return 12;
12276 77 : if (!strcmp("colorQuant", name)) return 13;
12277 51 : if (!strcmp("colorMin", name)) return 14;
12278 50 : if (!strcmp("colorMax", name)) return 15;
12279 49 : if (!strcmp("colorNbBits", name)) return 16;
12280 48 : if (!strcmp("textureCoordinateQuant", name)) return 17;
12281 47 : if (!strcmp("textureCoordinateMin", name)) return 18;
12282 46 : if (!strcmp("textureCoordinateMax", name)) return 19;
12283 45 : if (!strcmp("textureCoordinateNbBits", name)) return 20;
12284 44 : if (!strcmp("angleQuant", name)) return 21;
12285 33 : if (!strcmp("angleMin", name)) return 22;
12286 32 : if (!strcmp("angleMax", name)) return 23;
12287 31 : if (!strcmp("angleNbBits", name)) return 24;
12288 30 : if (!strcmp("scaleQuant", name)) return 25;
12289 29 : if (!strcmp("scaleMin", name)) return 26;
12290 28 : if (!strcmp("scaleMax", name)) return 27;
12291 27 : if (!strcmp("scaleNbBits", name)) return 28;
12292 26 : if (!strcmp("keyQuant", name)) return 29;
12293 25 : if (!strcmp("keyMin", name)) return 30;
12294 24 : if (!strcmp("keyMax", name)) return 31;
12295 23 : if (!strcmp("keyNbBits", name)) return 32;
12296 22 : if (!strcmp("normalQuant", name)) return 33;
12297 21 : if (!strcmp("normalNbBits", name)) return 34;
12298 20 : if (!strcmp("sizeQuant", name)) return 35;
12299 19 : if (!strcmp("sizeMin", name)) return 36;
12300 18 : if (!strcmp("sizeMax", name)) return 37;
12301 17 : if (!strcmp("sizeNbBits", name)) return 38;
12302 16 : if (!strcmp("useEfficientCoding", name)) return 39;
12303 0 : return -1;
12304 : }
12305 169 : static Bool QuantizationParameter_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
12306 : {
12307 169 : switch (FieldIndex) {
12308 36 : case 2:
12309 36 : *AType = 0;
12310 36 : *QType = 0;
12311 36 : *b_min = FIX_MIN;
12312 36 : *b_max = FIX_MAX;
12313 : return 1;
12314 36 : case 3:
12315 36 : *AType = 0;
12316 36 : *QType = 0;
12317 36 : *b_min = FIX_MIN;
12318 36 : *b_max = FIX_MAX;
12319 : return 1;
12320 36 : case 4:
12321 36 : *AType = 0;
12322 36 : *QType = 13;
12323 36 : *QT13_bits = 5;
12324 36 : *b_min = FLT2FIX(0);
12325 36 : *b_max = FLT2FIX(31);
12326 : return 1;
12327 9 : case 6:
12328 9 : *AType = 0;
12329 9 : *QType = 0;
12330 9 : *b_min = FIX_MIN;
12331 9 : *b_max = FIX_MAX;
12332 : return 1;
12333 9 : case 7:
12334 9 : *AType = 0;
12335 9 : *QType = 0;
12336 9 : *b_min = FIX_MIN;
12337 9 : *b_max = FIX_MAX;
12338 : return 1;
12339 9 : case 8:
12340 9 : *AType = 0;
12341 9 : *QType = 13;
12342 9 : *QT13_bits = 5;
12343 9 : *b_min = FLT2FIX(0);
12344 9 : *b_max = FLT2FIX(31);
12345 : return 1;
12346 1 : case 10:
12347 1 : *AType = 0;
12348 1 : *QType = 0;
12349 1 : *b_min = FIX_MIN;
12350 1 : *b_max = FIX_MAX;
12351 : return 1;
12352 1 : case 11:
12353 1 : *AType = 0;
12354 1 : *QType = 0;
12355 1 : *b_min = FIX_MIN;
12356 1 : *b_max = FIX_MAX;
12357 : return 1;
12358 1 : case 12:
12359 1 : *AType = 0;
12360 1 : *QType = 13;
12361 1 : *QT13_bits = 5;
12362 1 : *b_min = FLT2FIX(0);
12363 1 : *b_max = FLT2FIX(31);
12364 : return 1;
12365 1 : case 14:
12366 1 : *AType = 0;
12367 1 : *QType = 0;
12368 1 : *b_min = FLT2FIX(0);
12369 1 : *b_max = FLT2FIX(1);
12370 : return 1;
12371 1 : case 15:
12372 1 : *AType = 0;
12373 1 : *QType = 0;
12374 1 : *b_min = FLT2FIX(0);
12375 1 : *b_max = FLT2FIX(1);
12376 : return 1;
12377 1 : case 16:
12378 1 : *AType = 0;
12379 1 : *QType = 13;
12380 1 : *QT13_bits = 5;
12381 1 : *b_min = FLT2FIX(0);
12382 1 : *b_max = FLT2FIX(31);
12383 : return 1;
12384 1 : case 18:
12385 1 : *AType = 0;
12386 1 : *QType = 0;
12387 1 : *b_min = FLT2FIX(0);
12388 1 : *b_max = FLT2FIX(1);
12389 : return 1;
12390 1 : case 19:
12391 1 : *AType = 0;
12392 1 : *QType = 0;
12393 1 : *b_min = FLT2FIX(0);
12394 1 : *b_max = FLT2FIX(1);
12395 : return 1;
12396 1 : case 20:
12397 1 : *AType = 0;
12398 1 : *QType = 13;
12399 1 : *QT13_bits = 5;
12400 1 : *b_min = FLT2FIX(0);
12401 1 : *b_max = FLT2FIX(31);
12402 : return 1;
12403 1 : case 22:
12404 1 : *AType = 0;
12405 1 : *QType = 0;
12406 1 : *b_min = FLT2FIX(0);
12407 1 : *b_max = FLT2FIX(6.2831853);
12408 : return 1;
12409 1 : case 23:
12410 1 : *AType = 0;
12411 1 : *QType = 0;
12412 1 : *b_min = FLT2FIX(0);
12413 1 : *b_max = FLT2FIX(6.2831853);
12414 : return 1;
12415 1 : case 24:
12416 1 : *AType = 0;
12417 1 : *QType = 13;
12418 1 : *QT13_bits = 5;
12419 1 : *b_min = FLT2FIX(0);
12420 1 : *b_max = FLT2FIX(31);
12421 : return 1;
12422 1 : case 26:
12423 1 : *AType = 0;
12424 1 : *QType = 0;
12425 1 : *b_min = FIX_MIN;
12426 1 : *b_max = FIX_MAX;
12427 : return 1;
12428 1 : case 27:
12429 1 : *AType = 0;
12430 1 : *QType = 0;
12431 1 : *b_min = FIX_MIN;
12432 1 : *b_max = FIX_MAX;
12433 : return 1;
12434 1 : case 28:
12435 1 : *AType = 0;
12436 1 : *QType = 13;
12437 1 : *QT13_bits = 5;
12438 1 : *b_min = FLT2FIX(0);
12439 1 : *b_max = FLT2FIX(31);
12440 : return 1;
12441 1 : case 30:
12442 1 : *AType = 0;
12443 1 : *QType = 0;
12444 1 : *b_min = FIX_MIN;
12445 1 : *b_max = FIX_MAX;
12446 : return 1;
12447 1 : case 31:
12448 1 : *AType = 0;
12449 1 : *QType = 0;
12450 1 : *b_min = FIX_MIN;
12451 1 : *b_max = FIX_MAX;
12452 : return 1;
12453 1 : case 32:
12454 1 : *AType = 0;
12455 1 : *QType = 13;
12456 1 : *QT13_bits = 5;
12457 1 : *b_min = FLT2FIX(0);
12458 1 : *b_max = FLT2FIX(31);
12459 : return 1;
12460 1 : case 34:
12461 1 : *AType = 0;
12462 1 : *QType = 13;
12463 1 : *QT13_bits = 5;
12464 1 : *b_min = FLT2FIX(0);
12465 1 : *b_max = FLT2FIX(31);
12466 : return 1;
12467 1 : case 36:
12468 1 : *AType = 0;
12469 1 : *QType = 0;
12470 1 : *b_min = FIX_MIN;
12471 1 : *b_max = FIX_MAX;
12472 : return 1;
12473 1 : case 37:
12474 1 : *AType = 0;
12475 1 : *QType = 0;
12476 1 : *b_min = FIX_MIN;
12477 1 : *b_max = FIX_MAX;
12478 : return 1;
12479 1 : case 38:
12480 1 : *AType = 0;
12481 1 : *QType = 13;
12482 1 : *QT13_bits = 5;
12483 1 : *b_min = FLT2FIX(0);
12484 1 : *b_max = FLT2FIX(31);
12485 : return 1;
12486 : default:
12487 : return 0;
12488 : }
12489 : }
12490 :
12491 :
12492 :
12493 233 : GF_Node *QuantizationParameter_Create()
12494 : {
12495 : M_QuantizationParameter *p;
12496 233 : GF_SAFEALLOC(p, M_QuantizationParameter);
12497 233 : if(!p) return NULL;
12498 233 : gf_node_setup((GF_Node *)p, TAG_MPEG4_QuantizationParameter);
12499 :
12500 : /*default field values*/
12501 233 : p->position3DMin.x = FIX_MIN;
12502 233 : p->position3DMin.y = FIX_MIN;
12503 233 : p->position3DMin.z = FIX_MIN;
12504 233 : p->position3DMax.x = FIX_MAX;
12505 233 : p->position3DMax.y = FIX_MAX;
12506 233 : p->position3DMax.z = FIX_MAX;
12507 233 : p->position3DNbBits = 16;
12508 233 : p->position2DMin.x = FIX_MIN;
12509 233 : p->position2DMin.y = FIX_MIN;
12510 233 : p->position2DMax.x = FIX_MAX;
12511 233 : p->position2DMax.y = FIX_MAX;
12512 233 : p->position2DNbBits = 16;
12513 233 : p->drawOrderMin = FIX_MIN;
12514 233 : p->drawOrderMax = FIX_MAX;
12515 233 : p->drawOrderNbBits = 8;
12516 233 : p->colorQuant = 1;
12517 233 : p->colorMin = FLT2FIX(0.0);
12518 233 : p->colorMax = FLT2FIX(1.0);
12519 233 : p->colorNbBits = 8;
12520 233 : p->textureCoordinateQuant = 1;
12521 233 : p->textureCoordinateMin = FLT2FIX(0);
12522 233 : p->textureCoordinateMax = FLT2FIX(1);
12523 233 : p->textureCoordinateNbBits = 16;
12524 233 : p->angleQuant = 1;
12525 233 : p->angleMin = FLT2FIX(0.0);
12526 233 : p->angleMax = FLT2FIX(6.2831853);
12527 233 : p->angleNbBits = 16;
12528 233 : p->scaleMin = FLT2FIX(0.0);
12529 233 : p->scaleMax = FIX_MAX;
12530 233 : p->scaleNbBits = 8;
12531 233 : p->keyQuant = 1;
12532 233 : p->keyMin = FLT2FIX(0.0);
12533 233 : p->keyMax = FLT2FIX(1.0);
12534 233 : p->keyNbBits = 8;
12535 233 : p->normalQuant = 1;
12536 233 : p->normalNbBits = 8;
12537 233 : p->sizeMin = FLT2FIX(0);
12538 233 : p->sizeMax = FIX_MAX;
12539 233 : p->sizeNbBits = 8;
12540 233 : return (GF_Node *)p;
12541 : }
12542 :
12543 :
12544 : /*
12545 : Rectangle Node deletion
12546 : */
12547 :
12548 : static void Rectangle_Del(GF_Node *node)
12549 : {
12550 : M_Rectangle *p = (M_Rectangle *) node;
12551 601 : gf_node_free((GF_Node *) p);
12552 : }
12553 :
12554 : static const u16 Rectangle_Def2All[] = { 0};
12555 : static const u16 Rectangle_In2All[] = { 0};
12556 : static const u16 Rectangle_Out2All[] = { 0};
12557 : static const u16 Rectangle_Dyn2All[] = { 0};
12558 :
12559 : static u32 Rectangle_get_field_count(GF_Node *node, u8 IndexMode)
12560 : {
12561 : switch(IndexMode) {
12562 : case GF_SG_FIELD_CODING_IN:
12563 : return 1;
12564 : case GF_SG_FIELD_CODING_DEF:
12565 : return 1;
12566 : case GF_SG_FIELD_CODING_OUT:
12567 : return 1;
12568 : case GF_SG_FIELD_CODING_DYN:
12569 : return 1;
12570 : default:
12571 : return 1;
12572 : }
12573 : }
12574 :
12575 : static GF_Err Rectangle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
12576 : {
12577 106 : switch(IndexMode) {
12578 0 : case GF_SG_FIELD_CODING_IN:
12579 0 : *allField = Rectangle_In2All[inField];
12580 : return GF_OK;
12581 105 : case GF_SG_FIELD_CODING_DEF:
12582 105 : *allField = Rectangle_Def2All[inField];
12583 : return GF_OK;
12584 0 : case GF_SG_FIELD_CODING_OUT:
12585 0 : *allField = Rectangle_Out2All[inField];
12586 : return GF_OK;
12587 0 : case GF_SG_FIELD_CODING_DYN:
12588 0 : *allField = Rectangle_Dyn2All[inField];
12589 : return GF_OK;
12590 : default:
12591 : return GF_BAD_PARAM;
12592 : }
12593 : }
12594 : static GF_Err Rectangle_get_field(GF_Node *node, GF_FieldInfo *info)
12595 : {
12596 1213 : switch (info->fieldIndex) {
12597 1213 : case 0:
12598 1213 : info->name = "size";
12599 1213 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12600 1213 : info->fieldType = GF_SG_VRML_SFVEC2F;
12601 1213 : info->far_ptr = & ((M_Rectangle *) node)->size;
12602 : return GF_OK;
12603 : default:
12604 : return GF_BAD_PARAM;
12605 : }
12606 : }
12607 :
12608 :
12609 : static s32 Rectangle_get_field_index_by_name(char *name)
12610 : {
12611 822 : if (!strcmp("size", name)) return 0;
12612 : return -1;
12613 : }
12614 : static Bool Rectangle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
12615 : {
12616 16 : switch (FieldIndex) {
12617 16 : case 0:
12618 16 : *AType = 2;
12619 16 : *QType = 12;
12620 16 : *b_min = FLT2FIX(0);
12621 16 : *b_max = FIX_MAX;
12622 : return 1;
12623 : default:
12624 : return 0;
12625 : }
12626 : }
12627 :
12628 :
12629 :
12630 601 : GF_Node *Rectangle_Create()
12631 : {
12632 : M_Rectangle *p;
12633 601 : GF_SAFEALLOC(p, M_Rectangle);
12634 601 : if(!p) return NULL;
12635 601 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Rectangle);
12636 :
12637 : /*default field values*/
12638 601 : p->size.x = FLT2FIX(2);
12639 601 : p->size.y = FLT2FIX(2);
12640 601 : return (GF_Node *)p;
12641 : }
12642 :
12643 :
12644 : /*
12645 : ScalarInterpolator Node deletion
12646 : */
12647 :
12648 71 : static void ScalarInterpolator_Del(GF_Node *node)
12649 : {
12650 : M_ScalarInterpolator *p = (M_ScalarInterpolator *) node;
12651 71 : gf_sg_mffloat_del(p->key);
12652 71 : gf_sg_mffloat_del(p->keyValue);
12653 71 : gf_node_free((GF_Node *) p);
12654 71 : }
12655 :
12656 : static const u16 ScalarInterpolator_Def2All[] = { 1, 2};
12657 : static const u16 ScalarInterpolator_In2All[] = { 0, 1, 2};
12658 : static const u16 ScalarInterpolator_Out2All[] = { 1, 2, 3};
12659 :
12660 : static u32 ScalarInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
12661 : {
12662 : switch(IndexMode) {
12663 : case GF_SG_FIELD_CODING_IN:
12664 : return 3;
12665 : case GF_SG_FIELD_CODING_DEF:
12666 : return 2;
12667 : case GF_SG_FIELD_CODING_OUT:
12668 : return 3;
12669 : case GF_SG_FIELD_CODING_DYN:
12670 : return 0;
12671 : default:
12672 : return 4;
12673 : }
12674 : }
12675 :
12676 : static GF_Err ScalarInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
12677 : {
12678 4 : switch(IndexMode) {
12679 0 : case GF_SG_FIELD_CODING_IN:
12680 0 : *allField = ScalarInterpolator_In2All[inField];
12681 : return GF_OK;
12682 0 : case GF_SG_FIELD_CODING_DEF:
12683 0 : *allField = ScalarInterpolator_Def2All[inField];
12684 : return GF_OK;
12685 0 : case GF_SG_FIELD_CODING_OUT:
12686 0 : *allField = ScalarInterpolator_Out2All[inField];
12687 : return GF_OK;
12688 : default:
12689 : return GF_BAD_PARAM;
12690 : }
12691 : }
12692 372 : static GF_Err ScalarInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
12693 : {
12694 372 : switch (info->fieldIndex) {
12695 123 : case 0:
12696 123 : info->name = "set_fraction";
12697 123 : info->eventType = GF_SG_EVENT_IN;
12698 123 : info->on_event_in = ((M_ScalarInterpolator *)node)->on_set_fraction;
12699 123 : info->fieldType = GF_SG_VRML_SFFLOAT;
12700 123 : info->far_ptr = & ((M_ScalarInterpolator *) node)->set_fraction;
12701 123 : return GF_OK;
12702 60 : case 1:
12703 60 : info->name = "key";
12704 60 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12705 60 : info->fieldType = GF_SG_VRML_MFFLOAT;
12706 60 : info->far_ptr = & ((M_ScalarInterpolator *) node)->key;
12707 60 : return GF_OK;
12708 60 : case 2:
12709 60 : info->name = "keyValue";
12710 60 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12711 60 : info->fieldType = GF_SG_VRML_MFFLOAT;
12712 60 : info->far_ptr = & ((M_ScalarInterpolator *) node)->keyValue;
12713 60 : return GF_OK;
12714 129 : case 3:
12715 129 : info->name = "value_changed";
12716 129 : info->eventType = GF_SG_EVENT_OUT;
12717 129 : info->fieldType = GF_SG_VRML_SFFLOAT;
12718 129 : info->far_ptr = & ((M_ScalarInterpolator *) node)->value_changed;
12719 129 : return GF_OK;
12720 : default:
12721 : return GF_BAD_PARAM;
12722 : }
12723 : }
12724 :
12725 :
12726 215 : static s32 ScalarInterpolator_get_field_index_by_name(char *name)
12727 : {
12728 215 : if (!strcmp("set_fraction", name)) return 0;
12729 164 : if (!strcmp("key", name)) return 1;
12730 113 : if (!strcmp("keyValue", name)) return 2;
12731 62 : if (!strcmp("value_changed", name)) return 3;
12732 0 : return -1;
12733 : }
12734 : static Bool ScalarInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
12735 : {
12736 4 : switch (FieldIndex) {
12737 1 : case 1:
12738 1 : *AType = 0;
12739 1 : *QType = 8;
12740 1 : *b_min = FLT2FIX(0);
12741 1 : *b_max = FLT2FIX(1);
12742 : return 1;
12743 1 : case 2:
12744 1 : *AType = 0;
12745 1 : *QType = 0;
12746 1 : *b_min = FIX_MIN;
12747 1 : *b_max = FIX_MAX;
12748 : return 1;
12749 : default:
12750 : return 0;
12751 : }
12752 : }
12753 :
12754 :
12755 :
12756 71 : GF_Node *ScalarInterpolator_Create()
12757 : {
12758 : M_ScalarInterpolator *p;
12759 71 : GF_SAFEALLOC(p, M_ScalarInterpolator);
12760 71 : if(!p) return NULL;
12761 71 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ScalarInterpolator);
12762 :
12763 : /*default field values*/
12764 71 : return (GF_Node *)p;
12765 : }
12766 :
12767 :
12768 : /*
12769 : Script Node deletion
12770 : */
12771 :
12772 : static void Script_Del(GF_Node *node)
12773 : {
12774 : M_Script *p = (M_Script *) node;
12775 456 : gf_sg_mfscript_del(p->url);
12776 456 : gf_node_free((GF_Node *) p);
12777 : }
12778 :
12779 : static const u16 Script_Def2All[] = { 0, 1, 2};
12780 : static const u16 Script_In2All[] = { 0};
12781 : static const u16 Script_Out2All[] = { 0};
12782 :
12783 : static u32 Script_get_field_count(GF_Node *node, u8 IndexMode)
12784 : {
12785 : switch(IndexMode) {
12786 : case GF_SG_FIELD_CODING_IN:
12787 : return 1;
12788 : case GF_SG_FIELD_CODING_DEF:
12789 : return 3;
12790 : case GF_SG_FIELD_CODING_OUT:
12791 : return 1;
12792 : case GF_SG_FIELD_CODING_DYN:
12793 : return 0;
12794 : default:
12795 : return 3;
12796 : }
12797 : }
12798 :
12799 : static GF_Err Script_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
12800 : {
12801 78 : switch(IndexMode) {
12802 0 : case GF_SG_FIELD_CODING_IN:
12803 0 : *allField = Script_In2All[inField];
12804 : return GF_OK;
12805 75 : case GF_SG_FIELD_CODING_DEF:
12806 75 : *allField = Script_Def2All[inField];
12807 : return GF_OK;
12808 0 : case GF_SG_FIELD_CODING_OUT:
12809 0 : *allField = Script_Out2All[inField];
12810 : return GF_OK;
12811 : default:
12812 : return GF_BAD_PARAM;
12813 : }
12814 : }
12815 : static GF_Err Script_get_field(GF_Node *node, GF_FieldInfo *info)
12816 : {
12817 5450 : switch (info->fieldIndex) {
12818 1863 : case 0:
12819 1863 : info->name = "url";
12820 1863 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12821 1863 : info->fieldType = GF_SG_VRML_MFSCRIPT;
12822 1863 : info->far_ptr = & ((M_Script *) node)->url;
12823 : return GF_OK;
12824 1794 : case 1:
12825 1794 : info->name = "directOutput";
12826 1794 : info->eventType = GF_SG_EVENT_FIELD;
12827 1794 : info->fieldType = GF_SG_VRML_SFBOOL;
12828 1794 : info->far_ptr = & ((M_Script *) node)->directOutput;
12829 : return GF_OK;
12830 1793 : case 2:
12831 1793 : info->name = "mustEvaluate";
12832 1793 : info->eventType = GF_SG_EVENT_FIELD;
12833 1793 : info->fieldType = GF_SG_VRML_SFBOOL;
12834 1793 : info->far_ptr = & ((M_Script *) node)->mustEvaluate;
12835 : return GF_OK;
12836 : default:
12837 : return GF_BAD_PARAM;
12838 : }
12839 : }
12840 :
12841 :
12842 0 : static s32 Script_get_field_index_by_name(char *name)
12843 : {
12844 0 : if (!strcmp("url", name)) return 0;
12845 0 : if (!strcmp("directOutput", name)) return 1;
12846 0 : if (!strcmp("mustEvaluate", name)) return 2;
12847 0 : return -1;
12848 : }
12849 : static Bool Script_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
12850 : {
12851 : switch (FieldIndex) {
12852 : default:
12853 : return 0;
12854 : }
12855 : }
12856 :
12857 :
12858 :
12859 456 : GF_Node *Script_Create()
12860 : {
12861 : M_Script *p;
12862 456 : GF_SAFEALLOC(p, M_Script);
12863 456 : if(!p) return NULL;
12864 456 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Script);
12865 :
12866 : /*default field values*/
12867 456 : return (GF_Node *)p;
12868 : }
12869 :
12870 :
12871 : /*
12872 : Shape Node deletion
12873 : */
12874 :
12875 11668 : static void Shape_Del(GF_Node *node)
12876 : {
12877 : M_Shape *p = (M_Shape *) node;
12878 11668 : gf_node_unregister((GF_Node *) p->appearance, (GF_Node *) p);
12879 11668 : gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
12880 11668 : gf_node_free((GF_Node *) p);
12881 11668 : }
12882 :
12883 : static const u16 Shape_Def2All[] = { 0, 1};
12884 : static const u16 Shape_In2All[] = { 0, 1};
12885 : static const u16 Shape_Out2All[] = { 0, 1};
12886 :
12887 : static u32 Shape_get_field_count(GF_Node *node, u8 IndexMode)
12888 : {
12889 9897 : switch(IndexMode) {
12890 : case GF_SG_FIELD_CODING_IN:
12891 : return 2;
12892 : case GF_SG_FIELD_CODING_DEF:
12893 : return 2;
12894 : case GF_SG_FIELD_CODING_OUT:
12895 : return 2;
12896 1 : case GF_SG_FIELD_CODING_DYN:
12897 : return 0;
12898 : default:
12899 : return 2;
12900 : }
12901 : }
12902 :
12903 : static GF_Err Shape_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
12904 : {
12905 7923 : switch(IndexMode) {
12906 2 : case GF_SG_FIELD_CODING_IN:
12907 2 : *allField = Shape_In2All[inField];
12908 : return GF_OK;
12909 7919 : case GF_SG_FIELD_CODING_DEF:
12910 7919 : *allField = Shape_Def2All[inField];
12911 : return GF_OK;
12912 0 : case GF_SG_FIELD_CODING_OUT:
12913 0 : *allField = Shape_Out2All[inField];
12914 : return GF_OK;
12915 : default:
12916 : return GF_BAD_PARAM;
12917 : }
12918 : }
12919 : static GF_Err Shape_get_field(GF_Node *node, GF_FieldInfo *info)
12920 : {
12921 35164 : switch (info->fieldIndex) {
12922 14385 : case 0:
12923 14385 : info->name = "appearance";
12924 14385 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12925 14385 : info->fieldType = GF_SG_VRML_SFNODE;
12926 14385 : info->NDTtype = NDT_SFAppearanceNode;
12927 14385 : info->far_ptr = & ((M_Shape *)node)->appearance;
12928 : return GF_OK;
12929 20779 : case 1:
12930 20779 : info->name = "geometry";
12931 20779 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
12932 20779 : info->fieldType = GF_SG_VRML_SFNODE;
12933 20779 : info->NDTtype = NDT_SFGeometryNode;
12934 20779 : info->far_ptr = & ((M_Shape *)node)->geometry;
12935 : return GF_OK;
12936 : default:
12937 : return GF_BAD_PARAM;
12938 : }
12939 : }
12940 :
12941 :
12942 12594 : static s32 Shape_get_field_index_by_name(char *name)
12943 : {
12944 12594 : if (!strcmp("appearance", name)) return 0;
12945 9251 : if (!strcmp("geometry", name)) return 1;
12946 0 : return -1;
12947 : }
12948 : static Bool Shape_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
12949 : {
12950 : switch (FieldIndex) {
12951 : default:
12952 : return 0;
12953 : }
12954 : }
12955 :
12956 :
12957 :
12958 11668 : GF_Node *Shape_Create()
12959 : {
12960 : M_Shape *p;
12961 11668 : GF_SAFEALLOC(p, M_Shape);
12962 11668 : if(!p) return NULL;
12963 11668 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Shape);
12964 :
12965 : /*default field values*/
12966 11668 : return (GF_Node *)p;
12967 : }
12968 :
12969 :
12970 : /*
12971 : Sound Node deletion
12972 : */
12973 :
12974 : static void Sound_Del(GF_Node *node)
12975 : {
12976 : M_Sound *p = (M_Sound *) node;
12977 3 : gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
12978 3 : gf_node_free((GF_Node *) p);
12979 : }
12980 :
12981 : static const u16 Sound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
12982 : static const u16 Sound_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
12983 : static const u16 Sound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
12984 : static const u16 Sound_Dyn2All[] = { 1, 2, 3, 4, 5, 6};
12985 :
12986 : static u32 Sound_get_field_count(GF_Node *node, u8 IndexMode)
12987 : {
12988 : switch(IndexMode) {
12989 : case GF_SG_FIELD_CODING_IN:
12990 : return 9;
12991 : case GF_SG_FIELD_CODING_DEF:
12992 : return 10;
12993 : case GF_SG_FIELD_CODING_OUT:
12994 : return 9;
12995 : case GF_SG_FIELD_CODING_DYN:
12996 : return 6;
12997 : default:
12998 : return 10;
12999 : }
13000 : }
13001 :
13002 : static GF_Err Sound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13003 : {
13004 10 : switch(IndexMode) {
13005 0 : case GF_SG_FIELD_CODING_IN:
13006 0 : *allField = Sound_In2All[inField];
13007 : return GF_OK;
13008 0 : case GF_SG_FIELD_CODING_DEF:
13009 0 : *allField = Sound_Def2All[inField];
13010 : return GF_OK;
13011 0 : case GF_SG_FIELD_CODING_OUT:
13012 0 : *allField = Sound_Out2All[inField];
13013 : return GF_OK;
13014 0 : case GF_SG_FIELD_CODING_DYN:
13015 0 : *allField = Sound_Dyn2All[inField];
13016 : return GF_OK;
13017 : default:
13018 : return GF_BAD_PARAM;
13019 : }
13020 : }
13021 26 : static GF_Err Sound_get_field(GF_Node *node, GF_FieldInfo *info)
13022 : {
13023 26 : switch (info->fieldIndex) {
13024 2 : case 0:
13025 2 : info->name = "direction";
13026 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13027 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
13028 2 : info->far_ptr = & ((M_Sound *) node)->direction;
13029 2 : return GF_OK;
13030 2 : case 1:
13031 2 : info->name = "intensity";
13032 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13033 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13034 2 : info->far_ptr = & ((M_Sound *) node)->intensity;
13035 2 : return GF_OK;
13036 4 : case 2:
13037 4 : info->name = "location";
13038 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13039 4 : info->fieldType = GF_SG_VRML_SFVEC3F;
13040 4 : info->far_ptr = & ((M_Sound *) node)->location;
13041 4 : return GF_OK;
13042 2 : case 3:
13043 2 : info->name = "maxBack";
13044 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13045 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13046 2 : info->far_ptr = & ((M_Sound *) node)->maxBack;
13047 2 : return GF_OK;
13048 2 : case 4:
13049 2 : info->name = "maxFront";
13050 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13051 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13052 2 : info->far_ptr = & ((M_Sound *) node)->maxFront;
13053 2 : return GF_OK;
13054 2 : case 5:
13055 2 : info->name = "minBack";
13056 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13057 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13058 2 : info->far_ptr = & ((M_Sound *) node)->minBack;
13059 2 : return GF_OK;
13060 2 : case 6:
13061 2 : info->name = "minFront";
13062 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13063 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13064 2 : info->far_ptr = & ((M_Sound *) node)->minFront;
13065 2 : return GF_OK;
13066 2 : case 7:
13067 2 : info->name = "priority";
13068 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13069 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13070 2 : info->far_ptr = & ((M_Sound *) node)->priority;
13071 2 : return GF_OK;
13072 4 : case 8:
13073 4 : info->name = "source";
13074 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13075 4 : info->fieldType = GF_SG_VRML_SFNODE;
13076 4 : info->NDTtype = NDT_SFAudioNode;
13077 4 : info->far_ptr = & ((M_Sound *)node)->source;
13078 4 : return GF_OK;
13079 4 : case 9:
13080 4 : info->name = "spatialize";
13081 4 : info->eventType = GF_SG_EVENT_FIELD;
13082 4 : info->fieldType = GF_SG_VRML_SFBOOL;
13083 4 : info->far_ptr = & ((M_Sound *) node)->spatialize;
13084 4 : return GF_OK;
13085 : default:
13086 : return GF_BAD_PARAM;
13087 : }
13088 : }
13089 :
13090 :
13091 16 : static s32 Sound_get_field_index_by_name(char *name)
13092 : {
13093 16 : if (!strcmp("direction", name)) return 0;
13094 15 : if (!strcmp("intensity", name)) return 1;
13095 14 : if (!strcmp("location", name)) return 2;
13096 11 : if (!strcmp("maxBack", name)) return 3;
13097 10 : if (!strcmp("maxFront", name)) return 4;
13098 9 : if (!strcmp("minBack", name)) return 5;
13099 8 : if (!strcmp("minFront", name)) return 6;
13100 7 : if (!strcmp("priority", name)) return 7;
13101 6 : if (!strcmp("source", name)) return 8;
13102 3 : if (!strcmp("spatialize", name)) return 9;
13103 0 : return -1;
13104 : }
13105 10 : static Bool Sound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13106 : {
13107 10 : switch (FieldIndex) {
13108 1 : case 0:
13109 1 : *AType = 0;
13110 1 : *QType = 9;
13111 1 : *b_min = FIX_MIN;
13112 1 : *b_max = FIX_MAX;
13113 : return 1;
13114 1 : case 1:
13115 1 : *AType = 7;
13116 1 : *QType = 4;
13117 1 : *b_min = FLT2FIX(0);
13118 1 : *b_max = FLT2FIX(1);
13119 : return 1;
13120 1 : case 2:
13121 1 : *AType = 1;
13122 1 : *QType = 1;
13123 1 : *b_min = FIX_MIN;
13124 1 : *b_max = FIX_MAX;
13125 : return 1;
13126 1 : case 3:
13127 1 : *AType = 7;
13128 1 : *QType = 11;
13129 1 : *b_min = FLT2FIX(0);
13130 1 : *b_max = FIX_MAX;
13131 : return 1;
13132 1 : case 4:
13133 1 : *AType = 7;
13134 1 : *QType = 11;
13135 1 : *b_min = FLT2FIX(0);
13136 1 : *b_max = FIX_MAX;
13137 : return 1;
13138 1 : case 5:
13139 1 : *AType = 7;
13140 1 : *QType = 11;
13141 1 : *b_min = FLT2FIX(0);
13142 1 : *b_max = FIX_MAX;
13143 : return 1;
13144 1 : case 6:
13145 1 : *AType = 7;
13146 1 : *QType = 11;
13147 1 : *b_min = FLT2FIX(0);
13148 1 : *b_max = FIX_MAX;
13149 : return 1;
13150 1 : case 7:
13151 1 : *AType = 0;
13152 1 : *QType = 4;
13153 1 : *b_min = FLT2FIX(0);
13154 1 : *b_max = FLT2FIX(1);
13155 : return 1;
13156 : default:
13157 : return 0;
13158 : }
13159 : }
13160 :
13161 :
13162 :
13163 3 : GF_Node *Sound_Create()
13164 : {
13165 : M_Sound *p;
13166 3 : GF_SAFEALLOC(p, M_Sound);
13167 3 : if(!p) return NULL;
13168 3 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Sound);
13169 :
13170 : /*default field values*/
13171 3 : p->direction.x = FLT2FIX(0);
13172 3 : p->direction.y = FLT2FIX(0);
13173 3 : p->direction.z = FLT2FIX(1);
13174 3 : p->intensity = FLT2FIX(1);
13175 3 : p->location.x = FLT2FIX(0);
13176 3 : p->location.y = FLT2FIX(0);
13177 3 : p->location.z = FLT2FIX(0);
13178 3 : p->maxBack = FLT2FIX(10);
13179 3 : p->maxFront = FLT2FIX(10);
13180 3 : p->minBack = FLT2FIX(1);
13181 3 : p->minFront = FLT2FIX(1);
13182 3 : p->priority = FLT2FIX(0);
13183 3 : p->spatialize = 1;
13184 3 : return (GF_Node *)p;
13185 : }
13186 :
13187 :
13188 : /*
13189 : Sound2D Node deletion
13190 : */
13191 :
13192 : static void Sound2D_Del(GF_Node *node)
13193 : {
13194 : M_Sound2D *p = (M_Sound2D *) node;
13195 275 : gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
13196 275 : gf_node_free((GF_Node *) p);
13197 : }
13198 :
13199 : static const u16 Sound2D_Def2All[] = { 0, 1, 2, 3};
13200 : static const u16 Sound2D_In2All[] = { 0, 1, 2};
13201 : static const u16 Sound2D_Out2All[] = { 0, 1, 2};
13202 : static const u16 Sound2D_Dyn2All[] = { 0, 1};
13203 :
13204 : static u32 Sound2D_get_field_count(GF_Node *node, u8 IndexMode)
13205 : {
13206 : switch(IndexMode) {
13207 : case GF_SG_FIELD_CODING_IN:
13208 : return 3;
13209 : case GF_SG_FIELD_CODING_DEF:
13210 : return 4;
13211 : case GF_SG_FIELD_CODING_OUT:
13212 : return 3;
13213 : case GF_SG_FIELD_CODING_DYN:
13214 : return 2;
13215 : default:
13216 : return 4;
13217 : }
13218 : }
13219 :
13220 : static GF_Err Sound2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13221 : {
13222 80 : switch(IndexMode) {
13223 0 : case GF_SG_FIELD_CODING_IN:
13224 0 : *allField = Sound2D_In2All[inField];
13225 : return GF_OK;
13226 76 : case GF_SG_FIELD_CODING_DEF:
13227 76 : *allField = Sound2D_Def2All[inField];
13228 : return GF_OK;
13229 0 : case GF_SG_FIELD_CODING_OUT:
13230 0 : *allField = Sound2D_Out2All[inField];
13231 : return GF_OK;
13232 0 : case GF_SG_FIELD_CODING_DYN:
13233 0 : *allField = Sound2D_Dyn2All[inField];
13234 : return GF_OK;
13235 : default:
13236 : return GF_BAD_PARAM;
13237 : }
13238 : }
13239 330 : static GF_Err Sound2D_get_field(GF_Node *node, GF_FieldInfo *info)
13240 : {
13241 330 : switch (info->fieldIndex) {
13242 110 : case 0:
13243 110 : info->name = "intensity";
13244 110 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13245 110 : info->fieldType = GF_SG_VRML_SFFLOAT;
13246 110 : info->far_ptr = & ((M_Sound2D *) node)->intensity;
13247 110 : return GF_OK;
13248 62 : case 1:
13249 62 : info->name = "location";
13250 62 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13251 62 : info->fieldType = GF_SG_VRML_SFVEC2F;
13252 62 : info->far_ptr = & ((M_Sound2D *) node)->location;
13253 62 : return GF_OK;
13254 96 : case 2:
13255 96 : info->name = "source";
13256 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13257 96 : info->fieldType = GF_SG_VRML_SFNODE;
13258 96 : info->NDTtype = NDT_SFAudioNode;
13259 96 : info->far_ptr = & ((M_Sound2D *)node)->source;
13260 96 : return GF_OK;
13261 62 : case 3:
13262 62 : info->name = "spatialize";
13263 62 : info->eventType = GF_SG_EVENT_FIELD;
13264 62 : info->fieldType = GF_SG_VRML_SFBOOL;
13265 62 : info->far_ptr = & ((M_Sound2D *) node)->spatialize;
13266 62 : return GF_OK;
13267 : default:
13268 : return GF_BAD_PARAM;
13269 : }
13270 : }
13271 :
13272 :
13273 69 : static s32 Sound2D_get_field_index_by_name(char *name)
13274 : {
13275 69 : if (!strcmp("intensity", name)) return 0;
13276 29 : if (!strcmp("location", name)) return 1;
13277 28 : if (!strcmp("source", name)) return 2;
13278 1 : if (!strcmp("spatialize", name)) return 3;
13279 0 : return -1;
13280 : }
13281 : static Bool Sound2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13282 : {
13283 4 : switch (FieldIndex) {
13284 1 : case 0:
13285 1 : *AType = 7;
13286 1 : *QType = 4;
13287 1 : *b_min = FLT2FIX(0);
13288 1 : *b_max = FLT2FIX(1);
13289 : return 1;
13290 1 : case 1:
13291 1 : *AType = 2;
13292 1 : *QType = 2;
13293 1 : *b_min = FIX_MIN;
13294 1 : *b_max = FIX_MAX;
13295 : return 1;
13296 : default:
13297 : return 0;
13298 : }
13299 : }
13300 :
13301 :
13302 :
13303 275 : GF_Node *Sound2D_Create()
13304 : {
13305 : M_Sound2D *p;
13306 275 : GF_SAFEALLOC(p, M_Sound2D);
13307 275 : if(!p) return NULL;
13308 275 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Sound2D);
13309 :
13310 : /*default field values*/
13311 275 : p->intensity = FLT2FIX(1);
13312 275 : p->location.x = FLT2FIX(0);
13313 275 : p->location.y = FLT2FIX(0);
13314 275 : p->spatialize = 1;
13315 275 : return (GF_Node *)p;
13316 : }
13317 :
13318 :
13319 : /*
13320 : Sphere Node deletion
13321 : */
13322 :
13323 : static void Sphere_Del(GF_Node *node)
13324 : {
13325 : M_Sphere *p = (M_Sphere *) node;
13326 79 : gf_node_free((GF_Node *) p);
13327 : }
13328 :
13329 : static const u16 Sphere_Def2All[] = { 0};
13330 :
13331 : static u32 Sphere_get_field_count(GF_Node *node, u8 IndexMode)
13332 : {
13333 76 : switch(IndexMode) {
13334 : case GF_SG_FIELD_CODING_IN:
13335 : return 0;
13336 56 : case GF_SG_FIELD_CODING_DEF:
13337 : return 1;
13338 : case GF_SG_FIELD_CODING_OUT:
13339 : return 0;
13340 : case GF_SG_FIELD_CODING_DYN:
13341 : return 0;
13342 17 : default:
13343 : return 1;
13344 : }
13345 : }
13346 :
13347 : static GF_Err Sphere_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13348 : {
13349 36 : switch(IndexMode) {
13350 35 : case GF_SG_FIELD_CODING_DEF:
13351 35 : *allField = Sphere_Def2All[inField];
13352 : return GF_OK;
13353 : default:
13354 : return GF_BAD_PARAM;
13355 : }
13356 : }
13357 : static GF_Err Sphere_get_field(GF_Node *node, GF_FieldInfo *info)
13358 : {
13359 142 : switch (info->fieldIndex) {
13360 142 : case 0:
13361 142 : info->name = "radius";
13362 142 : info->eventType = GF_SG_EVENT_FIELD;
13363 142 : info->fieldType = GF_SG_VRML_SFFLOAT;
13364 142 : info->far_ptr = & ((M_Sphere *) node)->radius;
13365 : return GF_OK;
13366 : default:
13367 : return GF_BAD_PARAM;
13368 : }
13369 : }
13370 :
13371 :
13372 : static s32 Sphere_get_field_index_by_name(char *name)
13373 : {
13374 27 : if (!strcmp("radius", name)) return 0;
13375 : return -1;
13376 : }
13377 : static Bool Sphere_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13378 : {
13379 9 : switch (FieldIndex) {
13380 9 : case 0:
13381 9 : *AType = 0;
13382 9 : *QType = 11;
13383 9 : *b_min = FLT2FIX(0);
13384 9 : *b_max = FIX_MAX;
13385 : return 1;
13386 : default:
13387 : return 0;
13388 : }
13389 : }
13390 :
13391 :
13392 :
13393 79 : GF_Node *Sphere_Create()
13394 : {
13395 : M_Sphere *p;
13396 79 : GF_SAFEALLOC(p, M_Sphere);
13397 79 : if(!p) return NULL;
13398 79 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Sphere);
13399 :
13400 : /*default field values*/
13401 79 : p->radius = FLT2FIX(1);
13402 79 : return (GF_Node *)p;
13403 : }
13404 :
13405 :
13406 : /*
13407 : SphereSensor Node deletion
13408 : */
13409 :
13410 : static void SphereSensor_Del(GF_Node *node)
13411 : {
13412 : M_SphereSensor *p = (M_SphereSensor *) node;
13413 67 : gf_node_free((GF_Node *) p);
13414 : }
13415 :
13416 : static const u16 SphereSensor_Def2All[] = { 0, 1, 2};
13417 : static const u16 SphereSensor_In2All[] = { 0, 1, 2};
13418 : static const u16 SphereSensor_Out2All[] = { 0, 1, 2, 3, 4, 5};
13419 :
13420 : static u32 SphereSensor_get_field_count(GF_Node *node, u8 IndexMode)
13421 : {
13422 : switch(IndexMode) {
13423 : case GF_SG_FIELD_CODING_IN:
13424 : return 3;
13425 : case GF_SG_FIELD_CODING_DEF:
13426 : return 3;
13427 : case GF_SG_FIELD_CODING_OUT:
13428 : return 6;
13429 : case GF_SG_FIELD_CODING_DYN:
13430 : return 0;
13431 : default:
13432 : return 6;
13433 : }
13434 : }
13435 :
13436 : static GF_Err SphereSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13437 : {
13438 66 : switch(IndexMode) {
13439 0 : case GF_SG_FIELD_CODING_IN:
13440 0 : *allField = SphereSensor_In2All[inField];
13441 : return GF_OK;
13442 60 : case GF_SG_FIELD_CODING_DEF:
13443 60 : *allField = SphereSensor_Def2All[inField];
13444 : return GF_OK;
13445 0 : case GF_SG_FIELD_CODING_OUT:
13446 0 : *allField = SphereSensor_Out2All[inField];
13447 : return GF_OK;
13448 : default:
13449 : return GF_BAD_PARAM;
13450 : }
13451 : }
13452 275 : static GF_Err SphereSensor_get_field(GF_Node *node, GF_FieldInfo *info)
13453 : {
13454 275 : switch (info->fieldIndex) {
13455 72 : case 0:
13456 72 : info->name = "autoOffset";
13457 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13458 72 : info->fieldType = GF_SG_VRML_SFBOOL;
13459 72 : info->far_ptr = & ((M_SphereSensor *) node)->autoOffset;
13460 72 : return GF_OK;
13461 72 : case 1:
13462 72 : info->name = "enabled";
13463 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13464 72 : info->fieldType = GF_SG_VRML_SFBOOL;
13465 72 : info->far_ptr = & ((M_SphereSensor *) node)->enabled;
13466 72 : return GF_OK;
13467 72 : case 2:
13468 72 : info->name = "offset";
13469 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13470 72 : info->fieldType = GF_SG_VRML_SFROTATION;
13471 72 : info->far_ptr = & ((M_SphereSensor *) node)->offset;
13472 72 : return GF_OK;
13473 21 : case 3:
13474 21 : info->name = "isActive";
13475 21 : info->eventType = GF_SG_EVENT_OUT;
13476 21 : info->fieldType = GF_SG_VRML_SFBOOL;
13477 21 : info->far_ptr = & ((M_SphereSensor *) node)->isActive;
13478 21 : return GF_OK;
13479 19 : case 4:
13480 19 : info->name = "rotation_changed";
13481 19 : info->eventType = GF_SG_EVENT_OUT;
13482 19 : info->fieldType = GF_SG_VRML_SFROTATION;
13483 19 : info->far_ptr = & ((M_SphereSensor *) node)->rotation_changed;
13484 19 : return GF_OK;
13485 19 : case 5:
13486 19 : info->name = "trackPoint_changed";
13487 19 : info->eventType = GF_SG_EVENT_OUT;
13488 19 : info->fieldType = GF_SG_VRML_SFVEC3F;
13489 19 : info->far_ptr = & ((M_SphereSensor *) node)->trackPoint_changed;
13490 19 : return GF_OK;
13491 : default:
13492 : return GF_BAD_PARAM;
13493 : }
13494 : }
13495 :
13496 :
13497 10 : static s32 SphereSensor_get_field_index_by_name(char *name)
13498 : {
13499 10 : if (!strcmp("autoOffset", name)) return 0;
13500 9 : if (!strcmp("enabled", name)) return 1;
13501 8 : if (!strcmp("offset", name)) return 2;
13502 7 : if (!strcmp("isActive", name)) return 3;
13503 4 : if (!strcmp("rotation_changed", name)) return 4;
13504 2 : if (!strcmp("trackPoint_changed", name)) return 5;
13505 0 : return -1;
13506 : }
13507 : static Bool SphereSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13508 : {
13509 6 : switch (FieldIndex) {
13510 1 : case 2:
13511 1 : *AType = 0;
13512 1 : *QType = 10;
13513 1 : *b_min = FIX_MIN;
13514 1 : *b_max = FIX_MAX;
13515 : return 1;
13516 : default:
13517 : return 0;
13518 : }
13519 : }
13520 :
13521 :
13522 :
13523 67 : GF_Node *SphereSensor_Create()
13524 : {
13525 : M_SphereSensor *p;
13526 67 : GF_SAFEALLOC(p, M_SphereSensor);
13527 67 : if(!p) return NULL;
13528 67 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SphereSensor);
13529 :
13530 : /*default field values*/
13531 67 : p->autoOffset = 1;
13532 67 : p->enabled = 1;
13533 67 : p->offset.x = FLT2FIX(0);
13534 67 : p->offset.y = FLT2FIX(1);
13535 67 : p->offset.z = FLT2FIX(0);
13536 67 : p->offset.q = FLT2FIX(0);
13537 67 : return (GF_Node *)p;
13538 : }
13539 :
13540 :
13541 : /*
13542 : SpotLight Node deletion
13543 : */
13544 :
13545 : static void SpotLight_Del(GF_Node *node)
13546 : {
13547 : M_SpotLight *p = (M_SpotLight *) node;
13548 2 : gf_node_free((GF_Node *) p);
13549 : }
13550 :
13551 : static const u16 SpotLight_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
13552 : static const u16 SpotLight_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
13553 : static const u16 SpotLight_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
13554 : static const u16 SpotLight_Dyn2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 9};
13555 :
13556 : static u32 SpotLight_get_field_count(GF_Node *node, u8 IndexMode)
13557 : {
13558 6 : switch(IndexMode) {
13559 : case GF_SG_FIELD_CODING_IN:
13560 : return 10;
13561 : case GF_SG_FIELD_CODING_DEF:
13562 : return 10;
13563 : case GF_SG_FIELD_CODING_OUT:
13564 : return 10;
13565 1 : case GF_SG_FIELD_CODING_DYN:
13566 : return 9;
13567 : default:
13568 : return 10;
13569 : }
13570 : }
13571 :
13572 : static GF_Err SpotLight_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13573 : {
13574 10 : switch(IndexMode) {
13575 0 : case GF_SG_FIELD_CODING_IN:
13576 0 : *allField = SpotLight_In2All[inField];
13577 : return GF_OK;
13578 0 : case GF_SG_FIELD_CODING_DEF:
13579 0 : *allField = SpotLight_Def2All[inField];
13580 : return GF_OK;
13581 0 : case GF_SG_FIELD_CODING_OUT:
13582 0 : *allField = SpotLight_Out2All[inField];
13583 : return GF_OK;
13584 0 : case GF_SG_FIELD_CODING_DYN:
13585 0 : *allField = SpotLight_Dyn2All[inField];
13586 : return GF_OK;
13587 : default:
13588 : return GF_BAD_PARAM;
13589 : }
13590 : }
13591 25 : static GF_Err SpotLight_get_field(GF_Node *node, GF_FieldInfo *info)
13592 : {
13593 25 : switch (info->fieldIndex) {
13594 2 : case 0:
13595 2 : info->name = "ambientIntensity";
13596 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13597 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13598 2 : info->far_ptr = & ((M_SpotLight *) node)->ambientIntensity;
13599 2 : return GF_OK;
13600 2 : case 1:
13601 2 : info->name = "attenuation";
13602 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13603 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
13604 2 : info->far_ptr = & ((M_SpotLight *) node)->attenuation;
13605 2 : return GF_OK;
13606 2 : case 2:
13607 2 : info->name = "beamWidth";
13608 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13609 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13610 2 : info->far_ptr = & ((M_SpotLight *) node)->beamWidth;
13611 2 : return GF_OK;
13612 3 : case 3:
13613 3 : info->name = "color";
13614 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13615 3 : info->fieldType = GF_SG_VRML_SFCOLOR;
13616 3 : info->far_ptr = & ((M_SpotLight *) node)->color;
13617 3 : return GF_OK;
13618 2 : case 4:
13619 2 : info->name = "cutOffAngle";
13620 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13621 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13622 2 : info->far_ptr = & ((M_SpotLight *) node)->cutOffAngle;
13623 2 : return GF_OK;
13624 5 : case 5:
13625 5 : info->name = "direction";
13626 5 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13627 5 : info->fieldType = GF_SG_VRML_SFVEC3F;
13628 5 : info->far_ptr = & ((M_SpotLight *) node)->direction;
13629 5 : return GF_OK;
13630 2 : case 6:
13631 2 : info->name = "intensity";
13632 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13633 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13634 2 : info->far_ptr = & ((M_SpotLight *) node)->intensity;
13635 2 : return GF_OK;
13636 3 : case 7:
13637 3 : info->name = "location";
13638 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13639 3 : info->fieldType = GF_SG_VRML_SFVEC3F;
13640 3 : info->far_ptr = & ((M_SpotLight *) node)->location;
13641 3 : return GF_OK;
13642 2 : case 8:
13643 2 : info->name = "on";
13644 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13645 2 : info->fieldType = GF_SG_VRML_SFBOOL;
13646 2 : info->far_ptr = & ((M_SpotLight *) node)->on;
13647 2 : return GF_OK;
13648 2 : case 9:
13649 2 : info->name = "radius";
13650 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13651 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
13652 2 : info->far_ptr = & ((M_SpotLight *) node)->radius;
13653 2 : return GF_OK;
13654 : default:
13655 : return GF_BAD_PARAM;
13656 : }
13657 : }
13658 :
13659 :
13660 14 : static s32 SpotLight_get_field_index_by_name(char *name)
13661 : {
13662 14 : if (!strcmp("ambientIntensity", name)) return 0;
13663 13 : if (!strcmp("attenuation", name)) return 1;
13664 12 : if (!strcmp("beamWidth", name)) return 2;
13665 11 : if (!strcmp("color", name)) return 3;
13666 9 : if (!strcmp("cutOffAngle", name)) return 4;
13667 8 : if (!strcmp("direction", name)) return 5;
13668 5 : if (!strcmp("intensity", name)) return 6;
13669 4 : if (!strcmp("location", name)) return 7;
13670 2 : if (!strcmp("on", name)) return 8;
13671 1 : if (!strcmp("radius", name)) return 9;
13672 0 : return -1;
13673 : }
13674 10 : static Bool SpotLight_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13675 : {
13676 10 : switch (FieldIndex) {
13677 1 : case 0:
13678 1 : *AType = 8;
13679 1 : *QType = 4;
13680 1 : *b_min = FLT2FIX(0);
13681 1 : *b_max = FLT2FIX(1);
13682 : return 1;
13683 1 : case 1:
13684 1 : *AType = 1;
13685 1 : *QType = 11;
13686 1 : *b_min = FLT2FIX(0);
13687 1 : *b_max = FIX_MAX;
13688 : return 1;
13689 1 : case 2:
13690 1 : *AType = 8;
13691 1 : *QType = 6;
13692 1 : *b_min = FLT2FIX(0);
13693 1 : *b_max = FLT2FIX(1.5707963);
13694 : return 1;
13695 1 : case 3:
13696 1 : *AType = 4;
13697 1 : *QType = 4;
13698 1 : *b_min = FLT2FIX(0);
13699 1 : *b_max = FLT2FIX(1);
13700 : return 1;
13701 1 : case 4:
13702 1 : *AType = 8;
13703 1 : *QType = 6;
13704 1 : *b_min = FLT2FIX(0);
13705 1 : *b_max = FLT2FIX(1.5707963);
13706 : return 1;
13707 1 : case 5:
13708 1 : *AType = 9;
13709 1 : *QType = 9;
13710 1 : *b_min = FIX_MIN;
13711 1 : *b_max = FIX_MAX;
13712 : return 1;
13713 1 : case 6:
13714 1 : *AType = 8;
13715 1 : *QType = 4;
13716 1 : *b_min = FLT2FIX(0);
13717 1 : *b_max = FLT2FIX(1);
13718 : return 1;
13719 1 : case 7:
13720 1 : *AType = 1;
13721 1 : *QType = 1;
13722 1 : *b_min = FIX_MIN;
13723 1 : *b_max = FIX_MAX;
13724 : return 1;
13725 1 : case 9:
13726 1 : *AType = 7;
13727 1 : *QType = 11;
13728 1 : *b_min = FLT2FIX(0);
13729 1 : *b_max = FIX_MAX;
13730 : return 1;
13731 : default:
13732 : return 0;
13733 : }
13734 : }
13735 :
13736 :
13737 :
13738 2 : GF_Node *SpotLight_Create()
13739 : {
13740 : M_SpotLight *p;
13741 2 : GF_SAFEALLOC(p, M_SpotLight);
13742 2 : if(!p) return NULL;
13743 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SpotLight);
13744 :
13745 : /*default field values*/
13746 2 : p->ambientIntensity = FLT2FIX(0);
13747 2 : p->attenuation.x = FLT2FIX(1);
13748 2 : p->attenuation.y = FLT2FIX(0);
13749 2 : p->attenuation.z = FLT2FIX(0);
13750 2 : p->beamWidth = FLT2FIX(1.570796);
13751 2 : p->color.red = FLT2FIX(1);
13752 2 : p->color.green = FLT2FIX(1);
13753 2 : p->color.blue = FLT2FIX(1);
13754 2 : p->cutOffAngle = FLT2FIX(0.785398);
13755 2 : p->direction.x = FLT2FIX(0);
13756 2 : p->direction.y = FLT2FIX(0);
13757 2 : p->direction.z = FLT2FIX(-1);
13758 2 : p->intensity = FLT2FIX(1);
13759 2 : p->location.x = FLT2FIX(0);
13760 2 : p->location.y = FLT2FIX(0);
13761 2 : p->location.z = FLT2FIX(0);
13762 2 : p->on = 1;
13763 2 : p->radius = FLT2FIX(100);
13764 2 : return (GF_Node *)p;
13765 : }
13766 :
13767 :
13768 : /*
13769 : Switch Node deletion
13770 : */
13771 :
13772 : static void Switch_Del(GF_Node *node)
13773 : {
13774 : M_Switch *p = (M_Switch *) node;
13775 540 : gf_node_unregister_children((GF_Node *) p, p->choice);
13776 540 : gf_node_free((GF_Node *) p);
13777 : }
13778 :
13779 : static const u16 Switch_Def2All[] = { 0, 1};
13780 : static const u16 Switch_In2All[] = { 0, 1};
13781 : static const u16 Switch_Out2All[] = { 0, 1};
13782 :
13783 : static u32 Switch_get_field_count(GF_Node *node, u8 IndexMode)
13784 : {
13785 1495 : switch(IndexMode) {
13786 : case GF_SG_FIELD_CODING_IN:
13787 : return 2;
13788 : case GF_SG_FIELD_CODING_DEF:
13789 : return 2;
13790 : case GF_SG_FIELD_CODING_OUT:
13791 : return 2;
13792 1 : case GF_SG_FIELD_CODING_DYN:
13793 : return 0;
13794 : default:
13795 : return 2;
13796 : }
13797 : }
13798 :
13799 : static GF_Err Switch_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13800 : {
13801 666 : switch(IndexMode) {
13802 531 : case GF_SG_FIELD_CODING_IN:
13803 531 : *allField = Switch_In2All[inField];
13804 : return GF_OK;
13805 133 : case GF_SG_FIELD_CODING_DEF:
13806 133 : *allField = Switch_Def2All[inField];
13807 : return GF_OK;
13808 0 : case GF_SG_FIELD_CODING_OUT:
13809 0 : *allField = Switch_Out2All[inField];
13810 : return GF_OK;
13811 : default:
13812 : return GF_BAD_PARAM;
13813 : }
13814 : }
13815 : static GF_Err Switch_get_field(GF_Node *node, GF_FieldInfo *info)
13816 : {
13817 3399 : switch (info->fieldIndex) {
13818 1370 : case 0:
13819 1370 : info->name = "choice";
13820 1370 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13821 1370 : info->fieldType = GF_SG_VRML_MFNODE;
13822 1370 : info->NDTtype = NDT_SF3DNode;
13823 1370 : info->far_ptr = & ((M_Switch *)node)->choice;
13824 : return GF_OK;
13825 2029 : case 1:
13826 2029 : info->name = "whichChoice";
13827 2029 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13828 2029 : info->fieldType = GF_SG_VRML_SFINT32;
13829 2029 : info->far_ptr = & ((M_Switch *) node)->whichChoice;
13830 : return GF_OK;
13831 : default:
13832 : return GF_BAD_PARAM;
13833 : }
13834 : }
13835 :
13836 :
13837 260 : static s32 Switch_get_field_index_by_name(char *name)
13838 : {
13839 260 : if (!strcmp("choice", name)) return 0;
13840 184 : if (!strcmp("whichChoice", name)) return 1;
13841 0 : return -1;
13842 : }
13843 : static Bool Switch_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13844 : {
13845 10 : switch (FieldIndex) {
13846 9 : case 1:
13847 9 : *AType = 0;
13848 9 : *QType = 13;
13849 9 : *QT13_bits = 10;
13850 9 : *b_min = FLT2FIX(-1);
13851 9 : *b_max = FLT2FIX( 1022);
13852 : return 1;
13853 : default:
13854 : return 0;
13855 : }
13856 : }
13857 :
13858 :
13859 :
13860 540 : GF_Node *Switch_Create()
13861 : {
13862 : M_Switch *p;
13863 540 : GF_SAFEALLOC(p, M_Switch);
13864 540 : if(!p) return NULL;
13865 540 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Switch);
13866 :
13867 : /*default field values*/
13868 540 : p->whichChoice = -1;
13869 540 : return (GF_Node *)p;
13870 : }
13871 :
13872 :
13873 : /*
13874 : TermCap Node deletion
13875 : */
13876 :
13877 : static void TermCap_Del(GF_Node *node)
13878 : {
13879 : M_TermCap *p = (M_TermCap *) node;
13880 2 : gf_node_free((GF_Node *) p);
13881 : }
13882 :
13883 : static const u16 TermCap_Def2All[] = { 1};
13884 : static const u16 TermCap_In2All[] = { 0, 1};
13885 : static const u16 TermCap_Out2All[] = { 1, 2};
13886 :
13887 : static u32 TermCap_get_field_count(GF_Node *node, u8 IndexMode)
13888 : {
13889 : switch(IndexMode) {
13890 : case GF_SG_FIELD_CODING_IN:
13891 : return 2;
13892 : case GF_SG_FIELD_CODING_DEF:
13893 : return 1;
13894 : case GF_SG_FIELD_CODING_OUT:
13895 : return 2;
13896 : case GF_SG_FIELD_CODING_DYN:
13897 : return 0;
13898 : default:
13899 : return 3;
13900 : }
13901 : }
13902 :
13903 : static GF_Err TermCap_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
13904 : {
13905 3 : switch(IndexMode) {
13906 0 : case GF_SG_FIELD_CODING_IN:
13907 0 : *allField = TermCap_In2All[inField];
13908 : return GF_OK;
13909 0 : case GF_SG_FIELD_CODING_DEF:
13910 0 : *allField = TermCap_Def2All[inField];
13911 : return GF_OK;
13912 0 : case GF_SG_FIELD_CODING_OUT:
13913 0 : *allField = TermCap_Out2All[inField];
13914 : return GF_OK;
13915 : default:
13916 : return GF_BAD_PARAM;
13917 : }
13918 : }
13919 : static GF_Err TermCap_get_field(GF_Node *node, GF_FieldInfo *info)
13920 : {
13921 6 : switch (info->fieldIndex) {
13922 2 : case 0:
13923 2 : info->name = "evaluate";
13924 2 : info->eventType = GF_SG_EVENT_IN;
13925 2 : info->on_event_in = ((M_TermCap *)node)->on_evaluate;
13926 2 : info->fieldType = GF_SG_VRML_SFTIME;
13927 2 : info->far_ptr = & ((M_TermCap *) node)->evaluate;
13928 : return GF_OK;
13929 2 : case 1:
13930 2 : info->name = "capability";
13931 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
13932 2 : info->fieldType = GF_SG_VRML_SFINT32;
13933 2 : info->far_ptr = & ((M_TermCap *) node)->capability;
13934 : return GF_OK;
13935 2 : case 2:
13936 2 : info->name = "value";
13937 2 : info->eventType = GF_SG_EVENT_OUT;
13938 2 : info->fieldType = GF_SG_VRML_SFINT32;
13939 2 : info->far_ptr = & ((M_TermCap *) node)->value;
13940 : return GF_OK;
13941 : default:
13942 : return GF_BAD_PARAM;
13943 : }
13944 : }
13945 :
13946 :
13947 3 : static s32 TermCap_get_field_index_by_name(char *name)
13948 : {
13949 3 : if (!strcmp("evaluate", name)) return 0;
13950 2 : if (!strcmp("capability", name)) return 1;
13951 1 : if (!strcmp("value", name)) return 2;
13952 0 : return -1;
13953 : }
13954 : static Bool TermCap_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
13955 : {
13956 3 : switch (FieldIndex) {
13957 1 : case 1:
13958 1 : *AType = 0;
13959 1 : *QType = 13;
13960 1 : *QT13_bits = 7;
13961 1 : *b_min = FLT2FIX(0);
13962 1 : *b_max = FLT2FIX(127);
13963 : return 1;
13964 1 : case 2:
13965 1 : *AType = 0;
13966 1 : *QType = 13;
13967 1 : *QT13_bits = 3;
13968 1 : *b_min = FLT2FIX(0);
13969 1 : *b_max = FLT2FIX(7);
13970 : return 1;
13971 : default:
13972 : return 0;
13973 : }
13974 : }
13975 :
13976 :
13977 :
13978 2 : GF_Node *TermCap_Create()
13979 : {
13980 : M_TermCap *p;
13981 2 : GF_SAFEALLOC(p, M_TermCap);
13982 2 : if(!p) return NULL;
13983 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TermCap);
13984 :
13985 : /*default field values*/
13986 2 : p->capability = 0;
13987 2 : return (GF_Node *)p;
13988 : }
13989 :
13990 :
13991 : /*
13992 : Text Node deletion
13993 : */
13994 :
13995 1103 : static void Text_Del(GF_Node *node)
13996 : {
13997 : M_Text *p = (M_Text *) node;
13998 1103 : gf_sg_mfstring_del(p->string);
13999 1103 : gf_sg_mffloat_del(p->length);
14000 1103 : gf_node_unregister((GF_Node *) p->fontStyle, (GF_Node *) p);
14001 1103 : gf_node_free((GF_Node *) p);
14002 1103 : }
14003 :
14004 : static const u16 Text_Def2All[] = { 0, 1, 2, 3};
14005 : static const u16 Text_In2All[] = { 0, 1, 2, 3};
14006 : static const u16 Text_Out2All[] = { 0, 1, 2, 3};
14007 : static const u16 Text_Dyn2All[] = { 1, 3};
14008 :
14009 : static u32 Text_get_field_count(GF_Node *node, u8 IndexMode)
14010 : {
14011 170 : switch(IndexMode) {
14012 : case GF_SG_FIELD_CODING_IN:
14013 : return 4;
14014 : case GF_SG_FIELD_CODING_DEF:
14015 : return 4;
14016 : case GF_SG_FIELD_CODING_OUT:
14017 : return 4;
14018 1 : case GF_SG_FIELD_CODING_DYN:
14019 : return 2;
14020 : default:
14021 : return 4;
14022 : }
14023 : }
14024 :
14025 : static GF_Err Text_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14026 : {
14027 185 : switch(IndexMode) {
14028 0 : case GF_SG_FIELD_CODING_IN:
14029 0 : *allField = Text_In2All[inField];
14030 : return GF_OK;
14031 181 : case GF_SG_FIELD_CODING_DEF:
14032 181 : *allField = Text_Def2All[inField];
14033 : return GF_OK;
14034 0 : case GF_SG_FIELD_CODING_OUT:
14035 0 : *allField = Text_Out2All[inField];
14036 : return GF_OK;
14037 0 : case GF_SG_FIELD_CODING_DYN:
14038 0 : *allField = Text_Dyn2All[inField];
14039 : return GF_OK;
14040 : default:
14041 : return GF_BAD_PARAM;
14042 : }
14043 : }
14044 4698 : static GF_Err Text_get_field(GF_Node *node, GF_FieldInfo *info)
14045 : {
14046 4698 : switch (info->fieldIndex) {
14047 2244 : case 0:
14048 2244 : info->name = "string";
14049 2244 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14050 2244 : info->fieldType = GF_SG_VRML_MFSTRING;
14051 2244 : info->far_ptr = & ((M_Text *) node)->string;
14052 2244 : return GF_OK;
14053 223 : case 1:
14054 223 : info->name = "length";
14055 223 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14056 223 : info->fieldType = GF_SG_VRML_MFFLOAT;
14057 223 : info->far_ptr = & ((M_Text *) node)->length;
14058 223 : return GF_OK;
14059 1710 : case 2:
14060 1710 : info->name = "fontStyle";
14061 1710 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14062 1710 : info->fieldType = GF_SG_VRML_SFNODE;
14063 1710 : info->NDTtype = NDT_SFFontStyleNode;
14064 1710 : info->far_ptr = & ((M_Text *)node)->fontStyle;
14065 1710 : return GF_OK;
14066 521 : case 3:
14067 521 : info->name = "maxExtent";
14068 521 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14069 521 : info->fieldType = GF_SG_VRML_SFFLOAT;
14070 521 : info->far_ptr = & ((M_Text *) node)->maxExtent;
14071 521 : return GF_OK;
14072 : default:
14073 : return GF_BAD_PARAM;
14074 : }
14075 : }
14076 :
14077 :
14078 3601 : static s32 Text_get_field_index_by_name(char *name)
14079 : {
14080 3601 : if (!strcmp("string", name)) return 0;
14081 1809 : if (!strcmp("length", name)) return 1;
14082 1796 : if (!strcmp("fontStyle", name)) return 2;
14083 311 : if (!strcmp("maxExtent", name)) return 3;
14084 0 : return -1;
14085 : }
14086 : static Bool Text_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14087 : {
14088 4 : switch (FieldIndex) {
14089 1 : case 1:
14090 1 : *AType = 7;
14091 1 : *QType = 11;
14092 1 : *b_min = FLT2FIX(0);
14093 1 : *b_max = FIX_MAX;
14094 : return 1;
14095 1 : case 3:
14096 1 : *AType = 7;
14097 1 : *QType = 11;
14098 1 : *b_min = FLT2FIX(0);
14099 1 : *b_max = FIX_MAX;
14100 : return 1;
14101 : default:
14102 : return 0;
14103 : }
14104 : }
14105 :
14106 :
14107 :
14108 1103 : GF_Node *Text_Create()
14109 : {
14110 : M_Text *p;
14111 1103 : GF_SAFEALLOC(p, M_Text);
14112 1103 : if(!p) return NULL;
14113 1103 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Text);
14114 :
14115 : /*default field values*/
14116 1103 : p->maxExtent = FLT2FIX(0.0);
14117 1103 : return (GF_Node *)p;
14118 : }
14119 :
14120 :
14121 : /*
14122 : TextureCoordinate Node deletion
14123 : */
14124 :
14125 : static void TextureCoordinate_Del(GF_Node *node)
14126 : {
14127 : M_TextureCoordinate *p = (M_TextureCoordinate *) node;
14128 1 : gf_sg_mfvec2f_del(p->point);
14129 1 : gf_node_free((GF_Node *) p);
14130 : }
14131 :
14132 : static const u16 TextureCoordinate_Def2All[] = { 0};
14133 : static const u16 TextureCoordinate_In2All[] = { 0};
14134 : static const u16 TextureCoordinate_Out2All[] = { 0};
14135 : static const u16 TextureCoordinate_Dyn2All[] = { 0};
14136 :
14137 : static u32 TextureCoordinate_get_field_count(GF_Node *node, u8 IndexMode)
14138 : {
14139 : switch(IndexMode) {
14140 : case GF_SG_FIELD_CODING_IN:
14141 : return 1;
14142 : case GF_SG_FIELD_CODING_DEF:
14143 : return 1;
14144 : case GF_SG_FIELD_CODING_OUT:
14145 : return 1;
14146 : case GF_SG_FIELD_CODING_DYN:
14147 : return 1;
14148 : default:
14149 : return 1;
14150 : }
14151 : }
14152 :
14153 : static GF_Err TextureCoordinate_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14154 : {
14155 1 : switch(IndexMode) {
14156 0 : case GF_SG_FIELD_CODING_IN:
14157 0 : *allField = TextureCoordinate_In2All[inField];
14158 : return GF_OK;
14159 0 : case GF_SG_FIELD_CODING_DEF:
14160 0 : *allField = TextureCoordinate_Def2All[inField];
14161 : return GF_OK;
14162 0 : case GF_SG_FIELD_CODING_OUT:
14163 0 : *allField = TextureCoordinate_Out2All[inField];
14164 : return GF_OK;
14165 0 : case GF_SG_FIELD_CODING_DYN:
14166 0 : *allField = TextureCoordinate_Dyn2All[inField];
14167 : return GF_OK;
14168 : default:
14169 : return GF_BAD_PARAM;
14170 : }
14171 : }
14172 : static GF_Err TextureCoordinate_get_field(GF_Node *node, GF_FieldInfo *info)
14173 : {
14174 2 : switch (info->fieldIndex) {
14175 2 : case 0:
14176 2 : info->name = "point";
14177 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14178 2 : info->fieldType = GF_SG_VRML_MFVEC2F;
14179 2 : info->far_ptr = & ((M_TextureCoordinate *) node)->point;
14180 : return GF_OK;
14181 : default:
14182 : return GF_BAD_PARAM;
14183 : }
14184 : }
14185 :
14186 :
14187 : static s32 TextureCoordinate_get_field_index_by_name(char *name)
14188 : {
14189 1 : if (!strcmp("point", name)) return 0;
14190 : return -1;
14191 : }
14192 : static Bool TextureCoordinate_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14193 : {
14194 1 : switch (FieldIndex) {
14195 1 : case 0:
14196 1 : *AType = 2;
14197 1 : *QType = 5;
14198 1 : *b_min = FIX_MIN;
14199 1 : *b_max = FIX_MAX;
14200 : return 1;
14201 : default:
14202 : return 0;
14203 : }
14204 : }
14205 :
14206 :
14207 :
14208 1 : GF_Node *TextureCoordinate_Create()
14209 : {
14210 : M_TextureCoordinate *p;
14211 1 : GF_SAFEALLOC(p, M_TextureCoordinate);
14212 1 : if(!p) return NULL;
14213 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TextureCoordinate);
14214 :
14215 : /*default field values*/
14216 1 : return (GF_Node *)p;
14217 : }
14218 :
14219 :
14220 : /*
14221 : TextureTransform Node deletion
14222 : */
14223 :
14224 : static void TextureTransform_Del(GF_Node *node)
14225 : {
14226 : M_TextureTransform *p = (M_TextureTransform *) node;
14227 85 : gf_node_free((GF_Node *) p);
14228 : }
14229 :
14230 : static const u16 TextureTransform_Def2All[] = { 0, 1, 2, 3};
14231 : static const u16 TextureTransform_In2All[] = { 0, 1, 2, 3};
14232 : static const u16 TextureTransform_Out2All[] = { 0, 1, 2, 3};
14233 : static const u16 TextureTransform_Dyn2All[] = { 0, 1, 2, 3};
14234 :
14235 : static u32 TextureTransform_get_field_count(GF_Node *node, u8 IndexMode)
14236 : {
14237 : switch(IndexMode) {
14238 : case GF_SG_FIELD_CODING_IN:
14239 : return 4;
14240 : case GF_SG_FIELD_CODING_DEF:
14241 : return 4;
14242 : case GF_SG_FIELD_CODING_OUT:
14243 : return 4;
14244 : case GF_SG_FIELD_CODING_DYN:
14245 : return 4;
14246 : default:
14247 : return 4;
14248 : }
14249 : }
14250 :
14251 : static GF_Err TextureTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14252 : {
14253 99 : switch(IndexMode) {
14254 0 : case GF_SG_FIELD_CODING_IN:
14255 0 : *allField = TextureTransform_In2All[inField];
14256 : return GF_OK;
14257 95 : case GF_SG_FIELD_CODING_DEF:
14258 95 : *allField = TextureTransform_Def2All[inField];
14259 : return GF_OK;
14260 0 : case GF_SG_FIELD_CODING_OUT:
14261 0 : *allField = TextureTransform_Out2All[inField];
14262 : return GF_OK;
14263 0 : case GF_SG_FIELD_CODING_DYN:
14264 0 : *allField = TextureTransform_Dyn2All[inField];
14265 : return GF_OK;
14266 : default:
14267 : return GF_BAD_PARAM;
14268 : }
14269 : }
14270 1553 : static GF_Err TextureTransform_get_field(GF_Node *node, GF_FieldInfo *info)
14271 : {
14272 1553 : switch (info->fieldIndex) {
14273 371 : case 0:
14274 371 : info->name = "center";
14275 371 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14276 371 : info->fieldType = GF_SG_VRML_SFVEC2F;
14277 371 : info->far_ptr = & ((M_TextureTransform *) node)->center;
14278 371 : return GF_OK;
14279 433 : case 1:
14280 433 : info->name = "rotation";
14281 433 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14282 433 : info->fieldType = GF_SG_VRML_SFFLOAT;
14283 433 : info->far_ptr = & ((M_TextureTransform *) node)->rotation;
14284 433 : return GF_OK;
14285 380 : case 2:
14286 380 : info->name = "scale";
14287 380 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14288 380 : info->fieldType = GF_SG_VRML_SFVEC2F;
14289 380 : info->far_ptr = & ((M_TextureTransform *) node)->scale;
14290 380 : return GF_OK;
14291 369 : case 3:
14292 369 : info->name = "translation";
14293 369 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14294 369 : info->fieldType = GF_SG_VRML_SFVEC2F;
14295 369 : info->far_ptr = & ((M_TextureTransform *) node)->translation;
14296 369 : return GF_OK;
14297 : default:
14298 : return GF_BAD_PARAM;
14299 : }
14300 : }
14301 :
14302 :
14303 45 : static s32 TextureTransform_get_field_index_by_name(char *name)
14304 : {
14305 45 : if (!strcmp("center", name)) return 0;
14306 40 : if (!strcmp("rotation", name)) return 1;
14307 18 : if (!strcmp("scale", name)) return 2;
14308 4 : if (!strcmp("translation", name)) return 3;
14309 0 : return -1;
14310 : }
14311 : static Bool TextureTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14312 : {
14313 12 : switch (FieldIndex) {
14314 1 : case 0:
14315 1 : *AType = 2;
14316 1 : *QType = 2;
14317 1 : *b_min = FIX_MIN;
14318 1 : *b_max = FIX_MAX;
14319 : return 1;
14320 9 : case 1:
14321 9 : *AType = 6;
14322 9 : *QType = 6;
14323 9 : *b_min = FLT2FIX(0);
14324 9 : *b_max = FLT2FIX(6.2831853);
14325 : return 1;
14326 1 : case 2:
14327 1 : *AType = 12;
14328 1 : *QType = 7;
14329 1 : *b_min = FIX_MIN;
14330 1 : *b_max = FIX_MAX;
14331 : return 1;
14332 1 : case 3:
14333 1 : *AType = 2;
14334 1 : *QType = 2;
14335 1 : *b_min = FIX_MIN;
14336 1 : *b_max = FIX_MAX;
14337 : return 1;
14338 : default:
14339 : return 0;
14340 : }
14341 : }
14342 :
14343 :
14344 :
14345 85 : GF_Node *TextureTransform_Create()
14346 : {
14347 : M_TextureTransform *p;
14348 85 : GF_SAFEALLOC(p, M_TextureTransform);
14349 85 : if(!p) return NULL;
14350 85 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TextureTransform);
14351 :
14352 : /*default field values*/
14353 85 : p->center.x = FLT2FIX(0);
14354 85 : p->center.y = FLT2FIX(0);
14355 85 : p->rotation = FLT2FIX(0);
14356 85 : p->scale.x = FLT2FIX(1);
14357 85 : p->scale.y = FLT2FIX(1);
14358 85 : p->translation.x = FLT2FIX(0);
14359 85 : p->translation.y = FLT2FIX(0);
14360 85 : return (GF_Node *)p;
14361 : }
14362 :
14363 :
14364 : /*
14365 : TimeSensor Node deletion
14366 : */
14367 :
14368 : static void TimeSensor_Del(GF_Node *node)
14369 : {
14370 : M_TimeSensor *p = (M_TimeSensor *) node;
14371 583 : gf_node_free((GF_Node *) p);
14372 : }
14373 :
14374 : static const u16 TimeSensor_Def2All[] = { 0, 1, 2, 3, 4};
14375 : static const u16 TimeSensor_In2All[] = { 0, 1, 2, 3, 4};
14376 : static const u16 TimeSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
14377 :
14378 : static u32 TimeSensor_get_field_count(GF_Node *node, u8 IndexMode)
14379 : {
14380 : switch(IndexMode) {
14381 : case GF_SG_FIELD_CODING_IN:
14382 : return 5;
14383 : case GF_SG_FIELD_CODING_DEF:
14384 : return 5;
14385 : case GF_SG_FIELD_CODING_OUT:
14386 : return 9;
14387 : case GF_SG_FIELD_CODING_DYN:
14388 : return 0;
14389 : default:
14390 : return 9;
14391 : }
14392 : }
14393 :
14394 : static GF_Err TimeSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14395 : {
14396 82 : switch(IndexMode) {
14397 0 : case GF_SG_FIELD_CODING_IN:
14398 0 : *allField = TimeSensor_In2All[inField];
14399 : return GF_OK;
14400 65 : case GF_SG_FIELD_CODING_DEF:
14401 65 : *allField = TimeSensor_Def2All[inField];
14402 : return GF_OK;
14403 8 : case GF_SG_FIELD_CODING_OUT:
14404 8 : *allField = TimeSensor_Out2All[inField];
14405 : return GF_OK;
14406 : default:
14407 : return GF_BAD_PARAM;
14408 : }
14409 : }
14410 8238 : static GF_Err TimeSensor_get_field(GF_Node *node, GF_FieldInfo *info)
14411 : {
14412 8238 : switch (info->fieldIndex) {
14413 981 : case 0:
14414 981 : info->name = "cycleInterval";
14415 981 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14416 981 : info->fieldType = GF_SG_VRML_SFTIME;
14417 981 : info->far_ptr = & ((M_TimeSensor *) node)->cycleInterval;
14418 981 : return GF_OK;
14419 829 : case 1:
14420 829 : info->name = "enabled";
14421 829 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14422 829 : info->fieldType = GF_SG_VRML_SFBOOL;
14423 829 : info->far_ptr = & ((M_TimeSensor *) node)->enabled;
14424 829 : return GF_OK;
14425 950 : case 2:
14426 950 : info->name = "loop";
14427 950 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14428 950 : info->fieldType = GF_SG_VRML_SFBOOL;
14429 950 : info->far_ptr = & ((M_TimeSensor *) node)->loop;
14430 950 : return GF_OK;
14431 997 : case 3:
14432 997 : info->name = "startTime";
14433 997 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14434 997 : info->fieldType = GF_SG_VRML_SFTIME;
14435 997 : info->far_ptr = & ((M_TimeSensor *) node)->startTime;
14436 997 : return GF_OK;
14437 825 : case 4:
14438 825 : info->name = "stopTime";
14439 825 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14440 825 : info->fieldType = GF_SG_VRML_SFTIME;
14441 825 : info->far_ptr = & ((M_TimeSensor *) node)->stopTime;
14442 825 : return GF_OK;
14443 823 : case 5:
14444 823 : info->name = "cycleTime";
14445 823 : info->eventType = GF_SG_EVENT_OUT;
14446 823 : info->fieldType = GF_SG_VRML_SFTIME;
14447 823 : info->far_ptr = & ((M_TimeSensor *) node)->cycleTime;
14448 823 : return GF_OK;
14449 1144 : case 6:
14450 1144 : info->name = "fraction_changed";
14451 1144 : info->eventType = GF_SG_EVENT_OUT;
14452 1144 : info->fieldType = GF_SG_VRML_SFFLOAT;
14453 1144 : info->far_ptr = & ((M_TimeSensor *) node)->fraction_changed;
14454 1144 : return GF_OK;
14455 924 : case 7:
14456 924 : info->name = "isActive";
14457 924 : info->eventType = GF_SG_EVENT_OUT;
14458 924 : info->fieldType = GF_SG_VRML_SFBOOL;
14459 924 : info->far_ptr = & ((M_TimeSensor *) node)->isActive;
14460 924 : return GF_OK;
14461 765 : case 8:
14462 765 : info->name = "time";
14463 765 : info->eventType = GF_SG_EVENT_OUT;
14464 765 : info->fieldType = GF_SG_VRML_SFTIME;
14465 765 : info->far_ptr = & ((M_TimeSensor *) node)->time;
14466 765 : return GF_OK;
14467 : default:
14468 : return GF_BAD_PARAM;
14469 : }
14470 : }
14471 :
14472 :
14473 1080 : static s32 TimeSensor_get_field_index_by_name(char *name)
14474 : {
14475 1080 : if (!strcmp("cycleInterval", name)) return 0;
14476 923 : if (!strcmp("enabled", name)) return 1;
14477 899 : if (!strcmp("loop", name)) return 2;
14478 766 : if (!strcmp("startTime", name)) return 3;
14479 654 : if (!strcmp("stopTime", name)) return 4;
14480 630 : if (!strcmp("cycleTime", name)) return 5;
14481 599 : if (!strcmp("fraction_changed", name)) return 6;
14482 430 : if (!strcmp("isActive", name)) return 7;
14483 325 : if (!strcmp("time", name)) return 8;
14484 323 : return -1;
14485 : }
14486 : static Bool TimeSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14487 : {
14488 : switch (FieldIndex) {
14489 : default:
14490 : return 0;
14491 : }
14492 : }
14493 :
14494 :
14495 :
14496 583 : GF_Node *TimeSensor_Create()
14497 : {
14498 : M_TimeSensor *p;
14499 583 : GF_SAFEALLOC(p, M_TimeSensor);
14500 583 : if(!p) return NULL;
14501 583 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TimeSensor);
14502 :
14503 : /*default field values*/
14504 583 : p->cycleInterval = 1;
14505 583 : p->enabled = 1;
14506 583 : p->startTime = 0;
14507 583 : p->stopTime = 0;
14508 583 : return (GF_Node *)p;
14509 : }
14510 :
14511 :
14512 : /*
14513 : TouchSensor Node deletion
14514 : */
14515 :
14516 : static void TouchSensor_Del(GF_Node *node)
14517 : {
14518 : M_TouchSensor *p = (M_TouchSensor *) node;
14519 1513 : gf_node_free((GF_Node *) p);
14520 : }
14521 :
14522 : static const u16 TouchSensor_Def2All[] = { 0};
14523 : static const u16 TouchSensor_In2All[] = { 0};
14524 : static const u16 TouchSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
14525 :
14526 : static u32 TouchSensor_get_field_count(GF_Node *node, u8 IndexMode)
14527 : {
14528 : switch(IndexMode) {
14529 : case GF_SG_FIELD_CODING_IN:
14530 : return 1;
14531 : case GF_SG_FIELD_CODING_DEF:
14532 : return 1;
14533 : case GF_SG_FIELD_CODING_OUT:
14534 : return 7;
14535 : case GF_SG_FIELD_CODING_DYN:
14536 : return 0;
14537 : default:
14538 : return 7;
14539 : }
14540 : }
14541 :
14542 : static GF_Err TouchSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14543 : {
14544 771 : switch(IndexMode) {
14545 0 : case GF_SG_FIELD_CODING_IN:
14546 0 : *allField = TouchSensor_In2All[inField];
14547 : return GF_OK;
14548 41 : case GF_SG_FIELD_CODING_DEF:
14549 41 : *allField = TouchSensor_Def2All[inField];
14550 : return GF_OK;
14551 723 : case GF_SG_FIELD_CODING_OUT:
14552 723 : *allField = TouchSensor_Out2All[inField];
14553 : return GF_OK;
14554 : default:
14555 : return GF_BAD_PARAM;
14556 : }
14557 : }
14558 12483 : static GF_Err TouchSensor_get_field(GF_Node *node, GF_FieldInfo *info)
14559 : {
14560 12483 : switch (info->fieldIndex) {
14561 1668 : case 0:
14562 1668 : info->name = "enabled";
14563 1668 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14564 1668 : info->fieldType = GF_SG_VRML_SFBOOL;
14565 1668 : info->far_ptr = & ((M_TouchSensor *) node)->enabled;
14566 1668 : return GF_OK;
14567 1556 : case 1:
14568 1556 : info->name = "hitNormal_changed";
14569 1556 : info->eventType = GF_SG_EVENT_OUT;
14570 1556 : info->fieldType = GF_SG_VRML_SFVEC3F;
14571 1556 : info->far_ptr = & ((M_TouchSensor *) node)->hitNormal_changed;
14572 1556 : return GF_OK;
14573 1573 : case 2:
14574 1573 : info->name = "hitPoint_changed";
14575 1573 : info->eventType = GF_SG_EVENT_OUT;
14576 1573 : info->fieldType = GF_SG_VRML_SFVEC3F;
14577 1573 : info->far_ptr = & ((M_TouchSensor *) node)->hitPoint_changed;
14578 1573 : return GF_OK;
14579 1765 : case 3:
14580 1765 : info->name = "hitTexCoord_changed";
14581 1765 : info->eventType = GF_SG_EVENT_OUT;
14582 1765 : info->fieldType = GF_SG_VRML_SFVEC2F;
14583 1765 : info->far_ptr = & ((M_TouchSensor *) node)->hitTexCoord_changed;
14584 1765 : return GF_OK;
14585 2203 : case 4:
14586 2203 : info->name = "isActive";
14587 2203 : info->eventType = GF_SG_EVENT_OUT;
14588 2203 : info->fieldType = GF_SG_VRML_SFBOOL;
14589 2203 : info->far_ptr = & ((M_TouchSensor *) node)->isActive;
14590 2203 : return GF_OK;
14591 2152 : case 5:
14592 2152 : info->name = "isOver";
14593 2152 : info->eventType = GF_SG_EVENT_OUT;
14594 2152 : info->fieldType = GF_SG_VRML_SFBOOL;
14595 2152 : info->far_ptr = & ((M_TouchSensor *) node)->isOver;
14596 2152 : return GF_OK;
14597 1566 : case 6:
14598 1566 : info->name = "touchTime";
14599 1566 : info->eventType = GF_SG_EVENT_OUT;
14600 1566 : info->fieldType = GF_SG_VRML_SFTIME;
14601 1566 : info->far_ptr = & ((M_TouchSensor *) node)->touchTime;
14602 1566 : return GF_OK;
14603 : default:
14604 : return GF_BAD_PARAM;
14605 : }
14606 : }
14607 :
14608 :
14609 828 : static s32 TouchSensor_get_field_index_by_name(char *name)
14610 : {
14611 828 : if (!strcmp("enabled", name)) return 0;
14612 827 : if (!strcmp("hitNormal_changed", name)) return 1;
14613 826 : if (!strcmp("hitPoint_changed", name)) return 2;
14614 815 : if (!strcmp("hitTexCoord_changed", name)) return 3;
14615 814 : if (!strcmp("isActive", name)) return 4;
14616 360 : if (!strcmp("isOver", name)) return 5;
14617 7 : if (!strcmp("touchTime", name)) return 6;
14618 0 : return -1;
14619 : }
14620 : static Bool TouchSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14621 : {
14622 : switch (FieldIndex) {
14623 : default:
14624 : return 0;
14625 : }
14626 : }
14627 :
14628 :
14629 :
14630 1513 : GF_Node *TouchSensor_Create()
14631 : {
14632 : M_TouchSensor *p;
14633 1513 : GF_SAFEALLOC(p, M_TouchSensor);
14634 1513 : if(!p) return NULL;
14635 1513 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TouchSensor);
14636 :
14637 : /*default field values*/
14638 1513 : p->enabled = 1;
14639 1513 : return (GF_Node *)p;
14640 : }
14641 :
14642 :
14643 : /*
14644 : Transform Node deletion
14645 : */
14646 :
14647 : static void Transform_Del(GF_Node *node)
14648 : {
14649 : M_Transform *p = (M_Transform *) node;
14650 333 : gf_sg_vrml_parent_destroy((GF_Node *) p);
14651 333 : gf_node_free((GF_Node *) p);
14652 : }
14653 :
14654 : static const u16 Transform_Def2All[] = { 2, 3, 4, 5, 6, 7};
14655 : static const u16 Transform_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
14656 : static const u16 Transform_Out2All[] = { 2, 3, 4, 5, 6, 7};
14657 : static const u16 Transform_Dyn2All[] = { 2, 4, 5, 6, 7};
14658 :
14659 : static u32 Transform_get_field_count(GF_Node *node, u8 IndexMode)
14660 : {
14661 : switch(IndexMode) {
14662 : case GF_SG_FIELD_CODING_IN:
14663 : return 8;
14664 : case GF_SG_FIELD_CODING_DEF:
14665 : return 6;
14666 : case GF_SG_FIELD_CODING_OUT:
14667 : return 6;
14668 : case GF_SG_FIELD_CODING_DYN:
14669 : return 5;
14670 : default:
14671 : return 8;
14672 : }
14673 : }
14674 :
14675 : static GF_Err Transform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14676 : {
14677 443 : switch(IndexMode) {
14678 0 : case GF_SG_FIELD_CODING_IN:
14679 0 : *allField = Transform_In2All[inField];
14680 : return GF_OK;
14681 435 : case GF_SG_FIELD_CODING_DEF:
14682 435 : *allField = Transform_Def2All[inField];
14683 : return GF_OK;
14684 0 : case GF_SG_FIELD_CODING_OUT:
14685 0 : *allField = Transform_Out2All[inField];
14686 : return GF_OK;
14687 0 : case GF_SG_FIELD_CODING_DYN:
14688 0 : *allField = Transform_Dyn2All[inField];
14689 : return GF_OK;
14690 : default:
14691 : return GF_BAD_PARAM;
14692 : }
14693 : }
14694 1897 : static GF_Err Transform_get_field(GF_Node *node, GF_FieldInfo *info)
14695 : {
14696 1897 : switch (info->fieldIndex) {
14697 48 : case 0:
14698 48 : info->name = "addChildren";
14699 48 : info->eventType = GF_SG_EVENT_IN;
14700 48 : info->on_event_in = ((M_Transform *)node)->on_addChildren;
14701 48 : info->fieldType = GF_SG_VRML_MFNODE;
14702 48 : info->NDTtype = NDT_SF3DNode;
14703 48 : info->far_ptr = & ((M_Transform *)node)->addChildren;
14704 48 : return GF_OK;
14705 48 : case 1:
14706 48 : info->name = "removeChildren";
14707 48 : info->eventType = GF_SG_EVENT_IN;
14708 48 : info->on_event_in = ((M_Transform *)node)->on_removeChildren;
14709 48 : info->fieldType = GF_SG_VRML_MFNODE;
14710 48 : info->NDTtype = NDT_SF3DNode;
14711 48 : info->far_ptr = & ((M_Transform *)node)->removeChildren;
14712 48 : return GF_OK;
14713 214 : case 2:
14714 214 : info->name = "center";
14715 214 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14716 214 : info->fieldType = GF_SG_VRML_SFVEC3F;
14717 214 : info->far_ptr = & ((M_Transform *) node)->center;
14718 214 : return GF_OK;
14719 363 : case 3:
14720 363 : info->name = "children";
14721 363 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14722 363 : info->fieldType = GF_SG_VRML_MFNODE;
14723 363 : info->NDTtype = NDT_SF3DNode;
14724 363 : info->far_ptr = & ((M_Transform *)node)->children;
14725 363 : return GF_OK;
14726 340 : case 4:
14727 340 : info->name = "rotation";
14728 340 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14729 340 : info->fieldType = GF_SG_VRML_SFROTATION;
14730 340 : info->far_ptr = & ((M_Transform *) node)->rotation;
14731 340 : return GF_OK;
14732 225 : case 5:
14733 225 : info->name = "scale";
14734 225 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14735 225 : info->fieldType = GF_SG_VRML_SFVEC3F;
14736 225 : info->far_ptr = & ((M_Transform *) node)->scale;
14737 225 : return GF_OK;
14738 274 : case 6:
14739 274 : info->name = "scaleOrientation";
14740 274 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14741 274 : info->fieldType = GF_SG_VRML_SFROTATION;
14742 274 : info->far_ptr = & ((M_Transform *) node)->scaleOrientation;
14743 274 : return GF_OK;
14744 385 : case 7:
14745 385 : info->name = "translation";
14746 385 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14747 385 : info->fieldType = GF_SG_VRML_SFVEC3F;
14748 385 : info->far_ptr = & ((M_Transform *) node)->translation;
14749 385 : return GF_OK;
14750 : default:
14751 : return GF_BAD_PARAM;
14752 : }
14753 : }
14754 :
14755 :
14756 383 : static s32 Transform_get_field_index_by_name(char *name)
14757 : {
14758 383 : if (!strcmp("addChildren", name)) return 0;
14759 382 : if (!strcmp("removeChildren", name)) return 1;
14760 381 : if (!strcmp("center", name)) return 2;
14761 380 : if (!strcmp("children", name)) return 3;
14762 213 : if (!strcmp("rotation", name)) return 4;
14763 150 : if (!strcmp("scale", name)) return 5;
14764 141 : if (!strcmp("scaleOrientation", name)) return 6;
14765 124 : if (!strcmp("translation", name)) return 7;
14766 0 : return -1;
14767 : }
14768 : static Bool Transform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14769 : {
14770 86 : switch (FieldIndex) {
14771 1 : case 2:
14772 1 : *AType = 1;
14773 1 : *QType = 1;
14774 1 : *b_min = FIX_MIN;
14775 1 : *b_max = FIX_MAX;
14776 : return 1;
14777 36 : case 4:
14778 36 : *AType = 10;
14779 36 : *QType = 10;
14780 : return 1;
14781 1 : case 5:
14782 1 : *AType = 11;
14783 1 : *QType = 7;
14784 1 : *b_min = FLT2FIX(0);
14785 1 : *b_max = FIX_MAX;
14786 : return 1;
14787 9 : case 6:
14788 9 : *AType = 10;
14789 9 : *QType = 10;
14790 : return 1;
14791 36 : case 7:
14792 36 : *AType = 1;
14793 36 : *QType = 1;
14794 36 : *b_min = FIX_MIN;
14795 36 : *b_max = FIX_MAX;
14796 : return 1;
14797 : default:
14798 : return 0;
14799 : }
14800 : }
14801 :
14802 :
14803 :
14804 333 : GF_Node *Transform_Create()
14805 : {
14806 : M_Transform *p;
14807 333 : GF_SAFEALLOC(p, M_Transform);
14808 333 : if(!p) return NULL;
14809 333 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Transform);
14810 333 : gf_sg_vrml_parent_setup((GF_Node *) p);
14811 :
14812 : /*default field values*/
14813 333 : p->center.x = FLT2FIX(0);
14814 333 : p->center.y = FLT2FIX(0);
14815 333 : p->center.z = FLT2FIX(0);
14816 333 : p->rotation.x = FLT2FIX(0);
14817 333 : p->rotation.y = FLT2FIX(0);
14818 333 : p->rotation.z = FLT2FIX(1);
14819 333 : p->rotation.q = FLT2FIX(0);
14820 333 : p->scale.x = FLT2FIX(1);
14821 333 : p->scale.y = FLT2FIX(1);
14822 333 : p->scale.z = FLT2FIX(1);
14823 333 : p->scaleOrientation.x = FLT2FIX(0);
14824 333 : p->scaleOrientation.y = FLT2FIX(0);
14825 333 : p->scaleOrientation.z = FLT2FIX(1);
14826 333 : p->scaleOrientation.q = FLT2FIX(0);
14827 333 : p->translation.x = FLT2FIX(0);
14828 333 : p->translation.y = FLT2FIX(0);
14829 333 : p->translation.z = FLT2FIX(0);
14830 333 : return (GF_Node *)p;
14831 : }
14832 :
14833 :
14834 : /*
14835 : Transform2D Node deletion
14836 : */
14837 :
14838 : static void Transform2D_Del(GF_Node *node)
14839 : {
14840 : M_Transform2D *p = (M_Transform2D *) node;
14841 7625 : gf_sg_vrml_parent_destroy((GF_Node *) p);
14842 7625 : gf_node_free((GF_Node *) p);
14843 : }
14844 :
14845 : static const u16 Transform2D_Def2All[] = { 2, 3, 4, 5, 6, 7};
14846 : static const u16 Transform2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
14847 : static const u16 Transform2D_Out2All[] = { 2, 3, 4, 5, 6, 7};
14848 : static const u16 Transform2D_Dyn2All[] = { 3, 4, 5, 6, 7};
14849 :
14850 : static u32 Transform2D_get_field_count(GF_Node *node, u8 IndexMode)
14851 : {
14852 : switch(IndexMode) {
14853 : case GF_SG_FIELD_CODING_IN:
14854 : return 8;
14855 : case GF_SG_FIELD_CODING_DEF:
14856 : return 6;
14857 : case GF_SG_FIELD_CODING_OUT:
14858 : return 6;
14859 : case GF_SG_FIELD_CODING_DYN:
14860 : return 5;
14861 : default:
14862 : return 8;
14863 : }
14864 : }
14865 :
14866 : static GF_Err Transform2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
14867 : {
14868 19738 : switch(IndexMode) {
14869 11952 : case GF_SG_FIELD_CODING_IN:
14870 11952 : *allField = Transform2D_In2All[inField];
14871 : return GF_OK;
14872 7708 : case GF_SG_FIELD_CODING_DEF:
14873 7708 : *allField = Transform2D_Def2All[inField];
14874 : return GF_OK;
14875 70 : case GF_SG_FIELD_CODING_OUT:
14876 70 : *allField = Transform2D_Out2All[inField];
14877 : return GF_OK;
14878 0 : case GF_SG_FIELD_CODING_DYN:
14879 0 : *allField = Transform2D_Dyn2All[inField];
14880 : return GF_OK;
14881 : default:
14882 : return GF_BAD_PARAM;
14883 : }
14884 : }
14885 69411 : static GF_Err Transform2D_get_field(GF_Node *node, GF_FieldInfo *info)
14886 : {
14887 69411 : switch (info->fieldIndex) {
14888 3002 : case 0:
14889 3002 : info->name = "addChildren";
14890 3002 : info->eventType = GF_SG_EVENT_IN;
14891 3002 : info->on_event_in = ((M_Transform2D *)node)->on_addChildren;
14892 3002 : info->fieldType = GF_SG_VRML_MFNODE;
14893 3002 : info->NDTtype = NDT_SF2DNode;
14894 3002 : info->far_ptr = & ((M_Transform2D *)node)->addChildren;
14895 3002 : return GF_OK;
14896 2976 : case 1:
14897 2976 : info->name = "removeChildren";
14898 2976 : info->eventType = GF_SG_EVENT_IN;
14899 2976 : info->on_event_in = ((M_Transform2D *)node)->on_removeChildren;
14900 2976 : info->fieldType = GF_SG_VRML_MFNODE;
14901 2976 : info->NDTtype = NDT_SF2DNode;
14902 2976 : info->far_ptr = & ((M_Transform2D *)node)->removeChildren;
14903 2976 : return GF_OK;
14904 25467 : case 2:
14905 25467 : info->name = "children";
14906 25467 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14907 25467 : info->fieldType = GF_SG_VRML_MFNODE;
14908 25467 : info->NDTtype = NDT_SF2DNode;
14909 25467 : info->far_ptr = & ((M_Transform2D *)node)->children;
14910 25467 : return GF_OK;
14911 5545 : case 3:
14912 5545 : info->name = "center";
14913 5545 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14914 5545 : info->fieldType = GF_SG_VRML_SFVEC2F;
14915 5545 : info->far_ptr = & ((M_Transform2D *) node)->center;
14916 5545 : return GF_OK;
14917 5834 : case 4:
14918 5834 : info->name = "rotationAngle";
14919 5834 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14920 5834 : info->fieldType = GF_SG_VRML_SFFLOAT;
14921 5834 : info->far_ptr = & ((M_Transform2D *) node)->rotationAngle;
14922 5834 : return GF_OK;
14923 7770 : case 5:
14924 7770 : info->name = "scale";
14925 7770 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14926 7770 : info->fieldType = GF_SG_VRML_SFVEC2F;
14927 7770 : info->far_ptr = & ((M_Transform2D *) node)->scale;
14928 7770 : return GF_OK;
14929 5548 : case 6:
14930 5548 : info->name = "scaleOrientation";
14931 5548 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14932 5548 : info->fieldType = GF_SG_VRML_SFFLOAT;
14933 5548 : info->far_ptr = & ((M_Transform2D *) node)->scaleOrientation;
14934 5548 : return GF_OK;
14935 13269 : case 7:
14936 13269 : info->name = "translation";
14937 13269 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
14938 13269 : info->fieldType = GF_SG_VRML_SFVEC2F;
14939 13269 : info->far_ptr = & ((M_Transform2D *) node)->translation;
14940 13269 : return GF_OK;
14941 : default:
14942 : return GF_BAD_PARAM;
14943 : }
14944 : }
14945 :
14946 :
14947 31783 : static s32 Transform2D_get_field_index_by_name(char *name)
14948 : {
14949 31783 : if (!strcmp("addChildren", name)) return 0;
14950 31767 : if (!strcmp("removeChildren", name)) return 1;
14951 31764 : if (!strcmp("children", name)) return 2;
14952 17528 : if (!strcmp("center", name)) return 3;
14953 17527 : if (!strcmp("rotationAngle", name)) return 4;
14954 17315 : if (!strcmp("scale", name)) return 5;
14955 15821 : if (!strcmp("scaleOrientation", name)) return 6;
14956 15817 : if (!strcmp("translation", name)) return 7;
14957 11173 : return -1;
14958 : }
14959 133 : static Bool Transform2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
14960 : {
14961 133 : switch (FieldIndex) {
14962 1 : case 3:
14963 1 : *AType = 2;
14964 1 : *QType = 2;
14965 1 : *b_min = FIX_MIN;
14966 1 : *b_max = FIX_MAX;
14967 : return 1;
14968 1 : case 4:
14969 1 : *AType = 6;
14970 1 : *QType = 6;
14971 1 : *b_min = FLT2FIX(0);
14972 1 : *b_max = FLT2FIX(6.2831853);
14973 : return 1;
14974 88 : case 5:
14975 88 : *AType = 12;
14976 88 : *QType = 7;
14977 88 : *b_min = FIX_MIN;
14978 88 : *b_max = FIX_MAX;
14979 : return 1;
14980 1 : case 6:
14981 1 : *AType = 6;
14982 1 : *QType = 6;
14983 1 : *b_min = FLT2FIX(0);
14984 1 : *b_max = FLT2FIX(6.2831853);
14985 : return 1;
14986 39 : case 7:
14987 39 : *AType = 2;
14988 39 : *QType = 2;
14989 39 : *b_min = FIX_MIN;
14990 39 : *b_max = FIX_MAX;
14991 : return 1;
14992 : default:
14993 : return 0;
14994 : }
14995 : }
14996 :
14997 :
14998 :
14999 7625 : GF_Node *Transform2D_Create()
15000 : {
15001 : M_Transform2D *p;
15002 7625 : GF_SAFEALLOC(p, M_Transform2D);
15003 7625 : if(!p) return NULL;
15004 7625 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Transform2D);
15005 7625 : gf_sg_vrml_parent_setup((GF_Node *) p);
15006 :
15007 : /*default field values*/
15008 7625 : p->center.x = FLT2FIX(0);
15009 7625 : p->center.y = FLT2FIX(0);
15010 7625 : p->rotationAngle = FLT2FIX(0);
15011 7625 : p->scale.x = FLT2FIX(1);
15012 7625 : p->scale.y = FLT2FIX(1);
15013 7625 : p->scaleOrientation = FLT2FIX(0);
15014 7625 : p->translation.x = FLT2FIX(0);
15015 7625 : p->translation.y = FLT2FIX(0);
15016 7625 : return (GF_Node *)p;
15017 : }
15018 :
15019 :
15020 : /*
15021 : Valuator Node deletion
15022 : */
15023 :
15024 2035 : static void Valuator_Del(GF_Node *node)
15025 : {
15026 : M_Valuator *p = (M_Valuator *) node;
15027 2035 : gf_sg_mfcolor_del(p->inMFColor);
15028 2035 : gf_sg_mffloat_del(p->inMFFloat);
15029 2035 : gf_sg_mfint32_del(p->inMFInt32);
15030 2035 : gf_sg_mfrotation_del(p->inMFRotation);
15031 2035 : gf_sg_sfstring_del(p->inSFString);
15032 2035 : gf_sg_mfstring_del(p->inMFString);
15033 2035 : gf_sg_mfvec2f_del(p->inMFVec2f);
15034 2035 : gf_sg_mfvec3f_del(p->inMFVec3f);
15035 2035 : gf_sg_mfcolor_del(p->outMFColor);
15036 2035 : gf_sg_mffloat_del(p->outMFFloat);
15037 2035 : gf_sg_mfint32_del(p->outMFInt32);
15038 2035 : gf_sg_mfrotation_del(p->outMFRotation);
15039 2035 : gf_sg_sfstring_del(p->outSFString);
15040 2035 : gf_sg_mfstring_del(p->outMFString);
15041 2035 : gf_sg_mfvec2f_del(p->outMFVec2f);
15042 2035 : gf_sg_mfvec3f_del(p->outMFVec3f);
15043 2035 : gf_node_free((GF_Node *) p);
15044 2035 : }
15045 :
15046 : static const u16 Valuator_Def2All[] = { 32, 33, 34, 35, 36, 37, 38, 39, 40};
15047 : static const u16 Valuator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 32, 33, 34, 35, 36, 37, 38, 39, 40};
15048 : static const u16 Valuator_Out2All[] = { 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40};
15049 :
15050 : static u32 Valuator_get_field_count(GF_Node *node, u8 IndexMode)
15051 : {
15052 : switch(IndexMode) {
15053 : case GF_SG_FIELD_CODING_IN:
15054 : return 25;
15055 : case GF_SG_FIELD_CODING_DEF:
15056 : return 9;
15057 : case GF_SG_FIELD_CODING_OUT:
15058 : return 25;
15059 : case GF_SG_FIELD_CODING_DYN:
15060 : return 0;
15061 : default:
15062 : return 41;
15063 : }
15064 : }
15065 :
15066 : static GF_Err Valuator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
15067 : {
15068 2155 : switch(IndexMode) {
15069 650 : case GF_SG_FIELD_CODING_IN:
15070 650 : *allField = Valuator_In2All[inField];
15071 : return GF_OK;
15072 1457 : case GF_SG_FIELD_CODING_DEF:
15073 1457 : *allField = Valuator_Def2All[inField];
15074 : return GF_OK;
15075 7 : case GF_SG_FIELD_CODING_OUT:
15076 7 : *allField = Valuator_Out2All[inField];
15077 : return GF_OK;
15078 : default:
15079 : return GF_BAD_PARAM;
15080 : }
15081 : }
15082 111132 : static GF_Err Valuator_get_field(GF_Node *node, GF_FieldInfo *info)
15083 : {
15084 111132 : switch (info->fieldIndex) {
15085 2713 : case 0:
15086 2713 : info->name = "inSFBool";
15087 2713 : info->eventType = GF_SG_EVENT_IN;
15088 2713 : info->on_event_in = ((M_Valuator *)node)->on_inSFBool;
15089 2713 : info->fieldType = GF_SG_VRML_SFBOOL;
15090 2713 : info->far_ptr = & ((M_Valuator *) node)->inSFBool;
15091 2713 : return GF_OK;
15092 2534 : case 1:
15093 2534 : info->name = "inSFColor";
15094 2534 : info->eventType = GF_SG_EVENT_IN;
15095 2534 : info->on_event_in = ((M_Valuator *)node)->on_inSFColor;
15096 2534 : info->fieldType = GF_SG_VRML_SFCOLOR;
15097 2534 : info->far_ptr = & ((M_Valuator *) node)->inSFColor;
15098 2534 : return GF_OK;
15099 2493 : case 2:
15100 2493 : info->name = "inMFColor";
15101 2493 : info->eventType = GF_SG_EVENT_IN;
15102 2493 : info->on_event_in = ((M_Valuator *)node)->on_inMFColor;
15103 2493 : info->fieldType = GF_SG_VRML_MFCOLOR;
15104 2493 : info->far_ptr = & ((M_Valuator *) node)->inMFColor;
15105 2493 : return GF_OK;
15106 2503 : case 3:
15107 2503 : info->name = "inSFFloat";
15108 2503 : info->eventType = GF_SG_EVENT_IN;
15109 2503 : info->on_event_in = ((M_Valuator *)node)->on_inSFFloat;
15110 2503 : info->fieldType = GF_SG_VRML_SFFLOAT;
15111 2503 : info->far_ptr = & ((M_Valuator *) node)->inSFFloat;
15112 2503 : return GF_OK;
15113 2493 : case 4:
15114 2493 : info->name = "inMFFloat";
15115 2493 : info->eventType = GF_SG_EVENT_IN;
15116 2493 : info->on_event_in = ((M_Valuator *)node)->on_inMFFloat;
15117 2493 : info->fieldType = GF_SG_VRML_MFFLOAT;
15118 2493 : info->far_ptr = & ((M_Valuator *) node)->inMFFloat;
15119 2493 : return GF_OK;
15120 3931 : case 5:
15121 3931 : info->name = "inSFInt32";
15122 3931 : info->eventType = GF_SG_EVENT_IN;
15123 3931 : info->on_event_in = ((M_Valuator *)node)->on_inSFInt32;
15124 3931 : info->fieldType = GF_SG_VRML_SFINT32;
15125 3931 : info->far_ptr = & ((M_Valuator *) node)->inSFInt32;
15126 3931 : return GF_OK;
15127 2493 : case 6:
15128 2493 : info->name = "inMFInt32";
15129 2493 : info->eventType = GF_SG_EVENT_IN;
15130 2493 : info->on_event_in = ((M_Valuator *)node)->on_inMFInt32;
15131 2493 : info->fieldType = GF_SG_VRML_MFINT32;
15132 2493 : info->far_ptr = & ((M_Valuator *) node)->inMFInt32;
15133 2493 : return GF_OK;
15134 2493 : case 7:
15135 2493 : info->name = "inSFRotation";
15136 2493 : info->eventType = GF_SG_EVENT_IN;
15137 2493 : info->on_event_in = ((M_Valuator *)node)->on_inSFRotation;
15138 2493 : info->fieldType = GF_SG_VRML_SFROTATION;
15139 2493 : info->far_ptr = & ((M_Valuator *) node)->inSFRotation;
15140 2493 : return GF_OK;
15141 2493 : case 8:
15142 2493 : info->name = "inMFRotation";
15143 2493 : info->eventType = GF_SG_EVENT_IN;
15144 2493 : info->on_event_in = ((M_Valuator *)node)->on_inMFRotation;
15145 2493 : info->fieldType = GF_SG_VRML_MFROTATION;
15146 2493 : info->far_ptr = & ((M_Valuator *) node)->inMFRotation;
15147 2493 : return GF_OK;
15148 2497 : case 9:
15149 2497 : info->name = "inSFString";
15150 2497 : info->eventType = GF_SG_EVENT_IN;
15151 2497 : info->on_event_in = ((M_Valuator *)node)->on_inSFString;
15152 2497 : info->fieldType = GF_SG_VRML_SFSTRING;
15153 2497 : info->far_ptr = & ((M_Valuator *) node)->inSFString;
15154 2497 : return GF_OK;
15155 2493 : case 10:
15156 2493 : info->name = "inMFString";
15157 2493 : info->eventType = GF_SG_EVENT_IN;
15158 2493 : info->on_event_in = ((M_Valuator *)node)->on_inMFString;
15159 2493 : info->fieldType = GF_SG_VRML_MFSTRING;
15160 2493 : info->far_ptr = & ((M_Valuator *) node)->inMFString;
15161 2493 : return GF_OK;
15162 2517 : case 11:
15163 2517 : info->name = "inSFTime";
15164 2517 : info->eventType = GF_SG_EVENT_IN;
15165 2517 : info->on_event_in = ((M_Valuator *)node)->on_inSFTime;
15166 2517 : info->fieldType = GF_SG_VRML_SFTIME;
15167 2517 : info->far_ptr = & ((M_Valuator *) node)->inSFTime;
15168 2517 : return GF_OK;
15169 2806 : case 12:
15170 2806 : info->name = "inSFVec2f";
15171 2806 : info->eventType = GF_SG_EVENT_IN;
15172 2806 : info->on_event_in = ((M_Valuator *)node)->on_inSFVec2f;
15173 2806 : info->fieldType = GF_SG_VRML_SFVEC2F;
15174 2806 : info->far_ptr = & ((M_Valuator *) node)->inSFVec2f;
15175 2806 : return GF_OK;
15176 2495 : case 13:
15177 2495 : info->name = "inMFVec2f";
15178 2495 : info->eventType = GF_SG_EVENT_IN;
15179 2495 : info->on_event_in = ((M_Valuator *)node)->on_inMFVec2f;
15180 2495 : info->fieldType = GF_SG_VRML_MFVEC2F;
15181 2495 : info->far_ptr = & ((M_Valuator *) node)->inMFVec2f;
15182 2495 : return GF_OK;
15183 2503 : case 14:
15184 2503 : info->name = "inSFVec3f";
15185 2503 : info->eventType = GF_SG_EVENT_IN;
15186 2503 : info->on_event_in = ((M_Valuator *)node)->on_inSFVec3f;
15187 2503 : info->fieldType = GF_SG_VRML_SFVEC3F;
15188 2503 : info->far_ptr = & ((M_Valuator *) node)->inSFVec3f;
15189 2503 : return GF_OK;
15190 2493 : case 15:
15191 2493 : info->name = "inMFVec3f";
15192 2493 : info->eventType = GF_SG_EVENT_IN;
15193 2493 : info->on_event_in = ((M_Valuator *)node)->on_inMFVec3f;
15194 2493 : info->fieldType = GF_SG_VRML_MFVEC3F;
15195 2493 : info->far_ptr = & ((M_Valuator *) node)->inMFVec3f;
15196 2493 : return GF_OK;
15197 2504 : case 16:
15198 2504 : info->name = "outSFBool";
15199 2504 : info->eventType = GF_SG_EVENT_OUT;
15200 2504 : info->fieldType = GF_SG_VRML_SFBOOL;
15201 2504 : info->far_ptr = & ((M_Valuator *) node)->outSFBool;
15202 2504 : return GF_OK;
15203 2500 : case 17:
15204 2500 : info->name = "outSFColor";
15205 2500 : info->eventType = GF_SG_EVENT_OUT;
15206 2500 : info->fieldType = GF_SG_VRML_SFCOLOR;
15207 2500 : info->far_ptr = & ((M_Valuator *) node)->outSFColor;
15208 2500 : return GF_OK;
15209 2493 : case 18:
15210 2493 : info->name = "outMFColor";
15211 2493 : info->eventType = GF_SG_EVENT_OUT;
15212 2493 : info->fieldType = GF_SG_VRML_MFCOLOR;
15213 2493 : info->far_ptr = & ((M_Valuator *) node)->outMFColor;
15214 2493 : return GF_OK;
15215 3283 : case 19:
15216 3283 : info->name = "outSFFloat";
15217 3283 : info->eventType = GF_SG_EVENT_OUT;
15218 3283 : info->fieldType = GF_SG_VRML_SFFLOAT;
15219 3283 : info->far_ptr = & ((M_Valuator *) node)->outSFFloat;
15220 3283 : return GF_OK;
15221 2495 : case 20:
15222 2495 : info->name = "outMFFloat";
15223 2495 : info->eventType = GF_SG_EVENT_OUT;
15224 2495 : info->fieldType = GF_SG_VRML_MFFLOAT;
15225 2495 : info->far_ptr = & ((M_Valuator *) node)->outMFFloat;
15226 2495 : return GF_OK;
15227 3298 : case 21:
15228 3298 : info->name = "outSFInt32";
15229 3298 : info->eventType = GF_SG_EVENT_OUT;
15230 3298 : info->fieldType = GF_SG_VRML_SFINT32;
15231 3298 : info->far_ptr = & ((M_Valuator *) node)->outSFInt32;
15232 3298 : return GF_OK;
15233 2493 : case 22:
15234 2493 : info->name = "outMFInt32";
15235 2493 : info->eventType = GF_SG_EVENT_OUT;
15236 2493 : info->fieldType = GF_SG_VRML_MFINT32;
15237 2493 : info->far_ptr = & ((M_Valuator *) node)->outMFInt32;
15238 2493 : return GF_OK;
15239 2493 : case 23:
15240 2493 : info->name = "outSFRotation";
15241 2493 : info->eventType = GF_SG_EVENT_OUT;
15242 2493 : info->fieldType = GF_SG_VRML_SFROTATION;
15243 2493 : info->far_ptr = & ((M_Valuator *) node)->outSFRotation;
15244 2493 : return GF_OK;
15245 2493 : case 24:
15246 2493 : info->name = "outMFRotation";
15247 2493 : info->eventType = GF_SG_EVENT_OUT;
15248 2493 : info->fieldType = GF_SG_VRML_MFROTATION;
15249 2493 : info->far_ptr = & ((M_Valuator *) node)->outMFRotation;
15250 2493 : return GF_OK;
15251 2493 : case 25:
15252 2493 : info->name = "outSFString";
15253 2493 : info->eventType = GF_SG_EVENT_OUT;
15254 2493 : info->fieldType = GF_SG_VRML_SFSTRING;
15255 2493 : info->far_ptr = & ((M_Valuator *) node)->outSFString;
15256 2493 : return GF_OK;
15257 2550 : case 26:
15258 2550 : info->name = "outMFString";
15259 2550 : info->eventType = GF_SG_EVENT_OUT;
15260 2550 : info->fieldType = GF_SG_VRML_MFSTRING;
15261 2550 : info->far_ptr = & ((M_Valuator *) node)->outMFString;
15262 2550 : return GF_OK;
15263 2495 : case 27:
15264 2495 : info->name = "outSFTime";
15265 2495 : info->eventType = GF_SG_EVENT_OUT;
15266 2495 : info->fieldType = GF_SG_VRML_SFTIME;
15267 2495 : info->far_ptr = & ((M_Valuator *) node)->outSFTime;
15268 2495 : return GF_OK;
15269 2805 : case 28:
15270 2805 : info->name = "outSFVec2f";
15271 2805 : info->eventType = GF_SG_EVENT_OUT;
15272 2805 : info->fieldType = GF_SG_VRML_SFVEC2F;
15273 2805 : info->far_ptr = & ((M_Valuator *) node)->outSFVec2f;
15274 2805 : return GF_OK;
15275 2493 : case 29:
15276 2493 : info->name = "outMFVec2f";
15277 2493 : info->eventType = GF_SG_EVENT_OUT;
15278 2493 : info->fieldType = GF_SG_VRML_MFVEC2F;
15279 2493 : info->far_ptr = & ((M_Valuator *) node)->outMFVec2f;
15280 2493 : return GF_OK;
15281 2493 : case 30:
15282 2493 : info->name = "outSFVec3f";
15283 2493 : info->eventType = GF_SG_EVENT_OUT;
15284 2493 : info->fieldType = GF_SG_VRML_SFVEC3F;
15285 2493 : info->far_ptr = & ((M_Valuator *) node)->outSFVec3f;
15286 2493 : return GF_OK;
15287 2493 : case 31:
15288 2493 : info->name = "outMFVec3f";
15289 2493 : info->eventType = GF_SG_EVENT_OUT;
15290 2493 : info->fieldType = GF_SG_VRML_MFVEC3F;
15291 2493 : info->far_ptr = & ((M_Valuator *) node)->outMFVec3f;
15292 2493 : return GF_OK;
15293 3737 : case 32:
15294 3737 : info->name = "Factor1";
15295 3737 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15296 3737 : info->fieldType = GF_SG_VRML_SFFLOAT;
15297 3737 : info->far_ptr = & ((M_Valuator *) node)->Factor1;
15298 3737 : return GF_OK;
15299 2944 : case 33:
15300 2944 : info->name = "Factor2";
15301 2944 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15302 2944 : info->fieldType = GF_SG_VRML_SFFLOAT;
15303 2944 : info->far_ptr = & ((M_Valuator *) node)->Factor2;
15304 2944 : return GF_OK;
15305 2938 : case 34:
15306 2938 : info->name = "Factor3";
15307 2938 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15308 2938 : info->fieldType = GF_SG_VRML_SFFLOAT;
15309 2938 : info->far_ptr = & ((M_Valuator *) node)->Factor3;
15310 2938 : return GF_OK;
15311 2937 : case 35:
15312 2937 : info->name = "Factor4";
15313 2937 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15314 2937 : info->fieldType = GF_SG_VRML_SFFLOAT;
15315 2937 : info->far_ptr = & ((M_Valuator *) node)->Factor4;
15316 2937 : return GF_OK;
15317 3010 : case 36:
15318 3010 : info->name = "Offset1";
15319 3010 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15320 3010 : info->fieldType = GF_SG_VRML_SFFLOAT;
15321 3010 : info->far_ptr = & ((M_Valuator *) node)->Offset1;
15322 3010 : return GF_OK;
15323 2940 : case 37:
15324 2940 : info->name = "Offset2";
15325 2940 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15326 2940 : info->fieldType = GF_SG_VRML_SFFLOAT;
15327 2940 : info->far_ptr = & ((M_Valuator *) node)->Offset2;
15328 2940 : return GF_OK;
15329 2934 : case 38:
15330 2934 : info->name = "Offset3";
15331 2934 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15332 2934 : info->fieldType = GF_SG_VRML_SFFLOAT;
15333 2934 : info->far_ptr = & ((M_Valuator *) node)->Offset3;
15334 2934 : return GF_OK;
15335 2934 : case 39:
15336 2934 : info->name = "Offset4";
15337 2934 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15338 2934 : info->fieldType = GF_SG_VRML_SFFLOAT;
15339 2934 : info->far_ptr = & ((M_Valuator *) node)->Offset4;
15340 2934 : return GF_OK;
15341 2934 : case 40:
15342 2934 : info->name = "Sum";
15343 2934 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15344 2934 : info->fieldType = GF_SG_VRML_SFBOOL;
15345 2934 : info->far_ptr = & ((M_Valuator *) node)->Sum;
15346 2934 : return GF_OK;
15347 : default:
15348 : return GF_BAD_PARAM;
15349 : }
15350 : }
15351 :
15352 :
15353 1650 : static s32 Valuator_get_field_index_by_name(char *name)
15354 : {
15355 1650 : if (!strcmp("inSFBool", name)) return 0;
15356 1585 : if (!strcmp("inSFColor", name)) return 1;
15357 1579 : if (!strcmp("inMFColor", name)) return 2;
15358 1578 : if (!strcmp("inSFFloat", name)) return 3;
15359 1574 : if (!strcmp("inMFFloat", name)) return 4;
15360 1573 : if (!strcmp("inSFInt32", name)) return 5;
15361 723 : if (!strcmp("inMFInt32", name)) return 6;
15362 722 : if (!strcmp("inSFRotation", name)) return 7;
15363 721 : if (!strcmp("inMFRotation", name)) return 8;
15364 720 : if (!strcmp("inSFString", name)) return 9;
15365 717 : if (!strcmp("inMFString", name)) return 10;
15366 716 : if (!strcmp("inSFTime", name)) return 11;
15367 702 : if (!strcmp("inSFVec2f", name)) return 12;
15368 431 : if (!strcmp("inMFVec2f", name)) return 13;
15369 429 : if (!strcmp("inSFVec3f", name)) return 14;
15370 423 : if (!strcmp("inMFVec3f", name)) return 15;
15371 422 : if (!strcmp("outSFBool", name)) return 16;
15372 414 : if (!strcmp("outSFColor", name)) return 17;
15373 411 : if (!strcmp("outMFColor", name)) return 18;
15374 410 : if (!strcmp("outSFFloat", name)) return 19;
15375 401 : if (!strcmp("outMFFloat", name)) return 20;
15376 399 : if (!strcmp("outSFInt32", name)) return 21;
15377 389 : if (!strcmp("outMFInt32", name)) return 22;
15378 388 : if (!strcmp("outSFRotation", name)) return 23;
15379 387 : if (!strcmp("outMFRotation", name)) return 24;
15380 386 : if (!strcmp("outSFString", name)) return 25;
15381 385 : if (!strcmp("outMFString", name)) return 26;
15382 353 : if (!strcmp("outSFTime", name)) return 27;
15383 351 : if (!strcmp("outSFVec2f", name)) return 28;
15384 80 : if (!strcmp("outMFVec2f", name)) return 29;
15385 79 : if (!strcmp("outSFVec3f", name)) return 30;
15386 78 : if (!strcmp("outMFVec3f", name)) return 31;
15387 77 : if (!strcmp("Factor1", name)) return 32;
15388 56 : if (!strcmp("Factor2", name)) return 33;
15389 45 : if (!strcmp("Factor3", name)) return 34;
15390 40 : if (!strcmp("Factor4", name)) return 35;
15391 36 : if (!strcmp("Offset1", name)) return 36;
15392 10 : if (!strcmp("Offset2", name)) return 37;
15393 3 : if (!strcmp("Offset3", name)) return 38;
15394 2 : if (!strcmp("Offset4", name)) return 39;
15395 1 : if (!strcmp("Sum", name)) return 40;
15396 0 : return -1;
15397 : }
15398 81 : static Bool Valuator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
15399 : {
15400 81 : switch (FieldIndex) {
15401 1 : case 32:
15402 1 : *AType = 0;
15403 1 : *QType = 0;
15404 1 : *b_min = FIX_MIN;
15405 1 : *b_max = FIX_MAX;
15406 : return 1;
15407 1 : case 33:
15408 1 : *AType = 0;
15409 1 : *QType = 0;
15410 1 : *b_min = FIX_MIN;
15411 1 : *b_max = FIX_MAX;
15412 : return 1;
15413 1 : case 34:
15414 1 : *AType = 0;
15415 1 : *QType = 0;
15416 1 : *b_min = FIX_MIN;
15417 1 : *b_max = FIX_MAX;
15418 : return 1;
15419 1 : case 35:
15420 1 : *AType = 0;
15421 1 : *QType = 0;
15422 1 : *b_min = FIX_MIN;
15423 1 : *b_max = FIX_MAX;
15424 : return 1;
15425 9 : case 36:
15426 9 : *AType = 0;
15427 9 : *QType = 0;
15428 9 : *b_min = FIX_MIN;
15429 9 : *b_max = FIX_MAX;
15430 : return 1;
15431 1 : case 37:
15432 1 : *AType = 0;
15433 1 : *QType = 0;
15434 1 : *b_min = FIX_MIN;
15435 1 : *b_max = FIX_MAX;
15436 : return 1;
15437 1 : case 38:
15438 1 : *AType = 0;
15439 1 : *QType = 0;
15440 1 : *b_min = FIX_MIN;
15441 1 : *b_max = FIX_MAX;
15442 : return 1;
15443 1 : case 39:
15444 1 : *AType = 0;
15445 1 : *QType = 0;
15446 1 : *b_min = FIX_MIN;
15447 1 : *b_max = FIX_MAX;
15448 : return 1;
15449 : default:
15450 : return 0;
15451 : }
15452 : }
15453 :
15454 :
15455 :
15456 2035 : GF_Node *Valuator_Create()
15457 : {
15458 : M_Valuator *p;
15459 2035 : GF_SAFEALLOC(p, M_Valuator);
15460 2035 : if(!p) return NULL;
15461 2035 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Valuator);
15462 :
15463 : /*default field values*/
15464 2035 : p->Factor1 = FLT2FIX(1.0);
15465 2035 : p->Factor2 = FLT2FIX(1.0);
15466 2035 : p->Factor3 = FLT2FIX(1.0);
15467 2035 : p->Factor4 = FLT2FIX(1.0);
15468 2035 : p->Offset1 = FLT2FIX(0.0);
15469 2035 : p->Offset2 = FLT2FIX(0.0);
15470 2035 : p->Offset3 = FLT2FIX(0.0);
15471 2035 : p->Offset4 = FLT2FIX(0.0);
15472 2035 : return (GF_Node *)p;
15473 : }
15474 :
15475 :
15476 : /*
15477 : Viewpoint Node deletion
15478 : */
15479 :
15480 : static void Viewpoint_Del(GF_Node *node)
15481 : {
15482 : M_Viewpoint *p = (M_Viewpoint *) node;
15483 103 : gf_sg_sfstring_del(p->description);
15484 103 : gf_node_free((GF_Node *) p);
15485 : }
15486 :
15487 : static const u16 Viewpoint_Def2All[] = { 1, 2, 3, 4, 5};
15488 : static const u16 Viewpoint_In2All[] = { 0, 1, 2, 3, 4};
15489 : static const u16 Viewpoint_Out2All[] = { 1, 2, 3, 4, 6, 7};
15490 : static const u16 Viewpoint_Dyn2All[] = { 1, 3, 4};
15491 :
15492 : static u32 Viewpoint_get_field_count(GF_Node *node, u8 IndexMode)
15493 : {
15494 : switch(IndexMode) {
15495 : case GF_SG_FIELD_CODING_IN:
15496 : return 5;
15497 : case GF_SG_FIELD_CODING_DEF:
15498 : return 5;
15499 : case GF_SG_FIELD_CODING_OUT:
15500 : return 6;
15501 : case GF_SG_FIELD_CODING_DYN:
15502 : return 3;
15503 : default:
15504 : return 8;
15505 : }
15506 : }
15507 :
15508 : static GF_Err Viewpoint_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
15509 : {
15510 138 : switch(IndexMode) {
15511 0 : case GF_SG_FIELD_CODING_IN:
15512 0 : *allField = Viewpoint_In2All[inField];
15513 : return GF_OK;
15514 130 : case GF_SG_FIELD_CODING_DEF:
15515 130 : *allField = Viewpoint_Def2All[inField];
15516 : return GF_OK;
15517 0 : case GF_SG_FIELD_CODING_OUT:
15518 0 : *allField = Viewpoint_Out2All[inField];
15519 : return GF_OK;
15520 0 : case GF_SG_FIELD_CODING_DYN:
15521 0 : *allField = Viewpoint_Dyn2All[inField];
15522 : return GF_OK;
15523 : default:
15524 : return GF_BAD_PARAM;
15525 : }
15526 : }
15527 599 : static GF_Err Viewpoint_get_field(GF_Node *node, GF_FieldInfo *info)
15528 : {
15529 599 : switch (info->fieldIndex) {
15530 30 : case 0:
15531 30 : info->name = "set_bind";
15532 30 : info->eventType = GF_SG_EVENT_IN;
15533 30 : info->on_event_in = ((M_Viewpoint *)node)->on_set_bind;
15534 30 : info->fieldType = GF_SG_VRML_SFBOOL;
15535 30 : info->far_ptr = & ((M_Viewpoint *) node)->set_bind;
15536 30 : return GF_OK;
15537 73 : case 1:
15538 73 : info->name = "fieldOfView";
15539 73 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15540 73 : info->fieldType = GF_SG_VRML_SFFLOAT;
15541 73 : info->far_ptr = & ((M_Viewpoint *) node)->fieldOfView;
15542 73 : return GF_OK;
15543 76 : case 2:
15544 76 : info->name = "jump";
15545 76 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15546 76 : info->fieldType = GF_SG_VRML_SFBOOL;
15547 76 : info->far_ptr = & ((M_Viewpoint *) node)->jump;
15548 76 : return GF_OK;
15549 80 : case 3:
15550 80 : info->name = "orientation";
15551 80 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15552 80 : info->fieldType = GF_SG_VRML_SFROTATION;
15553 80 : info->far_ptr = & ((M_Viewpoint *) node)->orientation;
15554 80 : return GF_OK;
15555 162 : case 4:
15556 162 : info->name = "position";
15557 162 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15558 162 : info->fieldType = GF_SG_VRML_SFVEC3F;
15559 162 : info->far_ptr = & ((M_Viewpoint *) node)->position;
15560 162 : return GF_OK;
15561 144 : case 5:
15562 144 : info->name = "description";
15563 144 : info->eventType = GF_SG_EVENT_FIELD;
15564 144 : info->fieldType = GF_SG_VRML_SFSTRING;
15565 144 : info->far_ptr = & ((M_Viewpoint *) node)->description;
15566 144 : return GF_OK;
15567 17 : case 6:
15568 17 : info->name = "bindTime";
15569 17 : info->eventType = GF_SG_EVENT_OUT;
15570 17 : info->fieldType = GF_SG_VRML_SFTIME;
15571 17 : info->far_ptr = & ((M_Viewpoint *) node)->bindTime;
15572 17 : return GF_OK;
15573 17 : case 7:
15574 17 : info->name = "isBound";
15575 17 : info->eventType = GF_SG_EVENT_OUT;
15576 17 : info->fieldType = GF_SG_VRML_SFBOOL;
15577 17 : info->far_ptr = & ((M_Viewpoint *) node)->isBound;
15578 17 : return GF_OK;
15579 : default:
15580 : return GF_BAD_PARAM;
15581 : }
15582 : }
15583 :
15584 :
15585 99 : static s32 Viewpoint_get_field_index_by_name(char *name)
15586 : {
15587 99 : if (!strcmp("set_bind", name)) return 0;
15588 92 : if (!strcmp("fieldOfView", name)) return 1;
15589 90 : if (!strcmp("jump", name)) return 2;
15590 85 : if (!strcmp("orientation", name)) return 3;
15591 77 : if (!strcmp("position", name)) return 4;
15592 31 : if (!strcmp("description", name)) return 5;
15593 2 : if (!strcmp("bindTime", name)) return 6;
15594 1 : if (!strcmp("isBound", name)) return 7;
15595 0 : return -1;
15596 : }
15597 : static Bool Viewpoint_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
15598 : {
15599 16 : switch (FieldIndex) {
15600 1 : case 1:
15601 1 : *AType = 8;
15602 1 : *QType = 6;
15603 1 : *b_min = FLT2FIX(0);
15604 1 : *b_max = FLT2FIX(3.1415927);
15605 : return 1;
15606 1 : case 3:
15607 1 : *AType = 10;
15608 1 : *QType = 10;
15609 : return 1;
15610 9 : case 4:
15611 9 : *AType = 1;
15612 9 : *QType = 1;
15613 9 : *b_min = FIX_MIN;
15614 9 : *b_max = FIX_MAX;
15615 : return 1;
15616 : default:
15617 : return 0;
15618 : }
15619 : }
15620 :
15621 :
15622 :
15623 103 : GF_Node *Viewpoint_Create()
15624 : {
15625 : M_Viewpoint *p;
15626 103 : GF_SAFEALLOC(p, M_Viewpoint);
15627 103 : if(!p) return NULL;
15628 103 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Viewpoint);
15629 :
15630 : /*default field values*/
15631 103 : p->fieldOfView = FLT2FIX(0.785398);
15632 103 : p->jump = 1;
15633 103 : p->orientation.x = FLT2FIX(0);
15634 103 : p->orientation.y = FLT2FIX(0);
15635 103 : p->orientation.z = FLT2FIX(1);
15636 103 : p->orientation.q = FLT2FIX(0);
15637 103 : p->position.x = FLT2FIX(0);
15638 103 : p->position.y = FLT2FIX(0);
15639 103 : p->position.z = FLT2FIX(10);
15640 103 : return (GF_Node *)p;
15641 : }
15642 :
15643 :
15644 : /*
15645 : VisibilitySensor Node deletion
15646 : */
15647 :
15648 : static void VisibilitySensor_Del(GF_Node *node)
15649 : {
15650 : M_VisibilitySensor *p = (M_VisibilitySensor *) node;
15651 78 : gf_node_free((GF_Node *) p);
15652 : }
15653 :
15654 : static const u16 VisibilitySensor_Def2All[] = { 0, 1, 2};
15655 : static const u16 VisibilitySensor_In2All[] = { 0, 1, 2};
15656 : static const u16 VisibilitySensor_Out2All[] = { 0, 1, 2, 3, 4, 5};
15657 : static const u16 VisibilitySensor_Dyn2All[] = { 0, 2};
15658 :
15659 : static u32 VisibilitySensor_get_field_count(GF_Node *node, u8 IndexMode)
15660 : {
15661 : switch(IndexMode) {
15662 : case GF_SG_FIELD_CODING_IN:
15663 : return 3;
15664 : case GF_SG_FIELD_CODING_DEF:
15665 : return 3;
15666 : case GF_SG_FIELD_CODING_OUT:
15667 : return 6;
15668 : case GF_SG_FIELD_CODING_DYN:
15669 : return 2;
15670 : default:
15671 : return 6;
15672 : }
15673 : }
15674 :
15675 : static GF_Err VisibilitySensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
15676 : {
15677 66 : switch(IndexMode) {
15678 0 : case GF_SG_FIELD_CODING_IN:
15679 0 : *allField = VisibilitySensor_In2All[inField];
15680 : return GF_OK;
15681 60 : case GF_SG_FIELD_CODING_DEF:
15682 60 : *allField = VisibilitySensor_Def2All[inField];
15683 : return GF_OK;
15684 0 : case GF_SG_FIELD_CODING_OUT:
15685 0 : *allField = VisibilitySensor_Out2All[inField];
15686 : return GF_OK;
15687 0 : case GF_SG_FIELD_CODING_DYN:
15688 0 : *allField = VisibilitySensor_Dyn2All[inField];
15689 : return GF_OK;
15690 : default:
15691 : return GF_BAD_PARAM;
15692 : }
15693 : }
15694 326 : static GF_Err VisibilitySensor_get_field(GF_Node *node, GF_FieldInfo *info)
15695 : {
15696 326 : switch (info->fieldIndex) {
15697 85 : case 0:
15698 85 : info->name = "center";
15699 85 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15700 85 : info->fieldType = GF_SG_VRML_SFVEC3F;
15701 85 : info->far_ptr = & ((M_VisibilitySensor *) node)->center;
15702 85 : return GF_OK;
15703 84 : case 1:
15704 84 : info->name = "enabled";
15705 84 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15706 84 : info->fieldType = GF_SG_VRML_SFBOOL;
15707 84 : info->far_ptr = & ((M_VisibilitySensor *) node)->enabled;
15708 84 : return GF_OK;
15709 85 : case 2:
15710 85 : info->name = "size";
15711 85 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15712 85 : info->fieldType = GF_SG_VRML_SFVEC3F;
15713 85 : info->far_ptr = & ((M_VisibilitySensor *) node)->size;
15714 85 : return GF_OK;
15715 25 : case 3:
15716 25 : info->name = "enterTime";
15717 25 : info->eventType = GF_SG_EVENT_OUT;
15718 25 : info->fieldType = GF_SG_VRML_SFTIME;
15719 25 : info->far_ptr = & ((M_VisibilitySensor *) node)->enterTime;
15720 25 : return GF_OK;
15721 24 : case 4:
15722 24 : info->name = "exitTime";
15723 24 : info->eventType = GF_SG_EVENT_OUT;
15724 24 : info->fieldType = GF_SG_VRML_SFTIME;
15725 24 : info->far_ptr = & ((M_VisibilitySensor *) node)->exitTime;
15726 24 : return GF_OK;
15727 23 : case 5:
15728 23 : info->name = "isActive";
15729 23 : info->eventType = GF_SG_EVENT_OUT;
15730 23 : info->fieldType = GF_SG_VRML_SFBOOL;
15731 23 : info->far_ptr = & ((M_VisibilitySensor *) node)->isActive;
15732 23 : return GF_OK;
15733 : default:
15734 : return GF_BAD_PARAM;
15735 : }
15736 : }
15737 :
15738 :
15739 10 : static s32 VisibilitySensor_get_field_index_by_name(char *name)
15740 : {
15741 10 : if (!strcmp("center", name)) return 0;
15742 8 : if (!strcmp("enabled", name)) return 1;
15743 7 : if (!strcmp("size", name)) return 2;
15744 5 : if (!strcmp("enterTime", name)) return 3;
15745 3 : if (!strcmp("exitTime", name)) return 4;
15746 1 : if (!strcmp("isActive", name)) return 5;
15747 0 : return -1;
15748 : }
15749 : static Bool VisibilitySensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
15750 : {
15751 6 : switch (FieldIndex) {
15752 1 : case 0:
15753 1 : *AType = 1;
15754 1 : *QType = 1;
15755 1 : *b_min = FIX_MIN;
15756 1 : *b_max = FIX_MAX;
15757 : return 1;
15758 1 : case 2:
15759 1 : *AType = 11;
15760 1 : *QType = 11;
15761 1 : *b_min = FLT2FIX(0);
15762 1 : *b_max = FIX_MAX;
15763 : return 1;
15764 : default:
15765 : return 0;
15766 : }
15767 : }
15768 :
15769 :
15770 :
15771 78 : GF_Node *VisibilitySensor_Create()
15772 : {
15773 : M_VisibilitySensor *p;
15774 78 : GF_SAFEALLOC(p, M_VisibilitySensor);
15775 78 : if(!p) return NULL;
15776 78 : gf_node_setup((GF_Node *)p, TAG_MPEG4_VisibilitySensor);
15777 :
15778 : /*default field values*/
15779 78 : p->center.x = FLT2FIX(0);
15780 78 : p->center.y = FLT2FIX(0);
15781 78 : p->center.z = FLT2FIX(0);
15782 78 : p->enabled = 1;
15783 78 : p->size.x = FLT2FIX(0);
15784 78 : p->size.y = FLT2FIX(0);
15785 78 : p->size.z = FLT2FIX(0);
15786 78 : return (GF_Node *)p;
15787 : }
15788 :
15789 :
15790 : /*
15791 : Viseme Node deletion
15792 : */
15793 :
15794 : static void Viseme_Del(GF_Node *node)
15795 : {
15796 : M_Viseme *p = (M_Viseme *) node;
15797 1 : gf_node_free((GF_Node *) p);
15798 : }
15799 :
15800 : static const u16 Viseme_Def2All[] = { 0, 1, 2, 3};
15801 : static const u16 Viseme_In2All[] = { 0, 1, 2, 3};
15802 : static const u16 Viseme_Out2All[] = { 0, 1, 2, 3};
15803 :
15804 : static u32 Viseme_get_field_count(GF_Node *node, u8 IndexMode)
15805 : {
15806 6 : switch(IndexMode) {
15807 : case GF_SG_FIELD_CODING_IN:
15808 : return 4;
15809 : case GF_SG_FIELD_CODING_DEF:
15810 : return 4;
15811 : case GF_SG_FIELD_CODING_OUT:
15812 : return 4;
15813 1 : case GF_SG_FIELD_CODING_DYN:
15814 : return 0;
15815 : default:
15816 : return 4;
15817 : }
15818 : }
15819 :
15820 : static GF_Err Viseme_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
15821 : {
15822 4 : switch(IndexMode) {
15823 0 : case GF_SG_FIELD_CODING_IN:
15824 0 : *allField = Viseme_In2All[inField];
15825 : return GF_OK;
15826 0 : case GF_SG_FIELD_CODING_DEF:
15827 0 : *allField = Viseme_Def2All[inField];
15828 : return GF_OK;
15829 0 : case GF_SG_FIELD_CODING_OUT:
15830 0 : *allField = Viseme_Out2All[inField];
15831 : return GF_OK;
15832 : default:
15833 : return GF_BAD_PARAM;
15834 : }
15835 : }
15836 8 : static GF_Err Viseme_get_field(GF_Node *node, GF_FieldInfo *info)
15837 : {
15838 8 : switch (info->fieldIndex) {
15839 2 : case 0:
15840 2 : info->name = "viseme_select1";
15841 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15842 2 : info->fieldType = GF_SG_VRML_SFINT32;
15843 2 : info->far_ptr = & ((M_Viseme *) node)->viseme_select1;
15844 2 : return GF_OK;
15845 2 : case 1:
15846 2 : info->name = "viseme_select2";
15847 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15848 2 : info->fieldType = GF_SG_VRML_SFINT32;
15849 2 : info->far_ptr = & ((M_Viseme *) node)->viseme_select2;
15850 2 : return GF_OK;
15851 2 : case 2:
15852 2 : info->name = "viseme_blend";
15853 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15854 2 : info->fieldType = GF_SG_VRML_SFINT32;
15855 2 : info->far_ptr = & ((M_Viseme *) node)->viseme_blend;
15856 2 : return GF_OK;
15857 2 : case 3:
15858 2 : info->name = "viseme_def";
15859 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
15860 2 : info->fieldType = GF_SG_VRML_SFBOOL;
15861 2 : info->far_ptr = & ((M_Viseme *) node)->viseme_def;
15862 2 : return GF_OK;
15863 : default:
15864 : return GF_BAD_PARAM;
15865 : }
15866 : }
15867 :
15868 :
15869 4 : static s32 Viseme_get_field_index_by_name(char *name)
15870 : {
15871 4 : if (!strcmp("viseme_select1", name)) return 0;
15872 3 : if (!strcmp("viseme_select2", name)) return 1;
15873 2 : if (!strcmp("viseme_blend", name)) return 2;
15874 1 : if (!strcmp("viseme_def", name)) return 3;
15875 0 : return -1;
15876 : }
15877 : static Bool Viseme_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
15878 : {
15879 4 : switch (FieldIndex) {
15880 1 : case 0:
15881 1 : *AType = 0;
15882 1 : *QType = 13;
15883 1 : *QT13_bits = 5;
15884 1 : *b_min = FLT2FIX(0);
15885 1 : *b_max = FLT2FIX(31);
15886 : return 1;
15887 1 : case 1:
15888 1 : *AType = 0;
15889 1 : *QType = 13;
15890 1 : *QT13_bits = 5;
15891 1 : *b_min = FLT2FIX(0);
15892 1 : *b_max = FLT2FIX(31);
15893 : return 1;
15894 1 : case 2:
15895 1 : *AType = 0;
15896 1 : *QType = 13;
15897 1 : *QT13_bits = 6;
15898 1 : *b_min = FLT2FIX(0);
15899 1 : *b_max = FLT2FIX(63);
15900 : return 1;
15901 : default:
15902 : return 0;
15903 : }
15904 : }
15905 :
15906 :
15907 :
15908 1 : GF_Node *Viseme_Create()
15909 : {
15910 : M_Viseme *p;
15911 1 : GF_SAFEALLOC(p, M_Viseme);
15912 1 : if(!p) return NULL;
15913 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Viseme);
15914 :
15915 : /*default field values*/
15916 1 : p->viseme_select1 = 0;
15917 1 : p->viseme_select2 = 0;
15918 1 : p->viseme_blend = 0;
15919 1 : return (GF_Node *)p;
15920 : }
15921 :
15922 :
15923 : /*
15924 : WorldInfo Node deletion
15925 : */
15926 :
15927 511 : static void WorldInfo_Del(GF_Node *node)
15928 : {
15929 : M_WorldInfo *p = (M_WorldInfo *) node;
15930 511 : gf_sg_mfstring_del(p->info);
15931 511 : gf_sg_sfstring_del(p->title);
15932 511 : gf_node_free((GF_Node *) p);
15933 511 : }
15934 :
15935 : static const u16 WorldInfo_Def2All[] = { 0, 1};
15936 :
15937 : static u32 WorldInfo_get_field_count(GF_Node *node, u8 IndexMode)
15938 : {
15939 173 : switch(IndexMode) {
15940 : case GF_SG_FIELD_CODING_IN:
15941 : return 0;
15942 134 : case GF_SG_FIELD_CODING_DEF:
15943 : return 2;
15944 : case GF_SG_FIELD_CODING_OUT:
15945 : return 0;
15946 : case GF_SG_FIELD_CODING_DYN:
15947 : return 0;
15948 36 : default:
15949 : return 2;
15950 : }
15951 : }
15952 :
15953 : static GF_Err WorldInfo_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
15954 : {
15955 174 : switch(IndexMode) {
15956 172 : case GF_SG_FIELD_CODING_DEF:
15957 172 : *allField = WorldInfo_Def2All[inField];
15958 : return GF_OK;
15959 : default:
15960 : return GF_BAD_PARAM;
15961 : }
15962 : }
15963 : static GF_Err WorldInfo_get_field(GF_Node *node, GF_FieldInfo *info)
15964 : {
15965 1308 : switch (info->fieldIndex) {
15966 654 : case 0:
15967 654 : info->name = "info";
15968 654 : info->eventType = GF_SG_EVENT_FIELD;
15969 654 : info->fieldType = GF_SG_VRML_MFSTRING;
15970 654 : info->far_ptr = & ((M_WorldInfo *) node)->info;
15971 : return GF_OK;
15972 654 : case 1:
15973 654 : info->name = "title";
15974 654 : info->eventType = GF_SG_EVENT_FIELD;
15975 654 : info->fieldType = GF_SG_VRML_SFSTRING;
15976 654 : info->far_ptr = & ((M_WorldInfo *) node)->title;
15977 : return GF_OK;
15978 : default:
15979 : return GF_BAD_PARAM;
15980 : }
15981 : }
15982 :
15983 :
15984 770 : static s32 WorldInfo_get_field_index_by_name(char *name)
15985 : {
15986 770 : if (!strcmp("info", name)) return 0;
15987 385 : if (!strcmp("title", name)) return 1;
15988 0 : return -1;
15989 : }
15990 : static Bool WorldInfo_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
15991 : {
15992 : switch (FieldIndex) {
15993 : default:
15994 : return 0;
15995 : }
15996 : }
15997 :
15998 :
15999 :
16000 511 : GF_Node *WorldInfo_Create()
16001 : {
16002 : M_WorldInfo *p;
16003 511 : GF_SAFEALLOC(p, M_WorldInfo);
16004 511 : if(!p) return NULL;
16005 511 : gf_node_setup((GF_Node *)p, TAG_MPEG4_WorldInfo);
16006 :
16007 : /*default field values*/
16008 511 : return (GF_Node *)p;
16009 : }
16010 :
16011 :
16012 : /*
16013 : AcousticMaterial Node deletion
16014 : */
16015 :
16016 1 : static void AcousticMaterial_Del(GF_Node *node)
16017 : {
16018 : M_AcousticMaterial *p = (M_AcousticMaterial *) node;
16019 1 : gf_sg_mffloat_del(p->reffunc);
16020 1 : gf_sg_mffloat_del(p->transfunc);
16021 1 : gf_sg_mffloat_del(p->refFrequency);
16022 1 : gf_sg_mffloat_del(p->transFrequency);
16023 1 : gf_node_free((GF_Node *) p);
16024 1 : }
16025 :
16026 : static const u16 AcousticMaterial_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
16027 : static const u16 AcousticMaterial_In2All[] = { 0, 1, 2, 3, 4, 5};
16028 : static const u16 AcousticMaterial_Out2All[] = { 0, 1, 2, 3, 4, 5};
16029 : static const u16 AcousticMaterial_Dyn2All[] = { 0, 1, 2, 3, 4, 5};
16030 :
16031 : static u32 AcousticMaterial_get_field_count(GF_Node *node, u8 IndexMode)
16032 : {
16033 6 : switch(IndexMode) {
16034 : case GF_SG_FIELD_CODING_IN:
16035 : return 6;
16036 1 : case GF_SG_FIELD_CODING_DEF:
16037 : return 10;
16038 : case GF_SG_FIELD_CODING_OUT:
16039 : return 6;
16040 : case GF_SG_FIELD_CODING_DYN:
16041 : return 6;
16042 2 : default:
16043 : return 10;
16044 : }
16045 : }
16046 :
16047 : static GF_Err AcousticMaterial_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
16048 : {
16049 10 : switch(IndexMode) {
16050 0 : case GF_SG_FIELD_CODING_IN:
16051 0 : *allField = AcousticMaterial_In2All[inField];
16052 : return GF_OK;
16053 0 : case GF_SG_FIELD_CODING_DEF:
16054 0 : *allField = AcousticMaterial_Def2All[inField];
16055 : return GF_OK;
16056 0 : case GF_SG_FIELD_CODING_OUT:
16057 0 : *allField = AcousticMaterial_Out2All[inField];
16058 : return GF_OK;
16059 0 : case GF_SG_FIELD_CODING_DYN:
16060 0 : *allField = AcousticMaterial_Dyn2All[inField];
16061 : return GF_OK;
16062 : default:
16063 : return GF_BAD_PARAM;
16064 : }
16065 : }
16066 20 : static GF_Err AcousticMaterial_get_field(GF_Node *node, GF_FieldInfo *info)
16067 : {
16068 20 : switch (info->fieldIndex) {
16069 2 : case 0:
16070 2 : info->name = "ambientIntensity";
16071 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16072 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
16073 2 : info->far_ptr = & ((M_AcousticMaterial *) node)->ambientIntensity;
16074 2 : return GF_OK;
16075 2 : case 1:
16076 2 : info->name = "diffuseColor";
16077 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16078 2 : info->fieldType = GF_SG_VRML_SFCOLOR;
16079 2 : info->far_ptr = & ((M_AcousticMaterial *) node)->diffuseColor;
16080 2 : return GF_OK;
16081 2 : case 2:
16082 2 : info->name = "emissiveColor";
16083 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16084 2 : info->fieldType = GF_SG_VRML_SFCOLOR;
16085 2 : info->far_ptr = & ((M_AcousticMaterial *) node)->emissiveColor;
16086 2 : return GF_OK;
16087 2 : case 3:
16088 2 : info->name = "shininess";
16089 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16090 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
16091 2 : info->far_ptr = & ((M_AcousticMaterial *) node)->shininess;
16092 2 : return GF_OK;
16093 2 : case 4:
16094 2 : info->name = "specularColor";
16095 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16096 2 : info->fieldType = GF_SG_VRML_SFCOLOR;
16097 2 : info->far_ptr = & ((M_AcousticMaterial *) node)->specularColor;
16098 2 : return GF_OK;
16099 2 : case 5:
16100 2 : info->name = "transparency";
16101 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16102 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
16103 2 : info->far_ptr = & ((M_AcousticMaterial *) node)->transparency;
16104 2 : return GF_OK;
16105 2 : case 6:
16106 2 : info->name = "reffunc";
16107 2 : info->eventType = GF_SG_EVENT_FIELD;
16108 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
16109 2 : info->far_ptr = & ((M_AcousticMaterial *) node)->reffunc;
16110 2 : return GF_OK;
16111 2 : case 7:
16112 2 : info->name = "transfunc";
16113 2 : info->eventType = GF_SG_EVENT_FIELD;
16114 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
16115 2 : info->far_ptr = & ((M_AcousticMaterial *) node)->transfunc;
16116 2 : return GF_OK;
16117 2 : case 8:
16118 2 : info->name = "refFrequency";
16119 2 : info->eventType = GF_SG_EVENT_FIELD;
16120 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
16121 2 : info->far_ptr = & ((M_AcousticMaterial *) node)->refFrequency;
16122 2 : return GF_OK;
16123 2 : case 9:
16124 2 : info->name = "transFrequency";
16125 2 : info->eventType = GF_SG_EVENT_FIELD;
16126 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
16127 2 : info->far_ptr = & ((M_AcousticMaterial *) node)->transFrequency;
16128 2 : return GF_OK;
16129 : default:
16130 : return GF_BAD_PARAM;
16131 : }
16132 : }
16133 :
16134 :
16135 10 : static s32 AcousticMaterial_get_field_index_by_name(char *name)
16136 : {
16137 10 : if (!strcmp("ambientIntensity", name)) return 0;
16138 9 : if (!strcmp("diffuseColor", name)) return 1;
16139 8 : if (!strcmp("emissiveColor", name)) return 2;
16140 7 : if (!strcmp("shininess", name)) return 3;
16141 6 : if (!strcmp("specularColor", name)) return 4;
16142 5 : if (!strcmp("transparency", name)) return 5;
16143 4 : if (!strcmp("reffunc", name)) return 6;
16144 3 : if (!strcmp("transfunc", name)) return 7;
16145 2 : if (!strcmp("refFrequency", name)) return 8;
16146 1 : if (!strcmp("transFrequency", name)) return 9;
16147 0 : return -1;
16148 : }
16149 10 : static Bool AcousticMaterial_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
16150 : {
16151 10 : switch (FieldIndex) {
16152 1 : case 0:
16153 1 : *AType = 8;
16154 1 : *QType = 4;
16155 1 : *b_min = FLT2FIX(0);
16156 1 : *b_max = FLT2FIX(1);
16157 : return 1;
16158 1 : case 1:
16159 1 : *AType = 8;
16160 1 : *QType = 4;
16161 1 : *b_min = FLT2FIX(0);
16162 1 : *b_max = FLT2FIX(1);
16163 : return 1;
16164 1 : case 2:
16165 1 : *AType = 8;
16166 1 : *QType = 4;
16167 1 : *b_min = FLT2FIX(0);
16168 1 : *b_max = FLT2FIX(1);
16169 : return 1;
16170 1 : case 3:
16171 1 : *AType = 8;
16172 1 : *QType = 4;
16173 1 : *b_min = FLT2FIX(0);
16174 1 : *b_max = FLT2FIX(1);
16175 : return 1;
16176 1 : case 4:
16177 1 : *AType = 8;
16178 1 : *QType = 4;
16179 1 : *b_min = FLT2FIX(0);
16180 1 : *b_max = FLT2FIX(1);
16181 : return 1;
16182 1 : case 5:
16183 1 : *AType = 8;
16184 1 : *QType = 4;
16185 1 : *b_min = FLT2FIX(0);
16186 1 : *b_max = FLT2FIX(1);
16187 : return 1;
16188 1 : case 6:
16189 1 : *AType = 0;
16190 1 : *QType = 0;
16191 1 : *b_min = FIX_MIN;
16192 1 : *b_max = FIX_MAX;
16193 : return 1;
16194 1 : case 7:
16195 1 : *AType = 0;
16196 1 : *QType = 0;
16197 1 : *b_min = FIX_MIN;
16198 1 : *b_max = FIX_MAX;
16199 : return 1;
16200 1 : case 8:
16201 1 : *AType = 0;
16202 1 : *QType = 0;
16203 1 : *b_min = FLT2FIX(0);
16204 1 : *b_max = FIX_MAX;
16205 : return 1;
16206 1 : case 9:
16207 1 : *AType = 0;
16208 1 : *QType = 0;
16209 1 : *b_min = FLT2FIX(0);
16210 1 : *b_max = FIX_MAX;
16211 : return 1;
16212 : default:
16213 : return 0;
16214 : }
16215 : }
16216 :
16217 :
16218 :
16219 1 : GF_Node *AcousticMaterial_Create()
16220 : {
16221 : M_AcousticMaterial *p;
16222 1 : GF_SAFEALLOC(p, M_AcousticMaterial);
16223 1 : if(!p) return NULL;
16224 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AcousticMaterial);
16225 :
16226 : /*default field values*/
16227 1 : p->ambientIntensity = FLT2FIX(0.2);
16228 1 : p->diffuseColor.red = FLT2FIX(0.8);
16229 1 : p->diffuseColor.green = FLT2FIX(0.8);
16230 1 : p->diffuseColor.blue = FLT2FIX(0.8);
16231 1 : p->emissiveColor.red = FLT2FIX(0);
16232 1 : p->emissiveColor.green = FLT2FIX(0);
16233 1 : p->emissiveColor.blue = FLT2FIX(0);
16234 1 : p->shininess = FLT2FIX(0.2);
16235 1 : p->specularColor.red = FLT2FIX(0);
16236 1 : p->specularColor.green = FLT2FIX(0);
16237 1 : p->specularColor.blue = FLT2FIX(0);
16238 1 : p->transparency = FLT2FIX(0);
16239 1 : p->reffunc.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
16240 1 : p->reffunc.count = 1;
16241 1 : p->reffunc.vals[0] = FLT2FIX(0);
16242 1 : p->transfunc.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
16243 1 : p->transfunc.count = 1;
16244 1 : p->transfunc.vals[0] = FLT2FIX(1);
16245 1 : p->refFrequency.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
16246 1 : p->refFrequency.count = 1;
16247 1 : p->refFrequency.vals[0] = FLT2FIX(0);
16248 1 : p->transFrequency.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
16249 1 : p->transFrequency.count = 1;
16250 1 : p->transFrequency.vals[0] = FLT2FIX(0);
16251 1 : return (GF_Node *)p;
16252 : }
16253 :
16254 :
16255 : /*
16256 : AcousticScene Node deletion
16257 : */
16258 :
16259 1 : static void AcousticScene_Del(GF_Node *node)
16260 : {
16261 : M_AcousticScene *p = (M_AcousticScene *) node;
16262 1 : gf_sg_mftime_del(p->reverbTime);
16263 1 : gf_sg_mffloat_del(p->reverbFreq);
16264 1 : gf_node_free((GF_Node *) p);
16265 1 : }
16266 :
16267 : static const u16 AcousticScene_Def2All[] = { 0, 1, 2, 3, 4, 5};
16268 : static const u16 AcousticScene_In2All[] = { 4, 5};
16269 : static const u16 AcousticScene_Out2All[] = { 4, 5};
16270 : static const u16 AcousticScene_Dyn2All[] = { 4};
16271 :
16272 : static u32 AcousticScene_get_field_count(GF_Node *node, u8 IndexMode)
16273 : {
16274 : switch(IndexMode) {
16275 : case GF_SG_FIELD_CODING_IN:
16276 : return 2;
16277 : case GF_SG_FIELD_CODING_DEF:
16278 : return 6;
16279 : case GF_SG_FIELD_CODING_OUT:
16280 : return 2;
16281 : case GF_SG_FIELD_CODING_DYN:
16282 : return 1;
16283 : default:
16284 : return 6;
16285 : }
16286 : }
16287 :
16288 : static GF_Err AcousticScene_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
16289 : {
16290 6 : switch(IndexMode) {
16291 0 : case GF_SG_FIELD_CODING_IN:
16292 0 : *allField = AcousticScene_In2All[inField];
16293 : return GF_OK;
16294 0 : case GF_SG_FIELD_CODING_DEF:
16295 0 : *allField = AcousticScene_Def2All[inField];
16296 : return GF_OK;
16297 0 : case GF_SG_FIELD_CODING_OUT:
16298 0 : *allField = AcousticScene_Out2All[inField];
16299 : return GF_OK;
16300 0 : case GF_SG_FIELD_CODING_DYN:
16301 0 : *allField = AcousticScene_Dyn2All[inField];
16302 : return GF_OK;
16303 : default:
16304 : return GF_BAD_PARAM;
16305 : }
16306 : }
16307 12 : static GF_Err AcousticScene_get_field(GF_Node *node, GF_FieldInfo *info)
16308 : {
16309 12 : switch (info->fieldIndex) {
16310 2 : case 0:
16311 2 : info->name = "center";
16312 2 : info->eventType = GF_SG_EVENT_FIELD;
16313 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
16314 2 : info->far_ptr = & ((M_AcousticScene *) node)->center;
16315 2 : return GF_OK;
16316 2 : case 1:
16317 2 : info->name = "Size";
16318 2 : info->eventType = GF_SG_EVENT_FIELD;
16319 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
16320 2 : info->far_ptr = & ((M_AcousticScene *) node)->Size;
16321 2 : return GF_OK;
16322 2 : case 2:
16323 2 : info->name = "reverbTime";
16324 2 : info->eventType = GF_SG_EVENT_FIELD;
16325 2 : info->fieldType = GF_SG_VRML_MFTIME;
16326 2 : info->far_ptr = & ((M_AcousticScene *) node)->reverbTime;
16327 2 : return GF_OK;
16328 2 : case 3:
16329 2 : info->name = "reverbFreq";
16330 2 : info->eventType = GF_SG_EVENT_FIELD;
16331 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
16332 2 : info->far_ptr = & ((M_AcousticScene *) node)->reverbFreq;
16333 2 : return GF_OK;
16334 2 : case 4:
16335 2 : info->name = "reverbLevel";
16336 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16337 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
16338 2 : info->far_ptr = & ((M_AcousticScene *) node)->reverbLevel;
16339 2 : return GF_OK;
16340 2 : case 5:
16341 2 : info->name = "reverbDelay";
16342 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16343 2 : info->fieldType = GF_SG_VRML_SFTIME;
16344 2 : info->far_ptr = & ((M_AcousticScene *) node)->reverbDelay;
16345 2 : return GF_OK;
16346 : default:
16347 : return GF_BAD_PARAM;
16348 : }
16349 : }
16350 :
16351 :
16352 6 : static s32 AcousticScene_get_field_index_by_name(char *name)
16353 : {
16354 6 : if (!strcmp("center", name)) return 0;
16355 5 : if (!strcmp("Size", name)) return 1;
16356 4 : if (!strcmp("reverbTime", name)) return 2;
16357 3 : if (!strcmp("reverbFreq", name)) return 3;
16358 2 : if (!strcmp("reverbLevel", name)) return 4;
16359 1 : if (!strcmp("reverbDelay", name)) return 5;
16360 0 : return -1;
16361 : }
16362 6 : static Bool AcousticScene_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
16363 : {
16364 6 : switch (FieldIndex) {
16365 1 : case 0:
16366 1 : *AType = 0;
16367 1 : *QType = 1;
16368 1 : *b_min = FIX_MIN;
16369 1 : *b_max = FIX_MAX;
16370 : return 1;
16371 1 : case 1:
16372 1 : *AType = 0;
16373 1 : *QType = 11;
16374 1 : *b_min = FIX_MIN;
16375 1 : *b_max = FIX_MAX;
16376 : return 1;
16377 1 : case 2:
16378 1 : *AType = 0;
16379 1 : *QType = 0;
16380 1 : *b_min = FLT2FIX(0 );
16381 1 : *b_max = FIX_MAX;
16382 : return 1;
16383 1 : case 3:
16384 1 : *AType = 0;
16385 1 : *QType = 0;
16386 1 : *b_min = FLT2FIX(0 );
16387 1 : *b_max = FIX_MAX;
16388 : return 1;
16389 1 : case 4:
16390 1 : *AType = 7;
16391 1 : *QType = 0;
16392 1 : *b_min = FLT2FIX(0 );
16393 1 : *b_max = FIX_MAX;
16394 : return 1;
16395 1 : case 5:
16396 1 : *AType = 0;
16397 1 : *QType = 0;
16398 1 : *b_min = FLT2FIX(0 );
16399 1 : *b_max = FIX_MAX;
16400 : return 1;
16401 : default:
16402 : return 0;
16403 : }
16404 : }
16405 :
16406 :
16407 :
16408 1 : GF_Node *AcousticScene_Create()
16409 : {
16410 : M_AcousticScene *p;
16411 1 : GF_SAFEALLOC(p, M_AcousticScene);
16412 1 : if(!p) return NULL;
16413 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AcousticScene);
16414 :
16415 : /*default field values*/
16416 1 : p->center.x = FLT2FIX(0);
16417 1 : p->center.y = FLT2FIX(0);
16418 1 : p->center.z = FLT2FIX(0);
16419 1 : p->Size.x = FLT2FIX(-1);
16420 1 : p->Size.y = FLT2FIX(-1);
16421 1 : p->Size.z = FLT2FIX(-1);
16422 1 : p->reverbTime.vals = (SFTime*)gf_malloc(sizeof(SFTime)*1);
16423 1 : p->reverbTime.count = 1;
16424 1 : p->reverbTime.vals[0] = 0;
16425 1 : p->reverbFreq.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
16426 1 : p->reverbFreq.count = 1;
16427 1 : p->reverbFreq.vals[0] = FLT2FIX(1000);
16428 1 : p->reverbLevel = FLT2FIX(0.4);
16429 1 : p->reverbDelay = 0.5;
16430 1 : return (GF_Node *)p;
16431 : }
16432 :
16433 :
16434 : /*
16435 : ApplicationWindow Node deletion
16436 : */
16437 :
16438 1 : static void ApplicationWindow_Del(GF_Node *node)
16439 : {
16440 : M_ApplicationWindow *p = (M_ApplicationWindow *) node;
16441 1 : gf_sg_sfstring_del(p->description);
16442 1 : gf_sg_mfstring_del(p->parameter);
16443 1 : gf_sg_mfurl_del(p->url);
16444 1 : gf_node_free((GF_Node *) p);
16445 1 : }
16446 :
16447 : static const u16 ApplicationWindow_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
16448 : static const u16 ApplicationWindow_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
16449 : static const u16 ApplicationWindow_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
16450 : static const u16 ApplicationWindow_Dyn2All[] = { 6};
16451 :
16452 : static u32 ApplicationWindow_get_field_count(GF_Node *node, u8 IndexMode)
16453 : {
16454 6 : switch(IndexMode) {
16455 : case GF_SG_FIELD_CODING_IN:
16456 : return 7;
16457 : case GF_SG_FIELD_CODING_DEF:
16458 : return 7;
16459 : case GF_SG_FIELD_CODING_OUT:
16460 : return 7;
16461 1 : case GF_SG_FIELD_CODING_DYN:
16462 : return 1;
16463 : default:
16464 : return 7;
16465 : }
16466 : }
16467 :
16468 : static GF_Err ApplicationWindow_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
16469 : {
16470 7 : switch(IndexMode) {
16471 0 : case GF_SG_FIELD_CODING_IN:
16472 0 : *allField = ApplicationWindow_In2All[inField];
16473 : return GF_OK;
16474 0 : case GF_SG_FIELD_CODING_DEF:
16475 0 : *allField = ApplicationWindow_Def2All[inField];
16476 : return GF_OK;
16477 0 : case GF_SG_FIELD_CODING_OUT:
16478 0 : *allField = ApplicationWindow_Out2All[inField];
16479 : return GF_OK;
16480 0 : case GF_SG_FIELD_CODING_DYN:
16481 0 : *allField = ApplicationWindow_Dyn2All[inField];
16482 : return GF_OK;
16483 : default:
16484 : return GF_BAD_PARAM;
16485 : }
16486 : }
16487 14 : static GF_Err ApplicationWindow_get_field(GF_Node *node, GF_FieldInfo *info)
16488 : {
16489 14 : switch (info->fieldIndex) {
16490 2 : case 0:
16491 2 : info->name = "isActive";
16492 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16493 2 : info->fieldType = GF_SG_VRML_SFBOOL;
16494 2 : info->far_ptr = & ((M_ApplicationWindow *) node)->isActive;
16495 2 : return GF_OK;
16496 2 : case 1:
16497 2 : info->name = "startTime";
16498 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16499 2 : info->fieldType = GF_SG_VRML_SFTIME;
16500 2 : info->far_ptr = & ((M_ApplicationWindow *) node)->startTime;
16501 2 : return GF_OK;
16502 2 : case 2:
16503 2 : info->name = "stopTime";
16504 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16505 2 : info->fieldType = GF_SG_VRML_SFTIME;
16506 2 : info->far_ptr = & ((M_ApplicationWindow *) node)->stopTime;
16507 2 : return GF_OK;
16508 2 : case 3:
16509 2 : info->name = "description";
16510 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16511 2 : info->fieldType = GF_SG_VRML_SFSTRING;
16512 2 : info->far_ptr = & ((M_ApplicationWindow *) node)->description;
16513 2 : return GF_OK;
16514 2 : case 4:
16515 2 : info->name = "parameter";
16516 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16517 2 : info->fieldType = GF_SG_VRML_MFSTRING;
16518 2 : info->far_ptr = & ((M_ApplicationWindow *) node)->parameter;
16519 2 : return GF_OK;
16520 2 : case 5:
16521 2 : info->name = "url";
16522 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16523 2 : info->fieldType = GF_SG_VRML_MFURL;
16524 2 : info->far_ptr = & ((M_ApplicationWindow *) node)->url;
16525 2 : return GF_OK;
16526 2 : case 6:
16527 2 : info->name = "size";
16528 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16529 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
16530 2 : info->far_ptr = & ((M_ApplicationWindow *) node)->size;
16531 2 : return GF_OK;
16532 : default:
16533 : return GF_BAD_PARAM;
16534 : }
16535 : }
16536 :
16537 :
16538 7 : static s32 ApplicationWindow_get_field_index_by_name(char *name)
16539 : {
16540 7 : if (!strcmp("isActive", name)) return 0;
16541 6 : if (!strcmp("startTime", name)) return 1;
16542 5 : if (!strcmp("stopTime", name)) return 2;
16543 4 : if (!strcmp("description", name)) return 3;
16544 3 : if (!strcmp("parameter", name)) return 4;
16545 2 : if (!strcmp("url", name)) return 5;
16546 1 : if (!strcmp("size", name)) return 6;
16547 0 : return -1;
16548 : }
16549 : static Bool ApplicationWindow_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
16550 : {
16551 7 : switch (FieldIndex) {
16552 1 : case 1:
16553 1 : *AType = 0;
16554 1 : *QType = 0;
16555 1 : *b_min = FIX_MIN;
16556 1 : *b_max = FIX_MAX;
16557 : return 1;
16558 1 : case 2:
16559 1 : *AType = 0;
16560 1 : *QType = 0;
16561 1 : *b_min = FIX_MIN;
16562 1 : *b_max = FIX_MAX;
16563 : return 1;
16564 1 : case 6:
16565 1 : *AType = 12;
16566 1 : *QType = 12;
16567 1 : *b_min = FIX_MIN;
16568 1 : *b_max = FIX_MAX;
16569 : return 1;
16570 : default:
16571 : return 0;
16572 : }
16573 : }
16574 :
16575 :
16576 :
16577 1 : GF_Node *ApplicationWindow_Create()
16578 : {
16579 : M_ApplicationWindow *p;
16580 1 : GF_SAFEALLOC(p, M_ApplicationWindow);
16581 1 : if(!p) return NULL;
16582 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ApplicationWindow);
16583 :
16584 : /*default field values*/
16585 1 : p->startTime = 0;
16586 1 : p->stopTime = 0;
16587 1 : p->size.x = FLT2FIX(0);
16588 1 : p->size.y = FLT2FIX(0);
16589 1 : return (GF_Node *)p;
16590 : }
16591 :
16592 :
16593 : /*
16594 : BAP Node deletion
16595 : */
16596 :
16597 : static void BAP_Del(GF_Node *node)
16598 : {
16599 : M_BAP *p = (M_BAP *) node;
16600 1 : gf_node_free((GF_Node *) p);
16601 : }
16602 :
16603 : static const u16 BAP_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295};
16604 : static const u16 BAP_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295};
16605 : static const u16 BAP_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295};
16606 :
16607 : static u32 BAP_get_field_count(GF_Node *node, u8 IndexMode)
16608 : {
16609 6 : switch(IndexMode) {
16610 : case GF_SG_FIELD_CODING_IN:
16611 : return 296;
16612 : case GF_SG_FIELD_CODING_DEF:
16613 : return 296;
16614 : case GF_SG_FIELD_CODING_OUT:
16615 : return 296;
16616 1 : case GF_SG_FIELD_CODING_DYN:
16617 : return 0;
16618 : default:
16619 : return 296;
16620 : }
16621 : }
16622 :
16623 : static GF_Err BAP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
16624 : {
16625 296 : switch(IndexMode) {
16626 0 : case GF_SG_FIELD_CODING_IN:
16627 0 : *allField = BAP_In2All[inField];
16628 : return GF_OK;
16629 0 : case GF_SG_FIELD_CODING_DEF:
16630 0 : *allField = BAP_Def2All[inField];
16631 : return GF_OK;
16632 0 : case GF_SG_FIELD_CODING_OUT:
16633 0 : *allField = BAP_Out2All[inField];
16634 : return GF_OK;
16635 : default:
16636 : return GF_BAD_PARAM;
16637 : }
16638 : }
16639 592 : static GF_Err BAP_get_field(GF_Node *node, GF_FieldInfo *info)
16640 : {
16641 592 : switch (info->fieldIndex) {
16642 2 : case 0:
16643 2 : info->name = "sacroiliac_tilt";
16644 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16645 2 : info->fieldType = GF_SG_VRML_SFINT32;
16646 2 : info->far_ptr = & ((M_BAP *) node)->sacroiliac_tilt;
16647 2 : return GF_OK;
16648 2 : case 1:
16649 2 : info->name = "sacroiliac_torsion";
16650 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16651 2 : info->fieldType = GF_SG_VRML_SFINT32;
16652 2 : info->far_ptr = & ((M_BAP *) node)->sacroiliac_torsion;
16653 2 : return GF_OK;
16654 2 : case 2:
16655 2 : info->name = "sacroiliac_roll";
16656 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16657 2 : info->fieldType = GF_SG_VRML_SFINT32;
16658 2 : info->far_ptr = & ((M_BAP *) node)->sacroiliac_roll;
16659 2 : return GF_OK;
16660 2 : case 3:
16661 2 : info->name = "l_hip_flexion";
16662 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16663 2 : info->fieldType = GF_SG_VRML_SFINT32;
16664 2 : info->far_ptr = & ((M_BAP *) node)->l_hip_flexion;
16665 2 : return GF_OK;
16666 2 : case 4:
16667 2 : info->name = "r_hip_flexion";
16668 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16669 2 : info->fieldType = GF_SG_VRML_SFINT32;
16670 2 : info->far_ptr = & ((M_BAP *) node)->r_hip_flexion;
16671 2 : return GF_OK;
16672 2 : case 5:
16673 2 : info->name = "l_hip_abduct";
16674 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16675 2 : info->fieldType = GF_SG_VRML_SFINT32;
16676 2 : info->far_ptr = & ((M_BAP *) node)->l_hip_abduct;
16677 2 : return GF_OK;
16678 2 : case 6:
16679 2 : info->name = "r_hip_abduct";
16680 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16681 2 : info->fieldType = GF_SG_VRML_SFINT32;
16682 2 : info->far_ptr = & ((M_BAP *) node)->r_hip_abduct;
16683 2 : return GF_OK;
16684 2 : case 7:
16685 2 : info->name = "l_hip_twisting";
16686 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16687 2 : info->fieldType = GF_SG_VRML_SFINT32;
16688 2 : info->far_ptr = & ((M_BAP *) node)->l_hip_twisting;
16689 2 : return GF_OK;
16690 2 : case 8:
16691 2 : info->name = "r_hip_twisting";
16692 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16693 2 : info->fieldType = GF_SG_VRML_SFINT32;
16694 2 : info->far_ptr = & ((M_BAP *) node)->r_hip_twisting;
16695 2 : return GF_OK;
16696 2 : case 9:
16697 2 : info->name = "l_knee_flexion";
16698 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16699 2 : info->fieldType = GF_SG_VRML_SFINT32;
16700 2 : info->far_ptr = & ((M_BAP *) node)->l_knee_flexion;
16701 2 : return GF_OK;
16702 2 : case 10:
16703 2 : info->name = "r_knee_flexion";
16704 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16705 2 : info->fieldType = GF_SG_VRML_SFINT32;
16706 2 : info->far_ptr = & ((M_BAP *) node)->r_knee_flexion;
16707 2 : return GF_OK;
16708 2 : case 11:
16709 2 : info->name = "l_knee_twisting";
16710 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16711 2 : info->fieldType = GF_SG_VRML_SFINT32;
16712 2 : info->far_ptr = & ((M_BAP *) node)->l_knee_twisting;
16713 2 : return GF_OK;
16714 2 : case 12:
16715 2 : info->name = "r_knee_twisting";
16716 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16717 2 : info->fieldType = GF_SG_VRML_SFINT32;
16718 2 : info->far_ptr = & ((M_BAP *) node)->r_knee_twisting;
16719 2 : return GF_OK;
16720 2 : case 13:
16721 2 : info->name = "l_ankle_flexion";
16722 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16723 2 : info->fieldType = GF_SG_VRML_SFINT32;
16724 2 : info->far_ptr = & ((M_BAP *) node)->l_ankle_flexion;
16725 2 : return GF_OK;
16726 2 : case 14:
16727 2 : info->name = "r_ankle_flexion";
16728 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16729 2 : info->fieldType = GF_SG_VRML_SFINT32;
16730 2 : info->far_ptr = & ((M_BAP *) node)->r_ankle_flexion;
16731 2 : return GF_OK;
16732 2 : case 15:
16733 2 : info->name = "l_ankle_twisting";
16734 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16735 2 : info->fieldType = GF_SG_VRML_SFINT32;
16736 2 : info->far_ptr = & ((M_BAP *) node)->l_ankle_twisting;
16737 2 : return GF_OK;
16738 2 : case 16:
16739 2 : info->name = "r_ankle_twisting";
16740 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16741 2 : info->fieldType = GF_SG_VRML_SFINT32;
16742 2 : info->far_ptr = & ((M_BAP *) node)->r_ankle_twisting;
16743 2 : return GF_OK;
16744 2 : case 17:
16745 2 : info->name = "l_subtalar_flexion";
16746 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16747 2 : info->fieldType = GF_SG_VRML_SFINT32;
16748 2 : info->far_ptr = & ((M_BAP *) node)->l_subtalar_flexion;
16749 2 : return GF_OK;
16750 2 : case 18:
16751 2 : info->name = "r_subtalar_flexion";
16752 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16753 2 : info->fieldType = GF_SG_VRML_SFINT32;
16754 2 : info->far_ptr = & ((M_BAP *) node)->r_subtalar_flexion;
16755 2 : return GF_OK;
16756 2 : case 19:
16757 2 : info->name = "l_midtarsal_flexion";
16758 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16759 2 : info->fieldType = GF_SG_VRML_SFINT32;
16760 2 : info->far_ptr = & ((M_BAP *) node)->l_midtarsal_flexion;
16761 2 : return GF_OK;
16762 2 : case 20:
16763 2 : info->name = "r_midtarsal_flexion";
16764 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16765 2 : info->fieldType = GF_SG_VRML_SFINT32;
16766 2 : info->far_ptr = & ((M_BAP *) node)->r_midtarsal_flexion;
16767 2 : return GF_OK;
16768 2 : case 21:
16769 2 : info->name = "l_metatarsal_flexion";
16770 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16771 2 : info->fieldType = GF_SG_VRML_SFINT32;
16772 2 : info->far_ptr = & ((M_BAP *) node)->l_metatarsal_flexion;
16773 2 : return GF_OK;
16774 2 : case 22:
16775 2 : info->name = "r_metatarsal_flexion";
16776 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16777 2 : info->fieldType = GF_SG_VRML_SFINT32;
16778 2 : info->far_ptr = & ((M_BAP *) node)->r_metatarsal_flexion;
16779 2 : return GF_OK;
16780 2 : case 23:
16781 2 : info->name = "l_sternoclavicular_abduct";
16782 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16783 2 : info->fieldType = GF_SG_VRML_SFINT32;
16784 2 : info->far_ptr = & ((M_BAP *) node)->l_sternoclavicular_abduct;
16785 2 : return GF_OK;
16786 2 : case 24:
16787 2 : info->name = "r_sternoclavicular_abduct";
16788 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16789 2 : info->fieldType = GF_SG_VRML_SFINT32;
16790 2 : info->far_ptr = & ((M_BAP *) node)->r_sternoclavicular_abduct;
16791 2 : return GF_OK;
16792 2 : case 25:
16793 2 : info->name = "l_sternoclavicular_rotate";
16794 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16795 2 : info->fieldType = GF_SG_VRML_SFINT32;
16796 2 : info->far_ptr = & ((M_BAP *) node)->l_sternoclavicular_rotate;
16797 2 : return GF_OK;
16798 2 : case 26:
16799 2 : info->name = "r_sternoclavicular_rotate";
16800 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16801 2 : info->fieldType = GF_SG_VRML_SFINT32;
16802 2 : info->far_ptr = & ((M_BAP *) node)->r_sternoclavicular_rotate;
16803 2 : return GF_OK;
16804 2 : case 27:
16805 2 : info->name = "l_acromioclavicular_abduct";
16806 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16807 2 : info->fieldType = GF_SG_VRML_SFINT32;
16808 2 : info->far_ptr = & ((M_BAP *) node)->l_acromioclavicular_abduct;
16809 2 : return GF_OK;
16810 2 : case 28:
16811 2 : info->name = "r_acromioclavicular_abduct";
16812 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16813 2 : info->fieldType = GF_SG_VRML_SFINT32;
16814 2 : info->far_ptr = & ((M_BAP *) node)->r_acromioclavicular_abduct;
16815 2 : return GF_OK;
16816 2 : case 29:
16817 2 : info->name = "l_acromioclavicular_rotate";
16818 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16819 2 : info->fieldType = GF_SG_VRML_SFINT32;
16820 2 : info->far_ptr = & ((M_BAP *) node)->l_acromioclavicular_rotate;
16821 2 : return GF_OK;
16822 2 : case 30:
16823 2 : info->name = "r_acromioclavicular_rotate";
16824 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16825 2 : info->fieldType = GF_SG_VRML_SFINT32;
16826 2 : info->far_ptr = & ((M_BAP *) node)->r_acromioclavicular_rotate;
16827 2 : return GF_OK;
16828 2 : case 31:
16829 2 : info->name = "l_shoulder_flexion";
16830 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16831 2 : info->fieldType = GF_SG_VRML_SFINT32;
16832 2 : info->far_ptr = & ((M_BAP *) node)->l_shoulder_flexion;
16833 2 : return GF_OK;
16834 2 : case 32:
16835 2 : info->name = "r_shoulder_flexion";
16836 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16837 2 : info->fieldType = GF_SG_VRML_SFINT32;
16838 2 : info->far_ptr = & ((M_BAP *) node)->r_shoulder_flexion;
16839 2 : return GF_OK;
16840 2 : case 33:
16841 2 : info->name = "l_shoulder_abduct";
16842 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16843 2 : info->fieldType = GF_SG_VRML_SFINT32;
16844 2 : info->far_ptr = & ((M_BAP *) node)->l_shoulder_abduct;
16845 2 : return GF_OK;
16846 2 : case 34:
16847 2 : info->name = "r_shoulder_abduct";
16848 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16849 2 : info->fieldType = GF_SG_VRML_SFINT32;
16850 2 : info->far_ptr = & ((M_BAP *) node)->r_shoulder_abduct;
16851 2 : return GF_OK;
16852 2 : case 35:
16853 2 : info->name = "l_shoulder_twisting";
16854 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16855 2 : info->fieldType = GF_SG_VRML_SFINT32;
16856 2 : info->far_ptr = & ((M_BAP *) node)->l_shoulder_twisting;
16857 2 : return GF_OK;
16858 2 : case 36:
16859 2 : info->name = "r_shoulder_twisting";
16860 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16861 2 : info->fieldType = GF_SG_VRML_SFINT32;
16862 2 : info->far_ptr = & ((M_BAP *) node)->r_shoulder_twisting;
16863 2 : return GF_OK;
16864 2 : case 37:
16865 2 : info->name = "l_elbow_flexion";
16866 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16867 2 : info->fieldType = GF_SG_VRML_SFINT32;
16868 2 : info->far_ptr = & ((M_BAP *) node)->l_elbow_flexion;
16869 2 : return GF_OK;
16870 2 : case 38:
16871 2 : info->name = "r_elbow_flexion";
16872 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16873 2 : info->fieldType = GF_SG_VRML_SFINT32;
16874 2 : info->far_ptr = & ((M_BAP *) node)->r_elbow_flexion;
16875 2 : return GF_OK;
16876 2 : case 39:
16877 2 : info->name = "l_elbow_twisting";
16878 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16879 2 : info->fieldType = GF_SG_VRML_SFINT32;
16880 2 : info->far_ptr = & ((M_BAP *) node)->l_elbow_twisting;
16881 2 : return GF_OK;
16882 2 : case 40:
16883 2 : info->name = "r_elbow_twisting";
16884 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16885 2 : info->fieldType = GF_SG_VRML_SFINT32;
16886 2 : info->far_ptr = & ((M_BAP *) node)->r_elbow_twisting;
16887 2 : return GF_OK;
16888 2 : case 41:
16889 2 : info->name = "l_wrist_flexion";
16890 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16891 2 : info->fieldType = GF_SG_VRML_SFINT32;
16892 2 : info->far_ptr = & ((M_BAP *) node)->l_wrist_flexion;
16893 2 : return GF_OK;
16894 2 : case 42:
16895 2 : info->name = "r_wrist_flexion";
16896 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16897 2 : info->fieldType = GF_SG_VRML_SFINT32;
16898 2 : info->far_ptr = & ((M_BAP *) node)->r_wrist_flexion;
16899 2 : return GF_OK;
16900 2 : case 43:
16901 2 : info->name = "l_wrist_pivot";
16902 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16903 2 : info->fieldType = GF_SG_VRML_SFINT32;
16904 2 : info->far_ptr = & ((M_BAP *) node)->l_wrist_pivot;
16905 2 : return GF_OK;
16906 2 : case 44:
16907 2 : info->name = "r_wrist_pivot";
16908 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16909 2 : info->fieldType = GF_SG_VRML_SFINT32;
16910 2 : info->far_ptr = & ((M_BAP *) node)->r_wrist_pivot;
16911 2 : return GF_OK;
16912 2 : case 45:
16913 2 : info->name = "l_wrist_twisting";
16914 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16915 2 : info->fieldType = GF_SG_VRML_SFINT32;
16916 2 : info->far_ptr = & ((M_BAP *) node)->l_wrist_twisting;
16917 2 : return GF_OK;
16918 2 : case 46:
16919 2 : info->name = "r_wrist_twisting";
16920 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16921 2 : info->fieldType = GF_SG_VRML_SFINT32;
16922 2 : info->far_ptr = & ((M_BAP *) node)->r_wrist_twisting;
16923 2 : return GF_OK;
16924 2 : case 47:
16925 2 : info->name = "skullbase_roll";
16926 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16927 2 : info->fieldType = GF_SG_VRML_SFINT32;
16928 2 : info->far_ptr = & ((M_BAP *) node)->skullbase_roll;
16929 2 : return GF_OK;
16930 2 : case 48:
16931 2 : info->name = "skullbase_torsion";
16932 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16933 2 : info->fieldType = GF_SG_VRML_SFINT32;
16934 2 : info->far_ptr = & ((M_BAP *) node)->skullbase_torsion;
16935 2 : return GF_OK;
16936 2 : case 49:
16937 2 : info->name = "skullbase_tilt";
16938 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16939 2 : info->fieldType = GF_SG_VRML_SFINT32;
16940 2 : info->far_ptr = & ((M_BAP *) node)->skullbase_tilt;
16941 2 : return GF_OK;
16942 2 : case 50:
16943 2 : info->name = "vc1roll";
16944 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16945 2 : info->fieldType = GF_SG_VRML_SFINT32;
16946 2 : info->far_ptr = & ((M_BAP *) node)->vc1roll;
16947 2 : return GF_OK;
16948 2 : case 51:
16949 2 : info->name = "vc1torsion";
16950 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16951 2 : info->fieldType = GF_SG_VRML_SFINT32;
16952 2 : info->far_ptr = & ((M_BAP *) node)->vc1torsion;
16953 2 : return GF_OK;
16954 2 : case 52:
16955 2 : info->name = "vc1tilt";
16956 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16957 2 : info->fieldType = GF_SG_VRML_SFINT32;
16958 2 : info->far_ptr = & ((M_BAP *) node)->vc1tilt;
16959 2 : return GF_OK;
16960 2 : case 53:
16961 2 : info->name = "vc2roll";
16962 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16963 2 : info->fieldType = GF_SG_VRML_SFINT32;
16964 2 : info->far_ptr = & ((M_BAP *) node)->vc2roll;
16965 2 : return GF_OK;
16966 2 : case 54:
16967 2 : info->name = "vc2torsion";
16968 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16969 2 : info->fieldType = GF_SG_VRML_SFINT32;
16970 2 : info->far_ptr = & ((M_BAP *) node)->vc2torsion;
16971 2 : return GF_OK;
16972 2 : case 55:
16973 2 : info->name = "vc2tilt";
16974 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16975 2 : info->fieldType = GF_SG_VRML_SFINT32;
16976 2 : info->far_ptr = & ((M_BAP *) node)->vc2tilt;
16977 2 : return GF_OK;
16978 2 : case 56:
16979 2 : info->name = "vc3roll";
16980 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16981 2 : info->fieldType = GF_SG_VRML_SFINT32;
16982 2 : info->far_ptr = & ((M_BAP *) node)->vc3roll;
16983 2 : return GF_OK;
16984 2 : case 57:
16985 2 : info->name = "vc3torsion";
16986 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16987 2 : info->fieldType = GF_SG_VRML_SFINT32;
16988 2 : info->far_ptr = & ((M_BAP *) node)->vc3torsion;
16989 2 : return GF_OK;
16990 2 : case 58:
16991 2 : info->name = "vc3tilt";
16992 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16993 2 : info->fieldType = GF_SG_VRML_SFINT32;
16994 2 : info->far_ptr = & ((M_BAP *) node)->vc3tilt;
16995 2 : return GF_OK;
16996 2 : case 59:
16997 2 : info->name = "vc4roll";
16998 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
16999 2 : info->fieldType = GF_SG_VRML_SFINT32;
17000 2 : info->far_ptr = & ((M_BAP *) node)->vc4roll;
17001 2 : return GF_OK;
17002 2 : case 60:
17003 2 : info->name = "vc4torsion";
17004 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17005 2 : info->fieldType = GF_SG_VRML_SFINT32;
17006 2 : info->far_ptr = & ((M_BAP *) node)->vc4torsion;
17007 2 : return GF_OK;
17008 2 : case 61:
17009 2 : info->name = "vc4tilt";
17010 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17011 2 : info->fieldType = GF_SG_VRML_SFINT32;
17012 2 : info->far_ptr = & ((M_BAP *) node)->vc4tilt;
17013 2 : return GF_OK;
17014 2 : case 62:
17015 2 : info->name = "vc5roll";
17016 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17017 2 : info->fieldType = GF_SG_VRML_SFINT32;
17018 2 : info->far_ptr = & ((M_BAP *) node)->vc5roll;
17019 2 : return GF_OK;
17020 2 : case 63:
17021 2 : info->name = "vc5torsion";
17022 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17023 2 : info->fieldType = GF_SG_VRML_SFINT32;
17024 2 : info->far_ptr = & ((M_BAP *) node)->vc5torsion;
17025 2 : return GF_OK;
17026 2 : case 64:
17027 2 : info->name = "vc5tilt";
17028 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17029 2 : info->fieldType = GF_SG_VRML_SFINT32;
17030 2 : info->far_ptr = & ((M_BAP *) node)->vc5tilt;
17031 2 : return GF_OK;
17032 2 : case 65:
17033 2 : info->name = "vc6roll";
17034 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17035 2 : info->fieldType = GF_SG_VRML_SFINT32;
17036 2 : info->far_ptr = & ((M_BAP *) node)->vc6roll;
17037 2 : return GF_OK;
17038 2 : case 66:
17039 2 : info->name = "vc6torsion";
17040 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17041 2 : info->fieldType = GF_SG_VRML_SFINT32;
17042 2 : info->far_ptr = & ((M_BAP *) node)->vc6torsion;
17043 2 : return GF_OK;
17044 2 : case 67:
17045 2 : info->name = "vc6tilt";
17046 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17047 2 : info->fieldType = GF_SG_VRML_SFINT32;
17048 2 : info->far_ptr = & ((M_BAP *) node)->vc6tilt;
17049 2 : return GF_OK;
17050 2 : case 68:
17051 2 : info->name = "vc7roll";
17052 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17053 2 : info->fieldType = GF_SG_VRML_SFINT32;
17054 2 : info->far_ptr = & ((M_BAP *) node)->vc7roll;
17055 2 : return GF_OK;
17056 2 : case 69:
17057 2 : info->name = "vc7torsion";
17058 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17059 2 : info->fieldType = GF_SG_VRML_SFINT32;
17060 2 : info->far_ptr = & ((M_BAP *) node)->vc7torsion;
17061 2 : return GF_OK;
17062 2 : case 70:
17063 2 : info->name = "vc7tilt";
17064 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17065 2 : info->fieldType = GF_SG_VRML_SFINT32;
17066 2 : info->far_ptr = & ((M_BAP *) node)->vc7tilt;
17067 2 : return GF_OK;
17068 2 : case 71:
17069 2 : info->name = "vt1roll";
17070 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17071 2 : info->fieldType = GF_SG_VRML_SFINT32;
17072 2 : info->far_ptr = & ((M_BAP *) node)->vt1roll;
17073 2 : return GF_OK;
17074 2 : case 72:
17075 2 : info->name = "vt1torsion";
17076 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17077 2 : info->fieldType = GF_SG_VRML_SFINT32;
17078 2 : info->far_ptr = & ((M_BAP *) node)->vt1torsion;
17079 2 : return GF_OK;
17080 2 : case 73:
17081 2 : info->name = "vt1tilt";
17082 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17083 2 : info->fieldType = GF_SG_VRML_SFINT32;
17084 2 : info->far_ptr = & ((M_BAP *) node)->vt1tilt;
17085 2 : return GF_OK;
17086 2 : case 74:
17087 2 : info->name = "vt2roll";
17088 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17089 2 : info->fieldType = GF_SG_VRML_SFINT32;
17090 2 : info->far_ptr = & ((M_BAP *) node)->vt2roll;
17091 2 : return GF_OK;
17092 2 : case 75:
17093 2 : info->name = "vt2torsion";
17094 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17095 2 : info->fieldType = GF_SG_VRML_SFINT32;
17096 2 : info->far_ptr = & ((M_BAP *) node)->vt2torsion;
17097 2 : return GF_OK;
17098 2 : case 76:
17099 2 : info->name = "vt2tilt";
17100 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17101 2 : info->fieldType = GF_SG_VRML_SFINT32;
17102 2 : info->far_ptr = & ((M_BAP *) node)->vt2tilt;
17103 2 : return GF_OK;
17104 2 : case 77:
17105 2 : info->name = "vt3roll";
17106 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17107 2 : info->fieldType = GF_SG_VRML_SFINT32;
17108 2 : info->far_ptr = & ((M_BAP *) node)->vt3roll;
17109 2 : return GF_OK;
17110 2 : case 78:
17111 2 : info->name = "vt3torsion";
17112 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17113 2 : info->fieldType = GF_SG_VRML_SFINT32;
17114 2 : info->far_ptr = & ((M_BAP *) node)->vt3torsion;
17115 2 : return GF_OK;
17116 2 : case 79:
17117 2 : info->name = "vt3tilt";
17118 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17119 2 : info->fieldType = GF_SG_VRML_SFINT32;
17120 2 : info->far_ptr = & ((M_BAP *) node)->vt3tilt;
17121 2 : return GF_OK;
17122 2 : case 80:
17123 2 : info->name = "vt4roll";
17124 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17125 2 : info->fieldType = GF_SG_VRML_SFINT32;
17126 2 : info->far_ptr = & ((M_BAP *) node)->vt4roll;
17127 2 : return GF_OK;
17128 2 : case 81:
17129 2 : info->name = "vt4torsion";
17130 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17131 2 : info->fieldType = GF_SG_VRML_SFINT32;
17132 2 : info->far_ptr = & ((M_BAP *) node)->vt4torsion;
17133 2 : return GF_OK;
17134 2 : case 82:
17135 2 : info->name = "vt4tilt";
17136 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17137 2 : info->fieldType = GF_SG_VRML_SFINT32;
17138 2 : info->far_ptr = & ((M_BAP *) node)->vt4tilt;
17139 2 : return GF_OK;
17140 2 : case 83:
17141 2 : info->name = "vt5roll";
17142 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17143 2 : info->fieldType = GF_SG_VRML_SFINT32;
17144 2 : info->far_ptr = & ((M_BAP *) node)->vt5roll;
17145 2 : return GF_OK;
17146 2 : case 84:
17147 2 : info->name = "vt5torsion";
17148 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17149 2 : info->fieldType = GF_SG_VRML_SFINT32;
17150 2 : info->far_ptr = & ((M_BAP *) node)->vt5torsion;
17151 2 : return GF_OK;
17152 2 : case 85:
17153 2 : info->name = "vt5tilt";
17154 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17155 2 : info->fieldType = GF_SG_VRML_SFINT32;
17156 2 : info->far_ptr = & ((M_BAP *) node)->vt5tilt;
17157 2 : return GF_OK;
17158 2 : case 86:
17159 2 : info->name = "vt6roll";
17160 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17161 2 : info->fieldType = GF_SG_VRML_SFINT32;
17162 2 : info->far_ptr = & ((M_BAP *) node)->vt6roll;
17163 2 : return GF_OK;
17164 2 : case 87:
17165 2 : info->name = "vt6torsion";
17166 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17167 2 : info->fieldType = GF_SG_VRML_SFINT32;
17168 2 : info->far_ptr = & ((M_BAP *) node)->vt6torsion;
17169 2 : return GF_OK;
17170 2 : case 88:
17171 2 : info->name = "vt6tilt";
17172 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17173 2 : info->fieldType = GF_SG_VRML_SFINT32;
17174 2 : info->far_ptr = & ((M_BAP *) node)->vt6tilt;
17175 2 : return GF_OK;
17176 2 : case 89:
17177 2 : info->name = "vt7roll";
17178 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17179 2 : info->fieldType = GF_SG_VRML_SFINT32;
17180 2 : info->far_ptr = & ((M_BAP *) node)->vt7roll;
17181 2 : return GF_OK;
17182 2 : case 90:
17183 2 : info->name = "vt7torsion";
17184 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17185 2 : info->fieldType = GF_SG_VRML_SFINT32;
17186 2 : info->far_ptr = & ((M_BAP *) node)->vt7torsion;
17187 2 : return GF_OK;
17188 2 : case 91:
17189 2 : info->name = "vt7tilt";
17190 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17191 2 : info->fieldType = GF_SG_VRML_SFINT32;
17192 2 : info->far_ptr = & ((M_BAP *) node)->vt7tilt;
17193 2 : return GF_OK;
17194 2 : case 92:
17195 2 : info->name = "vt8roll";
17196 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17197 2 : info->fieldType = GF_SG_VRML_SFINT32;
17198 2 : info->far_ptr = & ((M_BAP *) node)->vt8roll;
17199 2 : return GF_OK;
17200 2 : case 93:
17201 2 : info->name = "vt8torsion";
17202 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17203 2 : info->fieldType = GF_SG_VRML_SFINT32;
17204 2 : info->far_ptr = & ((M_BAP *) node)->vt8torsion;
17205 2 : return GF_OK;
17206 2 : case 94:
17207 2 : info->name = "vt8tilt";
17208 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17209 2 : info->fieldType = GF_SG_VRML_SFINT32;
17210 2 : info->far_ptr = & ((M_BAP *) node)->vt8tilt;
17211 2 : return GF_OK;
17212 2 : case 95:
17213 2 : info->name = "vt9roll";
17214 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17215 2 : info->fieldType = GF_SG_VRML_SFINT32;
17216 2 : info->far_ptr = & ((M_BAP *) node)->vt9roll;
17217 2 : return GF_OK;
17218 2 : case 96:
17219 2 : info->name = "vt9torsion";
17220 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17221 2 : info->fieldType = GF_SG_VRML_SFINT32;
17222 2 : info->far_ptr = & ((M_BAP *) node)->vt9torsion;
17223 2 : return GF_OK;
17224 2 : case 97:
17225 2 : info->name = "vt9tilt";
17226 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17227 2 : info->fieldType = GF_SG_VRML_SFINT32;
17228 2 : info->far_ptr = & ((M_BAP *) node)->vt9tilt;
17229 2 : return GF_OK;
17230 2 : case 98:
17231 2 : info->name = "vt10roll";
17232 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17233 2 : info->fieldType = GF_SG_VRML_SFINT32;
17234 2 : info->far_ptr = & ((M_BAP *) node)->vt10roll;
17235 2 : return GF_OK;
17236 2 : case 99:
17237 2 : info->name = "vt10torsion";
17238 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17239 2 : info->fieldType = GF_SG_VRML_SFINT32;
17240 2 : info->far_ptr = & ((M_BAP *) node)->vt10torsion;
17241 2 : return GF_OK;
17242 2 : case 100:
17243 2 : info->name = "vt10tilt";
17244 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17245 2 : info->fieldType = GF_SG_VRML_SFINT32;
17246 2 : info->far_ptr = & ((M_BAP *) node)->vt10tilt;
17247 2 : return GF_OK;
17248 2 : case 101:
17249 2 : info->name = "vt11roll";
17250 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17251 2 : info->fieldType = GF_SG_VRML_SFINT32;
17252 2 : info->far_ptr = & ((M_BAP *) node)->vt11roll;
17253 2 : return GF_OK;
17254 2 : case 102:
17255 2 : info->name = "vt11torsion";
17256 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17257 2 : info->fieldType = GF_SG_VRML_SFINT32;
17258 2 : info->far_ptr = & ((M_BAP *) node)->vt11torsion;
17259 2 : return GF_OK;
17260 2 : case 103:
17261 2 : info->name = "vt11tilt";
17262 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17263 2 : info->fieldType = GF_SG_VRML_SFINT32;
17264 2 : info->far_ptr = & ((M_BAP *) node)->vt11tilt;
17265 2 : return GF_OK;
17266 2 : case 104:
17267 2 : info->name = "vt12roll";
17268 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17269 2 : info->fieldType = GF_SG_VRML_SFINT32;
17270 2 : info->far_ptr = & ((M_BAP *) node)->vt12roll;
17271 2 : return GF_OK;
17272 2 : case 105:
17273 2 : info->name = "vt12torsion";
17274 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17275 2 : info->fieldType = GF_SG_VRML_SFINT32;
17276 2 : info->far_ptr = & ((M_BAP *) node)->vt12torsion;
17277 2 : return GF_OK;
17278 2 : case 106:
17279 2 : info->name = "vt12tilt";
17280 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17281 2 : info->fieldType = GF_SG_VRML_SFINT32;
17282 2 : info->far_ptr = & ((M_BAP *) node)->vt12tilt;
17283 2 : return GF_OK;
17284 2 : case 107:
17285 2 : info->name = "vl1roll";
17286 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17287 2 : info->fieldType = GF_SG_VRML_SFINT32;
17288 2 : info->far_ptr = & ((M_BAP *) node)->vl1roll;
17289 2 : return GF_OK;
17290 2 : case 108:
17291 2 : info->name = "vl1torsion";
17292 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17293 2 : info->fieldType = GF_SG_VRML_SFINT32;
17294 2 : info->far_ptr = & ((M_BAP *) node)->vl1torsion;
17295 2 : return GF_OK;
17296 2 : case 109:
17297 2 : info->name = "vl1tilt";
17298 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17299 2 : info->fieldType = GF_SG_VRML_SFINT32;
17300 2 : info->far_ptr = & ((M_BAP *) node)->vl1tilt;
17301 2 : return GF_OK;
17302 2 : case 110:
17303 2 : info->name = "vl2roll";
17304 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17305 2 : info->fieldType = GF_SG_VRML_SFINT32;
17306 2 : info->far_ptr = & ((M_BAP *) node)->vl2roll;
17307 2 : return GF_OK;
17308 2 : case 111:
17309 2 : info->name = "vl2torsion";
17310 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17311 2 : info->fieldType = GF_SG_VRML_SFINT32;
17312 2 : info->far_ptr = & ((M_BAP *) node)->vl2torsion;
17313 2 : return GF_OK;
17314 2 : case 112:
17315 2 : info->name = "vl2tilt";
17316 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17317 2 : info->fieldType = GF_SG_VRML_SFINT32;
17318 2 : info->far_ptr = & ((M_BAP *) node)->vl2tilt;
17319 2 : return GF_OK;
17320 2 : case 113:
17321 2 : info->name = "vl3roll";
17322 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17323 2 : info->fieldType = GF_SG_VRML_SFINT32;
17324 2 : info->far_ptr = & ((M_BAP *) node)->vl3roll;
17325 2 : return GF_OK;
17326 2 : case 114:
17327 2 : info->name = "vl3torsion";
17328 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17329 2 : info->fieldType = GF_SG_VRML_SFINT32;
17330 2 : info->far_ptr = & ((M_BAP *) node)->vl3torsion;
17331 2 : return GF_OK;
17332 2 : case 115:
17333 2 : info->name = "vl3tilt";
17334 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17335 2 : info->fieldType = GF_SG_VRML_SFINT32;
17336 2 : info->far_ptr = & ((M_BAP *) node)->vl3tilt;
17337 2 : return GF_OK;
17338 2 : case 116:
17339 2 : info->name = "vl4roll";
17340 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17341 2 : info->fieldType = GF_SG_VRML_SFINT32;
17342 2 : info->far_ptr = & ((M_BAP *) node)->vl4roll;
17343 2 : return GF_OK;
17344 2 : case 117:
17345 2 : info->name = "vl4torsion";
17346 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17347 2 : info->fieldType = GF_SG_VRML_SFINT32;
17348 2 : info->far_ptr = & ((M_BAP *) node)->vl4torsion;
17349 2 : return GF_OK;
17350 2 : case 118:
17351 2 : info->name = "vl4tilt";
17352 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17353 2 : info->fieldType = GF_SG_VRML_SFINT32;
17354 2 : info->far_ptr = & ((M_BAP *) node)->vl4tilt;
17355 2 : return GF_OK;
17356 2 : case 119:
17357 2 : info->name = "vl5roll";
17358 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17359 2 : info->fieldType = GF_SG_VRML_SFINT32;
17360 2 : info->far_ptr = & ((M_BAP *) node)->vl5roll;
17361 2 : return GF_OK;
17362 2 : case 120:
17363 2 : info->name = "vl5torsion";
17364 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17365 2 : info->fieldType = GF_SG_VRML_SFINT32;
17366 2 : info->far_ptr = & ((M_BAP *) node)->vl5torsion;
17367 2 : return GF_OK;
17368 2 : case 121:
17369 2 : info->name = "vl5tilt";
17370 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17371 2 : info->fieldType = GF_SG_VRML_SFINT32;
17372 2 : info->far_ptr = & ((M_BAP *) node)->vl5tilt;
17373 2 : return GF_OK;
17374 2 : case 122:
17375 2 : info->name = "l_pinky0_flexion";
17376 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17377 2 : info->fieldType = GF_SG_VRML_SFINT32;
17378 2 : info->far_ptr = & ((M_BAP *) node)->l_pinky0_flexion;
17379 2 : return GF_OK;
17380 2 : case 123:
17381 2 : info->name = "r_pinky0_flexion";
17382 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17383 2 : info->fieldType = GF_SG_VRML_SFINT32;
17384 2 : info->far_ptr = & ((M_BAP *) node)->r_pinky0_flexion;
17385 2 : return GF_OK;
17386 2 : case 124:
17387 2 : info->name = "l_pinky1_flexion";
17388 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17389 2 : info->fieldType = GF_SG_VRML_SFINT32;
17390 2 : info->far_ptr = & ((M_BAP *) node)->l_pinky1_flexion;
17391 2 : return GF_OK;
17392 2 : case 125:
17393 2 : info->name = "r_pinky1_flexion";
17394 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17395 2 : info->fieldType = GF_SG_VRML_SFINT32;
17396 2 : info->far_ptr = & ((M_BAP *) node)->r_pinky1_flexion;
17397 2 : return GF_OK;
17398 2 : case 126:
17399 2 : info->name = "l_pinky1_pivot";
17400 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17401 2 : info->fieldType = GF_SG_VRML_SFINT32;
17402 2 : info->far_ptr = & ((M_BAP *) node)->l_pinky1_pivot;
17403 2 : return GF_OK;
17404 2 : case 127:
17405 2 : info->name = "r_pinky1_pivot";
17406 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17407 2 : info->fieldType = GF_SG_VRML_SFINT32;
17408 2 : info->far_ptr = & ((M_BAP *) node)->r_pinky1_pivot;
17409 2 : return GF_OK;
17410 2 : case 128:
17411 2 : info->name = "l_pinky1_twisting";
17412 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17413 2 : info->fieldType = GF_SG_VRML_SFINT32;
17414 2 : info->far_ptr = & ((M_BAP *) node)->l_pinky1_twisting;
17415 2 : return GF_OK;
17416 2 : case 129:
17417 2 : info->name = "r_pinky1_twisting";
17418 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17419 2 : info->fieldType = GF_SG_VRML_SFINT32;
17420 2 : info->far_ptr = & ((M_BAP *) node)->r_pinky1_twisting;
17421 2 : return GF_OK;
17422 2 : case 130:
17423 2 : info->name = "l_pinky2_flexion";
17424 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17425 2 : info->fieldType = GF_SG_VRML_SFINT32;
17426 2 : info->far_ptr = & ((M_BAP *) node)->l_pinky2_flexion;
17427 2 : return GF_OK;
17428 2 : case 131:
17429 2 : info->name = "r_pinky2_flexion";
17430 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17431 2 : info->fieldType = GF_SG_VRML_SFINT32;
17432 2 : info->far_ptr = & ((M_BAP *) node)->r_pinky2_flexion;
17433 2 : return GF_OK;
17434 2 : case 132:
17435 2 : info->name = "l_pinky3_flexion";
17436 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17437 2 : info->fieldType = GF_SG_VRML_SFINT32;
17438 2 : info->far_ptr = & ((M_BAP *) node)->l_pinky3_flexion;
17439 2 : return GF_OK;
17440 2 : case 133:
17441 2 : info->name = "r_pinky3_flexion";
17442 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17443 2 : info->fieldType = GF_SG_VRML_SFINT32;
17444 2 : info->far_ptr = & ((M_BAP *) node)->r_pinky3_flexion;
17445 2 : return GF_OK;
17446 2 : case 134:
17447 2 : info->name = "l_ring0_flexion";
17448 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17449 2 : info->fieldType = GF_SG_VRML_SFINT32;
17450 2 : info->far_ptr = & ((M_BAP *) node)->l_ring0_flexion;
17451 2 : return GF_OK;
17452 2 : case 135:
17453 2 : info->name = "r_ring0_flexion";
17454 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17455 2 : info->fieldType = GF_SG_VRML_SFINT32;
17456 2 : info->far_ptr = & ((M_BAP *) node)->r_ring0_flexion;
17457 2 : return GF_OK;
17458 2 : case 136:
17459 2 : info->name = "l_ring1_flexion";
17460 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17461 2 : info->fieldType = GF_SG_VRML_SFINT32;
17462 2 : info->far_ptr = & ((M_BAP *) node)->l_ring1_flexion;
17463 2 : return GF_OK;
17464 2 : case 137:
17465 2 : info->name = "r_ring1_flexion";
17466 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17467 2 : info->fieldType = GF_SG_VRML_SFINT32;
17468 2 : info->far_ptr = & ((M_BAP *) node)->r_ring1_flexion;
17469 2 : return GF_OK;
17470 2 : case 138:
17471 2 : info->name = "l_ring1_pivot";
17472 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17473 2 : info->fieldType = GF_SG_VRML_SFINT32;
17474 2 : info->far_ptr = & ((M_BAP *) node)->l_ring1_pivot;
17475 2 : return GF_OK;
17476 2 : case 139:
17477 2 : info->name = "r_ring1_pivot";
17478 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17479 2 : info->fieldType = GF_SG_VRML_SFINT32;
17480 2 : info->far_ptr = & ((M_BAP *) node)->r_ring1_pivot;
17481 2 : return GF_OK;
17482 2 : case 140:
17483 2 : info->name = "l_ring1_twisting";
17484 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17485 2 : info->fieldType = GF_SG_VRML_SFINT32;
17486 2 : info->far_ptr = & ((M_BAP *) node)->l_ring1_twisting;
17487 2 : return GF_OK;
17488 2 : case 141:
17489 2 : info->name = "r_ring1_twisting";
17490 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17491 2 : info->fieldType = GF_SG_VRML_SFINT32;
17492 2 : info->far_ptr = & ((M_BAP *) node)->r_ring1_twisting;
17493 2 : return GF_OK;
17494 2 : case 142:
17495 2 : info->name = "l_ring2_flexion";
17496 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17497 2 : info->fieldType = GF_SG_VRML_SFINT32;
17498 2 : info->far_ptr = & ((M_BAP *) node)->l_ring2_flexion;
17499 2 : return GF_OK;
17500 2 : case 143:
17501 2 : info->name = "r_ring2_flexion";
17502 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17503 2 : info->fieldType = GF_SG_VRML_SFINT32;
17504 2 : info->far_ptr = & ((M_BAP *) node)->r_ring2_flexion;
17505 2 : return GF_OK;
17506 2 : case 144:
17507 2 : info->name = "l_ring3_flexion";
17508 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17509 2 : info->fieldType = GF_SG_VRML_SFINT32;
17510 2 : info->far_ptr = & ((M_BAP *) node)->l_ring3_flexion;
17511 2 : return GF_OK;
17512 2 : case 145:
17513 2 : info->name = "r_ring3_flexion";
17514 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17515 2 : info->fieldType = GF_SG_VRML_SFINT32;
17516 2 : info->far_ptr = & ((M_BAP *) node)->r_ring3_flexion;
17517 2 : return GF_OK;
17518 2 : case 146:
17519 2 : info->name = "l_middle0_flexion";
17520 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17521 2 : info->fieldType = GF_SG_VRML_SFINT32;
17522 2 : info->far_ptr = & ((M_BAP *) node)->l_middle0_flexion;
17523 2 : return GF_OK;
17524 2 : case 147:
17525 2 : info->name = "r_middle0_flexion";
17526 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17527 2 : info->fieldType = GF_SG_VRML_SFINT32;
17528 2 : info->far_ptr = & ((M_BAP *) node)->r_middle0_flexion;
17529 2 : return GF_OK;
17530 2 : case 148:
17531 2 : info->name = "l_middle1_flexion";
17532 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17533 2 : info->fieldType = GF_SG_VRML_SFINT32;
17534 2 : info->far_ptr = & ((M_BAP *) node)->l_middle1_flexion;
17535 2 : return GF_OK;
17536 2 : case 149:
17537 2 : info->name = "r_middle1_flexion";
17538 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17539 2 : info->fieldType = GF_SG_VRML_SFINT32;
17540 2 : info->far_ptr = & ((M_BAP *) node)->r_middle1_flexion;
17541 2 : return GF_OK;
17542 2 : case 150:
17543 2 : info->name = "l_middle1_pivot";
17544 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17545 2 : info->fieldType = GF_SG_VRML_SFINT32;
17546 2 : info->far_ptr = & ((M_BAP *) node)->l_middle1_pivot;
17547 2 : return GF_OK;
17548 2 : case 151:
17549 2 : info->name = "r_middle1_pivot";
17550 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17551 2 : info->fieldType = GF_SG_VRML_SFINT32;
17552 2 : info->far_ptr = & ((M_BAP *) node)->r_middle1_pivot;
17553 2 : return GF_OK;
17554 2 : case 152:
17555 2 : info->name = "l_middle1_twisting";
17556 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17557 2 : info->fieldType = GF_SG_VRML_SFINT32;
17558 2 : info->far_ptr = & ((M_BAP *) node)->l_middle1_twisting;
17559 2 : return GF_OK;
17560 2 : case 153:
17561 2 : info->name = "r_middle1_twisting";
17562 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17563 2 : info->fieldType = GF_SG_VRML_SFINT32;
17564 2 : info->far_ptr = & ((M_BAP *) node)->r_middle1_twisting;
17565 2 : return GF_OK;
17566 2 : case 154:
17567 2 : info->name = "l_middle2_flexion";
17568 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17569 2 : info->fieldType = GF_SG_VRML_SFINT32;
17570 2 : info->far_ptr = & ((M_BAP *) node)->l_middle2_flexion;
17571 2 : return GF_OK;
17572 2 : case 155:
17573 2 : info->name = "r_middle2_flexion";
17574 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17575 2 : info->fieldType = GF_SG_VRML_SFINT32;
17576 2 : info->far_ptr = & ((M_BAP *) node)->r_middle2_flexion;
17577 2 : return GF_OK;
17578 2 : case 156:
17579 2 : info->name = "l_middle3_flexion";
17580 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17581 2 : info->fieldType = GF_SG_VRML_SFINT32;
17582 2 : info->far_ptr = & ((M_BAP *) node)->l_middle3_flexion;
17583 2 : return GF_OK;
17584 2 : case 157:
17585 2 : info->name = "r_middle3_flexion";
17586 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17587 2 : info->fieldType = GF_SG_VRML_SFINT32;
17588 2 : info->far_ptr = & ((M_BAP *) node)->r_middle3_flexion;
17589 2 : return GF_OK;
17590 2 : case 158:
17591 2 : info->name = "l_index0_flexion";
17592 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17593 2 : info->fieldType = GF_SG_VRML_SFINT32;
17594 2 : info->far_ptr = & ((M_BAP *) node)->l_index0_flexion;
17595 2 : return GF_OK;
17596 2 : case 159:
17597 2 : info->name = "r_index0_flexion";
17598 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17599 2 : info->fieldType = GF_SG_VRML_SFINT32;
17600 2 : info->far_ptr = & ((M_BAP *) node)->r_index0_flexion;
17601 2 : return GF_OK;
17602 2 : case 160:
17603 2 : info->name = "l_index1_flexion";
17604 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17605 2 : info->fieldType = GF_SG_VRML_SFINT32;
17606 2 : info->far_ptr = & ((M_BAP *) node)->l_index1_flexion;
17607 2 : return GF_OK;
17608 2 : case 161:
17609 2 : info->name = "r_index1_flexion";
17610 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17611 2 : info->fieldType = GF_SG_VRML_SFINT32;
17612 2 : info->far_ptr = & ((M_BAP *) node)->r_index1_flexion;
17613 2 : return GF_OK;
17614 2 : case 162:
17615 2 : info->name = "l_index1_pivot";
17616 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17617 2 : info->fieldType = GF_SG_VRML_SFINT32;
17618 2 : info->far_ptr = & ((M_BAP *) node)->l_index1_pivot;
17619 2 : return GF_OK;
17620 2 : case 163:
17621 2 : info->name = "r_index1_pivot";
17622 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17623 2 : info->fieldType = GF_SG_VRML_SFINT32;
17624 2 : info->far_ptr = & ((M_BAP *) node)->r_index1_pivot;
17625 2 : return GF_OK;
17626 2 : case 164:
17627 2 : info->name = "l_index1_twisting";
17628 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17629 2 : info->fieldType = GF_SG_VRML_SFINT32;
17630 2 : info->far_ptr = & ((M_BAP *) node)->l_index1_twisting;
17631 2 : return GF_OK;
17632 2 : case 165:
17633 2 : info->name = "r_index1_twisting";
17634 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17635 2 : info->fieldType = GF_SG_VRML_SFINT32;
17636 2 : info->far_ptr = & ((M_BAP *) node)->r_index1_twisting;
17637 2 : return GF_OK;
17638 2 : case 166:
17639 2 : info->name = "l_index2_flexion";
17640 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17641 2 : info->fieldType = GF_SG_VRML_SFINT32;
17642 2 : info->far_ptr = & ((M_BAP *) node)->l_index2_flexion;
17643 2 : return GF_OK;
17644 2 : case 167:
17645 2 : info->name = "r_index2_flexion";
17646 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17647 2 : info->fieldType = GF_SG_VRML_SFINT32;
17648 2 : info->far_ptr = & ((M_BAP *) node)->r_index2_flexion;
17649 2 : return GF_OK;
17650 2 : case 168:
17651 2 : info->name = "l_index3_flexion";
17652 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17653 2 : info->fieldType = GF_SG_VRML_SFINT32;
17654 2 : info->far_ptr = & ((M_BAP *) node)->l_index3_flexion;
17655 2 : return GF_OK;
17656 2 : case 169:
17657 2 : info->name = "r_index3_flexion";
17658 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17659 2 : info->fieldType = GF_SG_VRML_SFINT32;
17660 2 : info->far_ptr = & ((M_BAP *) node)->r_index3_flexion;
17661 2 : return GF_OK;
17662 2 : case 170:
17663 2 : info->name = "l_thumb1_flexion";
17664 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17665 2 : info->fieldType = GF_SG_VRML_SFINT32;
17666 2 : info->far_ptr = & ((M_BAP *) node)->l_thumb1_flexion;
17667 2 : return GF_OK;
17668 2 : case 171:
17669 2 : info->name = "r_thumb1_flexion";
17670 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17671 2 : info->fieldType = GF_SG_VRML_SFINT32;
17672 2 : info->far_ptr = & ((M_BAP *) node)->r_thumb1_flexion;
17673 2 : return GF_OK;
17674 2 : case 172:
17675 2 : info->name = "l_thumb1_pivot";
17676 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17677 2 : info->fieldType = GF_SG_VRML_SFINT32;
17678 2 : info->far_ptr = & ((M_BAP *) node)->l_thumb1_pivot;
17679 2 : return GF_OK;
17680 2 : case 173:
17681 2 : info->name = "r_thumb1_pivot";
17682 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17683 2 : info->fieldType = GF_SG_VRML_SFINT32;
17684 2 : info->far_ptr = & ((M_BAP *) node)->r_thumb1_pivot;
17685 2 : return GF_OK;
17686 2 : case 174:
17687 2 : info->name = "l_thumb1_twisting";
17688 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17689 2 : info->fieldType = GF_SG_VRML_SFINT32;
17690 2 : info->far_ptr = & ((M_BAP *) node)->l_thumb1_twisting;
17691 2 : return GF_OK;
17692 2 : case 175:
17693 2 : info->name = "r_thumb1_twisting";
17694 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17695 2 : info->fieldType = GF_SG_VRML_SFINT32;
17696 2 : info->far_ptr = & ((M_BAP *) node)->r_thumb1_twisting;
17697 2 : return GF_OK;
17698 2 : case 176:
17699 2 : info->name = "l_thumb2_flexion";
17700 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17701 2 : info->fieldType = GF_SG_VRML_SFINT32;
17702 2 : info->far_ptr = & ((M_BAP *) node)->l_thumb2_flexion;
17703 2 : return GF_OK;
17704 2 : case 177:
17705 2 : info->name = "r_thumb2_flexion";
17706 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17707 2 : info->fieldType = GF_SG_VRML_SFINT32;
17708 2 : info->far_ptr = & ((M_BAP *) node)->r_thumb2_flexion;
17709 2 : return GF_OK;
17710 2 : case 178:
17711 2 : info->name = "l_thumb3_flexion";
17712 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17713 2 : info->fieldType = GF_SG_VRML_SFINT32;
17714 2 : info->far_ptr = & ((M_BAP *) node)->l_thumb3_flexion;
17715 2 : return GF_OK;
17716 2 : case 179:
17717 2 : info->name = "r_thumb3_flexion";
17718 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17719 2 : info->fieldType = GF_SG_VRML_SFINT32;
17720 2 : info->far_ptr = & ((M_BAP *) node)->r_thumb3_flexion;
17721 2 : return GF_OK;
17722 2 : case 180:
17723 2 : info->name = "HumanoidRoot_tr_vertical";
17724 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17725 2 : info->fieldType = GF_SG_VRML_SFINT32;
17726 2 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_tr_vertical;
17727 2 : return GF_OK;
17728 2 : case 181:
17729 2 : info->name = "HumanoidRoot_tr_lateral";
17730 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17731 2 : info->fieldType = GF_SG_VRML_SFINT32;
17732 2 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_tr_lateral;
17733 2 : return GF_OK;
17734 2 : case 182:
17735 2 : info->name = "HumanoidRoot_tr_frontal";
17736 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17737 2 : info->fieldType = GF_SG_VRML_SFINT32;
17738 2 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_tr_frontal;
17739 2 : return GF_OK;
17740 2 : case 183:
17741 2 : info->name = "HumanoidRoot_rt_body_turn";
17742 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17743 2 : info->fieldType = GF_SG_VRML_SFINT32;
17744 2 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_rt_body_turn;
17745 2 : return GF_OK;
17746 2 : case 184:
17747 2 : info->name = "HumanoidRoot_rt_body_roll";
17748 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17749 2 : info->fieldType = GF_SG_VRML_SFINT32;
17750 2 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_rt_body_roll;
17751 2 : return GF_OK;
17752 2 : case 185:
17753 2 : info->name = "HumanoidRoot_rt_body_tilt";
17754 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17755 2 : info->fieldType = GF_SG_VRML_SFINT32;
17756 2 : info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_rt_body_tilt;
17757 2 : return GF_OK;
17758 2 : case 186:
17759 2 : info->name = "extensionBap187";
17760 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17761 2 : info->fieldType = GF_SG_VRML_SFINT32;
17762 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap187;
17763 2 : return GF_OK;
17764 2 : case 187:
17765 2 : info->name = "extensionBap188";
17766 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17767 2 : info->fieldType = GF_SG_VRML_SFINT32;
17768 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap188;
17769 2 : return GF_OK;
17770 2 : case 188:
17771 2 : info->name = "extensionBap189";
17772 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17773 2 : info->fieldType = GF_SG_VRML_SFINT32;
17774 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap189;
17775 2 : return GF_OK;
17776 2 : case 189:
17777 2 : info->name = "extensionBap190";
17778 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17779 2 : info->fieldType = GF_SG_VRML_SFINT32;
17780 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap190;
17781 2 : return GF_OK;
17782 2 : case 190:
17783 2 : info->name = "extensionBap191";
17784 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17785 2 : info->fieldType = GF_SG_VRML_SFINT32;
17786 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap191;
17787 2 : return GF_OK;
17788 2 : case 191:
17789 2 : info->name = "extensionBap192";
17790 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17791 2 : info->fieldType = GF_SG_VRML_SFINT32;
17792 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap192;
17793 2 : return GF_OK;
17794 2 : case 192:
17795 2 : info->name = "extensionBap193";
17796 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17797 2 : info->fieldType = GF_SG_VRML_SFINT32;
17798 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap193;
17799 2 : return GF_OK;
17800 2 : case 193:
17801 2 : info->name = "extensionBap194";
17802 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17803 2 : info->fieldType = GF_SG_VRML_SFINT32;
17804 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap194;
17805 2 : return GF_OK;
17806 2 : case 194:
17807 2 : info->name = "extensionBap195";
17808 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17809 2 : info->fieldType = GF_SG_VRML_SFINT32;
17810 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap195;
17811 2 : return GF_OK;
17812 2 : case 195:
17813 2 : info->name = "extensionBap196";
17814 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17815 2 : info->fieldType = GF_SG_VRML_SFINT32;
17816 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap196;
17817 2 : return GF_OK;
17818 2 : case 196:
17819 2 : info->name = "extensionBap197";
17820 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17821 2 : info->fieldType = GF_SG_VRML_SFINT32;
17822 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap197;
17823 2 : return GF_OK;
17824 2 : case 197:
17825 2 : info->name = "extensionBap198";
17826 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17827 2 : info->fieldType = GF_SG_VRML_SFINT32;
17828 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap198;
17829 2 : return GF_OK;
17830 2 : case 198:
17831 2 : info->name = "extensionBap199";
17832 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17833 2 : info->fieldType = GF_SG_VRML_SFINT32;
17834 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap199;
17835 2 : return GF_OK;
17836 2 : case 199:
17837 2 : info->name = "extensionBap200";
17838 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17839 2 : info->fieldType = GF_SG_VRML_SFINT32;
17840 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap200;
17841 2 : return GF_OK;
17842 2 : case 200:
17843 2 : info->name = "extensionBap201";
17844 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17845 2 : info->fieldType = GF_SG_VRML_SFINT32;
17846 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap201;
17847 2 : return GF_OK;
17848 2 : case 201:
17849 2 : info->name = "extensionBap202";
17850 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17851 2 : info->fieldType = GF_SG_VRML_SFINT32;
17852 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap202;
17853 2 : return GF_OK;
17854 2 : case 202:
17855 2 : info->name = "extensionBap203";
17856 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17857 2 : info->fieldType = GF_SG_VRML_SFINT32;
17858 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap203;
17859 2 : return GF_OK;
17860 2 : case 203:
17861 2 : info->name = "extensionBap204";
17862 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17863 2 : info->fieldType = GF_SG_VRML_SFINT32;
17864 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap204;
17865 2 : return GF_OK;
17866 2 : case 204:
17867 2 : info->name = "extensionBap205";
17868 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17869 2 : info->fieldType = GF_SG_VRML_SFINT32;
17870 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap205;
17871 2 : return GF_OK;
17872 2 : case 205:
17873 2 : info->name = "extensionBap206";
17874 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17875 2 : info->fieldType = GF_SG_VRML_SFINT32;
17876 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap206;
17877 2 : return GF_OK;
17878 2 : case 206:
17879 2 : info->name = "extensionBap207";
17880 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17881 2 : info->fieldType = GF_SG_VRML_SFINT32;
17882 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap207;
17883 2 : return GF_OK;
17884 2 : case 207:
17885 2 : info->name = "extensionBap208";
17886 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17887 2 : info->fieldType = GF_SG_VRML_SFINT32;
17888 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap208;
17889 2 : return GF_OK;
17890 2 : case 208:
17891 2 : info->name = "extensionBap209";
17892 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17893 2 : info->fieldType = GF_SG_VRML_SFINT32;
17894 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap209;
17895 2 : return GF_OK;
17896 2 : case 209:
17897 2 : info->name = "extensionBap210";
17898 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17899 2 : info->fieldType = GF_SG_VRML_SFINT32;
17900 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap210;
17901 2 : return GF_OK;
17902 2 : case 210:
17903 2 : info->name = "extensionBap211";
17904 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17905 2 : info->fieldType = GF_SG_VRML_SFINT32;
17906 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap211;
17907 2 : return GF_OK;
17908 2 : case 211:
17909 2 : info->name = "extensionBap212";
17910 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17911 2 : info->fieldType = GF_SG_VRML_SFINT32;
17912 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap212;
17913 2 : return GF_OK;
17914 2 : case 212:
17915 2 : info->name = "extensionBap213";
17916 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17917 2 : info->fieldType = GF_SG_VRML_SFINT32;
17918 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap213;
17919 2 : return GF_OK;
17920 2 : case 213:
17921 2 : info->name = "extensionBap214";
17922 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17923 2 : info->fieldType = GF_SG_VRML_SFINT32;
17924 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap214;
17925 2 : return GF_OK;
17926 2 : case 214:
17927 2 : info->name = "extensionBap215";
17928 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17929 2 : info->fieldType = GF_SG_VRML_SFINT32;
17930 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap215;
17931 2 : return GF_OK;
17932 2 : case 215:
17933 2 : info->name = "extensionBap216";
17934 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17935 2 : info->fieldType = GF_SG_VRML_SFINT32;
17936 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap216;
17937 2 : return GF_OK;
17938 2 : case 216:
17939 2 : info->name = "extensionBap217";
17940 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17941 2 : info->fieldType = GF_SG_VRML_SFINT32;
17942 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap217;
17943 2 : return GF_OK;
17944 2 : case 217:
17945 2 : info->name = "extensionBap218";
17946 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17947 2 : info->fieldType = GF_SG_VRML_SFINT32;
17948 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap218;
17949 2 : return GF_OK;
17950 2 : case 218:
17951 2 : info->name = "extensionBap219";
17952 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17953 2 : info->fieldType = GF_SG_VRML_SFINT32;
17954 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap219;
17955 2 : return GF_OK;
17956 2 : case 219:
17957 2 : info->name = "extensionBap220";
17958 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17959 2 : info->fieldType = GF_SG_VRML_SFINT32;
17960 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap220;
17961 2 : return GF_OK;
17962 2 : case 220:
17963 2 : info->name = "extensionBap221";
17964 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17965 2 : info->fieldType = GF_SG_VRML_SFINT32;
17966 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap221;
17967 2 : return GF_OK;
17968 2 : case 221:
17969 2 : info->name = "extensionBap222";
17970 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17971 2 : info->fieldType = GF_SG_VRML_SFINT32;
17972 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap222;
17973 2 : return GF_OK;
17974 2 : case 222:
17975 2 : info->name = "extensionBap223";
17976 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17977 2 : info->fieldType = GF_SG_VRML_SFINT32;
17978 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap223;
17979 2 : return GF_OK;
17980 2 : case 223:
17981 2 : info->name = "extensionBap224";
17982 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17983 2 : info->fieldType = GF_SG_VRML_SFINT32;
17984 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap224;
17985 2 : return GF_OK;
17986 2 : case 224:
17987 2 : info->name = "extensionBap225";
17988 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17989 2 : info->fieldType = GF_SG_VRML_SFINT32;
17990 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap225;
17991 2 : return GF_OK;
17992 2 : case 225:
17993 2 : info->name = "extensionBap226";
17994 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
17995 2 : info->fieldType = GF_SG_VRML_SFINT32;
17996 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap226;
17997 2 : return GF_OK;
17998 2 : case 226:
17999 2 : info->name = "extensionBap227";
18000 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18001 2 : info->fieldType = GF_SG_VRML_SFINT32;
18002 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap227;
18003 2 : return GF_OK;
18004 2 : case 227:
18005 2 : info->name = "extensionBap228";
18006 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18007 2 : info->fieldType = GF_SG_VRML_SFINT32;
18008 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap228;
18009 2 : return GF_OK;
18010 2 : case 228:
18011 2 : info->name = "extensionBap229";
18012 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18013 2 : info->fieldType = GF_SG_VRML_SFINT32;
18014 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap229;
18015 2 : return GF_OK;
18016 2 : case 229:
18017 2 : info->name = "extensionBap230";
18018 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18019 2 : info->fieldType = GF_SG_VRML_SFINT32;
18020 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap230;
18021 2 : return GF_OK;
18022 2 : case 230:
18023 2 : info->name = "extensionBap231";
18024 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18025 2 : info->fieldType = GF_SG_VRML_SFINT32;
18026 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap231;
18027 2 : return GF_OK;
18028 2 : case 231:
18029 2 : info->name = "extensionBap232";
18030 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18031 2 : info->fieldType = GF_SG_VRML_SFINT32;
18032 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap232;
18033 2 : return GF_OK;
18034 2 : case 232:
18035 2 : info->name = "extensionBap233";
18036 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18037 2 : info->fieldType = GF_SG_VRML_SFINT32;
18038 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap233;
18039 2 : return GF_OK;
18040 2 : case 233:
18041 2 : info->name = "extensionBap234";
18042 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18043 2 : info->fieldType = GF_SG_VRML_SFINT32;
18044 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap234;
18045 2 : return GF_OK;
18046 2 : case 234:
18047 2 : info->name = "extensionBap235";
18048 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18049 2 : info->fieldType = GF_SG_VRML_SFINT32;
18050 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap235;
18051 2 : return GF_OK;
18052 2 : case 235:
18053 2 : info->name = "extensionBap236";
18054 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18055 2 : info->fieldType = GF_SG_VRML_SFINT32;
18056 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap236;
18057 2 : return GF_OK;
18058 2 : case 236:
18059 2 : info->name = "extensionBap237";
18060 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18061 2 : info->fieldType = GF_SG_VRML_SFINT32;
18062 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap237;
18063 2 : return GF_OK;
18064 2 : case 237:
18065 2 : info->name = "extensionBap238";
18066 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18067 2 : info->fieldType = GF_SG_VRML_SFINT32;
18068 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap238;
18069 2 : return GF_OK;
18070 2 : case 238:
18071 2 : info->name = "extensionBap239";
18072 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18073 2 : info->fieldType = GF_SG_VRML_SFINT32;
18074 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap239;
18075 2 : return GF_OK;
18076 2 : case 239:
18077 2 : info->name = "extensionBap240";
18078 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18079 2 : info->fieldType = GF_SG_VRML_SFINT32;
18080 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap240;
18081 2 : return GF_OK;
18082 2 : case 240:
18083 2 : info->name = "extensionBap241";
18084 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18085 2 : info->fieldType = GF_SG_VRML_SFINT32;
18086 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap241;
18087 2 : return GF_OK;
18088 2 : case 241:
18089 2 : info->name = "extensionBap242";
18090 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18091 2 : info->fieldType = GF_SG_VRML_SFINT32;
18092 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap242;
18093 2 : return GF_OK;
18094 2 : case 242:
18095 2 : info->name = "extensionBap243";
18096 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18097 2 : info->fieldType = GF_SG_VRML_SFINT32;
18098 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap243;
18099 2 : return GF_OK;
18100 2 : case 243:
18101 2 : info->name = "extensionBap244";
18102 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18103 2 : info->fieldType = GF_SG_VRML_SFINT32;
18104 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap244;
18105 2 : return GF_OK;
18106 2 : case 244:
18107 2 : info->name = "extensionBap245";
18108 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18109 2 : info->fieldType = GF_SG_VRML_SFINT32;
18110 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap245;
18111 2 : return GF_OK;
18112 2 : case 245:
18113 2 : info->name = "extensionBap246";
18114 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18115 2 : info->fieldType = GF_SG_VRML_SFINT32;
18116 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap246;
18117 2 : return GF_OK;
18118 2 : case 246:
18119 2 : info->name = "extensionBap247";
18120 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18121 2 : info->fieldType = GF_SG_VRML_SFINT32;
18122 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap247;
18123 2 : return GF_OK;
18124 2 : case 247:
18125 2 : info->name = "extensionBap248";
18126 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18127 2 : info->fieldType = GF_SG_VRML_SFINT32;
18128 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap248;
18129 2 : return GF_OK;
18130 2 : case 248:
18131 2 : info->name = "extensionBap249";
18132 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18133 2 : info->fieldType = GF_SG_VRML_SFINT32;
18134 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap249;
18135 2 : return GF_OK;
18136 2 : case 249:
18137 2 : info->name = "extensionBap250";
18138 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18139 2 : info->fieldType = GF_SG_VRML_SFINT32;
18140 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap250;
18141 2 : return GF_OK;
18142 2 : case 250:
18143 2 : info->name = "extensionBap251";
18144 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18145 2 : info->fieldType = GF_SG_VRML_SFINT32;
18146 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap251;
18147 2 : return GF_OK;
18148 2 : case 251:
18149 2 : info->name = "extensionBap252";
18150 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18151 2 : info->fieldType = GF_SG_VRML_SFINT32;
18152 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap252;
18153 2 : return GF_OK;
18154 2 : case 252:
18155 2 : info->name = "extensionBap253";
18156 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18157 2 : info->fieldType = GF_SG_VRML_SFINT32;
18158 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap253;
18159 2 : return GF_OK;
18160 2 : case 253:
18161 2 : info->name = "extensionBap254";
18162 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18163 2 : info->fieldType = GF_SG_VRML_SFINT32;
18164 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap254;
18165 2 : return GF_OK;
18166 2 : case 254:
18167 2 : info->name = "extensionBap255";
18168 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18169 2 : info->fieldType = GF_SG_VRML_SFINT32;
18170 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap255;
18171 2 : return GF_OK;
18172 2 : case 255:
18173 2 : info->name = "extensionBap256";
18174 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18175 2 : info->fieldType = GF_SG_VRML_SFINT32;
18176 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap256;
18177 2 : return GF_OK;
18178 2 : case 256:
18179 2 : info->name = "extensionBap257";
18180 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18181 2 : info->fieldType = GF_SG_VRML_SFINT32;
18182 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap257;
18183 2 : return GF_OK;
18184 2 : case 257:
18185 2 : info->name = "extensionBap258";
18186 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18187 2 : info->fieldType = GF_SG_VRML_SFINT32;
18188 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap258;
18189 2 : return GF_OK;
18190 2 : case 258:
18191 2 : info->name = "extensionBap259";
18192 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18193 2 : info->fieldType = GF_SG_VRML_SFINT32;
18194 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap259;
18195 2 : return GF_OK;
18196 2 : case 259:
18197 2 : info->name = "extensionBap260";
18198 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18199 2 : info->fieldType = GF_SG_VRML_SFINT32;
18200 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap260;
18201 2 : return GF_OK;
18202 2 : case 260:
18203 2 : info->name = "extensionBap261";
18204 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18205 2 : info->fieldType = GF_SG_VRML_SFINT32;
18206 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap261;
18207 2 : return GF_OK;
18208 2 : case 261:
18209 2 : info->name = "extensionBap262";
18210 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18211 2 : info->fieldType = GF_SG_VRML_SFINT32;
18212 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap262;
18213 2 : return GF_OK;
18214 2 : case 262:
18215 2 : info->name = "extensionBap263";
18216 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18217 2 : info->fieldType = GF_SG_VRML_SFINT32;
18218 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap263;
18219 2 : return GF_OK;
18220 2 : case 263:
18221 2 : info->name = "extensionBap264";
18222 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18223 2 : info->fieldType = GF_SG_VRML_SFINT32;
18224 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap264;
18225 2 : return GF_OK;
18226 2 : case 264:
18227 2 : info->name = "extensionBap265";
18228 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18229 2 : info->fieldType = GF_SG_VRML_SFINT32;
18230 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap265;
18231 2 : return GF_OK;
18232 2 : case 265:
18233 2 : info->name = "extensionBap266";
18234 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18235 2 : info->fieldType = GF_SG_VRML_SFINT32;
18236 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap266;
18237 2 : return GF_OK;
18238 2 : case 266:
18239 2 : info->name = "extensionBap267";
18240 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18241 2 : info->fieldType = GF_SG_VRML_SFINT32;
18242 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap267;
18243 2 : return GF_OK;
18244 2 : case 267:
18245 2 : info->name = "extensionBap268";
18246 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18247 2 : info->fieldType = GF_SG_VRML_SFINT32;
18248 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap268;
18249 2 : return GF_OK;
18250 2 : case 268:
18251 2 : info->name = "extensionBap269";
18252 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18253 2 : info->fieldType = GF_SG_VRML_SFINT32;
18254 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap269;
18255 2 : return GF_OK;
18256 2 : case 269:
18257 2 : info->name = "extensionBap270";
18258 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18259 2 : info->fieldType = GF_SG_VRML_SFINT32;
18260 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap270;
18261 2 : return GF_OK;
18262 2 : case 270:
18263 2 : info->name = "extensionBap271";
18264 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18265 2 : info->fieldType = GF_SG_VRML_SFINT32;
18266 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap271;
18267 2 : return GF_OK;
18268 2 : case 271:
18269 2 : info->name = "extensionBap272";
18270 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18271 2 : info->fieldType = GF_SG_VRML_SFINT32;
18272 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap272;
18273 2 : return GF_OK;
18274 2 : case 272:
18275 2 : info->name = "extensionBap273";
18276 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18277 2 : info->fieldType = GF_SG_VRML_SFINT32;
18278 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap273;
18279 2 : return GF_OK;
18280 2 : case 273:
18281 2 : info->name = "extensionBap274";
18282 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18283 2 : info->fieldType = GF_SG_VRML_SFINT32;
18284 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap274;
18285 2 : return GF_OK;
18286 2 : case 274:
18287 2 : info->name = "extensionBap275";
18288 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18289 2 : info->fieldType = GF_SG_VRML_SFINT32;
18290 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap275;
18291 2 : return GF_OK;
18292 2 : case 275:
18293 2 : info->name = "extensionBap276";
18294 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18295 2 : info->fieldType = GF_SG_VRML_SFINT32;
18296 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap276;
18297 2 : return GF_OK;
18298 2 : case 276:
18299 2 : info->name = "extensionBap277";
18300 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18301 2 : info->fieldType = GF_SG_VRML_SFINT32;
18302 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap277;
18303 2 : return GF_OK;
18304 2 : case 277:
18305 2 : info->name = "extensionBap278";
18306 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18307 2 : info->fieldType = GF_SG_VRML_SFINT32;
18308 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap278;
18309 2 : return GF_OK;
18310 2 : case 278:
18311 2 : info->name = "extensionBap279";
18312 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18313 2 : info->fieldType = GF_SG_VRML_SFINT32;
18314 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap279;
18315 2 : return GF_OK;
18316 2 : case 279:
18317 2 : info->name = "extensionBap280";
18318 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18319 2 : info->fieldType = GF_SG_VRML_SFINT32;
18320 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap280;
18321 2 : return GF_OK;
18322 2 : case 280:
18323 2 : info->name = "extensionBap281";
18324 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18325 2 : info->fieldType = GF_SG_VRML_SFINT32;
18326 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap281;
18327 2 : return GF_OK;
18328 2 : case 281:
18329 2 : info->name = "extensionBap282";
18330 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18331 2 : info->fieldType = GF_SG_VRML_SFINT32;
18332 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap282;
18333 2 : return GF_OK;
18334 2 : case 282:
18335 2 : info->name = "extensionBap283";
18336 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18337 2 : info->fieldType = GF_SG_VRML_SFINT32;
18338 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap283;
18339 2 : return GF_OK;
18340 2 : case 283:
18341 2 : info->name = "extensionBap284";
18342 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18343 2 : info->fieldType = GF_SG_VRML_SFINT32;
18344 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap284;
18345 2 : return GF_OK;
18346 2 : case 284:
18347 2 : info->name = "extensionBap285";
18348 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18349 2 : info->fieldType = GF_SG_VRML_SFINT32;
18350 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap285;
18351 2 : return GF_OK;
18352 2 : case 285:
18353 2 : info->name = "extensionBap286";
18354 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18355 2 : info->fieldType = GF_SG_VRML_SFINT32;
18356 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap286;
18357 2 : return GF_OK;
18358 2 : case 286:
18359 2 : info->name = "extensionBap287";
18360 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18361 2 : info->fieldType = GF_SG_VRML_SFINT32;
18362 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap287;
18363 2 : return GF_OK;
18364 2 : case 287:
18365 2 : info->name = "extensionBap288";
18366 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18367 2 : info->fieldType = GF_SG_VRML_SFINT32;
18368 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap288;
18369 2 : return GF_OK;
18370 2 : case 288:
18371 2 : info->name = "extensionBap289";
18372 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18373 2 : info->fieldType = GF_SG_VRML_SFINT32;
18374 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap289;
18375 2 : return GF_OK;
18376 2 : case 289:
18377 2 : info->name = "extensionBap290";
18378 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18379 2 : info->fieldType = GF_SG_VRML_SFINT32;
18380 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap290;
18381 2 : return GF_OK;
18382 2 : case 290:
18383 2 : info->name = "extensionBap291";
18384 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18385 2 : info->fieldType = GF_SG_VRML_SFINT32;
18386 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap291;
18387 2 : return GF_OK;
18388 2 : case 291:
18389 2 : info->name = "extensionBap292";
18390 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18391 2 : info->fieldType = GF_SG_VRML_SFINT32;
18392 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap292;
18393 2 : return GF_OK;
18394 2 : case 292:
18395 2 : info->name = "extensionBap293";
18396 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18397 2 : info->fieldType = GF_SG_VRML_SFINT32;
18398 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap293;
18399 2 : return GF_OK;
18400 2 : case 293:
18401 2 : info->name = "extensionBap294";
18402 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18403 2 : info->fieldType = GF_SG_VRML_SFINT32;
18404 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap294;
18405 2 : return GF_OK;
18406 2 : case 294:
18407 2 : info->name = "extensionBap295";
18408 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18409 2 : info->fieldType = GF_SG_VRML_SFINT32;
18410 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap295;
18411 2 : return GF_OK;
18412 2 : case 295:
18413 2 : info->name = "extensionBap296";
18414 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
18415 2 : info->fieldType = GF_SG_VRML_SFINT32;
18416 2 : info->far_ptr = & ((M_BAP *) node)->extensionBap296;
18417 2 : return GF_OK;
18418 : default:
18419 : return GF_BAD_PARAM;
18420 : }
18421 : }
18422 :
18423 :
18424 296 : static s32 BAP_get_field_index_by_name(char *name)
18425 : {
18426 296 : if (!strcmp("sacroiliac_tilt", name)) return 0;
18427 295 : if (!strcmp("sacroiliac_torsion", name)) return 1;
18428 294 : if (!strcmp("sacroiliac_roll", name)) return 2;
18429 293 : if (!strcmp("l_hip_flexion", name)) return 3;
18430 292 : if (!strcmp("r_hip_flexion", name)) return 4;
18431 291 : if (!strcmp("l_hip_abduct", name)) return 5;
18432 290 : if (!strcmp("r_hip_abduct", name)) return 6;
18433 289 : if (!strcmp("l_hip_twisting", name)) return 7;
18434 288 : if (!strcmp("r_hip_twisting", name)) return 8;
18435 287 : if (!strcmp("l_knee_flexion", name)) return 9;
18436 286 : if (!strcmp("r_knee_flexion", name)) return 10;
18437 285 : if (!strcmp("l_knee_twisting", name)) return 11;
18438 284 : if (!strcmp("r_knee_twisting", name)) return 12;
18439 283 : if (!strcmp("l_ankle_flexion", name)) return 13;
18440 282 : if (!strcmp("r_ankle_flexion", name)) return 14;
18441 281 : if (!strcmp("l_ankle_twisting", name)) return 15;
18442 280 : if (!strcmp("r_ankle_twisting", name)) return 16;
18443 279 : if (!strcmp("l_subtalar_flexion", name)) return 17;
18444 278 : if (!strcmp("r_subtalar_flexion", name)) return 18;
18445 277 : if (!strcmp("l_midtarsal_flexion", name)) return 19;
18446 276 : if (!strcmp("r_midtarsal_flexion", name)) return 20;
18447 275 : if (!strcmp("l_metatarsal_flexion", name)) return 21;
18448 274 : if (!strcmp("r_metatarsal_flexion", name)) return 22;
18449 273 : if (!strcmp("l_sternoclavicular_abduct", name)) return 23;
18450 272 : if (!strcmp("r_sternoclavicular_abduct", name)) return 24;
18451 271 : if (!strcmp("l_sternoclavicular_rotate", name)) return 25;
18452 270 : if (!strcmp("r_sternoclavicular_rotate", name)) return 26;
18453 269 : if (!strcmp("l_acromioclavicular_abduct", name)) return 27;
18454 268 : if (!strcmp("r_acromioclavicular_abduct", name)) return 28;
18455 267 : if (!strcmp("l_acromioclavicular_rotate", name)) return 29;
18456 266 : if (!strcmp("r_acromioclavicular_rotate", name)) return 30;
18457 265 : if (!strcmp("l_shoulder_flexion", name)) return 31;
18458 264 : if (!strcmp("r_shoulder_flexion", name)) return 32;
18459 263 : if (!strcmp("l_shoulder_abduct", name)) return 33;
18460 262 : if (!strcmp("r_shoulder_abduct", name)) return 34;
18461 261 : if (!strcmp("l_shoulder_twisting", name)) return 35;
18462 260 : if (!strcmp("r_shoulder_twisting", name)) return 36;
18463 259 : if (!strcmp("l_elbow_flexion", name)) return 37;
18464 258 : if (!strcmp("r_elbow_flexion", name)) return 38;
18465 257 : if (!strcmp("l_elbow_twisting", name)) return 39;
18466 256 : if (!strcmp("r_elbow_twisting", name)) return 40;
18467 255 : if (!strcmp("l_wrist_flexion", name)) return 41;
18468 254 : if (!strcmp("r_wrist_flexion", name)) return 42;
18469 253 : if (!strcmp("l_wrist_pivot", name)) return 43;
18470 252 : if (!strcmp("r_wrist_pivot", name)) return 44;
18471 251 : if (!strcmp("l_wrist_twisting", name)) return 45;
18472 250 : if (!strcmp("r_wrist_twisting", name)) return 46;
18473 249 : if (!strcmp("skullbase_roll", name)) return 47;
18474 248 : if (!strcmp("skullbase_torsion", name)) return 48;
18475 247 : if (!strcmp("skullbase_tilt", name)) return 49;
18476 246 : if (!strcmp("vc1roll", name)) return 50;
18477 245 : if (!strcmp("vc1torsion", name)) return 51;
18478 244 : if (!strcmp("vc1tilt", name)) return 52;
18479 243 : if (!strcmp("vc2roll", name)) return 53;
18480 242 : if (!strcmp("vc2torsion", name)) return 54;
18481 241 : if (!strcmp("vc2tilt", name)) return 55;
18482 240 : if (!strcmp("vc3roll", name)) return 56;
18483 239 : if (!strcmp("vc3torsion", name)) return 57;
18484 238 : if (!strcmp("vc3tilt", name)) return 58;
18485 237 : if (!strcmp("vc4roll", name)) return 59;
18486 236 : if (!strcmp("vc4torsion", name)) return 60;
18487 235 : if (!strcmp("vc4tilt", name)) return 61;
18488 234 : if (!strcmp("vc5roll", name)) return 62;
18489 233 : if (!strcmp("vc5torsion", name)) return 63;
18490 232 : if (!strcmp("vc5tilt", name)) return 64;
18491 231 : if (!strcmp("vc6roll", name)) return 65;
18492 230 : if (!strcmp("vc6torsion", name)) return 66;
18493 229 : if (!strcmp("vc6tilt", name)) return 67;
18494 228 : if (!strcmp("vc7roll", name)) return 68;
18495 227 : if (!strcmp("vc7torsion", name)) return 69;
18496 226 : if (!strcmp("vc7tilt", name)) return 70;
18497 225 : if (!strcmp("vt1roll", name)) return 71;
18498 224 : if (!strcmp("vt1torsion", name)) return 72;
18499 223 : if (!strcmp("vt1tilt", name)) return 73;
18500 222 : if (!strcmp("vt2roll", name)) return 74;
18501 221 : if (!strcmp("vt2torsion", name)) return 75;
18502 220 : if (!strcmp("vt2tilt", name)) return 76;
18503 219 : if (!strcmp("vt3roll", name)) return 77;
18504 218 : if (!strcmp("vt3torsion", name)) return 78;
18505 217 : if (!strcmp("vt3tilt", name)) return 79;
18506 216 : if (!strcmp("vt4roll", name)) return 80;
18507 215 : if (!strcmp("vt4torsion", name)) return 81;
18508 214 : if (!strcmp("vt4tilt", name)) return 82;
18509 213 : if (!strcmp("vt5roll", name)) return 83;
18510 212 : if (!strcmp("vt5torsion", name)) return 84;
18511 211 : if (!strcmp("vt5tilt", name)) return 85;
18512 210 : if (!strcmp("vt6roll", name)) return 86;
18513 209 : if (!strcmp("vt6torsion", name)) return 87;
18514 208 : if (!strcmp("vt6tilt", name)) return 88;
18515 207 : if (!strcmp("vt7roll", name)) return 89;
18516 206 : if (!strcmp("vt7torsion", name)) return 90;
18517 205 : if (!strcmp("vt7tilt", name)) return 91;
18518 204 : if (!strcmp("vt8roll", name)) return 92;
18519 203 : if (!strcmp("vt8torsion", name)) return 93;
18520 202 : if (!strcmp("vt8tilt", name)) return 94;
18521 201 : if (!strcmp("vt9roll", name)) return 95;
18522 200 : if (!strcmp("vt9torsion", name)) return 96;
18523 199 : if (!strcmp("vt9tilt", name)) return 97;
18524 198 : if (!strcmp("vt10roll", name)) return 98;
18525 197 : if (!strcmp("vt10torsion", name)) return 99;
18526 196 : if (!strcmp("vt10tilt", name)) return 100;
18527 195 : if (!strcmp("vt11roll", name)) return 101;
18528 194 : if (!strcmp("vt11torsion", name)) return 102;
18529 193 : if (!strcmp("vt11tilt", name)) return 103;
18530 192 : if (!strcmp("vt12roll", name)) return 104;
18531 191 : if (!strcmp("vt12torsion", name)) return 105;
18532 190 : if (!strcmp("vt12tilt", name)) return 106;
18533 189 : if (!strcmp("vl1roll", name)) return 107;
18534 188 : if (!strcmp("vl1torsion", name)) return 108;
18535 187 : if (!strcmp("vl1tilt", name)) return 109;
18536 186 : if (!strcmp("vl2roll", name)) return 110;
18537 185 : if (!strcmp("vl2torsion", name)) return 111;
18538 184 : if (!strcmp("vl2tilt", name)) return 112;
18539 183 : if (!strcmp("vl3roll", name)) return 113;
18540 182 : if (!strcmp("vl3torsion", name)) return 114;
18541 181 : if (!strcmp("vl3tilt", name)) return 115;
18542 180 : if (!strcmp("vl4roll", name)) return 116;
18543 179 : if (!strcmp("vl4torsion", name)) return 117;
18544 178 : if (!strcmp("vl4tilt", name)) return 118;
18545 177 : if (!strcmp("vl5roll", name)) return 119;
18546 176 : if (!strcmp("vl5torsion", name)) return 120;
18547 175 : if (!strcmp("vl5tilt", name)) return 121;
18548 174 : if (!strcmp("l_pinky0_flexion", name)) return 122;
18549 173 : if (!strcmp("r_pinky0_flexion", name)) return 123;
18550 172 : if (!strcmp("l_pinky1_flexion", name)) return 124;
18551 171 : if (!strcmp("r_pinky1_flexion", name)) return 125;
18552 170 : if (!strcmp("l_pinky1_pivot", name)) return 126;
18553 169 : if (!strcmp("r_pinky1_pivot", name)) return 127;
18554 168 : if (!strcmp("l_pinky1_twisting", name)) return 128;
18555 167 : if (!strcmp("r_pinky1_twisting", name)) return 129;
18556 166 : if (!strcmp("l_pinky2_flexion", name)) return 130;
18557 165 : if (!strcmp("r_pinky2_flexion", name)) return 131;
18558 164 : if (!strcmp("l_pinky3_flexion", name)) return 132;
18559 163 : if (!strcmp("r_pinky3_flexion", name)) return 133;
18560 162 : if (!strcmp("l_ring0_flexion", name)) return 134;
18561 161 : if (!strcmp("r_ring0_flexion", name)) return 135;
18562 160 : if (!strcmp("l_ring1_flexion", name)) return 136;
18563 159 : if (!strcmp("r_ring1_flexion", name)) return 137;
18564 158 : if (!strcmp("l_ring1_pivot", name)) return 138;
18565 157 : if (!strcmp("r_ring1_pivot", name)) return 139;
18566 156 : if (!strcmp("l_ring1_twisting", name)) return 140;
18567 155 : if (!strcmp("r_ring1_twisting", name)) return 141;
18568 154 : if (!strcmp("l_ring2_flexion", name)) return 142;
18569 153 : if (!strcmp("r_ring2_flexion", name)) return 143;
18570 152 : if (!strcmp("l_ring3_flexion", name)) return 144;
18571 151 : if (!strcmp("r_ring3_flexion", name)) return 145;
18572 150 : if (!strcmp("l_middle0_flexion", name)) return 146;
18573 149 : if (!strcmp("r_middle0_flexion", name)) return 147;
18574 148 : if (!strcmp("l_middle1_flexion", name)) return 148;
18575 147 : if (!strcmp("r_middle1_flexion", name)) return 149;
18576 146 : if (!strcmp("l_middle1_pivot", name)) return 150;
18577 145 : if (!strcmp("r_middle1_pivot", name)) return 151;
18578 144 : if (!strcmp("l_middle1_twisting", name)) return 152;
18579 143 : if (!strcmp("r_middle1_twisting", name)) return 153;
18580 142 : if (!strcmp("l_middle2_flexion", name)) return 154;
18581 141 : if (!strcmp("r_middle2_flexion", name)) return 155;
18582 140 : if (!strcmp("l_middle3_flexion", name)) return 156;
18583 139 : if (!strcmp("r_middle3_flexion", name)) return 157;
18584 138 : if (!strcmp("l_index0_flexion", name)) return 158;
18585 137 : if (!strcmp("r_index0_flexion", name)) return 159;
18586 136 : if (!strcmp("l_index1_flexion", name)) return 160;
18587 135 : if (!strcmp("r_index1_flexion", name)) return 161;
18588 134 : if (!strcmp("l_index1_pivot", name)) return 162;
18589 133 : if (!strcmp("r_index1_pivot", name)) return 163;
18590 132 : if (!strcmp("l_index1_twisting", name)) return 164;
18591 131 : if (!strcmp("r_index1_twisting", name)) return 165;
18592 130 : if (!strcmp("l_index2_flexion", name)) return 166;
18593 129 : if (!strcmp("r_index2_flexion", name)) return 167;
18594 128 : if (!strcmp("l_index3_flexion", name)) return 168;
18595 127 : if (!strcmp("r_index3_flexion", name)) return 169;
18596 126 : if (!strcmp("l_thumb1_flexion", name)) return 170;
18597 125 : if (!strcmp("r_thumb1_flexion", name)) return 171;
18598 124 : if (!strcmp("l_thumb1_pivot", name)) return 172;
18599 123 : if (!strcmp("r_thumb1_pivot", name)) return 173;
18600 122 : if (!strcmp("l_thumb1_twisting", name)) return 174;
18601 121 : if (!strcmp("r_thumb1_twisting", name)) return 175;
18602 120 : if (!strcmp("l_thumb2_flexion", name)) return 176;
18603 119 : if (!strcmp("r_thumb2_flexion", name)) return 177;
18604 118 : if (!strcmp("l_thumb3_flexion", name)) return 178;
18605 117 : if (!strcmp("r_thumb3_flexion", name)) return 179;
18606 116 : if (!strcmp("HumanoidRoot_tr_vertical", name)) return 180;
18607 115 : if (!strcmp("HumanoidRoot_tr_lateral", name)) return 181;
18608 114 : if (!strcmp("HumanoidRoot_tr_frontal", name)) return 182;
18609 113 : if (!strcmp("HumanoidRoot_rt_body_turn", name)) return 183;
18610 112 : if (!strcmp("HumanoidRoot_rt_body_roll", name)) return 184;
18611 111 : if (!strcmp("HumanoidRoot_rt_body_tilt", name)) return 185;
18612 110 : if (!strcmp("extensionBap187", name)) return 186;
18613 109 : if (!strcmp("extensionBap188", name)) return 187;
18614 108 : if (!strcmp("extensionBap189", name)) return 188;
18615 107 : if (!strcmp("extensionBap190", name)) return 189;
18616 106 : if (!strcmp("extensionBap191", name)) return 190;
18617 105 : if (!strcmp("extensionBap192", name)) return 191;
18618 104 : if (!strcmp("extensionBap193", name)) return 192;
18619 103 : if (!strcmp("extensionBap194", name)) return 193;
18620 102 : if (!strcmp("extensionBap195", name)) return 194;
18621 101 : if (!strcmp("extensionBap196", name)) return 195;
18622 100 : if (!strcmp("extensionBap197", name)) return 196;
18623 99 : if (!strcmp("extensionBap198", name)) return 197;
18624 98 : if (!strcmp("extensionBap199", name)) return 198;
18625 97 : if (!strcmp("extensionBap200", name)) return 199;
18626 96 : if (!strcmp("extensionBap201", name)) return 200;
18627 95 : if (!strcmp("extensionBap202", name)) return 201;
18628 94 : if (!strcmp("extensionBap203", name)) return 202;
18629 93 : if (!strcmp("extensionBap204", name)) return 203;
18630 92 : if (!strcmp("extensionBap205", name)) return 204;
18631 91 : if (!strcmp("extensionBap206", name)) return 205;
18632 90 : if (!strcmp("extensionBap207", name)) return 206;
18633 89 : if (!strcmp("extensionBap208", name)) return 207;
18634 88 : if (!strcmp("extensionBap209", name)) return 208;
18635 87 : if (!strcmp("extensionBap210", name)) return 209;
18636 86 : if (!strcmp("extensionBap211", name)) return 210;
18637 85 : if (!strcmp("extensionBap212", name)) return 211;
18638 84 : if (!strcmp("extensionBap213", name)) return 212;
18639 83 : if (!strcmp("extensionBap214", name)) return 213;
18640 82 : if (!strcmp("extensionBap215", name)) return 214;
18641 81 : if (!strcmp("extensionBap216", name)) return 215;
18642 80 : if (!strcmp("extensionBap217", name)) return 216;
18643 79 : if (!strcmp("extensionBap218", name)) return 217;
18644 78 : if (!strcmp("extensionBap219", name)) return 218;
18645 77 : if (!strcmp("extensionBap220", name)) return 219;
18646 76 : if (!strcmp("extensionBap221", name)) return 220;
18647 75 : if (!strcmp("extensionBap222", name)) return 221;
18648 74 : if (!strcmp("extensionBap223", name)) return 222;
18649 73 : if (!strcmp("extensionBap224", name)) return 223;
18650 72 : if (!strcmp("extensionBap225", name)) return 224;
18651 71 : if (!strcmp("extensionBap226", name)) return 225;
18652 70 : if (!strcmp("extensionBap227", name)) return 226;
18653 69 : if (!strcmp("extensionBap228", name)) return 227;
18654 68 : if (!strcmp("extensionBap229", name)) return 228;
18655 67 : if (!strcmp("extensionBap230", name)) return 229;
18656 66 : if (!strcmp("extensionBap231", name)) return 230;
18657 65 : if (!strcmp("extensionBap232", name)) return 231;
18658 64 : if (!strcmp("extensionBap233", name)) return 232;
18659 63 : if (!strcmp("extensionBap234", name)) return 233;
18660 62 : if (!strcmp("extensionBap235", name)) return 234;
18661 61 : if (!strcmp("extensionBap236", name)) return 235;
18662 60 : if (!strcmp("extensionBap237", name)) return 236;
18663 59 : if (!strcmp("extensionBap238", name)) return 237;
18664 58 : if (!strcmp("extensionBap239", name)) return 238;
18665 57 : if (!strcmp("extensionBap240", name)) return 239;
18666 56 : if (!strcmp("extensionBap241", name)) return 240;
18667 55 : if (!strcmp("extensionBap242", name)) return 241;
18668 54 : if (!strcmp("extensionBap243", name)) return 242;
18669 53 : if (!strcmp("extensionBap244", name)) return 243;
18670 52 : if (!strcmp("extensionBap245", name)) return 244;
18671 51 : if (!strcmp("extensionBap246", name)) return 245;
18672 50 : if (!strcmp("extensionBap247", name)) return 246;
18673 49 : if (!strcmp("extensionBap248", name)) return 247;
18674 48 : if (!strcmp("extensionBap249", name)) return 248;
18675 47 : if (!strcmp("extensionBap250", name)) return 249;
18676 46 : if (!strcmp("extensionBap251", name)) return 250;
18677 45 : if (!strcmp("extensionBap252", name)) return 251;
18678 44 : if (!strcmp("extensionBap253", name)) return 252;
18679 43 : if (!strcmp("extensionBap254", name)) return 253;
18680 42 : if (!strcmp("extensionBap255", name)) return 254;
18681 41 : if (!strcmp("extensionBap256", name)) return 255;
18682 40 : if (!strcmp("extensionBap257", name)) return 256;
18683 39 : if (!strcmp("extensionBap258", name)) return 257;
18684 38 : if (!strcmp("extensionBap259", name)) return 258;
18685 37 : if (!strcmp("extensionBap260", name)) return 259;
18686 36 : if (!strcmp("extensionBap261", name)) return 260;
18687 35 : if (!strcmp("extensionBap262", name)) return 261;
18688 34 : if (!strcmp("extensionBap263", name)) return 262;
18689 33 : if (!strcmp("extensionBap264", name)) return 263;
18690 32 : if (!strcmp("extensionBap265", name)) return 264;
18691 31 : if (!strcmp("extensionBap266", name)) return 265;
18692 30 : if (!strcmp("extensionBap267", name)) return 266;
18693 29 : if (!strcmp("extensionBap268", name)) return 267;
18694 28 : if (!strcmp("extensionBap269", name)) return 268;
18695 27 : if (!strcmp("extensionBap270", name)) return 269;
18696 26 : if (!strcmp("extensionBap271", name)) return 270;
18697 25 : if (!strcmp("extensionBap272", name)) return 271;
18698 24 : if (!strcmp("extensionBap273", name)) return 272;
18699 23 : if (!strcmp("extensionBap274", name)) return 273;
18700 22 : if (!strcmp("extensionBap275", name)) return 274;
18701 21 : if (!strcmp("extensionBap276", name)) return 275;
18702 20 : if (!strcmp("extensionBap277", name)) return 276;
18703 19 : if (!strcmp("extensionBap278", name)) return 277;
18704 18 : if (!strcmp("extensionBap279", name)) return 278;
18705 17 : if (!strcmp("extensionBap280", name)) return 279;
18706 16 : if (!strcmp("extensionBap281", name)) return 280;
18707 15 : if (!strcmp("extensionBap282", name)) return 281;
18708 14 : if (!strcmp("extensionBap283", name)) return 282;
18709 13 : if (!strcmp("extensionBap284", name)) return 283;
18710 12 : if (!strcmp("extensionBap285", name)) return 284;
18711 11 : if (!strcmp("extensionBap286", name)) return 285;
18712 10 : if (!strcmp("extensionBap287", name)) return 286;
18713 9 : if (!strcmp("extensionBap288", name)) return 287;
18714 8 : if (!strcmp("extensionBap289", name)) return 288;
18715 7 : if (!strcmp("extensionBap290", name)) return 289;
18716 6 : if (!strcmp("extensionBap291", name)) return 290;
18717 5 : if (!strcmp("extensionBap292", name)) return 291;
18718 4 : if (!strcmp("extensionBap293", name)) return 292;
18719 3 : if (!strcmp("extensionBap294", name)) return 293;
18720 2 : if (!strcmp("extensionBap295", name)) return 294;
18721 1 : if (!strcmp("extensionBap296", name)) return 295;
18722 0 : return -1;
18723 : }
18724 296 : static Bool BAP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
18725 : {
18726 296 : switch (FieldIndex) {
18727 1 : case 0:
18728 1 : *AType = 0;
18729 1 : *QType = 0;
18730 1 : *b_min = FIX_MIN;
18731 1 : *b_max = FIX_MAX;
18732 : return 1;
18733 1 : case 1:
18734 1 : *AType = 0;
18735 1 : *QType = 0;
18736 1 : *b_min = FIX_MIN;
18737 1 : *b_max = FIX_MAX;
18738 : return 1;
18739 1 : case 2:
18740 1 : *AType = 0;
18741 1 : *QType = 0;
18742 1 : *b_min = FIX_MIN;
18743 1 : *b_max = FIX_MAX;
18744 : return 1;
18745 1 : case 3:
18746 1 : *AType = 0;
18747 1 : *QType = 0;
18748 1 : *b_min = FIX_MIN;
18749 1 : *b_max = FIX_MAX;
18750 : return 1;
18751 1 : case 4:
18752 1 : *AType = 0;
18753 1 : *QType = 0;
18754 1 : *b_min = FIX_MIN;
18755 1 : *b_max = FIX_MAX;
18756 : return 1;
18757 1 : case 5:
18758 1 : *AType = 0;
18759 1 : *QType = 0;
18760 1 : *b_min = FIX_MIN;
18761 1 : *b_max = FIX_MAX;
18762 : return 1;
18763 1 : case 6:
18764 1 : *AType = 0;
18765 1 : *QType = 0;
18766 1 : *b_min = FIX_MIN;
18767 1 : *b_max = FIX_MAX;
18768 : return 1;
18769 1 : case 7:
18770 1 : *AType = 0;
18771 1 : *QType = 0;
18772 1 : *b_min = FIX_MIN;
18773 1 : *b_max = FIX_MAX;
18774 : return 1;
18775 1 : case 8:
18776 1 : *AType = 0;
18777 1 : *QType = 0;
18778 1 : *b_min = FIX_MIN;
18779 1 : *b_max = FIX_MAX;
18780 : return 1;
18781 1 : case 9:
18782 1 : *AType = 0;
18783 1 : *QType = 0;
18784 1 : *b_min = FIX_MIN;
18785 1 : *b_max = FIX_MAX;
18786 : return 1;
18787 1 : case 10:
18788 1 : *AType = 0;
18789 1 : *QType = 0;
18790 1 : *b_min = FIX_MIN;
18791 1 : *b_max = FIX_MAX;
18792 : return 1;
18793 1 : case 11:
18794 1 : *AType = 0;
18795 1 : *QType = 0;
18796 1 : *b_min = FIX_MIN;
18797 1 : *b_max = FIX_MAX;
18798 : return 1;
18799 1 : case 12:
18800 1 : *AType = 0;
18801 1 : *QType = 0;
18802 1 : *b_min = FIX_MIN;
18803 1 : *b_max = FIX_MAX;
18804 : return 1;
18805 1 : case 13:
18806 1 : *AType = 0;
18807 1 : *QType = 0;
18808 1 : *b_min = FIX_MIN;
18809 1 : *b_max = FIX_MAX;
18810 : return 1;
18811 1 : case 14:
18812 1 : *AType = 0;
18813 1 : *QType = 0;
18814 1 : *b_min = FIX_MIN;
18815 1 : *b_max = FIX_MAX;
18816 : return 1;
18817 1 : case 15:
18818 1 : *AType = 0;
18819 1 : *QType = 0;
18820 1 : *b_min = FIX_MIN;
18821 1 : *b_max = FIX_MAX;
18822 : return 1;
18823 1 : case 16:
18824 1 : *AType = 0;
18825 1 : *QType = 0;
18826 1 : *b_min = FIX_MIN;
18827 1 : *b_max = FIX_MAX;
18828 : return 1;
18829 1 : case 17:
18830 1 : *AType = 0;
18831 1 : *QType = 0;
18832 1 : *b_min = FIX_MIN;
18833 1 : *b_max = FIX_MAX;
18834 : return 1;
18835 1 : case 18:
18836 1 : *AType = 0;
18837 1 : *QType = 0;
18838 1 : *b_min = FIX_MIN;
18839 1 : *b_max = FIX_MAX;
18840 : return 1;
18841 1 : case 19:
18842 1 : *AType = 0;
18843 1 : *QType = 0;
18844 1 : *b_min = FIX_MIN;
18845 1 : *b_max = FIX_MAX;
18846 : return 1;
18847 1 : case 20:
18848 1 : *AType = 0;
18849 1 : *QType = 0;
18850 1 : *b_min = FIX_MIN;
18851 1 : *b_max = FIX_MAX;
18852 : return 1;
18853 1 : case 21:
18854 1 : *AType = 0;
18855 1 : *QType = 0;
18856 1 : *b_min = FIX_MIN;
18857 1 : *b_max = FIX_MAX;
18858 : return 1;
18859 1 : case 22:
18860 1 : *AType = 0;
18861 1 : *QType = 0;
18862 1 : *b_min = FIX_MIN;
18863 1 : *b_max = FIX_MAX;
18864 : return 1;
18865 1 : case 23:
18866 1 : *AType = 0;
18867 1 : *QType = 0;
18868 1 : *b_min = FIX_MIN;
18869 1 : *b_max = FIX_MAX;
18870 : return 1;
18871 1 : case 24:
18872 1 : *AType = 0;
18873 1 : *QType = 0;
18874 1 : *b_min = FIX_MIN;
18875 1 : *b_max = FIX_MAX;
18876 : return 1;
18877 1 : case 25:
18878 1 : *AType = 0;
18879 1 : *QType = 0;
18880 1 : *b_min = FIX_MIN;
18881 1 : *b_max = FIX_MAX;
18882 : return 1;
18883 1 : case 26:
18884 1 : *AType = 0;
18885 1 : *QType = 0;
18886 1 : *b_min = FIX_MIN;
18887 1 : *b_max = FIX_MAX;
18888 : return 1;
18889 1 : case 27:
18890 1 : *AType = 0;
18891 1 : *QType = 0;
18892 1 : *b_min = FIX_MIN;
18893 1 : *b_max = FIX_MAX;
18894 : return 1;
18895 1 : case 28:
18896 1 : *AType = 0;
18897 1 : *QType = 0;
18898 1 : *b_min = FIX_MIN;
18899 1 : *b_max = FIX_MAX;
18900 : return 1;
18901 1 : case 29:
18902 1 : *AType = 0;
18903 1 : *QType = 0;
18904 1 : *b_min = FIX_MIN;
18905 1 : *b_max = FIX_MAX;
18906 : return 1;
18907 1 : case 30:
18908 1 : *AType = 0;
18909 1 : *QType = 0;
18910 1 : *b_min = FIX_MIN;
18911 1 : *b_max = FIX_MAX;
18912 : return 1;
18913 1 : case 31:
18914 1 : *AType = 0;
18915 1 : *QType = 0;
18916 1 : *b_min = FIX_MIN;
18917 1 : *b_max = FIX_MAX;
18918 : return 1;
18919 1 : case 32:
18920 1 : *AType = 0;
18921 1 : *QType = 0;
18922 1 : *b_min = FIX_MIN;
18923 1 : *b_max = FIX_MAX;
18924 : return 1;
18925 1 : case 33:
18926 1 : *AType = 0;
18927 1 : *QType = 0;
18928 1 : *b_min = FIX_MIN;
18929 1 : *b_max = FIX_MAX;
18930 : return 1;
18931 1 : case 34:
18932 1 : *AType = 0;
18933 1 : *QType = 0;
18934 1 : *b_min = FIX_MIN;
18935 1 : *b_max = FIX_MAX;
18936 : return 1;
18937 1 : case 35:
18938 1 : *AType = 0;
18939 1 : *QType = 0;
18940 1 : *b_min = FIX_MIN;
18941 1 : *b_max = FIX_MAX;
18942 : return 1;
18943 1 : case 36:
18944 1 : *AType = 0;
18945 1 : *QType = 0;
18946 1 : *b_min = FIX_MIN;
18947 1 : *b_max = FIX_MAX;
18948 : return 1;
18949 1 : case 37:
18950 1 : *AType = 0;
18951 1 : *QType = 0;
18952 1 : *b_min = FIX_MIN;
18953 1 : *b_max = FIX_MAX;
18954 : return 1;
18955 1 : case 38:
18956 1 : *AType = 0;
18957 1 : *QType = 0;
18958 1 : *b_min = FIX_MIN;
18959 1 : *b_max = FIX_MAX;
18960 : return 1;
18961 1 : case 39:
18962 1 : *AType = 0;
18963 1 : *QType = 0;
18964 1 : *b_min = FIX_MIN;
18965 1 : *b_max = FIX_MAX;
18966 : return 1;
18967 1 : case 40:
18968 1 : *AType = 0;
18969 1 : *QType = 0;
18970 1 : *b_min = FIX_MIN;
18971 1 : *b_max = FIX_MAX;
18972 : return 1;
18973 1 : case 41:
18974 1 : *AType = 0;
18975 1 : *QType = 0;
18976 1 : *b_min = FIX_MIN;
18977 1 : *b_max = FIX_MAX;
18978 : return 1;
18979 1 : case 42:
18980 1 : *AType = 0;
18981 1 : *QType = 0;
18982 1 : *b_min = FIX_MIN;
18983 1 : *b_max = FIX_MAX;
18984 : return 1;
18985 1 : case 43:
18986 1 : *AType = 0;
18987 1 : *QType = 0;
18988 1 : *b_min = FIX_MIN;
18989 1 : *b_max = FIX_MAX;
18990 : return 1;
18991 1 : case 44:
18992 1 : *AType = 0;
18993 1 : *QType = 0;
18994 1 : *b_min = FIX_MIN;
18995 1 : *b_max = FIX_MAX;
18996 : return 1;
18997 1 : case 45:
18998 1 : *AType = 0;
18999 1 : *QType = 0;
19000 1 : *b_min = FIX_MIN;
19001 1 : *b_max = FIX_MAX;
19002 : return 1;
19003 1 : case 46:
19004 1 : *AType = 0;
19005 1 : *QType = 0;
19006 1 : *b_min = FIX_MIN;
19007 1 : *b_max = FIX_MAX;
19008 : return 1;
19009 1 : case 47:
19010 1 : *AType = 0;
19011 1 : *QType = 0;
19012 1 : *b_min = FIX_MIN;
19013 1 : *b_max = FIX_MAX;
19014 : return 1;
19015 1 : case 48:
19016 1 : *AType = 0;
19017 1 : *QType = 0;
19018 1 : *b_min = FIX_MIN;
19019 1 : *b_max = FIX_MAX;
19020 : return 1;
19021 1 : case 49:
19022 1 : *AType = 0;
19023 1 : *QType = 0;
19024 1 : *b_min = FIX_MIN;
19025 1 : *b_max = FIX_MAX;
19026 : return 1;
19027 1 : case 50:
19028 1 : *AType = 0;
19029 1 : *QType = 0;
19030 1 : *b_min = FIX_MIN;
19031 1 : *b_max = FIX_MAX;
19032 : return 1;
19033 1 : case 51:
19034 1 : *AType = 0;
19035 1 : *QType = 0;
19036 1 : *b_min = FIX_MIN;
19037 1 : *b_max = FIX_MAX;
19038 : return 1;
19039 1 : case 52:
19040 1 : *AType = 0;
19041 1 : *QType = 0;
19042 1 : *b_min = FIX_MIN;
19043 1 : *b_max = FIX_MAX;
19044 : return 1;
19045 1 : case 53:
19046 1 : *AType = 0;
19047 1 : *QType = 0;
19048 1 : *b_min = FIX_MIN;
19049 1 : *b_max = FIX_MAX;
19050 : return 1;
19051 1 : case 54:
19052 1 : *AType = 0;
19053 1 : *QType = 0;
19054 1 : *b_min = FIX_MIN;
19055 1 : *b_max = FIX_MAX;
19056 : return 1;
19057 1 : case 55:
19058 1 : *AType = 0;
19059 1 : *QType = 0;
19060 1 : *b_min = FIX_MIN;
19061 1 : *b_max = FIX_MAX;
19062 : return 1;
19063 1 : case 56:
19064 1 : *AType = 0;
19065 1 : *QType = 0;
19066 1 : *b_min = FIX_MIN;
19067 1 : *b_max = FIX_MAX;
19068 : return 1;
19069 1 : case 57:
19070 1 : *AType = 0;
19071 1 : *QType = 0;
19072 1 : *b_min = FIX_MIN;
19073 1 : *b_max = FIX_MAX;
19074 : return 1;
19075 1 : case 58:
19076 1 : *AType = 0;
19077 1 : *QType = 0;
19078 1 : *b_min = FIX_MIN;
19079 1 : *b_max = FIX_MAX;
19080 : return 1;
19081 1 : case 59:
19082 1 : *AType = 0;
19083 1 : *QType = 0;
19084 1 : *b_min = FIX_MIN;
19085 1 : *b_max = FIX_MAX;
19086 : return 1;
19087 1 : case 60:
19088 1 : *AType = 0;
19089 1 : *QType = 0;
19090 1 : *b_min = FIX_MIN;
19091 1 : *b_max = FIX_MAX;
19092 : return 1;
19093 1 : case 61:
19094 1 : *AType = 0;
19095 1 : *QType = 0;
19096 1 : *b_min = FIX_MIN;
19097 1 : *b_max = FIX_MAX;
19098 : return 1;
19099 1 : case 62:
19100 1 : *AType = 0;
19101 1 : *QType = 0;
19102 1 : *b_min = FIX_MIN;
19103 1 : *b_max = FIX_MAX;
19104 : return 1;
19105 1 : case 63:
19106 1 : *AType = 0;
19107 1 : *QType = 0;
19108 1 : *b_min = FIX_MIN;
19109 1 : *b_max = FIX_MAX;
19110 : return 1;
19111 1 : case 64:
19112 1 : *AType = 0;
19113 1 : *QType = 0;
19114 1 : *b_min = FIX_MIN;
19115 1 : *b_max = FIX_MAX;
19116 : return 1;
19117 1 : case 65:
19118 1 : *AType = 0;
19119 1 : *QType = 0;
19120 1 : *b_min = FIX_MIN;
19121 1 : *b_max = FIX_MAX;
19122 : return 1;
19123 1 : case 66:
19124 1 : *AType = 0;
19125 1 : *QType = 0;
19126 1 : *b_min = FIX_MIN;
19127 1 : *b_max = FIX_MAX;
19128 : return 1;
19129 1 : case 67:
19130 1 : *AType = 0;
19131 1 : *QType = 0;
19132 1 : *b_min = FIX_MIN;
19133 1 : *b_max = FIX_MAX;
19134 : return 1;
19135 1 : case 68:
19136 1 : *AType = 0;
19137 1 : *QType = 0;
19138 1 : *b_min = FIX_MIN;
19139 1 : *b_max = FIX_MAX;
19140 : return 1;
19141 1 : case 69:
19142 1 : *AType = 0;
19143 1 : *QType = 0;
19144 1 : *b_min = FIX_MIN;
19145 1 : *b_max = FIX_MAX;
19146 : return 1;
19147 1 : case 70:
19148 1 : *AType = 0;
19149 1 : *QType = 0;
19150 1 : *b_min = FIX_MIN;
19151 1 : *b_max = FIX_MAX;
19152 : return 1;
19153 1 : case 71:
19154 1 : *AType = 0;
19155 1 : *QType = 0;
19156 1 : *b_min = FIX_MIN;
19157 1 : *b_max = FIX_MAX;
19158 : return 1;
19159 1 : case 72:
19160 1 : *AType = 0;
19161 1 : *QType = 0;
19162 1 : *b_min = FIX_MIN;
19163 1 : *b_max = FIX_MAX;
19164 : return 1;
19165 1 : case 73:
19166 1 : *AType = 0;
19167 1 : *QType = 0;
19168 1 : *b_min = FIX_MIN;
19169 1 : *b_max = FIX_MAX;
19170 : return 1;
19171 1 : case 74:
19172 1 : *AType = 0;
19173 1 : *QType = 0;
19174 1 : *b_min = FIX_MIN;
19175 1 : *b_max = FIX_MAX;
19176 : return 1;
19177 1 : case 75:
19178 1 : *AType = 0;
19179 1 : *QType = 0;
19180 1 : *b_min = FIX_MIN;
19181 1 : *b_max = FIX_MAX;
19182 : return 1;
19183 1 : case 76:
19184 1 : *AType = 0;
19185 1 : *QType = 0;
19186 1 : *b_min = FIX_MIN;
19187 1 : *b_max = FIX_MAX;
19188 : return 1;
19189 1 : case 77:
19190 1 : *AType = 0;
19191 1 : *QType = 0;
19192 1 : *b_min = FIX_MIN;
19193 1 : *b_max = FIX_MAX;
19194 : return 1;
19195 1 : case 78:
19196 1 : *AType = 0;
19197 1 : *QType = 0;
19198 1 : *b_min = FIX_MIN;
19199 1 : *b_max = FIX_MAX;
19200 : return 1;
19201 1 : case 79:
19202 1 : *AType = 0;
19203 1 : *QType = 0;
19204 1 : *b_min = FIX_MIN;
19205 1 : *b_max = FIX_MAX;
19206 : return 1;
19207 1 : case 80:
19208 1 : *AType = 0;
19209 1 : *QType = 0;
19210 1 : *b_min = FIX_MIN;
19211 1 : *b_max = FIX_MAX;
19212 : return 1;
19213 1 : case 81:
19214 1 : *AType = 0;
19215 1 : *QType = 0;
19216 1 : *b_min = FIX_MIN;
19217 1 : *b_max = FIX_MAX;
19218 : return 1;
19219 1 : case 82:
19220 1 : *AType = 0;
19221 1 : *QType = 0;
19222 1 : *b_min = FIX_MIN;
19223 1 : *b_max = FIX_MAX;
19224 : return 1;
19225 1 : case 83:
19226 1 : *AType = 0;
19227 1 : *QType = 0;
19228 1 : *b_min = FIX_MIN;
19229 1 : *b_max = FIX_MAX;
19230 : return 1;
19231 1 : case 84:
19232 1 : *AType = 0;
19233 1 : *QType = 0;
19234 1 : *b_min = FIX_MIN;
19235 1 : *b_max = FIX_MAX;
19236 : return 1;
19237 1 : case 85:
19238 1 : *AType = 0;
19239 1 : *QType = 0;
19240 1 : *b_min = FIX_MIN;
19241 1 : *b_max = FIX_MAX;
19242 : return 1;
19243 1 : case 86:
19244 1 : *AType = 0;
19245 1 : *QType = 0;
19246 1 : *b_min = FIX_MIN;
19247 1 : *b_max = FIX_MAX;
19248 : return 1;
19249 1 : case 87:
19250 1 : *AType = 0;
19251 1 : *QType = 0;
19252 1 : *b_min = FIX_MIN;
19253 1 : *b_max = FIX_MAX;
19254 : return 1;
19255 1 : case 88:
19256 1 : *AType = 0;
19257 1 : *QType = 0;
19258 1 : *b_min = FIX_MIN;
19259 1 : *b_max = FIX_MAX;
19260 : return 1;
19261 1 : case 89:
19262 1 : *AType = 0;
19263 1 : *QType = 0;
19264 1 : *b_min = FIX_MIN;
19265 1 : *b_max = FIX_MAX;
19266 : return 1;
19267 1 : case 90:
19268 1 : *AType = 0;
19269 1 : *QType = 0;
19270 1 : *b_min = FIX_MIN;
19271 1 : *b_max = FIX_MAX;
19272 : return 1;
19273 1 : case 91:
19274 1 : *AType = 0;
19275 1 : *QType = 0;
19276 1 : *b_min = FIX_MIN;
19277 1 : *b_max = FIX_MAX;
19278 : return 1;
19279 1 : case 92:
19280 1 : *AType = 0;
19281 1 : *QType = 0;
19282 1 : *b_min = FIX_MIN;
19283 1 : *b_max = FIX_MAX;
19284 : return 1;
19285 1 : case 93:
19286 1 : *AType = 0;
19287 1 : *QType = 0;
19288 1 : *b_min = FIX_MIN;
19289 1 : *b_max = FIX_MAX;
19290 : return 1;
19291 1 : case 94:
19292 1 : *AType = 0;
19293 1 : *QType = 0;
19294 1 : *b_min = FIX_MIN;
19295 1 : *b_max = FIX_MAX;
19296 : return 1;
19297 1 : case 95:
19298 1 : *AType = 0;
19299 1 : *QType = 0;
19300 1 : *b_min = FIX_MIN;
19301 1 : *b_max = FIX_MAX;
19302 : return 1;
19303 1 : case 96:
19304 1 : *AType = 0;
19305 1 : *QType = 0;
19306 1 : *b_min = FIX_MIN;
19307 1 : *b_max = FIX_MAX;
19308 : return 1;
19309 1 : case 97:
19310 1 : *AType = 0;
19311 1 : *QType = 0;
19312 1 : *b_min = FIX_MIN;
19313 1 : *b_max = FIX_MAX;
19314 : return 1;
19315 1 : case 98:
19316 1 : *AType = 0;
19317 1 : *QType = 0;
19318 1 : *b_min = FIX_MIN;
19319 1 : *b_max = FIX_MAX;
19320 : return 1;
19321 1 : case 99:
19322 1 : *AType = 0;
19323 1 : *QType = 0;
19324 1 : *b_min = FIX_MIN;
19325 1 : *b_max = FIX_MAX;
19326 : return 1;
19327 1 : case 100:
19328 1 : *AType = 0;
19329 1 : *QType = 0;
19330 1 : *b_min = FIX_MIN;
19331 1 : *b_max = FIX_MAX;
19332 : return 1;
19333 1 : case 101:
19334 1 : *AType = 0;
19335 1 : *QType = 0;
19336 1 : *b_min = FIX_MIN;
19337 1 : *b_max = FIX_MAX;
19338 : return 1;
19339 1 : case 102:
19340 1 : *AType = 0;
19341 1 : *QType = 0;
19342 1 : *b_min = FIX_MIN;
19343 1 : *b_max = FIX_MAX;
19344 : return 1;
19345 1 : case 103:
19346 1 : *AType = 0;
19347 1 : *QType = 0;
19348 1 : *b_min = FIX_MIN;
19349 1 : *b_max = FIX_MAX;
19350 : return 1;
19351 1 : case 104:
19352 1 : *AType = 0;
19353 1 : *QType = 0;
19354 1 : *b_min = FIX_MIN;
19355 1 : *b_max = FIX_MAX;
19356 : return 1;
19357 1 : case 105:
19358 1 : *AType = 0;
19359 1 : *QType = 0;
19360 1 : *b_min = FIX_MIN;
19361 1 : *b_max = FIX_MAX;
19362 : return 1;
19363 1 : case 106:
19364 1 : *AType = 0;
19365 1 : *QType = 0;
19366 1 : *b_min = FIX_MIN;
19367 1 : *b_max = FIX_MAX;
19368 : return 1;
19369 1 : case 107:
19370 1 : *AType = 0;
19371 1 : *QType = 0;
19372 1 : *b_min = FIX_MIN;
19373 1 : *b_max = FIX_MAX;
19374 : return 1;
19375 1 : case 108:
19376 1 : *AType = 0;
19377 1 : *QType = 0;
19378 1 : *b_min = FIX_MIN;
19379 1 : *b_max = FIX_MAX;
19380 : return 1;
19381 1 : case 109:
19382 1 : *AType = 0;
19383 1 : *QType = 0;
19384 1 : *b_min = FIX_MIN;
19385 1 : *b_max = FIX_MAX;
19386 : return 1;
19387 1 : case 110:
19388 1 : *AType = 0;
19389 1 : *QType = 0;
19390 1 : *b_min = FIX_MIN;
19391 1 : *b_max = FIX_MAX;
19392 : return 1;
19393 1 : case 111:
19394 1 : *AType = 0;
19395 1 : *QType = 0;
19396 1 : *b_min = FIX_MIN;
19397 1 : *b_max = FIX_MAX;
19398 : return 1;
19399 1 : case 112:
19400 1 : *AType = 0;
19401 1 : *QType = 0;
19402 1 : *b_min = FIX_MIN;
19403 1 : *b_max = FIX_MAX;
19404 : return 1;
19405 1 : case 113:
19406 1 : *AType = 0;
19407 1 : *QType = 0;
19408 1 : *b_min = FIX_MIN;
19409 1 : *b_max = FIX_MAX;
19410 : return 1;
19411 1 : case 114:
19412 1 : *AType = 0;
19413 1 : *QType = 0;
19414 1 : *b_min = FIX_MIN;
19415 1 : *b_max = FIX_MAX;
19416 : return 1;
19417 1 : case 115:
19418 1 : *AType = 0;
19419 1 : *QType = 0;
19420 1 : *b_min = FIX_MIN;
19421 1 : *b_max = FIX_MAX;
19422 : return 1;
19423 1 : case 116:
19424 1 : *AType = 0;
19425 1 : *QType = 0;
19426 1 : *b_min = FIX_MIN;
19427 1 : *b_max = FIX_MAX;
19428 : return 1;
19429 1 : case 117:
19430 1 : *AType = 0;
19431 1 : *QType = 0;
19432 1 : *b_min = FIX_MIN;
19433 1 : *b_max = FIX_MAX;
19434 : return 1;
19435 1 : case 118:
19436 1 : *AType = 0;
19437 1 : *QType = 0;
19438 1 : *b_min = FIX_MIN;
19439 1 : *b_max = FIX_MAX;
19440 : return 1;
19441 1 : case 119:
19442 1 : *AType = 0;
19443 1 : *QType = 0;
19444 1 : *b_min = FIX_MIN;
19445 1 : *b_max = FIX_MAX;
19446 : return 1;
19447 1 : case 120:
19448 1 : *AType = 0;
19449 1 : *QType = 0;
19450 1 : *b_min = FIX_MIN;
19451 1 : *b_max = FIX_MAX;
19452 : return 1;
19453 1 : case 121:
19454 1 : *AType = 0;
19455 1 : *QType = 0;
19456 1 : *b_min = FIX_MIN;
19457 1 : *b_max = FIX_MAX;
19458 : return 1;
19459 1 : case 122:
19460 1 : *AType = 0;
19461 1 : *QType = 0;
19462 1 : *b_min = FIX_MIN;
19463 1 : *b_max = FIX_MAX;
19464 : return 1;
19465 1 : case 123:
19466 1 : *AType = 0;
19467 1 : *QType = 0;
19468 1 : *b_min = FIX_MIN;
19469 1 : *b_max = FIX_MAX;
19470 : return 1;
19471 1 : case 124:
19472 1 : *AType = 0;
19473 1 : *QType = 0;
19474 1 : *b_min = FIX_MIN;
19475 1 : *b_max = FIX_MAX;
19476 : return 1;
19477 1 : case 125:
19478 1 : *AType = 0;
19479 1 : *QType = 0;
19480 1 : *b_min = FIX_MIN;
19481 1 : *b_max = FIX_MAX;
19482 : return 1;
19483 1 : case 126:
19484 1 : *AType = 0;
19485 1 : *QType = 0;
19486 1 : *b_min = FIX_MIN;
19487 1 : *b_max = FIX_MAX;
19488 : return 1;
19489 1 : case 127:
19490 1 : *AType = 0;
19491 1 : *QType = 0;
19492 1 : *b_min = FIX_MIN;
19493 1 : *b_max = FIX_MAX;
19494 : return 1;
19495 1 : case 128:
19496 1 : *AType = 0;
19497 1 : *QType = 0;
19498 1 : *b_min = FIX_MIN;
19499 1 : *b_max = FIX_MAX;
19500 : return 1;
19501 1 : case 129:
19502 1 : *AType = 0;
19503 1 : *QType = 0;
19504 1 : *b_min = FIX_MIN;
19505 1 : *b_max = FIX_MAX;
19506 : return 1;
19507 1 : case 130:
19508 1 : *AType = 0;
19509 1 : *QType = 0;
19510 1 : *b_min = FIX_MIN;
19511 1 : *b_max = FIX_MAX;
19512 : return 1;
19513 1 : case 131:
19514 1 : *AType = 0;
19515 1 : *QType = 0;
19516 1 : *b_min = FIX_MIN;
19517 1 : *b_max = FIX_MAX;
19518 : return 1;
19519 1 : case 132:
19520 1 : *AType = 0;
19521 1 : *QType = 0;
19522 1 : *b_min = FIX_MIN;
19523 1 : *b_max = FIX_MAX;
19524 : return 1;
19525 1 : case 133:
19526 1 : *AType = 0;
19527 1 : *QType = 0;
19528 1 : *b_min = FIX_MIN;
19529 1 : *b_max = FIX_MAX;
19530 : return 1;
19531 1 : case 134:
19532 1 : *AType = 0;
19533 1 : *QType = 0;
19534 1 : *b_min = FIX_MIN;
19535 1 : *b_max = FIX_MAX;
19536 : return 1;
19537 1 : case 135:
19538 1 : *AType = 0;
19539 1 : *QType = 0;
19540 1 : *b_min = FIX_MIN;
19541 1 : *b_max = FIX_MAX;
19542 : return 1;
19543 1 : case 136:
19544 1 : *AType = 0;
19545 1 : *QType = 0;
19546 1 : *b_min = FIX_MIN;
19547 1 : *b_max = FIX_MAX;
19548 : return 1;
19549 1 : case 137:
19550 1 : *AType = 0;
19551 1 : *QType = 0;
19552 1 : *b_min = FIX_MIN;
19553 1 : *b_max = FIX_MAX;
19554 : return 1;
19555 1 : case 138:
19556 1 : *AType = 0;
19557 1 : *QType = 0;
19558 1 : *b_min = FIX_MIN;
19559 1 : *b_max = FIX_MAX;
19560 : return 1;
19561 1 : case 139:
19562 1 : *AType = 0;
19563 1 : *QType = 0;
19564 1 : *b_min = FIX_MIN;
19565 1 : *b_max = FIX_MAX;
19566 : return 1;
19567 1 : case 140:
19568 1 : *AType = 0;
19569 1 : *QType = 0;
19570 1 : *b_min = FIX_MIN;
19571 1 : *b_max = FIX_MAX;
19572 : return 1;
19573 1 : case 141:
19574 1 : *AType = 0;
19575 1 : *QType = 0;
19576 1 : *b_min = FIX_MIN;
19577 1 : *b_max = FIX_MAX;
19578 : return 1;
19579 1 : case 142:
19580 1 : *AType = 0;
19581 1 : *QType = 0;
19582 1 : *b_min = FIX_MIN;
19583 1 : *b_max = FIX_MAX;
19584 : return 1;
19585 1 : case 143:
19586 1 : *AType = 0;
19587 1 : *QType = 0;
19588 1 : *b_min = FIX_MIN;
19589 1 : *b_max = FIX_MAX;
19590 : return 1;
19591 1 : case 144:
19592 1 : *AType = 0;
19593 1 : *QType = 0;
19594 1 : *b_min = FIX_MIN;
19595 1 : *b_max = FIX_MAX;
19596 : return 1;
19597 1 : case 145:
19598 1 : *AType = 0;
19599 1 : *QType = 0;
19600 1 : *b_min = FIX_MIN;
19601 1 : *b_max = FIX_MAX;
19602 : return 1;
19603 1 : case 146:
19604 1 : *AType = 0;
19605 1 : *QType = 0;
19606 1 : *b_min = FIX_MIN;
19607 1 : *b_max = FIX_MAX;
19608 : return 1;
19609 1 : case 147:
19610 1 : *AType = 0;
19611 1 : *QType = 0;
19612 1 : *b_min = FIX_MIN;
19613 1 : *b_max = FIX_MAX;
19614 : return 1;
19615 1 : case 148:
19616 1 : *AType = 0;
19617 1 : *QType = 0;
19618 1 : *b_min = FIX_MIN;
19619 1 : *b_max = FIX_MAX;
19620 : return 1;
19621 1 : case 149:
19622 1 : *AType = 0;
19623 1 : *QType = 0;
19624 1 : *b_min = FIX_MIN;
19625 1 : *b_max = FIX_MAX;
19626 : return 1;
19627 1 : case 150:
19628 1 : *AType = 0;
19629 1 : *QType = 0;
19630 1 : *b_min = FIX_MIN;
19631 1 : *b_max = FIX_MAX;
19632 : return 1;
19633 1 : case 151:
19634 1 : *AType = 0;
19635 1 : *QType = 0;
19636 1 : *b_min = FIX_MIN;
19637 1 : *b_max = FIX_MAX;
19638 : return 1;
19639 1 : case 152:
19640 1 : *AType = 0;
19641 1 : *QType = 0;
19642 1 : *b_min = FIX_MIN;
19643 1 : *b_max = FIX_MAX;
19644 : return 1;
19645 1 : case 153:
19646 1 : *AType = 0;
19647 1 : *QType = 0;
19648 1 : *b_min = FIX_MIN;
19649 1 : *b_max = FIX_MAX;
19650 : return 1;
19651 1 : case 154:
19652 1 : *AType = 0;
19653 1 : *QType = 0;
19654 1 : *b_min = FIX_MIN;
19655 1 : *b_max = FIX_MAX;
19656 : return 1;
19657 1 : case 155:
19658 1 : *AType = 0;
19659 1 : *QType = 0;
19660 1 : *b_min = FIX_MIN;
19661 1 : *b_max = FIX_MAX;
19662 : return 1;
19663 1 : case 156:
19664 1 : *AType = 0;
19665 1 : *QType = 0;
19666 1 : *b_min = FIX_MIN;
19667 1 : *b_max = FIX_MAX;
19668 : return 1;
19669 1 : case 157:
19670 1 : *AType = 0;
19671 1 : *QType = 0;
19672 1 : *b_min = FIX_MIN;
19673 1 : *b_max = FIX_MAX;
19674 : return 1;
19675 1 : case 158:
19676 1 : *AType = 0;
19677 1 : *QType = 0;
19678 1 : *b_min = FIX_MIN;
19679 1 : *b_max = FIX_MAX;
19680 : return 1;
19681 1 : case 159:
19682 1 : *AType = 0;
19683 1 : *QType = 0;
19684 1 : *b_min = FIX_MIN;
19685 1 : *b_max = FIX_MAX;
19686 : return 1;
19687 1 : case 160:
19688 1 : *AType = 0;
19689 1 : *QType = 0;
19690 1 : *b_min = FIX_MIN;
19691 1 : *b_max = FIX_MAX;
19692 : return 1;
19693 1 : case 161:
19694 1 : *AType = 0;
19695 1 : *QType = 0;
19696 1 : *b_min = FIX_MIN;
19697 1 : *b_max = FIX_MAX;
19698 : return 1;
19699 1 : case 162:
19700 1 : *AType = 0;
19701 1 : *QType = 0;
19702 1 : *b_min = FIX_MIN;
19703 1 : *b_max = FIX_MAX;
19704 : return 1;
19705 1 : case 163:
19706 1 : *AType = 0;
19707 1 : *QType = 0;
19708 1 : *b_min = FIX_MIN;
19709 1 : *b_max = FIX_MAX;
19710 : return 1;
19711 1 : case 164:
19712 1 : *AType = 0;
19713 1 : *QType = 0;
19714 1 : *b_min = FIX_MIN;
19715 1 : *b_max = FIX_MAX;
19716 : return 1;
19717 1 : case 165:
19718 1 : *AType = 0;
19719 1 : *QType = 0;
19720 1 : *b_min = FIX_MIN;
19721 1 : *b_max = FIX_MAX;
19722 : return 1;
19723 1 : case 166:
19724 1 : *AType = 0;
19725 1 : *QType = 0;
19726 1 : *b_min = FIX_MIN;
19727 1 : *b_max = FIX_MAX;
19728 : return 1;
19729 1 : case 167:
19730 1 : *AType = 0;
19731 1 : *QType = 0;
19732 1 : *b_min = FIX_MIN;
19733 1 : *b_max = FIX_MAX;
19734 : return 1;
19735 1 : case 168:
19736 1 : *AType = 0;
19737 1 : *QType = 0;
19738 1 : *b_min = FIX_MIN;
19739 1 : *b_max = FIX_MAX;
19740 : return 1;
19741 1 : case 169:
19742 1 : *AType = 0;
19743 1 : *QType = 0;
19744 1 : *b_min = FIX_MIN;
19745 1 : *b_max = FIX_MAX;
19746 : return 1;
19747 1 : case 170:
19748 1 : *AType = 0;
19749 1 : *QType = 0;
19750 1 : *b_min = FIX_MIN;
19751 1 : *b_max = FIX_MAX;
19752 : return 1;
19753 1 : case 171:
19754 1 : *AType = 0;
19755 1 : *QType = 0;
19756 1 : *b_min = FIX_MIN;
19757 1 : *b_max = FIX_MAX;
19758 : return 1;
19759 1 : case 172:
19760 1 : *AType = 0;
19761 1 : *QType = 0;
19762 1 : *b_min = FIX_MIN;
19763 1 : *b_max = FIX_MAX;
19764 : return 1;
19765 1 : case 173:
19766 1 : *AType = 0;
19767 1 : *QType = 0;
19768 1 : *b_min = FIX_MIN;
19769 1 : *b_max = FIX_MAX;
19770 : return 1;
19771 1 : case 174:
19772 1 : *AType = 0;
19773 1 : *QType = 0;
19774 1 : *b_min = FIX_MIN;
19775 1 : *b_max = FIX_MAX;
19776 : return 1;
19777 1 : case 175:
19778 1 : *AType = 0;
19779 1 : *QType = 0;
19780 1 : *b_min = FIX_MIN;
19781 1 : *b_max = FIX_MAX;
19782 : return 1;
19783 1 : case 176:
19784 1 : *AType = 0;
19785 1 : *QType = 0;
19786 1 : *b_min = FIX_MIN;
19787 1 : *b_max = FIX_MAX;
19788 : return 1;
19789 1 : case 177:
19790 1 : *AType = 0;
19791 1 : *QType = 0;
19792 1 : *b_min = FIX_MIN;
19793 1 : *b_max = FIX_MAX;
19794 : return 1;
19795 1 : case 178:
19796 1 : *AType = 0;
19797 1 : *QType = 0;
19798 1 : *b_min = FIX_MIN;
19799 1 : *b_max = FIX_MAX;
19800 : return 1;
19801 1 : case 179:
19802 1 : *AType = 0;
19803 1 : *QType = 0;
19804 1 : *b_min = FIX_MIN;
19805 1 : *b_max = FIX_MAX;
19806 : return 1;
19807 1 : case 180:
19808 1 : *AType = 0;
19809 1 : *QType = 0;
19810 1 : *b_min = FIX_MIN;
19811 1 : *b_max = FIX_MAX;
19812 : return 1;
19813 1 : case 181:
19814 1 : *AType = 0;
19815 1 : *QType = 0;
19816 1 : *b_min = FIX_MIN;
19817 1 : *b_max = FIX_MAX;
19818 : return 1;
19819 1 : case 182:
19820 1 : *AType = 0;
19821 1 : *QType = 0;
19822 1 : *b_min = FIX_MIN;
19823 1 : *b_max = FIX_MAX;
19824 : return 1;
19825 1 : case 183:
19826 1 : *AType = 0;
19827 1 : *QType = 0;
19828 1 : *b_min = FIX_MIN;
19829 1 : *b_max = FIX_MAX;
19830 : return 1;
19831 1 : case 184:
19832 1 : *AType = 0;
19833 1 : *QType = 0;
19834 1 : *b_min = FIX_MIN;
19835 1 : *b_max = FIX_MAX;
19836 : return 1;
19837 1 : case 185:
19838 1 : *AType = 0;
19839 1 : *QType = 0;
19840 1 : *b_min = FIX_MIN;
19841 1 : *b_max = FIX_MAX;
19842 : return 1;
19843 1 : case 186:
19844 1 : *AType = 0;
19845 1 : *QType = 0;
19846 1 : *b_min = FIX_MIN;
19847 1 : *b_max = FIX_MAX;
19848 : return 1;
19849 1 : case 187:
19850 1 : *AType = 0;
19851 1 : *QType = 0;
19852 1 : *b_min = FIX_MIN;
19853 1 : *b_max = FIX_MAX;
19854 : return 1;
19855 1 : case 188:
19856 1 : *AType = 0;
19857 1 : *QType = 0;
19858 1 : *b_min = FIX_MIN;
19859 1 : *b_max = FIX_MAX;
19860 : return 1;
19861 1 : case 189:
19862 1 : *AType = 0;
19863 1 : *QType = 0;
19864 1 : *b_min = FIX_MIN;
19865 1 : *b_max = FIX_MAX;
19866 : return 1;
19867 1 : case 190:
19868 1 : *AType = 0;
19869 1 : *QType = 0;
19870 1 : *b_min = FIX_MIN;
19871 1 : *b_max = FIX_MAX;
19872 : return 1;
19873 1 : case 191:
19874 1 : *AType = 0;
19875 1 : *QType = 0;
19876 1 : *b_min = FIX_MIN;
19877 1 : *b_max = FIX_MAX;
19878 : return 1;
19879 1 : case 192:
19880 1 : *AType = 0;
19881 1 : *QType = 0;
19882 1 : *b_min = FIX_MIN;
19883 1 : *b_max = FIX_MAX;
19884 : return 1;
19885 1 : case 193:
19886 1 : *AType = 0;
19887 1 : *QType = 0;
19888 1 : *b_min = FIX_MIN;
19889 1 : *b_max = FIX_MAX;
19890 : return 1;
19891 1 : case 194:
19892 1 : *AType = 0;
19893 1 : *QType = 0;
19894 1 : *b_min = FIX_MIN;
19895 1 : *b_max = FIX_MAX;
19896 : return 1;
19897 1 : case 195:
19898 1 : *AType = 0;
19899 1 : *QType = 0;
19900 1 : *b_min = FIX_MIN;
19901 1 : *b_max = FIX_MAX;
19902 : return 1;
19903 1 : case 196:
19904 1 : *AType = 0;
19905 1 : *QType = 0;
19906 1 : *b_min = FIX_MIN;
19907 1 : *b_max = FIX_MAX;
19908 : return 1;
19909 1 : case 197:
19910 1 : *AType = 0;
19911 1 : *QType = 0;
19912 1 : *b_min = FIX_MIN;
19913 1 : *b_max = FIX_MAX;
19914 : return 1;
19915 1 : case 198:
19916 1 : *AType = 0;
19917 1 : *QType = 0;
19918 1 : *b_min = FIX_MIN;
19919 1 : *b_max = FIX_MAX;
19920 : return 1;
19921 1 : case 199:
19922 1 : *AType = 0;
19923 1 : *QType = 0;
19924 1 : *b_min = FIX_MIN;
19925 1 : *b_max = FIX_MAX;
19926 : return 1;
19927 1 : case 200:
19928 1 : *AType = 0;
19929 1 : *QType = 0;
19930 1 : *b_min = FIX_MIN;
19931 1 : *b_max = FIX_MAX;
19932 : return 1;
19933 1 : case 201:
19934 1 : *AType = 0;
19935 1 : *QType = 0;
19936 1 : *b_min = FIX_MIN;
19937 1 : *b_max = FIX_MAX;
19938 : return 1;
19939 1 : case 202:
19940 1 : *AType = 0;
19941 1 : *QType = 0;
19942 1 : *b_min = FIX_MIN;
19943 1 : *b_max = FIX_MAX;
19944 : return 1;
19945 1 : case 203:
19946 1 : *AType = 0;
19947 1 : *QType = 0;
19948 1 : *b_min = FIX_MIN;
19949 1 : *b_max = FIX_MAX;
19950 : return 1;
19951 1 : case 204:
19952 1 : *AType = 0;
19953 1 : *QType = 0;
19954 1 : *b_min = FIX_MIN;
19955 1 : *b_max = FIX_MAX;
19956 : return 1;
19957 1 : case 205:
19958 1 : *AType = 0;
19959 1 : *QType = 0;
19960 1 : *b_min = FIX_MIN;
19961 1 : *b_max = FIX_MAX;
19962 : return 1;
19963 1 : case 206:
19964 1 : *AType = 0;
19965 1 : *QType = 0;
19966 1 : *b_min = FIX_MIN;
19967 1 : *b_max = FIX_MAX;
19968 : return 1;
19969 1 : case 207:
19970 1 : *AType = 0;
19971 1 : *QType = 0;
19972 1 : *b_min = FIX_MIN;
19973 1 : *b_max = FIX_MAX;
19974 : return 1;
19975 1 : case 208:
19976 1 : *AType = 0;
19977 1 : *QType = 0;
19978 1 : *b_min = FIX_MIN;
19979 1 : *b_max = FIX_MAX;
19980 : return 1;
19981 1 : case 209:
19982 1 : *AType = 0;
19983 1 : *QType = 0;
19984 1 : *b_min = FIX_MIN;
19985 1 : *b_max = FIX_MAX;
19986 : return 1;
19987 1 : case 210:
19988 1 : *AType = 0;
19989 1 : *QType = 0;
19990 1 : *b_min = FIX_MIN;
19991 1 : *b_max = FIX_MAX;
19992 : return 1;
19993 1 : case 211:
19994 1 : *AType = 0;
19995 1 : *QType = 0;
19996 1 : *b_min = FIX_MIN;
19997 1 : *b_max = FIX_MAX;
19998 : return 1;
19999 1 : case 212:
20000 1 : *AType = 0;
20001 1 : *QType = 0;
20002 1 : *b_min = FIX_MIN;
20003 1 : *b_max = FIX_MAX;
20004 : return 1;
20005 1 : case 213:
20006 1 : *AType = 0;
20007 1 : *QType = 0;
20008 1 : *b_min = FIX_MIN;
20009 1 : *b_max = FIX_MAX;
20010 : return 1;
20011 1 : case 214:
20012 1 : *AType = 0;
20013 1 : *QType = 0;
20014 1 : *b_min = FIX_MIN;
20015 1 : *b_max = FIX_MAX;
20016 : return 1;
20017 1 : case 215:
20018 1 : *AType = 0;
20019 1 : *QType = 0;
20020 1 : *b_min = FIX_MIN;
20021 1 : *b_max = FIX_MAX;
20022 : return 1;
20023 1 : case 216:
20024 1 : *AType = 0;
20025 1 : *QType = 0;
20026 1 : *b_min = FIX_MIN;
20027 1 : *b_max = FIX_MAX;
20028 : return 1;
20029 1 : case 217:
20030 1 : *AType = 0;
20031 1 : *QType = 0;
20032 1 : *b_min = FIX_MIN;
20033 1 : *b_max = FIX_MAX;
20034 : return 1;
20035 1 : case 218:
20036 1 : *AType = 0;
20037 1 : *QType = 0;
20038 1 : *b_min = FIX_MIN;
20039 1 : *b_max = FIX_MAX;
20040 : return 1;
20041 1 : case 219:
20042 1 : *AType = 0;
20043 1 : *QType = 0;
20044 1 : *b_min = FIX_MIN;
20045 1 : *b_max = FIX_MAX;
20046 : return 1;
20047 1 : case 220:
20048 1 : *AType = 0;
20049 1 : *QType = 0;
20050 1 : *b_min = FIX_MIN;
20051 1 : *b_max = FIX_MAX;
20052 : return 1;
20053 1 : case 221:
20054 1 : *AType = 0;
20055 1 : *QType = 0;
20056 1 : *b_min = FIX_MIN;
20057 1 : *b_max = FIX_MAX;
20058 : return 1;
20059 1 : case 222:
20060 1 : *AType = 0;
20061 1 : *QType = 0;
20062 1 : *b_min = FIX_MIN;
20063 1 : *b_max = FIX_MAX;
20064 : return 1;
20065 1 : case 223:
20066 1 : *AType = 0;
20067 1 : *QType = 0;
20068 1 : *b_min = FIX_MIN;
20069 1 : *b_max = FIX_MAX;
20070 : return 1;
20071 1 : case 224:
20072 1 : *AType = 0;
20073 1 : *QType = 0;
20074 1 : *b_min = FIX_MIN;
20075 1 : *b_max = FIX_MAX;
20076 : return 1;
20077 1 : case 225:
20078 1 : *AType = 0;
20079 1 : *QType = 0;
20080 1 : *b_min = FIX_MIN;
20081 1 : *b_max = FIX_MAX;
20082 : return 1;
20083 1 : case 226:
20084 1 : *AType = 0;
20085 1 : *QType = 0;
20086 1 : *b_min = FIX_MIN;
20087 1 : *b_max = FIX_MAX;
20088 : return 1;
20089 1 : case 227:
20090 1 : *AType = 0;
20091 1 : *QType = 0;
20092 1 : *b_min = FIX_MIN;
20093 1 : *b_max = FIX_MAX;
20094 : return 1;
20095 1 : case 228:
20096 1 : *AType = 0;
20097 1 : *QType = 0;
20098 1 : *b_min = FIX_MIN;
20099 1 : *b_max = FIX_MAX;
20100 : return 1;
20101 1 : case 229:
20102 1 : *AType = 0;
20103 1 : *QType = 0;
20104 1 : *b_min = FIX_MIN;
20105 1 : *b_max = FIX_MAX;
20106 : return 1;
20107 1 : case 230:
20108 1 : *AType = 0;
20109 1 : *QType = 0;
20110 1 : *b_min = FIX_MIN;
20111 1 : *b_max = FIX_MAX;
20112 : return 1;
20113 1 : case 231:
20114 1 : *AType = 0;
20115 1 : *QType = 0;
20116 1 : *b_min = FIX_MIN;
20117 1 : *b_max = FIX_MAX;
20118 : return 1;
20119 1 : case 232:
20120 1 : *AType = 0;
20121 1 : *QType = 0;
20122 1 : *b_min = FIX_MIN;
20123 1 : *b_max = FIX_MAX;
20124 : return 1;
20125 1 : case 233:
20126 1 : *AType = 0;
20127 1 : *QType = 0;
20128 1 : *b_min = FIX_MIN;
20129 1 : *b_max = FIX_MAX;
20130 : return 1;
20131 1 : case 234:
20132 1 : *AType = 0;
20133 1 : *QType = 0;
20134 1 : *b_min = FIX_MIN;
20135 1 : *b_max = FIX_MAX;
20136 : return 1;
20137 1 : case 235:
20138 1 : *AType = 0;
20139 1 : *QType = 0;
20140 1 : *b_min = FIX_MIN;
20141 1 : *b_max = FIX_MAX;
20142 : return 1;
20143 1 : case 236:
20144 1 : *AType = 0;
20145 1 : *QType = 0;
20146 1 : *b_min = FIX_MIN;
20147 1 : *b_max = FIX_MAX;
20148 : return 1;
20149 1 : case 237:
20150 1 : *AType = 0;
20151 1 : *QType = 0;
20152 1 : *b_min = FIX_MIN;
20153 1 : *b_max = FIX_MAX;
20154 : return 1;
20155 1 : case 238:
20156 1 : *AType = 0;
20157 1 : *QType = 0;
20158 1 : *b_min = FIX_MIN;
20159 1 : *b_max = FIX_MAX;
20160 : return 1;
20161 1 : case 239:
20162 1 : *AType = 0;
20163 1 : *QType = 0;
20164 1 : *b_min = FIX_MIN;
20165 1 : *b_max = FIX_MAX;
20166 : return 1;
20167 1 : case 240:
20168 1 : *AType = 0;
20169 1 : *QType = 0;
20170 1 : *b_min = FIX_MIN;
20171 1 : *b_max = FIX_MAX;
20172 : return 1;
20173 1 : case 241:
20174 1 : *AType = 0;
20175 1 : *QType = 0;
20176 1 : *b_min = FIX_MIN;
20177 1 : *b_max = FIX_MAX;
20178 : return 1;
20179 1 : case 242:
20180 1 : *AType = 0;
20181 1 : *QType = 0;
20182 1 : *b_min = FIX_MIN;
20183 1 : *b_max = FIX_MAX;
20184 : return 1;
20185 1 : case 243:
20186 1 : *AType = 0;
20187 1 : *QType = 0;
20188 1 : *b_min = FIX_MIN;
20189 1 : *b_max = FIX_MAX;
20190 : return 1;
20191 1 : case 244:
20192 1 : *AType = 0;
20193 1 : *QType = 0;
20194 1 : *b_min = FIX_MIN;
20195 1 : *b_max = FIX_MAX;
20196 : return 1;
20197 1 : case 245:
20198 1 : *AType = 0;
20199 1 : *QType = 0;
20200 1 : *b_min = FIX_MIN;
20201 1 : *b_max = FIX_MAX;
20202 : return 1;
20203 1 : case 246:
20204 1 : *AType = 0;
20205 1 : *QType = 0;
20206 1 : *b_min = FIX_MIN;
20207 1 : *b_max = FIX_MAX;
20208 : return 1;
20209 1 : case 247:
20210 1 : *AType = 0;
20211 1 : *QType = 0;
20212 1 : *b_min = FIX_MIN;
20213 1 : *b_max = FIX_MAX;
20214 : return 1;
20215 1 : case 248:
20216 1 : *AType = 0;
20217 1 : *QType = 0;
20218 1 : *b_min = FIX_MIN;
20219 1 : *b_max = FIX_MAX;
20220 : return 1;
20221 1 : case 249:
20222 1 : *AType = 0;
20223 1 : *QType = 0;
20224 1 : *b_min = FIX_MIN;
20225 1 : *b_max = FIX_MAX;
20226 : return 1;
20227 1 : case 250:
20228 1 : *AType = 0;
20229 1 : *QType = 0;
20230 1 : *b_min = FIX_MIN;
20231 1 : *b_max = FIX_MAX;
20232 : return 1;
20233 1 : case 251:
20234 1 : *AType = 0;
20235 1 : *QType = 0;
20236 1 : *b_min = FIX_MIN;
20237 1 : *b_max = FIX_MAX;
20238 : return 1;
20239 1 : case 252:
20240 1 : *AType = 0;
20241 1 : *QType = 0;
20242 1 : *b_min = FIX_MIN;
20243 1 : *b_max = FIX_MAX;
20244 : return 1;
20245 1 : case 253:
20246 1 : *AType = 0;
20247 1 : *QType = 0;
20248 1 : *b_min = FIX_MIN;
20249 1 : *b_max = FIX_MAX;
20250 : return 1;
20251 1 : case 254:
20252 1 : *AType = 0;
20253 1 : *QType = 0;
20254 1 : *b_min = FIX_MIN;
20255 1 : *b_max = FIX_MAX;
20256 : return 1;
20257 1 : case 255:
20258 1 : *AType = 0;
20259 1 : *QType = 0;
20260 1 : *b_min = FIX_MIN;
20261 1 : *b_max = FIX_MAX;
20262 : return 1;
20263 1 : case 256:
20264 1 : *AType = 0;
20265 1 : *QType = 0;
20266 1 : *b_min = FIX_MIN;
20267 1 : *b_max = FIX_MAX;
20268 : return 1;
20269 1 : case 257:
20270 1 : *AType = 0;
20271 1 : *QType = 0;
20272 1 : *b_min = FIX_MIN;
20273 1 : *b_max = FIX_MAX;
20274 : return 1;
20275 1 : case 258:
20276 1 : *AType = 0;
20277 1 : *QType = 0;
20278 1 : *b_min = FIX_MIN;
20279 1 : *b_max = FIX_MAX;
20280 : return 1;
20281 1 : case 259:
20282 1 : *AType = 0;
20283 1 : *QType = 0;
20284 1 : *b_min = FIX_MIN;
20285 1 : *b_max = FIX_MAX;
20286 : return 1;
20287 1 : case 260:
20288 1 : *AType = 0;
20289 1 : *QType = 0;
20290 1 : *b_min = FIX_MIN;
20291 1 : *b_max = FIX_MAX;
20292 : return 1;
20293 1 : case 261:
20294 1 : *AType = 0;
20295 1 : *QType = 0;
20296 1 : *b_min = FIX_MIN;
20297 1 : *b_max = FIX_MAX;
20298 : return 1;
20299 1 : case 262:
20300 1 : *AType = 0;
20301 1 : *QType = 0;
20302 1 : *b_min = FIX_MIN;
20303 1 : *b_max = FIX_MAX;
20304 : return 1;
20305 1 : case 263:
20306 1 : *AType = 0;
20307 1 : *QType = 0;
20308 1 : *b_min = FIX_MIN;
20309 1 : *b_max = FIX_MAX;
20310 : return 1;
20311 1 : case 264:
20312 1 : *AType = 0;
20313 1 : *QType = 0;
20314 1 : *b_min = FIX_MIN;
20315 1 : *b_max = FIX_MAX;
20316 : return 1;
20317 1 : case 265:
20318 1 : *AType = 0;
20319 1 : *QType = 0;
20320 1 : *b_min = FIX_MIN;
20321 1 : *b_max = FIX_MAX;
20322 : return 1;
20323 1 : case 266:
20324 1 : *AType = 0;
20325 1 : *QType = 0;
20326 1 : *b_min = FIX_MIN;
20327 1 : *b_max = FIX_MAX;
20328 : return 1;
20329 1 : case 267:
20330 1 : *AType = 0;
20331 1 : *QType = 0;
20332 1 : *b_min = FIX_MIN;
20333 1 : *b_max = FIX_MAX;
20334 : return 1;
20335 1 : case 268:
20336 1 : *AType = 0;
20337 1 : *QType = 0;
20338 1 : *b_min = FIX_MIN;
20339 1 : *b_max = FIX_MAX;
20340 : return 1;
20341 1 : case 269:
20342 1 : *AType = 0;
20343 1 : *QType = 0;
20344 1 : *b_min = FIX_MIN;
20345 1 : *b_max = FIX_MAX;
20346 : return 1;
20347 1 : case 270:
20348 1 : *AType = 0;
20349 1 : *QType = 0;
20350 1 : *b_min = FIX_MIN;
20351 1 : *b_max = FIX_MAX;
20352 : return 1;
20353 1 : case 271:
20354 1 : *AType = 0;
20355 1 : *QType = 0;
20356 1 : *b_min = FIX_MIN;
20357 1 : *b_max = FIX_MAX;
20358 : return 1;
20359 1 : case 272:
20360 1 : *AType = 0;
20361 1 : *QType = 0;
20362 1 : *b_min = FIX_MIN;
20363 1 : *b_max = FIX_MAX;
20364 : return 1;
20365 1 : case 273:
20366 1 : *AType = 0;
20367 1 : *QType = 0;
20368 1 : *b_min = FIX_MIN;
20369 1 : *b_max = FIX_MAX;
20370 : return 1;
20371 1 : case 274:
20372 1 : *AType = 0;
20373 1 : *QType = 0;
20374 1 : *b_min = FIX_MIN;
20375 1 : *b_max = FIX_MAX;
20376 : return 1;
20377 1 : case 275:
20378 1 : *AType = 0;
20379 1 : *QType = 0;
20380 1 : *b_min = FIX_MIN;
20381 1 : *b_max = FIX_MAX;
20382 : return 1;
20383 1 : case 276:
20384 1 : *AType = 0;
20385 1 : *QType = 0;
20386 1 : *b_min = FIX_MIN;
20387 1 : *b_max = FIX_MAX;
20388 : return 1;
20389 1 : case 277:
20390 1 : *AType = 0;
20391 1 : *QType = 0;
20392 1 : *b_min = FIX_MIN;
20393 1 : *b_max = FIX_MAX;
20394 : return 1;
20395 1 : case 278:
20396 1 : *AType = 0;
20397 1 : *QType = 0;
20398 1 : *b_min = FIX_MIN;
20399 1 : *b_max = FIX_MAX;
20400 : return 1;
20401 1 : case 279:
20402 1 : *AType = 0;
20403 1 : *QType = 0;
20404 1 : *b_min = FIX_MIN;
20405 1 : *b_max = FIX_MAX;
20406 : return 1;
20407 1 : case 280:
20408 1 : *AType = 0;
20409 1 : *QType = 0;
20410 1 : *b_min = FIX_MIN;
20411 1 : *b_max = FIX_MAX;
20412 : return 1;
20413 1 : case 281:
20414 1 : *AType = 0;
20415 1 : *QType = 0;
20416 1 : *b_min = FIX_MIN;
20417 1 : *b_max = FIX_MAX;
20418 : return 1;
20419 1 : case 282:
20420 1 : *AType = 0;
20421 1 : *QType = 0;
20422 1 : *b_min = FIX_MIN;
20423 1 : *b_max = FIX_MAX;
20424 : return 1;
20425 1 : case 283:
20426 1 : *AType = 0;
20427 1 : *QType = 0;
20428 1 : *b_min = FIX_MIN;
20429 1 : *b_max = FIX_MAX;
20430 : return 1;
20431 1 : case 284:
20432 1 : *AType = 0;
20433 1 : *QType = 0;
20434 1 : *b_min = FIX_MIN;
20435 1 : *b_max = FIX_MAX;
20436 : return 1;
20437 1 : case 285:
20438 1 : *AType = 0;
20439 1 : *QType = 0;
20440 1 : *b_min = FIX_MIN;
20441 1 : *b_max = FIX_MAX;
20442 : return 1;
20443 1 : case 286:
20444 1 : *AType = 0;
20445 1 : *QType = 0;
20446 1 : *b_min = FIX_MIN;
20447 1 : *b_max = FIX_MAX;
20448 : return 1;
20449 1 : case 287:
20450 1 : *AType = 0;
20451 1 : *QType = 0;
20452 1 : *b_min = FIX_MIN;
20453 1 : *b_max = FIX_MAX;
20454 : return 1;
20455 1 : case 288:
20456 1 : *AType = 0;
20457 1 : *QType = 0;
20458 1 : *b_min = FIX_MIN;
20459 1 : *b_max = FIX_MAX;
20460 : return 1;
20461 1 : case 289:
20462 1 : *AType = 0;
20463 1 : *QType = 0;
20464 1 : *b_min = FIX_MIN;
20465 1 : *b_max = FIX_MAX;
20466 : return 1;
20467 1 : case 290:
20468 1 : *AType = 0;
20469 1 : *QType = 0;
20470 1 : *b_min = FIX_MIN;
20471 1 : *b_max = FIX_MAX;
20472 : return 1;
20473 1 : case 291:
20474 1 : *AType = 0;
20475 1 : *QType = 0;
20476 1 : *b_min = FIX_MIN;
20477 1 : *b_max = FIX_MAX;
20478 : return 1;
20479 1 : case 292:
20480 1 : *AType = 0;
20481 1 : *QType = 0;
20482 1 : *b_min = FIX_MIN;
20483 1 : *b_max = FIX_MAX;
20484 : return 1;
20485 1 : case 293:
20486 1 : *AType = 0;
20487 1 : *QType = 0;
20488 1 : *b_min = FIX_MIN;
20489 1 : *b_max = FIX_MAX;
20490 : return 1;
20491 1 : case 294:
20492 1 : *AType = 0;
20493 1 : *QType = 0;
20494 1 : *b_min = FIX_MIN;
20495 1 : *b_max = FIX_MAX;
20496 : return 1;
20497 1 : case 295:
20498 1 : *AType = 0;
20499 1 : *QType = 0;
20500 1 : *b_min = FIX_MIN;
20501 1 : *b_max = FIX_MAX;
20502 : return 1;
20503 : default:
20504 : return 0;
20505 : }
20506 : }
20507 :
20508 :
20509 :
20510 1 : GF_Node *BAP_Create()
20511 : {
20512 : M_BAP *p;
20513 1 : GF_SAFEALLOC(p, M_BAP);
20514 1 : if(!p) return NULL;
20515 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BAP);
20516 :
20517 : /*default field values*/
20518 1 : p->sacroiliac_tilt = 0x80000000;
20519 1 : p->sacroiliac_torsion = 0x80000000;
20520 1 : p->sacroiliac_roll = 0x80000000;
20521 1 : p->l_hip_flexion = 0x80000000;
20522 1 : p->r_hip_flexion = 0x80000000;
20523 1 : p->l_hip_abduct = 0x80000000;
20524 1 : p->r_hip_abduct = 0x80000000;
20525 1 : p->l_hip_twisting = 0x80000000;
20526 1 : p->r_hip_twisting = 0x80000000;
20527 1 : p->l_knee_flexion = 0x80000000;
20528 1 : p->r_knee_flexion = 0x80000000;
20529 1 : p->l_knee_twisting = 0x80000000;
20530 1 : p->r_knee_twisting = 0x80000000;
20531 1 : p->l_ankle_flexion = 0x80000000;
20532 1 : p->r_ankle_flexion = 0x80000000;
20533 1 : p->l_ankle_twisting = 0x80000000;
20534 1 : p->r_ankle_twisting = 0x80000000;
20535 1 : p->l_subtalar_flexion = 0x80000000;
20536 1 : p->r_subtalar_flexion = 0x80000000;
20537 1 : p->l_midtarsal_flexion = 0x80000000;
20538 1 : p->r_midtarsal_flexion = 0x80000000;
20539 1 : p->l_metatarsal_flexion = 0x80000000;
20540 1 : p->r_metatarsal_flexion = 0x80000000;
20541 1 : p->l_sternoclavicular_abduct = 0x80000000;
20542 1 : p->r_sternoclavicular_abduct = 0x80000000;
20543 1 : p->l_sternoclavicular_rotate = 0x80000000;
20544 1 : p->r_sternoclavicular_rotate = 0x80000000;
20545 1 : p->l_acromioclavicular_abduct = 0x80000000;
20546 1 : p->r_acromioclavicular_abduct = 0x80000000;
20547 1 : p->l_acromioclavicular_rotate = 0x80000000;
20548 1 : p->r_acromioclavicular_rotate = 0x80000000;
20549 1 : p->l_shoulder_flexion = 0x80000000;
20550 1 : p->r_shoulder_flexion = 0x80000000;
20551 1 : p->l_shoulder_abduct = 0x80000000;
20552 1 : p->r_shoulder_abduct = 0x80000000;
20553 1 : p->l_shoulder_twisting = 0x80000000;
20554 1 : p->r_shoulder_twisting = 0x80000000;
20555 1 : p->l_elbow_flexion = 0x80000000;
20556 1 : p->r_elbow_flexion = 0x80000000;
20557 1 : p->l_elbow_twisting = 0x80000000;
20558 1 : p->r_elbow_twisting = 0x80000000;
20559 1 : p->l_wrist_flexion = 0x80000000;
20560 1 : p->r_wrist_flexion = 0x80000000;
20561 1 : p->l_wrist_pivot = 0x80000000;
20562 1 : p->r_wrist_pivot = 0x80000000;
20563 1 : p->l_wrist_twisting = 0x80000000;
20564 1 : p->r_wrist_twisting = 0x80000000;
20565 1 : p->skullbase_roll = 0x80000000;
20566 1 : p->skullbase_torsion = 0x80000000;
20567 1 : p->skullbase_tilt = 0x80000000;
20568 1 : p->vc1roll = 0x80000000;
20569 1 : p->vc1torsion = 0x80000000;
20570 1 : p->vc1tilt = 0x80000000;
20571 1 : p->vc2roll = 0x80000000;
20572 1 : p->vc2torsion = 0x80000000;
20573 1 : p->vc2tilt = 0x80000000;
20574 1 : p->vc3roll = 0x80000000;
20575 1 : p->vc3torsion = 0x80000000;
20576 1 : p->vc3tilt = 0x80000000;
20577 1 : p->vc4roll = 0x80000000;
20578 1 : p->vc4torsion = 0x80000000;
20579 1 : p->vc4tilt = 0x80000000;
20580 1 : p->vc5roll = 0x80000000;
20581 1 : p->vc5torsion = 0x80000000;
20582 1 : p->vc5tilt = 0x80000000;
20583 1 : p->vc6roll = 0x80000000;
20584 1 : p->vc6torsion = 0x80000000;
20585 1 : p->vc6tilt = 0x80000000;
20586 1 : p->vc7roll = 0x80000000;
20587 1 : p->vc7torsion = 0x80000000;
20588 1 : p->vc7tilt = 0x80000000;
20589 1 : p->vt1roll = 0x80000000;
20590 1 : p->vt1torsion = 0x80000000;
20591 1 : p->vt1tilt = 0x80000000;
20592 1 : p->vt2roll = 0x80000000;
20593 1 : p->vt2torsion = 0x80000000;
20594 1 : p->vt2tilt = 0x80000000;
20595 1 : p->vt3roll = 0x80000000;
20596 1 : p->vt3torsion = 0x80000000;
20597 1 : p->vt3tilt = 0x80000000;
20598 1 : p->vt4roll = 0x80000000;
20599 1 : p->vt4torsion = 0x80000000;
20600 1 : p->vt4tilt = 0x80000000;
20601 1 : p->vt5roll = 0x80000000;
20602 1 : p->vt5torsion = 0x80000000;
20603 1 : p->vt5tilt = 0x80000000;
20604 1 : p->vt6roll = 0x80000000;
20605 1 : p->vt6torsion = 0x80000000;
20606 1 : p->vt6tilt = 0x80000000;
20607 1 : p->vt7roll = 0x80000000;
20608 1 : p->vt7torsion = 0x80000000;
20609 1 : p->vt7tilt = 0x80000000;
20610 1 : p->vt8roll = 0x80000000;
20611 1 : p->vt8torsion = 0x80000000;
20612 1 : p->vt8tilt = 0x80000000;
20613 1 : p->vt9roll = 0x80000000;
20614 1 : p->vt9torsion = 0x80000000;
20615 1 : p->vt9tilt = 0x80000000;
20616 1 : p->vt10roll = 0x80000000;
20617 1 : p->vt10torsion = 0x80000000;
20618 1 : p->vt10tilt = 0x80000000;
20619 1 : p->vt11roll = 0x80000000;
20620 1 : p->vt11torsion = 0x80000000;
20621 1 : p->vt11tilt = 0x80000000;
20622 1 : p->vt12roll = 0x80000000;
20623 1 : p->vt12torsion = 0x80000000;
20624 1 : p->vt12tilt = 0x80000000;
20625 1 : p->vl1roll = 0x80000000;
20626 1 : p->vl1torsion = 0x80000000;
20627 1 : p->vl1tilt = 0x80000000;
20628 1 : p->vl2roll = 0x80000000;
20629 1 : p->vl2torsion = 0x80000000;
20630 1 : p->vl2tilt = 0x80000000;
20631 1 : p->vl3roll = 0x80000000;
20632 1 : p->vl3torsion = 0x80000000;
20633 1 : p->vl3tilt = 0x80000000;
20634 1 : p->vl4roll = 0x80000000;
20635 1 : p->vl4torsion = 0x80000000;
20636 1 : p->vl4tilt = 0x80000000;
20637 1 : p->vl5roll = 0x80000000;
20638 1 : p->vl5torsion = 0x80000000;
20639 1 : p->vl5tilt = 0x80000000;
20640 1 : p->l_pinky0_flexion = 0x80000000;
20641 1 : p->r_pinky0_flexion = 0x80000000;
20642 1 : p->l_pinky1_flexion = 0x80000000;
20643 1 : p->r_pinky1_flexion = 0x80000000;
20644 1 : p->l_pinky1_pivot = 0x80000000;
20645 1 : p->r_pinky1_pivot = 0x80000000;
20646 1 : p->l_pinky1_twisting = 0x80000000;
20647 1 : p->r_pinky1_twisting = 0x80000000;
20648 1 : p->l_pinky2_flexion = 0x80000000;
20649 1 : p->r_pinky2_flexion = 0x80000000;
20650 1 : p->l_pinky3_flexion = 0x80000000;
20651 1 : p->r_pinky3_flexion = 0x80000000;
20652 1 : p->l_ring0_flexion = 0x80000000;
20653 1 : p->r_ring0_flexion = 0x80000000;
20654 1 : p->l_ring1_flexion = 0x80000000;
20655 1 : p->r_ring1_flexion = 0x80000000;
20656 1 : p->l_ring1_pivot = 0x80000000;
20657 1 : p->r_ring1_pivot = 0x80000000;
20658 1 : p->l_ring1_twisting = 0x80000000;
20659 1 : p->r_ring1_twisting = 0x80000000;
20660 1 : p->l_ring2_flexion = 0x80000000;
20661 1 : p->r_ring2_flexion = 0x80000000;
20662 1 : p->l_ring3_flexion = 0x80000000;
20663 1 : p->r_ring3_flexion = 0x80000000;
20664 1 : p->l_middle0_flexion = 0x80000000;
20665 1 : p->r_middle0_flexion = 0x80000000;
20666 1 : p->l_middle1_flexion = 0x80000000;
20667 1 : p->r_middle1_flexion = 0x80000000;
20668 1 : p->l_middle1_pivot = 0x80000000;
20669 1 : p->r_middle1_pivot = 0x80000000;
20670 1 : p->l_middle1_twisting = 0x80000000;
20671 1 : p->r_middle1_twisting = 0x80000000;
20672 1 : p->l_middle2_flexion = 0x80000000;
20673 1 : p->r_middle2_flexion = 0x80000000;
20674 1 : p->l_middle3_flexion = 0x80000000;
20675 1 : p->r_middle3_flexion = 0x80000000;
20676 1 : p->l_index0_flexion = 0x80000000;
20677 1 : p->r_index0_flexion = 0x80000000;
20678 1 : p->l_index1_flexion = 0x80000000;
20679 1 : p->r_index1_flexion = 0x80000000;
20680 1 : p->l_index1_pivot = 0x80000000;
20681 1 : p->r_index1_pivot = 0x80000000;
20682 1 : p->l_index1_twisting = 0x80000000;
20683 1 : p->r_index1_twisting = 0x80000000;
20684 1 : p->l_index2_flexion = 0x80000000;
20685 1 : p->r_index2_flexion = 0x80000000;
20686 1 : p->l_index3_flexion = 0x80000000;
20687 1 : p->r_index3_flexion = 0x80000000;
20688 1 : p->l_thumb1_flexion = 0x80000000;
20689 1 : p->r_thumb1_flexion = 0x80000000;
20690 1 : p->l_thumb1_pivot = 0x80000000;
20691 1 : p->r_thumb1_pivot = 0x80000000;
20692 1 : p->l_thumb1_twisting = 0x80000000;
20693 1 : p->r_thumb1_twisting = 0x80000000;
20694 1 : p->l_thumb2_flexion = 0x80000000;
20695 1 : p->r_thumb2_flexion = 0x80000000;
20696 1 : p->l_thumb3_flexion = 0x80000000;
20697 1 : p->r_thumb3_flexion = 0x80000000;
20698 1 : p->HumanoidRoot_tr_vertical = 0x80000000;
20699 1 : p->HumanoidRoot_tr_lateral = 0x80000000;
20700 1 : p->HumanoidRoot_tr_frontal = 0x80000000;
20701 1 : p->HumanoidRoot_rt_body_turn = 0x80000000;
20702 1 : p->HumanoidRoot_rt_body_roll = 0x80000000;
20703 1 : p->HumanoidRoot_rt_body_tilt = 0x80000000;
20704 1 : p->extensionBap187 = 0x80000000;
20705 1 : p->extensionBap188 = 0x80000000;
20706 1 : p->extensionBap189 = 0x80000000;
20707 1 : p->extensionBap190 = 0x80000000;
20708 1 : p->extensionBap191 = 0x80000000;
20709 1 : p->extensionBap192 = 0x80000000;
20710 1 : p->extensionBap193 = 0x80000000;
20711 1 : p->extensionBap194 = 0x80000000;
20712 1 : p->extensionBap195 = 0x80000000;
20713 1 : p->extensionBap196 = 0x80000000;
20714 1 : p->extensionBap197 = 0x80000000;
20715 1 : p->extensionBap198 = 0x80000000;
20716 1 : p->extensionBap199 = 0x80000000;
20717 1 : p->extensionBap200 = 0x80000000;
20718 1 : p->extensionBap201 = 0x80000000;
20719 1 : p->extensionBap202 = 0x80000000;
20720 1 : p->extensionBap203 = 0x80000000;
20721 1 : p->extensionBap204 = 0x80000000;
20722 1 : p->extensionBap205 = 0x80000000;
20723 1 : p->extensionBap206 = 0x80000000;
20724 1 : p->extensionBap207 = 0x80000000;
20725 1 : p->extensionBap208 = 0x80000000;
20726 1 : p->extensionBap209 = 0x80000000;
20727 1 : p->extensionBap210 = 0x80000000;
20728 1 : p->extensionBap211 = 0x80000000;
20729 1 : p->extensionBap212 = 0x80000000;
20730 1 : p->extensionBap213 = 0x80000000;
20731 1 : p->extensionBap214 = 0x80000000;
20732 1 : p->extensionBap215 = 0x80000000;
20733 1 : p->extensionBap216 = 0x80000000;
20734 1 : p->extensionBap217 = 0x80000000;
20735 1 : p->extensionBap218 = 0x80000000;
20736 1 : p->extensionBap219 = 0x80000000;
20737 1 : p->extensionBap220 = 0x80000000;
20738 1 : p->extensionBap221 = 0x80000000;
20739 1 : p->extensionBap222 = 0x80000000;
20740 1 : p->extensionBap223 = 0x80000000;
20741 1 : p->extensionBap224 = 0x80000000;
20742 1 : p->extensionBap225 = 0x80000000;
20743 1 : p->extensionBap226 = 0x80000000;
20744 1 : p->extensionBap227 = 0x80000000;
20745 1 : p->extensionBap228 = 0x80000000;
20746 1 : p->extensionBap229 = 0x80000000;
20747 1 : p->extensionBap230 = 0x80000000;
20748 1 : p->extensionBap231 = 0x80000000;
20749 1 : p->extensionBap232 = 0x80000000;
20750 1 : p->extensionBap233 = 0x80000000;
20751 1 : p->extensionBap234 = 0x80000000;
20752 1 : p->extensionBap235 = 0x80000000;
20753 1 : p->extensionBap236 = 0x80000000;
20754 1 : p->extensionBap237 = 0x80000000;
20755 1 : p->extensionBap238 = 0x80000000;
20756 1 : p->extensionBap239 = 0x80000000;
20757 1 : p->extensionBap240 = 0x80000000;
20758 1 : p->extensionBap241 = 0x80000000;
20759 1 : p->extensionBap242 = 0x80000000;
20760 1 : p->extensionBap243 = 0x80000000;
20761 1 : p->extensionBap244 = 0x80000000;
20762 1 : p->extensionBap245 = 0x80000000;
20763 1 : p->extensionBap246 = 0x80000000;
20764 1 : p->extensionBap247 = 0x80000000;
20765 1 : p->extensionBap248 = 0x80000000;
20766 1 : p->extensionBap249 = 0x80000000;
20767 1 : p->extensionBap250 = 0x80000000;
20768 1 : p->extensionBap251 = 0x80000000;
20769 1 : p->extensionBap252 = 0x80000000;
20770 1 : p->extensionBap253 = 0x80000000;
20771 1 : p->extensionBap254 = 0x80000000;
20772 1 : p->extensionBap255 = 0x80000000;
20773 1 : p->extensionBap256 = 0x80000000;
20774 1 : p->extensionBap257 = 0x80000000;
20775 1 : p->extensionBap258 = 0x80000000;
20776 1 : p->extensionBap259 = 0x80000000;
20777 1 : p->extensionBap260 = 0x80000000;
20778 1 : p->extensionBap261 = 0x80000000;
20779 1 : p->extensionBap262 = 0x80000000;
20780 1 : p->extensionBap263 = 0x80000000;
20781 1 : p->extensionBap264 = 0x80000000;
20782 1 : p->extensionBap265 = 0x80000000;
20783 1 : p->extensionBap266 = 0x80000000;
20784 1 : p->extensionBap267 = 0x80000000;
20785 1 : p->extensionBap268 = 0x80000000;
20786 1 : p->extensionBap269 = 0x80000000;
20787 1 : p->extensionBap270 = 0x80000000;
20788 1 : p->extensionBap271 = 0x80000000;
20789 1 : p->extensionBap272 = 0x80000000;
20790 1 : p->extensionBap273 = 0x80000000;
20791 1 : p->extensionBap274 = 0x80000000;
20792 1 : p->extensionBap275 = 0x80000000;
20793 1 : p->extensionBap276 = 0x80000000;
20794 1 : p->extensionBap277 = 0x80000000;
20795 1 : p->extensionBap278 = 0x80000000;
20796 1 : p->extensionBap279 = 0x80000000;
20797 1 : p->extensionBap280 = 0x80000000;
20798 1 : p->extensionBap281 = 0x80000000;
20799 1 : p->extensionBap282 = 0x80000000;
20800 1 : p->extensionBap283 = 0x80000000;
20801 1 : p->extensionBap284 = 0x80000000;
20802 1 : p->extensionBap285 = 0x80000000;
20803 1 : p->extensionBap286 = 0x80000000;
20804 1 : p->extensionBap287 = 0x80000000;
20805 1 : p->extensionBap288 = 0x80000000;
20806 1 : p->extensionBap289 = 0x80000000;
20807 1 : p->extensionBap290 = 0x80000000;
20808 1 : p->extensionBap291 = 0x80000000;
20809 1 : p->extensionBap292 = 0x80000000;
20810 1 : p->extensionBap293 = 0x80000000;
20811 1 : p->extensionBap294 = 0x80000000;
20812 1 : p->extensionBap295 = 0x80000000;
20813 1 : p->extensionBap296 = 0x80000000;
20814 1 : return (GF_Node *)p;
20815 : }
20816 :
20817 :
20818 : /*
20819 : BDP Node deletion
20820 : */
20821 :
20822 1 : static void BDP_Del(GF_Node *node)
20823 : {
20824 : M_BDP *p = (M_BDP *) node;
20825 1 : gf_node_unregister_children((GF_Node *) p, p->bodyDefTables);
20826 1 : gf_node_unregister_children((GF_Node *) p, p->bodySceneGraph);
20827 1 : gf_node_free((GF_Node *) p);
20828 1 : }
20829 :
20830 : static const u16 BDP_Def2All[] = { 0, 1};
20831 : static const u16 BDP_In2All[] = { 0, 1};
20832 : static const u16 BDP_Out2All[] = { 0, 1};
20833 :
20834 : static u32 BDP_get_field_count(GF_Node *node, u8 IndexMode)
20835 : {
20836 6 : switch(IndexMode) {
20837 : case GF_SG_FIELD_CODING_IN:
20838 : return 2;
20839 : case GF_SG_FIELD_CODING_DEF:
20840 : return 2;
20841 : case GF_SG_FIELD_CODING_OUT:
20842 : return 2;
20843 1 : case GF_SG_FIELD_CODING_DYN:
20844 : return 0;
20845 : default:
20846 : return 2;
20847 : }
20848 : }
20849 :
20850 : static GF_Err BDP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
20851 : {
20852 2 : switch(IndexMode) {
20853 0 : case GF_SG_FIELD_CODING_IN:
20854 0 : *allField = BDP_In2All[inField];
20855 : return GF_OK;
20856 0 : case GF_SG_FIELD_CODING_DEF:
20857 0 : *allField = BDP_Def2All[inField];
20858 : return GF_OK;
20859 0 : case GF_SG_FIELD_CODING_OUT:
20860 0 : *allField = BDP_Out2All[inField];
20861 : return GF_OK;
20862 : default:
20863 : return GF_BAD_PARAM;
20864 : }
20865 : }
20866 : static GF_Err BDP_get_field(GF_Node *node, GF_FieldInfo *info)
20867 : {
20868 4 : switch (info->fieldIndex) {
20869 2 : case 0:
20870 2 : info->name = "bodyDefTables";
20871 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
20872 2 : info->fieldType = GF_SG_VRML_MFNODE;
20873 2 : info->NDTtype = NDT_SFBodyDefTableNode;
20874 2 : info->far_ptr = & ((M_BDP *)node)->bodyDefTables;
20875 : return GF_OK;
20876 2 : case 1:
20877 2 : info->name = "bodySceneGraph";
20878 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
20879 2 : info->fieldType = GF_SG_VRML_MFNODE;
20880 2 : info->NDTtype = NDT_SF3DNode;
20881 2 : info->far_ptr = & ((M_BDP *)node)->bodySceneGraph;
20882 : return GF_OK;
20883 : default:
20884 : return GF_BAD_PARAM;
20885 : }
20886 : }
20887 :
20888 :
20889 2 : static s32 BDP_get_field_index_by_name(char *name)
20890 : {
20891 2 : if (!strcmp("bodyDefTables", name)) return 0;
20892 1 : if (!strcmp("bodySceneGraph", name)) return 1;
20893 0 : return -1;
20894 : }
20895 : static Bool BDP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
20896 : {
20897 : switch (FieldIndex) {
20898 : default:
20899 : return 0;
20900 : }
20901 : }
20902 :
20903 :
20904 :
20905 1 : GF_Node *BDP_Create()
20906 : {
20907 : M_BDP *p;
20908 1 : GF_SAFEALLOC(p, M_BDP);
20909 1 : if(!p) return NULL;
20910 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BDP);
20911 :
20912 : /*default field values*/
20913 1 : return (GF_Node *)p;
20914 : }
20915 :
20916 :
20917 : /*
20918 : Body Node deletion
20919 : */
20920 :
20921 1 : static void Body_Del(GF_Node *node)
20922 : {
20923 : M_Body *p = (M_Body *) node;
20924 1 : gf_node_unregister((GF_Node *) p->bdp, (GF_Node *) p);
20925 1 : gf_node_unregister((GF_Node *) p->bap, (GF_Node *) p);
20926 1 : gf_node_unregister_children((GF_Node *) p, p->renderedBody);
20927 1 : gf_node_free((GF_Node *) p);
20928 1 : }
20929 :
20930 : static const u16 Body_Def2All[] = { 0, 1, 2};
20931 : static const u16 Body_In2All[] = { 0, 1, 2};
20932 : static const u16 Body_Out2All[] = { 0, 1, 2};
20933 :
20934 : static u32 Body_get_field_count(GF_Node *node, u8 IndexMode)
20935 : {
20936 6 : switch(IndexMode) {
20937 : case GF_SG_FIELD_CODING_IN:
20938 : return 3;
20939 : case GF_SG_FIELD_CODING_DEF:
20940 : return 3;
20941 : case GF_SG_FIELD_CODING_OUT:
20942 : return 3;
20943 1 : case GF_SG_FIELD_CODING_DYN:
20944 : return 0;
20945 : default:
20946 : return 3;
20947 : }
20948 : }
20949 :
20950 : static GF_Err Body_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
20951 : {
20952 3 : switch(IndexMode) {
20953 0 : case GF_SG_FIELD_CODING_IN:
20954 0 : *allField = Body_In2All[inField];
20955 : return GF_OK;
20956 0 : case GF_SG_FIELD_CODING_DEF:
20957 0 : *allField = Body_Def2All[inField];
20958 : return GF_OK;
20959 0 : case GF_SG_FIELD_CODING_OUT:
20960 0 : *allField = Body_Out2All[inField];
20961 : return GF_OK;
20962 : default:
20963 : return GF_BAD_PARAM;
20964 : }
20965 : }
20966 : static GF_Err Body_get_field(GF_Node *node, GF_FieldInfo *info)
20967 : {
20968 6 : switch (info->fieldIndex) {
20969 2 : case 0:
20970 2 : info->name = "bdp";
20971 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
20972 2 : info->fieldType = GF_SG_VRML_SFNODE;
20973 2 : info->NDTtype = NDT_SFBDPNode;
20974 2 : info->far_ptr = & ((M_Body *)node)->bdp;
20975 : return GF_OK;
20976 2 : case 1:
20977 2 : info->name = "bap";
20978 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
20979 2 : info->fieldType = GF_SG_VRML_SFNODE;
20980 2 : info->NDTtype = NDT_SFBAPNode;
20981 2 : info->far_ptr = & ((M_Body *)node)->bap;
20982 : return GF_OK;
20983 2 : case 2:
20984 2 : info->name = "renderedBody";
20985 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
20986 2 : info->fieldType = GF_SG_VRML_MFNODE;
20987 2 : info->NDTtype = NDT_SF3DNode;
20988 2 : info->far_ptr = & ((M_Body *)node)->renderedBody;
20989 : return GF_OK;
20990 : default:
20991 : return GF_BAD_PARAM;
20992 : }
20993 : }
20994 :
20995 :
20996 3 : static s32 Body_get_field_index_by_name(char *name)
20997 : {
20998 3 : if (!strcmp("bdp", name)) return 0;
20999 2 : if (!strcmp("bap", name)) return 1;
21000 1 : if (!strcmp("renderedBody", name)) return 2;
21001 0 : return -1;
21002 : }
21003 : static Bool Body_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21004 : {
21005 : switch (FieldIndex) {
21006 : default:
21007 : return 0;
21008 : }
21009 : }
21010 :
21011 :
21012 :
21013 1 : GF_Node *Body_Create()
21014 : {
21015 : M_Body *p;
21016 1 : GF_SAFEALLOC(p, M_Body);
21017 1 : if(!p) return NULL;
21018 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Body);
21019 :
21020 : /*default field values*/
21021 1 : return (GF_Node *)p;
21022 : }
21023 :
21024 :
21025 : /*
21026 : BodyDefTable Node deletion
21027 : */
21028 :
21029 1 : static void BodyDefTable_Del(GF_Node *node)
21030 : {
21031 : M_BodyDefTable *p = (M_BodyDefTable *) node;
21032 1 : gf_sg_sfstring_del(p->bodySceneGraphNodeName);
21033 1 : gf_sg_mfint32_del(p->bapIDs);
21034 1 : gf_sg_mfint32_del(p->vertexIds);
21035 1 : gf_sg_mfint32_del(p->bapCombinations);
21036 1 : gf_sg_mfvec3f_del(p->displacements);
21037 1 : gf_node_free((GF_Node *) p);
21038 1 : }
21039 :
21040 : static const u16 BodyDefTable_Def2All[] = { 0, 1, 2, 3, 4, 5};
21041 : static const u16 BodyDefTable_In2All[] = { 0, 1, 2, 3, 4, 5};
21042 : static const u16 BodyDefTable_Out2All[] = { 0, 1, 2, 3, 4, 5};
21043 :
21044 : static u32 BodyDefTable_get_field_count(GF_Node *node, u8 IndexMode)
21045 : {
21046 6 : switch(IndexMode) {
21047 : case GF_SG_FIELD_CODING_IN:
21048 : return 6;
21049 : case GF_SG_FIELD_CODING_DEF:
21050 : return 6;
21051 : case GF_SG_FIELD_CODING_OUT:
21052 : return 6;
21053 1 : case GF_SG_FIELD_CODING_DYN:
21054 : return 0;
21055 : default:
21056 : return 6;
21057 : }
21058 : }
21059 :
21060 : static GF_Err BodyDefTable_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21061 : {
21062 6 : switch(IndexMode) {
21063 0 : case GF_SG_FIELD_CODING_IN:
21064 0 : *allField = BodyDefTable_In2All[inField];
21065 : return GF_OK;
21066 0 : case GF_SG_FIELD_CODING_DEF:
21067 0 : *allField = BodyDefTable_Def2All[inField];
21068 : return GF_OK;
21069 0 : case GF_SG_FIELD_CODING_OUT:
21070 0 : *allField = BodyDefTable_Out2All[inField];
21071 : return GF_OK;
21072 : default:
21073 : return GF_BAD_PARAM;
21074 : }
21075 : }
21076 12 : static GF_Err BodyDefTable_get_field(GF_Node *node, GF_FieldInfo *info)
21077 : {
21078 12 : switch (info->fieldIndex) {
21079 2 : case 0:
21080 2 : info->name = "bodySceneGraphNodeName";
21081 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21082 2 : info->fieldType = GF_SG_VRML_SFSTRING;
21083 2 : info->far_ptr = & ((M_BodyDefTable *) node)->bodySceneGraphNodeName;
21084 2 : return GF_OK;
21085 2 : case 1:
21086 2 : info->name = "bapIDs";
21087 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21088 2 : info->fieldType = GF_SG_VRML_MFINT32;
21089 2 : info->far_ptr = & ((M_BodyDefTable *) node)->bapIDs;
21090 2 : return GF_OK;
21091 2 : case 2:
21092 2 : info->name = "vertexIds";
21093 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21094 2 : info->fieldType = GF_SG_VRML_MFINT32;
21095 2 : info->far_ptr = & ((M_BodyDefTable *) node)->vertexIds;
21096 2 : return GF_OK;
21097 2 : case 3:
21098 2 : info->name = "bapCombinations";
21099 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21100 2 : info->fieldType = GF_SG_VRML_MFINT32;
21101 2 : info->far_ptr = & ((M_BodyDefTable *) node)->bapCombinations;
21102 2 : return GF_OK;
21103 2 : case 4:
21104 2 : info->name = "displacements";
21105 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21106 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
21107 2 : info->far_ptr = & ((M_BodyDefTable *) node)->displacements;
21108 2 : return GF_OK;
21109 2 : case 5:
21110 2 : info->name = "numInterpolateKeys";
21111 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21112 2 : info->fieldType = GF_SG_VRML_SFINT32;
21113 2 : info->far_ptr = & ((M_BodyDefTable *) node)->numInterpolateKeys;
21114 2 : return GF_OK;
21115 : default:
21116 : return GF_BAD_PARAM;
21117 : }
21118 : }
21119 :
21120 :
21121 6 : static s32 BodyDefTable_get_field_index_by_name(char *name)
21122 : {
21123 6 : if (!strcmp("bodySceneGraphNodeName", name)) return 0;
21124 5 : if (!strcmp("bapIDs", name)) return 1;
21125 4 : if (!strcmp("vertexIds", name)) return 2;
21126 3 : if (!strcmp("bapCombinations", name)) return 3;
21127 2 : if (!strcmp("displacements", name)) return 4;
21128 1 : if (!strcmp("numInterpolateKeys", name)) return 5;
21129 0 : return -1;
21130 : }
21131 : static Bool BodyDefTable_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21132 : {
21133 6 : switch (FieldIndex) {
21134 1 : case 1:
21135 1 : *AType = 0;
21136 1 : *QType = 13;
21137 1 : *QT13_bits = 9;
21138 1 : *b_min = FLT2FIX(1);
21139 1 : *b_max = FLT2FIX(296);
21140 : return 1;
21141 1 : case 2:
21142 1 : *AType = 0;
21143 1 : *QType = 0;
21144 1 : *b_min = FLT2FIX(0);
21145 1 : *b_max = FIX_MAX;
21146 : return 1;
21147 1 : case 3:
21148 1 : *AType = 0;
21149 1 : *QType = 0;
21150 1 : *b_min = FIX_MIN;
21151 1 : *b_max = FIX_MAX;
21152 : return 1;
21153 1 : case 5:
21154 1 : *AType = 0;
21155 1 : *QType = 0;
21156 1 : *b_min = FLT2FIX(2);
21157 1 : *b_max = FIX_MAX;
21158 : return 1;
21159 : default:
21160 : return 0;
21161 : }
21162 : }
21163 :
21164 :
21165 :
21166 1 : GF_Node *BodyDefTable_Create()
21167 : {
21168 : M_BodyDefTable *p;
21169 1 : GF_SAFEALLOC(p, M_BodyDefTable);
21170 1 : if(!p) return NULL;
21171 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BodyDefTable);
21172 :
21173 : /*default field values*/
21174 1 : p->numInterpolateKeys = 2;
21175 1 : return (GF_Node *)p;
21176 : }
21177 :
21178 :
21179 : /*
21180 : BodySegmentConnectionHint Node deletion
21181 : */
21182 :
21183 1 : static void BodySegmentConnectionHint_Del(GF_Node *node)
21184 : {
21185 : M_BodySegmentConnectionHint *p = (M_BodySegmentConnectionHint *) node;
21186 1 : gf_sg_sfstring_del(p->firstSegmentNodeName);
21187 1 : gf_sg_sfstring_del(p->secondSegmentNodeName);
21188 1 : gf_sg_mfint32_del(p->firstVertexIdList);
21189 1 : gf_sg_mfint32_del(p->secondVertexIdList);
21190 1 : gf_node_free((GF_Node *) p);
21191 1 : }
21192 :
21193 : static const u16 BodySegmentConnectionHint_Def2All[] = { 0, 1, 2, 3};
21194 : static const u16 BodySegmentConnectionHint_In2All[] = { 0, 1, 2, 3};
21195 : static const u16 BodySegmentConnectionHint_Out2All[] = { 0, 1, 2, 3};
21196 :
21197 : static u32 BodySegmentConnectionHint_get_field_count(GF_Node *node, u8 IndexMode)
21198 : {
21199 6 : switch(IndexMode) {
21200 : case GF_SG_FIELD_CODING_IN:
21201 : return 4;
21202 : case GF_SG_FIELD_CODING_DEF:
21203 : return 4;
21204 : case GF_SG_FIELD_CODING_OUT:
21205 : return 4;
21206 1 : case GF_SG_FIELD_CODING_DYN:
21207 : return 0;
21208 : default:
21209 : return 4;
21210 : }
21211 : }
21212 :
21213 : static GF_Err BodySegmentConnectionHint_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21214 : {
21215 4 : switch(IndexMode) {
21216 0 : case GF_SG_FIELD_CODING_IN:
21217 0 : *allField = BodySegmentConnectionHint_In2All[inField];
21218 : return GF_OK;
21219 0 : case GF_SG_FIELD_CODING_DEF:
21220 0 : *allField = BodySegmentConnectionHint_Def2All[inField];
21221 : return GF_OK;
21222 0 : case GF_SG_FIELD_CODING_OUT:
21223 0 : *allField = BodySegmentConnectionHint_Out2All[inField];
21224 : return GF_OK;
21225 : default:
21226 : return GF_BAD_PARAM;
21227 : }
21228 : }
21229 8 : static GF_Err BodySegmentConnectionHint_get_field(GF_Node *node, GF_FieldInfo *info)
21230 : {
21231 8 : switch (info->fieldIndex) {
21232 2 : case 0:
21233 2 : info->name = "firstSegmentNodeName";
21234 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21235 2 : info->fieldType = GF_SG_VRML_SFSTRING;
21236 2 : info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->firstSegmentNodeName;
21237 2 : return GF_OK;
21238 2 : case 1:
21239 2 : info->name = "secondSegmentNodeName";
21240 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21241 2 : info->fieldType = GF_SG_VRML_SFSTRING;
21242 2 : info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->secondSegmentNodeName;
21243 2 : return GF_OK;
21244 2 : case 2:
21245 2 : info->name = "firstVertexIdList";
21246 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21247 2 : info->fieldType = GF_SG_VRML_MFINT32;
21248 2 : info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->firstVertexIdList;
21249 2 : return GF_OK;
21250 2 : case 3:
21251 2 : info->name = "secondVertexIdList";
21252 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21253 2 : info->fieldType = GF_SG_VRML_MFINT32;
21254 2 : info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->secondVertexIdList;
21255 2 : return GF_OK;
21256 : default:
21257 : return GF_BAD_PARAM;
21258 : }
21259 : }
21260 :
21261 :
21262 4 : static s32 BodySegmentConnectionHint_get_field_index_by_name(char *name)
21263 : {
21264 4 : if (!strcmp("firstSegmentNodeName", name)) return 0;
21265 3 : if (!strcmp("secondSegmentNodeName", name)) return 1;
21266 2 : if (!strcmp("firstVertexIdList", name)) return 2;
21267 1 : if (!strcmp("secondVertexIdList", name)) return 3;
21268 0 : return -1;
21269 : }
21270 : static Bool BodySegmentConnectionHint_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21271 : {
21272 4 : switch (FieldIndex) {
21273 1 : case 2:
21274 1 : *AType = 0;
21275 1 : *QType = 0;
21276 1 : *b_min = FLT2FIX(0);
21277 1 : *b_max = FIX_MAX;
21278 : return 1;
21279 1 : case 3:
21280 1 : *AType = 0;
21281 1 : *QType = 0;
21282 1 : *b_min = FLT2FIX(0);
21283 1 : *b_max = FIX_MAX;
21284 : return 1;
21285 : default:
21286 : return 0;
21287 : }
21288 : }
21289 :
21290 :
21291 :
21292 1 : GF_Node *BodySegmentConnectionHint_Create()
21293 : {
21294 : M_BodySegmentConnectionHint *p;
21295 1 : GF_SAFEALLOC(p, M_BodySegmentConnectionHint);
21296 1 : if(!p) return NULL;
21297 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BodySegmentConnectionHint);
21298 :
21299 : /*default field values*/
21300 1 : return (GF_Node *)p;
21301 : }
21302 :
21303 :
21304 : /*
21305 : DirectiveSound Node deletion
21306 : */
21307 :
21308 1 : static void DirectiveSound_Del(GF_Node *node)
21309 : {
21310 : M_DirectiveSound *p = (M_DirectiveSound *) node;
21311 1 : gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
21312 1 : gf_node_unregister((GF_Node *) p->perceptualParameters, (GF_Node *) p);
21313 1 : gf_sg_mffloat_del(p->directivity);
21314 1 : gf_sg_mffloat_del(p->angles);
21315 1 : gf_sg_mffloat_del(p->frequency);
21316 1 : gf_node_free((GF_Node *) p);
21317 1 : }
21318 :
21319 : static const u16 DirectiveSound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
21320 : static const u16 DirectiveSound_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
21321 : static const u16 DirectiveSound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
21322 : static const u16 DirectiveSound_Dyn2All[] = { 0, 1, 2};
21323 :
21324 : static u32 DirectiveSound_get_field_count(GF_Node *node, u8 IndexMode)
21325 : {
21326 : switch(IndexMode) {
21327 : case GF_SG_FIELD_CODING_IN:
21328 : return 7;
21329 : case GF_SG_FIELD_CODING_DEF:
21330 : return 13;
21331 : case GF_SG_FIELD_CODING_OUT:
21332 : return 7;
21333 : case GF_SG_FIELD_CODING_DYN:
21334 : return 3;
21335 : default:
21336 : return 13;
21337 : }
21338 : }
21339 :
21340 : static GF_Err DirectiveSound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21341 : {
21342 13 : switch(IndexMode) {
21343 0 : case GF_SG_FIELD_CODING_IN:
21344 0 : *allField = DirectiveSound_In2All[inField];
21345 : return GF_OK;
21346 0 : case GF_SG_FIELD_CODING_DEF:
21347 0 : *allField = DirectiveSound_Def2All[inField];
21348 : return GF_OK;
21349 0 : case GF_SG_FIELD_CODING_OUT:
21350 0 : *allField = DirectiveSound_Out2All[inField];
21351 : return GF_OK;
21352 0 : case GF_SG_FIELD_CODING_DYN:
21353 0 : *allField = DirectiveSound_Dyn2All[inField];
21354 : return GF_OK;
21355 : default:
21356 : return GF_BAD_PARAM;
21357 : }
21358 : }
21359 26 : static GF_Err DirectiveSound_get_field(GF_Node *node, GF_FieldInfo *info)
21360 : {
21361 26 : switch (info->fieldIndex) {
21362 2 : case 0:
21363 2 : info->name = "direction";
21364 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21365 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
21366 2 : info->far_ptr = & ((M_DirectiveSound *) node)->direction;
21367 2 : return GF_OK;
21368 2 : case 1:
21369 2 : info->name = "intensity";
21370 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21371 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21372 2 : info->far_ptr = & ((M_DirectiveSound *) node)->intensity;
21373 2 : return GF_OK;
21374 2 : case 2:
21375 2 : info->name = "location";
21376 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21377 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
21378 2 : info->far_ptr = & ((M_DirectiveSound *) node)->location;
21379 2 : return GF_OK;
21380 2 : case 3:
21381 2 : info->name = "source";
21382 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21383 2 : info->fieldType = GF_SG_VRML_SFNODE;
21384 2 : info->NDTtype = NDT_SFAudioNode;
21385 2 : info->far_ptr = & ((M_DirectiveSound *)node)->source;
21386 2 : return GF_OK;
21387 2 : case 4:
21388 2 : info->name = "perceptualParameters";
21389 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21390 2 : info->fieldType = GF_SG_VRML_SFNODE;
21391 2 : info->NDTtype = NDT_SFPerceptualParameterNode;
21392 2 : info->far_ptr = & ((M_DirectiveSound *)node)->perceptualParameters;
21393 2 : return GF_OK;
21394 2 : case 5:
21395 2 : info->name = "roomEffect";
21396 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21397 2 : info->fieldType = GF_SG_VRML_SFBOOL;
21398 2 : info->far_ptr = & ((M_DirectiveSound *) node)->roomEffect;
21399 2 : return GF_OK;
21400 2 : case 6:
21401 2 : info->name = "spatialize";
21402 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21403 2 : info->fieldType = GF_SG_VRML_SFBOOL;
21404 2 : info->far_ptr = & ((M_DirectiveSound *) node)->spatialize;
21405 2 : return GF_OK;
21406 2 : case 7:
21407 2 : info->name = "directivity";
21408 2 : info->eventType = GF_SG_EVENT_FIELD;
21409 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
21410 2 : info->far_ptr = & ((M_DirectiveSound *) node)->directivity;
21411 2 : return GF_OK;
21412 2 : case 8:
21413 2 : info->name = "angles";
21414 2 : info->eventType = GF_SG_EVENT_FIELD;
21415 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
21416 2 : info->far_ptr = & ((M_DirectiveSound *) node)->angles;
21417 2 : return GF_OK;
21418 2 : case 9:
21419 2 : info->name = "frequency";
21420 2 : info->eventType = GF_SG_EVENT_FIELD;
21421 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
21422 2 : info->far_ptr = & ((M_DirectiveSound *) node)->frequency;
21423 2 : return GF_OK;
21424 2 : case 10:
21425 2 : info->name = "speedOfSound";
21426 2 : info->eventType = GF_SG_EVENT_FIELD;
21427 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21428 2 : info->far_ptr = & ((M_DirectiveSound *) node)->speedOfSound;
21429 2 : return GF_OK;
21430 2 : case 11:
21431 2 : info->name = "distance";
21432 2 : info->eventType = GF_SG_EVENT_FIELD;
21433 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21434 2 : info->far_ptr = & ((M_DirectiveSound *) node)->distance;
21435 2 : return GF_OK;
21436 2 : case 12:
21437 2 : info->name = "useAirabs";
21438 2 : info->eventType = GF_SG_EVENT_FIELD;
21439 2 : info->fieldType = GF_SG_VRML_SFBOOL;
21440 2 : info->far_ptr = & ((M_DirectiveSound *) node)->useAirabs;
21441 2 : return GF_OK;
21442 : default:
21443 : return GF_BAD_PARAM;
21444 : }
21445 : }
21446 :
21447 :
21448 13 : static s32 DirectiveSound_get_field_index_by_name(char *name)
21449 : {
21450 13 : if (!strcmp("direction", name)) return 0;
21451 12 : if (!strcmp("intensity", name)) return 1;
21452 11 : if (!strcmp("location", name)) return 2;
21453 10 : if (!strcmp("source", name)) return 3;
21454 9 : if (!strcmp("perceptualParameters", name)) return 4;
21455 8 : if (!strcmp("roomEffect", name)) return 5;
21456 7 : if (!strcmp("spatialize", name)) return 6;
21457 6 : if (!strcmp("directivity", name)) return 7;
21458 5 : if (!strcmp("angles", name)) return 8;
21459 4 : if (!strcmp("frequency", name)) return 9;
21460 3 : if (!strcmp("speedOfSound", name)) return 10;
21461 2 : if (!strcmp("distance", name)) return 11;
21462 1 : if (!strcmp("useAirabs", name)) return 12;
21463 0 : return -1;
21464 : }
21465 13 : static Bool DirectiveSound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21466 : {
21467 13 : switch (FieldIndex) {
21468 1 : case 0:
21469 1 : *AType = 9;
21470 1 : *QType = 9;
21471 1 : *b_min = FIX_MIN;
21472 1 : *b_max = FIX_MAX;
21473 : return 1;
21474 1 : case 1:
21475 1 : *AType = 7;
21476 1 : *QType = 0;
21477 1 : *b_min = FLT2FIX(0);
21478 1 : *b_max = FIX_MAX;
21479 : return 1;
21480 1 : case 2:
21481 1 : *AType = 1;
21482 1 : *QType = 1;
21483 1 : *b_min = FIX_MIN;
21484 1 : *b_max = FIX_MAX;
21485 : return 1;
21486 1 : case 7:
21487 1 : *AType = 0;
21488 1 : *QType = 0;
21489 1 : *b_min = FIX_MIN;
21490 1 : *b_max = FIX_MAX;
21491 : return 1;
21492 1 : case 8:
21493 1 : *AType = 0;
21494 1 : *QType = 6;
21495 1 : *b_min = FLT2FIX(0);
21496 1 : *b_max = FLT2FIX(3.14159265);
21497 : return 1;
21498 1 : case 9:
21499 1 : *AType = 0;
21500 1 : *QType = 0;
21501 1 : *b_min = FLT2FIX(0);
21502 1 : *b_max = FIX_MAX;
21503 : return 1;
21504 1 : case 10:
21505 1 : *AType = 0;
21506 1 : *QType = 1;
21507 1 : *b_min = FLT2FIX(0);
21508 1 : *b_max = FIX_MAX;
21509 : return 1;
21510 1 : case 11:
21511 1 : *AType = 0;
21512 1 : *QType = 0;
21513 1 : *b_min = FLT2FIX(0);
21514 1 : *b_max = FIX_MAX;
21515 : return 1;
21516 : default:
21517 : return 0;
21518 : }
21519 : }
21520 :
21521 :
21522 :
21523 1 : GF_Node *DirectiveSound_Create()
21524 : {
21525 : M_DirectiveSound *p;
21526 1 : GF_SAFEALLOC(p, M_DirectiveSound);
21527 1 : if(!p) return NULL;
21528 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_DirectiveSound);
21529 :
21530 : /*default field values*/
21531 1 : p->direction.x = FLT2FIX(0);
21532 1 : p->direction.y = FLT2FIX(0);
21533 1 : p->direction.z = FLT2FIX(-1);
21534 1 : p->intensity = FLT2FIX(1);
21535 1 : p->location.x = FLT2FIX(0);
21536 1 : p->location.y = FLT2FIX(0);
21537 1 : p->location.z = FLT2FIX(0);
21538 1 : p->spatialize = 1;
21539 1 : p->directivity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
21540 1 : p->directivity.count = 1;
21541 1 : p->directivity.vals[0] = FLT2FIX(1);
21542 1 : p->angles.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
21543 1 : p->angles.count = 1;
21544 1 : p->angles.vals[0] = FLT2FIX(1);
21545 1 : p->speedOfSound = FLT2FIX(340);
21546 1 : p->distance = FLT2FIX(100);
21547 1 : return (GF_Node *)p;
21548 : }
21549 :
21550 :
21551 : /*
21552 : Hierarchical3DMesh Node deletion
21553 : */
21554 :
21555 : static void Hierarchical3DMesh_Del(GF_Node *node)
21556 : {
21557 : M_Hierarchical3DMesh *p = (M_Hierarchical3DMesh *) node;
21558 1 : gf_sg_mfurl_del(p->url);
21559 1 : gf_node_free((GF_Node *) p);
21560 : }
21561 :
21562 : static const u16 Hierarchical3DMesh_Def2All[] = { 1, 2};
21563 : static const u16 Hierarchical3DMesh_In2All[] = { 0, 1};
21564 : static const u16 Hierarchical3DMesh_Out2All[] = { 1, 3};
21565 :
21566 : static u32 Hierarchical3DMesh_get_field_count(GF_Node *node, u8 IndexMode)
21567 : {
21568 6 : switch(IndexMode) {
21569 : case GF_SG_FIELD_CODING_IN:
21570 : return 2;
21571 : case GF_SG_FIELD_CODING_DEF:
21572 : return 2;
21573 : case GF_SG_FIELD_CODING_OUT:
21574 : return 2;
21575 1 : case GF_SG_FIELD_CODING_DYN:
21576 : return 0;
21577 2 : default:
21578 : return 4;
21579 : }
21580 : }
21581 :
21582 : static GF_Err Hierarchical3DMesh_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21583 : {
21584 4 : switch(IndexMode) {
21585 0 : case GF_SG_FIELD_CODING_IN:
21586 0 : *allField = Hierarchical3DMesh_In2All[inField];
21587 : return GF_OK;
21588 0 : case GF_SG_FIELD_CODING_DEF:
21589 0 : *allField = Hierarchical3DMesh_Def2All[inField];
21590 : return GF_OK;
21591 0 : case GF_SG_FIELD_CODING_OUT:
21592 0 : *allField = Hierarchical3DMesh_Out2All[inField];
21593 : return GF_OK;
21594 : default:
21595 : return GF_BAD_PARAM;
21596 : }
21597 : }
21598 8 : static GF_Err Hierarchical3DMesh_get_field(GF_Node *node, GF_FieldInfo *info)
21599 : {
21600 8 : switch (info->fieldIndex) {
21601 2 : case 0:
21602 2 : info->name = "triangleBudget";
21603 2 : info->eventType = GF_SG_EVENT_IN;
21604 2 : info->on_event_in = ((M_Hierarchical3DMesh *)node)->on_triangleBudget;
21605 2 : info->fieldType = GF_SG_VRML_SFINT32;
21606 2 : info->far_ptr = & ((M_Hierarchical3DMesh *) node)->triangleBudget;
21607 2 : return GF_OK;
21608 2 : case 1:
21609 2 : info->name = "level";
21610 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21611 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21612 2 : info->far_ptr = & ((M_Hierarchical3DMesh *) node)->level;
21613 2 : return GF_OK;
21614 2 : case 2:
21615 2 : info->name = "url";
21616 2 : info->eventType = GF_SG_EVENT_FIELD;
21617 2 : info->fieldType = GF_SG_VRML_MFURL;
21618 2 : info->far_ptr = & ((M_Hierarchical3DMesh *) node)->url;
21619 2 : return GF_OK;
21620 2 : case 3:
21621 2 : info->name = "doneLoading";
21622 2 : info->eventType = GF_SG_EVENT_OUT;
21623 2 : info->fieldType = GF_SG_VRML_SFBOOL;
21624 2 : info->far_ptr = & ((M_Hierarchical3DMesh *) node)->doneLoading;
21625 2 : return GF_OK;
21626 : default:
21627 : return GF_BAD_PARAM;
21628 : }
21629 : }
21630 :
21631 :
21632 4 : static s32 Hierarchical3DMesh_get_field_index_by_name(char *name)
21633 : {
21634 4 : if (!strcmp("triangleBudget", name)) return 0;
21635 3 : if (!strcmp("level", name)) return 1;
21636 2 : if (!strcmp("url", name)) return 2;
21637 1 : if (!strcmp("doneLoading", name)) return 3;
21638 0 : return -1;
21639 : }
21640 : static Bool Hierarchical3DMesh_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21641 : {
21642 4 : switch (FieldIndex) {
21643 1 : case 0:
21644 1 : *AType = 0;
21645 1 : *QType = 0;
21646 1 : *b_min = FLT2FIX(-1);
21647 1 : *b_max = FIX_MAX;
21648 : return 1;
21649 1 : case 1:
21650 1 : *AType = 0;
21651 1 : *QType = 0;
21652 1 : *b_min = FLT2FIX(-1);
21653 1 : *b_max = FIX_MAX;
21654 : return 1;
21655 : default:
21656 : return 0;
21657 : }
21658 : }
21659 :
21660 :
21661 :
21662 1 : GF_Node *Hierarchical3DMesh_Create()
21663 : {
21664 : M_Hierarchical3DMesh *p;
21665 1 : GF_SAFEALLOC(p, M_Hierarchical3DMesh);
21666 1 : if(!p) return NULL;
21667 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Hierarchical3DMesh);
21668 :
21669 : /*default field values*/
21670 1 : p->level = FLT2FIX(1);
21671 1 : return (GF_Node *)p;
21672 : }
21673 :
21674 :
21675 : /*
21676 : MaterialKey Node deletion
21677 : */
21678 :
21679 : static void MaterialKey_Del(GF_Node *node)
21680 : {
21681 : M_MaterialKey *p = (M_MaterialKey *) node;
21682 24 : gf_node_free((GF_Node *) p);
21683 : }
21684 :
21685 : static const u16 MaterialKey_Def2All[] = { 0, 1, 2, 3, 4, 5};
21686 : static const u16 MaterialKey_In2All[] = { 0, 1, 2, 3, 4, 5};
21687 : static const u16 MaterialKey_Out2All[] = { 0, 1, 2, 3, 4, 5};
21688 : static const u16 MaterialKey_Dyn2All[] = { 2, 3, 4, 5};
21689 :
21690 : static u32 MaterialKey_get_field_count(GF_Node *node, u8 IndexMode)
21691 : {
21692 31 : switch(IndexMode) {
21693 : case GF_SG_FIELD_CODING_IN:
21694 : return 6;
21695 : case GF_SG_FIELD_CODING_DEF:
21696 : return 6;
21697 : case GF_SG_FIELD_CODING_OUT:
21698 : return 6;
21699 1 : case GF_SG_FIELD_CODING_DYN:
21700 : return 4;
21701 : default:
21702 : return 6;
21703 : }
21704 : }
21705 :
21706 : static GF_Err MaterialKey_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21707 : {
21708 48 : switch(IndexMode) {
21709 0 : case GF_SG_FIELD_CODING_IN:
21710 0 : *allField = MaterialKey_In2All[inField];
21711 : return GF_OK;
21712 42 : case GF_SG_FIELD_CODING_DEF:
21713 42 : *allField = MaterialKey_Def2All[inField];
21714 : return GF_OK;
21715 0 : case GF_SG_FIELD_CODING_OUT:
21716 0 : *allField = MaterialKey_Out2All[inField];
21717 : return GF_OK;
21718 0 : case GF_SG_FIELD_CODING_DYN:
21719 0 : *allField = MaterialKey_Dyn2All[inField];
21720 : return GF_OK;
21721 : default:
21722 : return GF_BAD_PARAM;
21723 : }
21724 : }
21725 167 : static GF_Err MaterialKey_get_field(GF_Node *node, GF_FieldInfo *info)
21726 : {
21727 167 : switch (info->fieldIndex) {
21728 28 : case 0:
21729 28 : info->name = "isKeyed";
21730 28 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21731 28 : info->fieldType = GF_SG_VRML_SFBOOL;
21732 28 : info->far_ptr = & ((M_MaterialKey *) node)->isKeyed;
21733 28 : return GF_OK;
21734 27 : case 1:
21735 27 : info->name = "isRGB";
21736 27 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21737 27 : info->fieldType = GF_SG_VRML_SFBOOL;
21738 27 : info->far_ptr = & ((M_MaterialKey *) node)->isRGB;
21739 27 : return GF_OK;
21740 28 : case 2:
21741 28 : info->name = "keyColor";
21742 28 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21743 28 : info->fieldType = GF_SG_VRML_SFCOLOR;
21744 28 : info->far_ptr = & ((M_MaterialKey *) node)->keyColor;
21745 28 : return GF_OK;
21746 28 : case 3:
21747 28 : info->name = "lowThreshold";
21748 28 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21749 28 : info->fieldType = GF_SG_VRML_SFFLOAT;
21750 28 : info->far_ptr = & ((M_MaterialKey *) node)->lowThreshold;
21751 28 : return GF_OK;
21752 28 : case 4:
21753 28 : info->name = "highThreshold";
21754 28 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21755 28 : info->fieldType = GF_SG_VRML_SFFLOAT;
21756 28 : info->far_ptr = & ((M_MaterialKey *) node)->highThreshold;
21757 28 : return GF_OK;
21758 28 : case 5:
21759 28 : info->name = "transparency";
21760 28 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21761 28 : info->fieldType = GF_SG_VRML_SFFLOAT;
21762 28 : info->far_ptr = & ((M_MaterialKey *) node)->transparency;
21763 28 : return GF_OK;
21764 : default:
21765 : return GF_BAD_PARAM;
21766 : }
21767 : }
21768 :
21769 :
21770 11 : static s32 MaterialKey_get_field_index_by_name(char *name)
21771 : {
21772 11 : if (!strcmp("isKeyed", name)) return 0;
21773 9 : if (!strcmp("isRGB", name)) return 1;
21774 8 : if (!strcmp("keyColor", name)) return 2;
21775 6 : if (!strcmp("lowThreshold", name)) return 3;
21776 4 : if (!strcmp("highThreshold", name)) return 4;
21777 2 : if (!strcmp("transparency", name)) return 5;
21778 0 : return -1;
21779 : }
21780 : static Bool MaterialKey_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
21781 : {
21782 6 : switch (FieldIndex) {
21783 1 : case 2:
21784 1 : *AType = 4;
21785 1 : *QType = 4;
21786 1 : *b_min = FLT2FIX(0);
21787 1 : *b_max = FLT2FIX(1);
21788 : return 1;
21789 1 : case 3:
21790 1 : *AType = 8;
21791 1 : *QType = 4;
21792 1 : *b_min = FLT2FIX(0);
21793 1 : *b_max = FLT2FIX(1);
21794 : return 1;
21795 1 : case 4:
21796 1 : *AType = 8;
21797 1 : *QType = 4;
21798 1 : *b_min = FLT2FIX(0);
21799 1 : *b_max = FLT2FIX(1);
21800 : return 1;
21801 1 : case 5:
21802 1 : *AType = 8;
21803 1 : *QType = 4;
21804 1 : *b_min = FLT2FIX(0);
21805 1 : *b_max = FLT2FIX(1);
21806 : return 1;
21807 : default:
21808 : return 0;
21809 : }
21810 : }
21811 :
21812 :
21813 :
21814 24 : GF_Node *MaterialKey_Create()
21815 : {
21816 : M_MaterialKey *p;
21817 24 : GF_SAFEALLOC(p, M_MaterialKey);
21818 24 : if(!p) return NULL;
21819 24 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MaterialKey);
21820 :
21821 : /*default field values*/
21822 24 : p->isKeyed = 1;
21823 24 : p->isRGB = 1;
21824 24 : p->keyColor.red = FLT2FIX(0);
21825 24 : p->keyColor.green = FLT2FIX(0);
21826 24 : p->keyColor.blue = FLT2FIX(0);
21827 24 : p->lowThreshold = FLT2FIX(0);
21828 24 : p->highThreshold = FLT2FIX(0);
21829 24 : p->transparency = FLT2FIX(0);
21830 24 : return (GF_Node *)p;
21831 : }
21832 :
21833 :
21834 : /*
21835 : PerceptualParameters Node deletion
21836 : */
21837 :
21838 1 : static void PerceptualParameters_Del(GF_Node *node)
21839 : {
21840 : M_PerceptualParameters *p = (M_PerceptualParameters *) node;
21841 1 : gf_sg_mffloat_del(p->omniDirectivity);
21842 1 : gf_sg_mffloat_del(p->directFilterGains);
21843 1 : gf_sg_mffloat_del(p->inputFilterGains);
21844 1 : gf_node_free((GF_Node *) p);
21845 1 : }
21846 :
21847 : static const u16 PerceptualParameters_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
21848 : static const u16 PerceptualParameters_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
21849 : static const u16 PerceptualParameters_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
21850 : static const u16 PerceptualParameters_Dyn2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
21851 :
21852 : static u32 PerceptualParameters_get_field_count(GF_Node *node, u8 IndexMode)
21853 : {
21854 6 : switch(IndexMode) {
21855 : case GF_SG_FIELD_CODING_IN:
21856 : return 19;
21857 : case GF_SG_FIELD_CODING_DEF:
21858 : return 19;
21859 : case GF_SG_FIELD_CODING_OUT:
21860 : return 19;
21861 1 : case GF_SG_FIELD_CODING_DYN:
21862 : return 15;
21863 : default:
21864 : return 19;
21865 : }
21866 : }
21867 :
21868 : static GF_Err PerceptualParameters_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
21869 : {
21870 19 : switch(IndexMode) {
21871 0 : case GF_SG_FIELD_CODING_IN:
21872 0 : *allField = PerceptualParameters_In2All[inField];
21873 : return GF_OK;
21874 0 : case GF_SG_FIELD_CODING_DEF:
21875 0 : *allField = PerceptualParameters_Def2All[inField];
21876 : return GF_OK;
21877 0 : case GF_SG_FIELD_CODING_OUT:
21878 0 : *allField = PerceptualParameters_Out2All[inField];
21879 : return GF_OK;
21880 0 : case GF_SG_FIELD_CODING_DYN:
21881 0 : *allField = PerceptualParameters_Dyn2All[inField];
21882 : return GF_OK;
21883 : default:
21884 : return GF_BAD_PARAM;
21885 : }
21886 : }
21887 38 : static GF_Err PerceptualParameters_get_field(GF_Node *node, GF_FieldInfo *info)
21888 : {
21889 38 : switch (info->fieldIndex) {
21890 2 : case 0:
21891 2 : info->name = "sourcePresence";
21892 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21893 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21894 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->sourcePresence;
21895 2 : return GF_OK;
21896 2 : case 1:
21897 2 : info->name = "sourceWarmth";
21898 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21899 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21900 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->sourceWarmth;
21901 2 : return GF_OK;
21902 2 : case 2:
21903 2 : info->name = "sourceBrilliance";
21904 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21905 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21906 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->sourceBrilliance;
21907 2 : return GF_OK;
21908 2 : case 3:
21909 2 : info->name = "roomPresence";
21910 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21911 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21912 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->roomPresence;
21913 2 : return GF_OK;
21914 2 : case 4:
21915 2 : info->name = "runningReverberance";
21916 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21917 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21918 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->runningReverberance;
21919 2 : return GF_OK;
21920 2 : case 5:
21921 2 : info->name = "envelopment";
21922 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21923 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21924 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->envelopment;
21925 2 : return GF_OK;
21926 2 : case 6:
21927 2 : info->name = "lateReverberance";
21928 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21929 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21930 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->lateReverberance;
21931 2 : return GF_OK;
21932 2 : case 7:
21933 2 : info->name = "heavyness";
21934 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21935 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21936 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->heavyness;
21937 2 : return GF_OK;
21938 2 : case 8:
21939 2 : info->name = "liveness";
21940 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21941 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21942 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->liveness;
21943 2 : return GF_OK;
21944 2 : case 9:
21945 2 : info->name = "omniDirectivity";
21946 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21947 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
21948 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->omniDirectivity;
21949 2 : return GF_OK;
21950 2 : case 10:
21951 2 : info->name = "directFilterGains";
21952 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21953 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
21954 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->directFilterGains;
21955 2 : return GF_OK;
21956 2 : case 11:
21957 2 : info->name = "inputFilterGains";
21958 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21959 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
21960 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->inputFilterGains;
21961 2 : return GF_OK;
21962 2 : case 12:
21963 2 : info->name = "refDistance";
21964 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21965 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21966 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->refDistance;
21967 2 : return GF_OK;
21968 2 : case 13:
21969 2 : info->name = "freqLow";
21970 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21971 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21972 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->freqLow;
21973 2 : return GF_OK;
21974 2 : case 14:
21975 2 : info->name = "freqHigh";
21976 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21977 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
21978 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->freqHigh;
21979 2 : return GF_OK;
21980 2 : case 15:
21981 2 : info->name = "timeLimit1";
21982 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21983 2 : info->fieldType = GF_SG_VRML_SFTIME;
21984 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->timeLimit1;
21985 2 : return GF_OK;
21986 2 : case 16:
21987 2 : info->name = "timeLimit2";
21988 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21989 2 : info->fieldType = GF_SG_VRML_SFTIME;
21990 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->timeLimit2;
21991 2 : return GF_OK;
21992 2 : case 17:
21993 2 : info->name = "timeLimit3";
21994 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
21995 2 : info->fieldType = GF_SG_VRML_SFTIME;
21996 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->timeLimit3;
21997 2 : return GF_OK;
21998 2 : case 18:
21999 2 : info->name = "modalDensity";
22000 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22001 2 : info->fieldType = GF_SG_VRML_SFTIME;
22002 2 : info->far_ptr = & ((M_PerceptualParameters *) node)->modalDensity;
22003 2 : return GF_OK;
22004 : default:
22005 : return GF_BAD_PARAM;
22006 : }
22007 : }
22008 :
22009 :
22010 19 : static s32 PerceptualParameters_get_field_index_by_name(char *name)
22011 : {
22012 19 : if (!strcmp("sourcePresence", name)) return 0;
22013 18 : if (!strcmp("sourceWarmth", name)) return 1;
22014 17 : if (!strcmp("sourceBrilliance", name)) return 2;
22015 16 : if (!strcmp("roomPresence", name)) return 3;
22016 15 : if (!strcmp("runningReverberance", name)) return 4;
22017 14 : if (!strcmp("envelopment", name)) return 5;
22018 13 : if (!strcmp("lateReverberance", name)) return 6;
22019 12 : if (!strcmp("heavyness", name)) return 7;
22020 11 : if (!strcmp("liveness", name)) return 8;
22021 10 : if (!strcmp("omniDirectivity", name)) return 9;
22022 9 : if (!strcmp("directFilterGains", name)) return 10;
22023 8 : if (!strcmp("inputFilterGains", name)) return 11;
22024 7 : if (!strcmp("refDistance", name)) return 12;
22025 6 : if (!strcmp("freqLow", name)) return 13;
22026 5 : if (!strcmp("freqHigh", name)) return 14;
22027 4 : if (!strcmp("timeLimit1", name)) return 15;
22028 3 : if (!strcmp("timeLimit2", name)) return 16;
22029 2 : if (!strcmp("timeLimit3", name)) return 17;
22030 1 : if (!strcmp("modalDensity", name)) return 18;
22031 0 : return -1;
22032 : }
22033 19 : static Bool PerceptualParameters_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22034 : {
22035 19 : switch (FieldIndex) {
22036 1 : case 0:
22037 1 : *AType = 7;
22038 1 : *QType = 0;
22039 1 : *b_min = FIX_MIN;
22040 1 : *b_max = FIX_MAX;
22041 : return 1;
22042 1 : case 1:
22043 1 : *AType = 7;
22044 1 : *QType = 0;
22045 1 : *b_min = FIX_MIN;
22046 1 : *b_max = FIX_MAX;
22047 : return 1;
22048 1 : case 2:
22049 1 : *AType = 7;
22050 1 : *QType = 0;
22051 1 : *b_min = FIX_MIN;
22052 1 : *b_max = FIX_MAX;
22053 : return 1;
22054 1 : case 3:
22055 1 : *AType = 7;
22056 1 : *QType = 0;
22057 1 : *b_min = FIX_MIN;
22058 1 : *b_max = FIX_MAX;
22059 : return 1;
22060 1 : case 4:
22061 1 : *AType = 7;
22062 1 : *QType = 0;
22063 1 : *b_min = FIX_MIN;
22064 1 : *b_max = FIX_MAX;
22065 : return 1;
22066 1 : case 5:
22067 1 : *AType = 7;
22068 1 : *QType = 0;
22069 1 : *b_min = FIX_MIN;
22070 1 : *b_max = FIX_MAX;
22071 : return 1;
22072 1 : case 6:
22073 1 : *AType = 7;
22074 1 : *QType = 0;
22075 1 : *b_min = FIX_MIN;
22076 1 : *b_max = FIX_MAX;
22077 : return 1;
22078 1 : case 7:
22079 1 : *AType = 7;
22080 1 : *QType = 0;
22081 1 : *b_min = FIX_MIN;
22082 1 : *b_max = FIX_MAX;
22083 : return 1;
22084 1 : case 8:
22085 1 : *AType = 7;
22086 1 : *QType = 0;
22087 1 : *b_min = FIX_MIN;
22088 1 : *b_max = FIX_MAX;
22089 : return 1;
22090 1 : case 9:
22091 1 : *AType = 7;
22092 1 : *QType = 0;
22093 1 : *b_min = FIX_MIN;
22094 1 : *b_max = FIX_MAX;
22095 : return 1;
22096 1 : case 10:
22097 1 : *AType = 7;
22098 1 : *QType = 0;
22099 1 : *b_min = FIX_MIN;
22100 1 : *b_max = FIX_MAX;
22101 : return 1;
22102 1 : case 11:
22103 1 : *AType = 7;
22104 1 : *QType = 0;
22105 1 : *b_min = FIX_MIN;
22106 1 : *b_max = FIX_MAX;
22107 : return 1;
22108 1 : case 12:
22109 1 : *AType = 7;
22110 1 : *QType = 0;
22111 1 : *b_min = FIX_MIN;
22112 1 : *b_max = FIX_MAX;
22113 : return 1;
22114 1 : case 13:
22115 1 : *AType = 7;
22116 1 : *QType = 0;
22117 1 : *b_min = FIX_MIN;
22118 1 : *b_max = FIX_MAX;
22119 : return 1;
22120 1 : case 14:
22121 1 : *AType = 7;
22122 1 : *QType = 0;
22123 1 : *b_min = FIX_MIN;
22124 1 : *b_max = FIX_MAX;
22125 : return 1;
22126 1 : case 15:
22127 1 : *AType = 0;
22128 1 : *QType = 0;
22129 1 : *b_min = FIX_MIN;
22130 1 : *b_max = FIX_MAX;
22131 : return 1;
22132 1 : case 16:
22133 1 : *AType = 0;
22134 1 : *QType = 0;
22135 1 : *b_min = FIX_MIN;
22136 1 : *b_max = FIX_MAX;
22137 : return 1;
22138 1 : case 17:
22139 1 : *AType = 0;
22140 1 : *QType = 0;
22141 1 : *b_min = FIX_MIN;
22142 1 : *b_max = FIX_MAX;
22143 : return 1;
22144 1 : case 18:
22145 1 : *AType = 0;
22146 1 : *QType = 0;
22147 1 : *b_min = FIX_MIN;
22148 1 : *b_max = FIX_MAX;
22149 : return 1;
22150 : default:
22151 : return 0;
22152 : }
22153 : }
22154 :
22155 :
22156 :
22157 1 : GF_Node *PerceptualParameters_Create()
22158 : {
22159 : M_PerceptualParameters *p;
22160 1 : GF_SAFEALLOC(p, M_PerceptualParameters);
22161 1 : if(!p) return NULL;
22162 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PerceptualParameters);
22163 :
22164 : /*default field values*/
22165 1 : p->sourcePresence = FLT2FIX(1.0);
22166 1 : p->sourceWarmth = FLT2FIX(1.0);
22167 1 : p->sourceBrilliance = FLT2FIX(1.0);
22168 1 : p->roomPresence = FLT2FIX(1.0);
22169 1 : p->runningReverberance = FLT2FIX(1.0);
22170 1 : p->envelopment = FLT2FIX(0.0);
22171 1 : p->lateReverberance = FLT2FIX(1.0);
22172 1 : p->heavyness = FLT2FIX(1.0);
22173 1 : p->liveness = FLT2FIX(1.0);
22174 1 : p->omniDirectivity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
22175 1 : p->omniDirectivity.count = 1;
22176 1 : p->omniDirectivity.vals[0] = FLT2FIX(1.0);
22177 1 : p->directFilterGains.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*3);
22178 1 : p->directFilterGains.count = 3;
22179 1 : p->directFilterGains.vals[0] = FLT2FIX(1.0);
22180 1 : p->directFilterGains.vals[1] = FLT2FIX(1.0);
22181 1 : p->directFilterGains.vals[2] = FLT2FIX(1.0);
22182 1 : p->inputFilterGains.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*3);
22183 1 : p->inputFilterGains.count = 3;
22184 1 : p->inputFilterGains.vals[0] = FLT2FIX(1.0);
22185 1 : p->inputFilterGains.vals[1] = FLT2FIX(1.0);
22186 1 : p->inputFilterGains.vals[2] = FLT2FIX(1.0);
22187 1 : p->refDistance = FLT2FIX(1.0);
22188 1 : p->freqLow = FLT2FIX(250.0);
22189 1 : p->freqHigh = FLT2FIX(4000.0);
22190 1 : p->timeLimit1 = 0.02;
22191 1 : p->timeLimit2 = 0.04;
22192 1 : p->timeLimit3 = 0.1;
22193 1 : p->modalDensity = 0.8;
22194 1 : return (GF_Node *)p;
22195 : }
22196 :
22197 :
22198 : /*
22199 : TemporalTransform Node deletion
22200 : */
22201 :
22202 1 : static void TemporalTransform_Del(GF_Node *node)
22203 : {
22204 : M_TemporalTransform *p = (M_TemporalTransform *) node;
22205 1 : gf_sg_mfurl_del(p->url);
22206 1 : gf_sg_mfint32_del(p->stretchMode);
22207 1 : gf_sg_mfint32_del(p->shrinkMode);
22208 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
22209 1 : gf_node_free((GF_Node *) p);
22210 1 : }
22211 :
22212 : static const u16 TemporalTransform_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
22213 : static const u16 TemporalTransform_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
22214 : static const u16 TemporalTransform_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
22215 : static const u16 TemporalTransform_Dyn2All[] = { 7, 8};
22216 :
22217 : static u32 TemporalTransform_get_field_count(GF_Node *node, u8 IndexMode)
22218 : {
22219 : switch(IndexMode) {
22220 : case GF_SG_FIELD_CODING_IN:
22221 : return 12;
22222 : case GF_SG_FIELD_CODING_DEF:
22223 : return 10;
22224 : case GF_SG_FIELD_CODING_OUT:
22225 : return 11;
22226 : case GF_SG_FIELD_CODING_DYN:
22227 : return 2;
22228 : default:
22229 : return 13;
22230 : }
22231 : }
22232 :
22233 : static GF_Err TemporalTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22234 : {
22235 13 : switch(IndexMode) {
22236 0 : case GF_SG_FIELD_CODING_IN:
22237 0 : *allField = TemporalTransform_In2All[inField];
22238 : return GF_OK;
22239 0 : case GF_SG_FIELD_CODING_DEF:
22240 0 : *allField = TemporalTransform_Def2All[inField];
22241 : return GF_OK;
22242 0 : case GF_SG_FIELD_CODING_OUT:
22243 0 : *allField = TemporalTransform_Out2All[inField];
22244 : return GF_OK;
22245 0 : case GF_SG_FIELD_CODING_DYN:
22246 0 : *allField = TemporalTransform_Dyn2All[inField];
22247 : return GF_OK;
22248 : default:
22249 : return GF_BAD_PARAM;
22250 : }
22251 : }
22252 26 : static GF_Err TemporalTransform_get_field(GF_Node *node, GF_FieldInfo *info)
22253 : {
22254 26 : switch (info->fieldIndex) {
22255 2 : case 0:
22256 2 : info->name = "addChildren";
22257 2 : info->eventType = GF_SG_EVENT_IN;
22258 2 : info->on_event_in = ((M_TemporalTransform *)node)->on_addChildren;
22259 2 : info->fieldType = GF_SG_VRML_MFNODE;
22260 2 : info->NDTtype = NDT_SF3DNode;
22261 2 : info->far_ptr = & ((M_TemporalTransform *)node)->addChildren;
22262 2 : return GF_OK;
22263 2 : case 1:
22264 2 : info->name = "removeChildren";
22265 2 : info->eventType = GF_SG_EVENT_IN;
22266 2 : info->on_event_in = ((M_TemporalTransform *)node)->on_removeChildren;
22267 2 : info->fieldType = GF_SG_VRML_MFNODE;
22268 2 : info->NDTtype = NDT_SF3DNode;
22269 2 : info->far_ptr = & ((M_TemporalTransform *)node)->removeChildren;
22270 2 : return GF_OK;
22271 2 : case 2:
22272 2 : info->name = "children";
22273 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22274 2 : info->fieldType = GF_SG_VRML_MFNODE;
22275 2 : info->NDTtype = NDT_SF3DNode;
22276 2 : info->far_ptr = & ((M_TemporalTransform *)node)->children;
22277 2 : return GF_OK;
22278 2 : case 3:
22279 2 : info->name = "url";
22280 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22281 2 : info->fieldType = GF_SG_VRML_MFURL;
22282 2 : info->far_ptr = & ((M_TemporalTransform *) node)->url;
22283 2 : return GF_OK;
22284 2 : case 4:
22285 2 : info->name = "startTime";
22286 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22287 2 : info->fieldType = GF_SG_VRML_SFTIME;
22288 2 : info->far_ptr = & ((M_TemporalTransform *) node)->startTime;
22289 2 : return GF_OK;
22290 2 : case 5:
22291 2 : info->name = "optimalDuration";
22292 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22293 2 : info->fieldType = GF_SG_VRML_SFTIME;
22294 2 : info->far_ptr = & ((M_TemporalTransform *) node)->optimalDuration;
22295 2 : return GF_OK;
22296 2 : case 6:
22297 2 : info->name = "active";
22298 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22299 2 : info->fieldType = GF_SG_VRML_SFBOOL;
22300 2 : info->far_ptr = & ((M_TemporalTransform *) node)->active;
22301 2 : return GF_OK;
22302 2 : case 7:
22303 2 : info->name = "speed";
22304 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22305 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
22306 2 : info->far_ptr = & ((M_TemporalTransform *) node)->speed;
22307 2 : return GF_OK;
22308 2 : case 8:
22309 2 : info->name = "scalability";
22310 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22311 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
22312 2 : info->far_ptr = & ((M_TemporalTransform *) node)->scalability;
22313 2 : return GF_OK;
22314 2 : case 9:
22315 2 : info->name = "stretchMode";
22316 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22317 2 : info->fieldType = GF_SG_VRML_MFINT32;
22318 2 : info->far_ptr = & ((M_TemporalTransform *) node)->stretchMode;
22319 2 : return GF_OK;
22320 2 : case 10:
22321 2 : info->name = "shrinkMode";
22322 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22323 2 : info->fieldType = GF_SG_VRML_MFINT32;
22324 2 : info->far_ptr = & ((M_TemporalTransform *) node)->shrinkMode;
22325 2 : return GF_OK;
22326 2 : case 11:
22327 2 : info->name = "maxDelay";
22328 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22329 2 : info->fieldType = GF_SG_VRML_SFTIME;
22330 2 : info->far_ptr = & ((M_TemporalTransform *) node)->maxDelay;
22331 2 : return GF_OK;
22332 2 : case 12:
22333 2 : info->name = "actualDuration";
22334 2 : info->eventType = GF_SG_EVENT_OUT;
22335 2 : info->fieldType = GF_SG_VRML_SFTIME;
22336 2 : info->far_ptr = & ((M_TemporalTransform *) node)->actualDuration;
22337 2 : return GF_OK;
22338 : default:
22339 : return GF_BAD_PARAM;
22340 : }
22341 : }
22342 :
22343 :
22344 13 : static s32 TemporalTransform_get_field_index_by_name(char *name)
22345 : {
22346 13 : if (!strcmp("addChildren", name)) return 0;
22347 12 : if (!strcmp("removeChildren", name)) return 1;
22348 11 : if (!strcmp("children", name)) return 2;
22349 10 : if (!strcmp("url", name)) return 3;
22350 9 : if (!strcmp("startTime", name)) return 4;
22351 8 : if (!strcmp("optimalDuration", name)) return 5;
22352 7 : if (!strcmp("active", name)) return 6;
22353 6 : if (!strcmp("speed", name)) return 7;
22354 5 : if (!strcmp("scalability", name)) return 8;
22355 4 : if (!strcmp("stretchMode", name)) return 9;
22356 3 : if (!strcmp("shrinkMode", name)) return 10;
22357 2 : if (!strcmp("maxDelay", name)) return 11;
22358 1 : if (!strcmp("actualDuration", name)) return 12;
22359 0 : return -1;
22360 : }
22361 : static Bool TemporalTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22362 : {
22363 13 : switch (FieldIndex) {
22364 1 : case 7:
22365 1 : *AType = 7;
22366 1 : *QType = 0;
22367 1 : *b_min = FIX_MIN;
22368 1 : *b_max = FIX_MAX;
22369 : return 1;
22370 1 : case 8:
22371 1 : *AType = 12;
22372 1 : *QType = 12;
22373 1 : *b_min = FLT2FIX(-1);
22374 1 : *b_max = FIX_MAX;
22375 : return 1;
22376 1 : case 9:
22377 1 : *AType = 0;
22378 1 : *QType = 13;
22379 1 : *QT13_bits = 2;
22380 1 : *b_min = FLT2FIX(0);
22381 1 : *b_max = FLT2FIX(2);
22382 : return 1;
22383 1 : case 10:
22384 1 : *AType = 0;
22385 1 : *QType = 13;
22386 1 : *QT13_bits = 1;
22387 1 : *b_min = FLT2FIX(0);
22388 1 : *b_max = FLT2FIX(1);
22389 : return 1;
22390 : default:
22391 : return 0;
22392 : }
22393 : }
22394 :
22395 :
22396 :
22397 1 : GF_Node *TemporalTransform_Create()
22398 : {
22399 : M_TemporalTransform *p;
22400 1 : GF_SAFEALLOC(p, M_TemporalTransform);
22401 1 : if(!p) return NULL;
22402 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TemporalTransform);
22403 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
22404 :
22405 : /*default field values*/
22406 1 : p->startTime = -1.0;
22407 1 : p->optimalDuration = -1.0;
22408 1 : p->speed = FLT2FIX(1.0);
22409 1 : p->scalability.x = FLT2FIX(1.0);
22410 1 : p->scalability.y = FLT2FIX(1.0);
22411 1 : p->stretchMode.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
22412 1 : p->stretchMode.count = 1;
22413 1 : p->stretchMode.vals[0] = 0;
22414 1 : p->shrinkMode.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
22415 1 : p->shrinkMode.count = 1;
22416 1 : p->shrinkMode.vals[0] = 0;
22417 1 : p->maxDelay = 0;
22418 1 : return (GF_Node *)p;
22419 : }
22420 :
22421 :
22422 : /*
22423 : TemporalGroup Node deletion
22424 : */
22425 :
22426 1 : static void TemporalGroup_Del(GF_Node *node)
22427 : {
22428 : M_TemporalGroup *p = (M_TemporalGroup *) node;
22429 1 : gf_sg_mffloat_del(p->priority);
22430 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
22431 1 : gf_node_free((GF_Node *) p);
22432 1 : }
22433 :
22434 : static const u16 TemporalGroup_Def2All[] = { 2, 3, 4, 5, 6};
22435 : static const u16 TemporalGroup_In2All[] = { 0, 1, 2, 6};
22436 : static const u16 TemporalGroup_Out2All[] = { 2, 6, 7, 8};
22437 :
22438 : static u32 TemporalGroup_get_field_count(GF_Node *node, u8 IndexMode)
22439 : {
22440 : switch(IndexMode) {
22441 : case GF_SG_FIELD_CODING_IN:
22442 : return 4;
22443 : case GF_SG_FIELD_CODING_DEF:
22444 : return 5;
22445 : case GF_SG_FIELD_CODING_OUT:
22446 : return 4;
22447 : case GF_SG_FIELD_CODING_DYN:
22448 : return 0;
22449 : default:
22450 : return 9;
22451 : }
22452 : }
22453 :
22454 : static GF_Err TemporalGroup_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22455 : {
22456 9 : switch(IndexMode) {
22457 0 : case GF_SG_FIELD_CODING_IN:
22458 0 : *allField = TemporalGroup_In2All[inField];
22459 : return GF_OK;
22460 0 : case GF_SG_FIELD_CODING_DEF:
22461 0 : *allField = TemporalGroup_Def2All[inField];
22462 : return GF_OK;
22463 0 : case GF_SG_FIELD_CODING_OUT:
22464 0 : *allField = TemporalGroup_Out2All[inField];
22465 : return GF_OK;
22466 : default:
22467 : return GF_BAD_PARAM;
22468 : }
22469 : }
22470 18 : static GF_Err TemporalGroup_get_field(GF_Node *node, GF_FieldInfo *info)
22471 : {
22472 18 : switch (info->fieldIndex) {
22473 2 : case 0:
22474 2 : info->name = "addChildren";
22475 2 : info->eventType = GF_SG_EVENT_IN;
22476 2 : info->on_event_in = ((M_TemporalGroup *)node)->on_addChildren;
22477 2 : info->fieldType = GF_SG_VRML_MFNODE;
22478 2 : info->NDTtype = NDT_SFTemporalNode;
22479 2 : info->far_ptr = & ((M_TemporalGroup *)node)->addChildren;
22480 2 : return GF_OK;
22481 2 : case 1:
22482 2 : info->name = "removeChildren";
22483 2 : info->eventType = GF_SG_EVENT_IN;
22484 2 : info->on_event_in = ((M_TemporalGroup *)node)->on_removeChildren;
22485 2 : info->fieldType = GF_SG_VRML_MFNODE;
22486 2 : info->NDTtype = NDT_SFTemporalNode;
22487 2 : info->far_ptr = & ((M_TemporalGroup *)node)->removeChildren;
22488 2 : return GF_OK;
22489 2 : case 2:
22490 2 : info->name = "children";
22491 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22492 2 : info->fieldType = GF_SG_VRML_MFNODE;
22493 2 : info->NDTtype = NDT_SFTemporalNode;
22494 2 : info->far_ptr = & ((M_TemporalGroup *)node)->children;
22495 2 : return GF_OK;
22496 2 : case 3:
22497 2 : info->name = "costart";
22498 2 : info->eventType = GF_SG_EVENT_FIELD;
22499 2 : info->fieldType = GF_SG_VRML_SFBOOL;
22500 2 : info->far_ptr = & ((M_TemporalGroup *) node)->costart;
22501 2 : return GF_OK;
22502 2 : case 4:
22503 2 : info->name = "coend";
22504 2 : info->eventType = GF_SG_EVENT_FIELD;
22505 2 : info->fieldType = GF_SG_VRML_SFBOOL;
22506 2 : info->far_ptr = & ((M_TemporalGroup *) node)->coend;
22507 2 : return GF_OK;
22508 2 : case 5:
22509 2 : info->name = "meet";
22510 2 : info->eventType = GF_SG_EVENT_FIELD;
22511 2 : info->fieldType = GF_SG_VRML_SFBOOL;
22512 2 : info->far_ptr = & ((M_TemporalGroup *) node)->meet;
22513 2 : return GF_OK;
22514 2 : case 6:
22515 2 : info->name = "priority";
22516 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22517 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
22518 2 : info->far_ptr = & ((M_TemporalGroup *) node)->priority;
22519 2 : return GF_OK;
22520 2 : case 7:
22521 2 : info->name = "isActive";
22522 2 : info->eventType = GF_SG_EVENT_OUT;
22523 2 : info->fieldType = GF_SG_VRML_SFBOOL;
22524 2 : info->far_ptr = & ((M_TemporalGroup *) node)->isActive;
22525 2 : return GF_OK;
22526 2 : case 8:
22527 2 : info->name = "activeChild";
22528 2 : info->eventType = GF_SG_EVENT_OUT;
22529 2 : info->fieldType = GF_SG_VRML_SFINT32;
22530 2 : info->far_ptr = & ((M_TemporalGroup *) node)->activeChild;
22531 2 : return GF_OK;
22532 : default:
22533 : return GF_BAD_PARAM;
22534 : }
22535 : }
22536 :
22537 :
22538 9 : static s32 TemporalGroup_get_field_index_by_name(char *name)
22539 : {
22540 9 : if (!strcmp("addChildren", name)) return 0;
22541 8 : if (!strcmp("removeChildren", name)) return 1;
22542 7 : if (!strcmp("children", name)) return 2;
22543 6 : if (!strcmp("costart", name)) return 3;
22544 5 : if (!strcmp("coend", name)) return 4;
22545 4 : if (!strcmp("meet", name)) return 5;
22546 3 : if (!strcmp("priority", name)) return 6;
22547 2 : if (!strcmp("isActive", name)) return 7;
22548 1 : if (!strcmp("activeChild", name)) return 8;
22549 0 : return -1;
22550 : }
22551 : static Bool TemporalGroup_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22552 : {
22553 9 : switch (FieldIndex) {
22554 1 : case 6:
22555 1 : *AType = 0;
22556 1 : *QType = 3;
22557 1 : *b_min = FLT2FIX(0);
22558 1 : *b_max = FIX_MAX;
22559 : return 1;
22560 : default:
22561 : return 0;
22562 : }
22563 : }
22564 :
22565 :
22566 :
22567 1 : GF_Node *TemporalGroup_Create()
22568 : {
22569 : M_TemporalGroup *p;
22570 1 : GF_SAFEALLOC(p, M_TemporalGroup);
22571 1 : if(!p) return NULL;
22572 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TemporalGroup);
22573 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
22574 :
22575 : /*default field values*/
22576 1 : p->costart = 1;
22577 1 : return (GF_Node *)p;
22578 : }
22579 :
22580 :
22581 : /*
22582 : ServerCommand Node deletion
22583 : */
22584 :
22585 23 : static void ServerCommand_Del(GF_Node *node)
22586 : {
22587 : M_ServerCommand *p = (M_ServerCommand *) node;
22588 23 : gf_sg_mfurl_del(p->url);
22589 23 : gf_sg_sfstring_del(p->command);
22590 23 : gf_node_free((GF_Node *) p);
22591 23 : }
22592 :
22593 : static const u16 ServerCommand_Def2All[] = { 1, 2, 3};
22594 : static const u16 ServerCommand_In2All[] = { 0, 1, 2, 3};
22595 : static const u16 ServerCommand_Out2All[] = { 1, 2, 3};
22596 :
22597 : static u32 ServerCommand_get_field_count(GF_Node *node, u8 IndexMode)
22598 : {
22599 : switch(IndexMode) {
22600 : case GF_SG_FIELD_CODING_IN:
22601 : return 4;
22602 : case GF_SG_FIELD_CODING_DEF:
22603 : return 3;
22604 : case GF_SG_FIELD_CODING_OUT:
22605 : return 3;
22606 : case GF_SG_FIELD_CODING_DYN:
22607 : return 0;
22608 : default:
22609 : return 4;
22610 : }
22611 : }
22612 :
22613 : static GF_Err ServerCommand_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22614 : {
22615 25 : switch(IndexMode) {
22616 0 : case GF_SG_FIELD_CODING_IN:
22617 0 : *allField = ServerCommand_In2All[inField];
22618 : return GF_OK;
22619 21 : case GF_SG_FIELD_CODING_DEF:
22620 21 : *allField = ServerCommand_Def2All[inField];
22621 : return GF_OK;
22622 0 : case GF_SG_FIELD_CODING_OUT:
22623 0 : *allField = ServerCommand_Out2All[inField];
22624 : return GF_OK;
22625 : default:
22626 : return GF_BAD_PARAM;
22627 : }
22628 : }
22629 85 : static GF_Err ServerCommand_get_field(GF_Node *node, GF_FieldInfo *info)
22630 : {
22631 85 : switch (info->fieldIndex) {
22632 7 : case 0:
22633 7 : info->name = "trigger";
22634 7 : info->eventType = GF_SG_EVENT_IN;
22635 7 : info->on_event_in = ((M_ServerCommand *)node)->on_trigger;
22636 7 : info->fieldType = GF_SG_VRML_SFBOOL;
22637 7 : info->far_ptr = & ((M_ServerCommand *) node)->trigger;
22638 7 : return GF_OK;
22639 26 : case 1:
22640 26 : info->name = "enable";
22641 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22642 26 : info->fieldType = GF_SG_VRML_SFBOOL;
22643 26 : info->far_ptr = & ((M_ServerCommand *) node)->enable;
22644 26 : return GF_OK;
22645 26 : case 2:
22646 26 : info->name = "url";
22647 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22648 26 : info->fieldType = GF_SG_VRML_MFURL;
22649 26 : info->far_ptr = & ((M_ServerCommand *) node)->url;
22650 26 : return GF_OK;
22651 26 : case 3:
22652 26 : info->name = "command";
22653 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22654 26 : info->fieldType = GF_SG_VRML_SFSTRING;
22655 26 : info->far_ptr = & ((M_ServerCommand *) node)->command;
22656 26 : return GF_OK;
22657 : default:
22658 : return GF_BAD_PARAM;
22659 : }
22660 : }
22661 :
22662 :
22663 4 : static s32 ServerCommand_get_field_index_by_name(char *name)
22664 : {
22665 4 : if (!strcmp("trigger", name)) return 0;
22666 3 : if (!strcmp("enable", name)) return 1;
22667 2 : if (!strcmp("url", name)) return 2;
22668 1 : if (!strcmp("command", name)) return 3;
22669 0 : return -1;
22670 : }
22671 : static Bool ServerCommand_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22672 : {
22673 : switch (FieldIndex) {
22674 : default:
22675 : return 0;
22676 : }
22677 : }
22678 :
22679 :
22680 :
22681 23 : GF_Node *ServerCommand_Create()
22682 : {
22683 : M_ServerCommand *p;
22684 23 : GF_SAFEALLOC(p, M_ServerCommand);
22685 23 : if(!p) return NULL;
22686 23 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ServerCommand);
22687 :
22688 : /*default field values*/
22689 23 : return (GF_Node *)p;
22690 : }
22691 :
22692 :
22693 : /*
22694 : InputSensor Node deletion
22695 : */
22696 :
22697 134 : static void InputSensor_Del(GF_Node *node)
22698 : {
22699 : M_InputSensor *p = (M_InputSensor *) node;
22700 134 : gf_sg_sfcommand_del(p->buffer);
22701 134 : gf_sg_mfurl_del(p->url);
22702 134 : gf_node_free((GF_Node *) p);
22703 134 : }
22704 :
22705 : static const u16 InputSensor_Def2All[] = { 0, 1, 2};
22706 : static const u16 InputSensor_In2All[] = { 0, 1, 2};
22707 : static const u16 InputSensor_Out2All[] = { 0, 1, 2, 3};
22708 :
22709 : static u32 InputSensor_get_field_count(GF_Node *node, u8 IndexMode)
22710 : {
22711 : switch(IndexMode) {
22712 : case GF_SG_FIELD_CODING_IN:
22713 : return 3;
22714 : case GF_SG_FIELD_CODING_DEF:
22715 : return 3;
22716 : case GF_SG_FIELD_CODING_OUT:
22717 : return 4;
22718 : case GF_SG_FIELD_CODING_DYN:
22719 : return 0;
22720 : default:
22721 : return 4;
22722 : }
22723 : }
22724 :
22725 : static GF_Err InputSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22726 : {
22727 184 : switch(IndexMode) {
22728 0 : case GF_SG_FIELD_CODING_IN:
22729 0 : *allField = InputSensor_In2All[inField];
22730 : return GF_OK;
22731 180 : case GF_SG_FIELD_CODING_DEF:
22732 180 : *allField = InputSensor_Def2All[inField];
22733 : return GF_OK;
22734 0 : case GF_SG_FIELD_CODING_OUT:
22735 0 : *allField = InputSensor_Out2All[inField];
22736 : return GF_OK;
22737 : default:
22738 : return GF_BAD_PARAM;
22739 : }
22740 : }
22741 642 : static GF_Err InputSensor_get_field(GF_Node *node, GF_FieldInfo *info)
22742 : {
22743 642 : switch (info->fieldIndex) {
22744 142 : case 0:
22745 142 : info->name = "enabled";
22746 142 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22747 142 : info->fieldType = GF_SG_VRML_SFBOOL;
22748 142 : info->far_ptr = & ((M_InputSensor *) node)->enabled;
22749 142 : return GF_OK;
22750 205 : case 1:
22751 205 : info->name = "buffer";
22752 205 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22753 205 : info->fieldType = GF_SG_VRML_SFCOMMANDBUFFER;
22754 205 : info->far_ptr = & ((M_InputSensor *) node)->buffer;
22755 205 : return GF_OK;
22756 263 : case 2:
22757 263 : info->name = "url";
22758 263 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22759 263 : info->fieldType = GF_SG_VRML_MFURL;
22760 263 : info->far_ptr = & ((M_InputSensor *) node)->url;
22761 263 : return GF_OK;
22762 32 : case 3:
22763 32 : info->name = "eventTime";
22764 32 : info->eventType = GF_SG_EVENT_OUT;
22765 32 : info->fieldType = GF_SG_VRML_SFTIME;
22766 32 : info->far_ptr = & ((M_InputSensor *) node)->eventTime;
22767 32 : return GF_OK;
22768 : default:
22769 : return GF_BAD_PARAM;
22770 : }
22771 : }
22772 :
22773 :
22774 70 : static s32 InputSensor_get_field_index_by_name(char *name)
22775 : {
22776 70 : if (!strcmp("enabled", name)) return 0;
22777 69 : if (!strcmp("buffer", name)) return 1;
22778 35 : if (!strcmp("url", name)) return 2;
22779 1 : if (!strcmp("eventTime", name)) return 3;
22780 0 : return -1;
22781 : }
22782 : static Bool InputSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22783 : {
22784 : switch (FieldIndex) {
22785 : default:
22786 : return 0;
22787 : }
22788 : }
22789 :
22790 :
22791 :
22792 134 : GF_Node *InputSensor_Create()
22793 : {
22794 : M_InputSensor *p;
22795 134 : GF_SAFEALLOC(p, M_InputSensor);
22796 134 : if(!p) return NULL;
22797 134 : gf_node_setup((GF_Node *)p, TAG_MPEG4_InputSensor);
22798 134 : p->buffer.commandList = gf_list_new();
22799 :
22800 : /*default field values*/
22801 134 : p->enabled = 1;
22802 134 : return (GF_Node *)p;
22803 : }
22804 :
22805 :
22806 : /*
22807 : MatteTexture Node deletion
22808 : */
22809 :
22810 1 : static void MatteTexture_Del(GF_Node *node)
22811 : {
22812 : M_MatteTexture *p = (M_MatteTexture *) node;
22813 1 : gf_node_unregister((GF_Node *) p->surfaceA, (GF_Node *) p);
22814 1 : gf_node_unregister((GF_Node *) p->surfaceB, (GF_Node *) p);
22815 1 : gf_node_unregister((GF_Node *) p->alphaSurface, (GF_Node *) p);
22816 1 : gf_sg_sfstring_del(p->operation);
22817 1 : gf_sg_mffloat_del(p->parameter);
22818 1 : gf_node_free((GF_Node *) p);
22819 1 : }
22820 :
22821 : static const u16 MatteTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
22822 : static const u16 MatteTexture_In2All[] = { 3, 5, 6};
22823 : static const u16 MatteTexture_Out2All[] = { 3, 5, 6};
22824 :
22825 : static u32 MatteTexture_get_field_count(GF_Node *node, u8 IndexMode)
22826 : {
22827 : switch(IndexMode) {
22828 : case GF_SG_FIELD_CODING_IN:
22829 : return 3;
22830 : case GF_SG_FIELD_CODING_DEF:
22831 : return 7;
22832 : case GF_SG_FIELD_CODING_OUT:
22833 : return 3;
22834 : case GF_SG_FIELD_CODING_DYN:
22835 : return 0;
22836 : default:
22837 : return 7;
22838 : }
22839 : }
22840 :
22841 : static GF_Err MatteTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22842 : {
22843 7 : switch(IndexMode) {
22844 0 : case GF_SG_FIELD_CODING_IN:
22845 0 : *allField = MatteTexture_In2All[inField];
22846 : return GF_OK;
22847 0 : case GF_SG_FIELD_CODING_DEF:
22848 0 : *allField = MatteTexture_Def2All[inField];
22849 : return GF_OK;
22850 0 : case GF_SG_FIELD_CODING_OUT:
22851 0 : *allField = MatteTexture_Out2All[inField];
22852 : return GF_OK;
22853 : default:
22854 : return GF_BAD_PARAM;
22855 : }
22856 : }
22857 14 : static GF_Err MatteTexture_get_field(GF_Node *node, GF_FieldInfo *info)
22858 : {
22859 14 : switch (info->fieldIndex) {
22860 2 : case 0:
22861 2 : info->name = "surfaceA";
22862 2 : info->eventType = GF_SG_EVENT_FIELD;
22863 2 : info->fieldType = GF_SG_VRML_SFNODE;
22864 2 : info->NDTtype = NDT_SFTextureNode;
22865 2 : info->far_ptr = & ((M_MatteTexture *)node)->surfaceA;
22866 2 : return GF_OK;
22867 2 : case 1:
22868 2 : info->name = "surfaceB";
22869 2 : info->eventType = GF_SG_EVENT_FIELD;
22870 2 : info->fieldType = GF_SG_VRML_SFNODE;
22871 2 : info->NDTtype = NDT_SFTextureNode;
22872 2 : info->far_ptr = & ((M_MatteTexture *)node)->surfaceB;
22873 2 : return GF_OK;
22874 2 : case 2:
22875 2 : info->name = "alphaSurface";
22876 2 : info->eventType = GF_SG_EVENT_FIELD;
22877 2 : info->fieldType = GF_SG_VRML_SFNODE;
22878 2 : info->NDTtype = NDT_SFTextureNode;
22879 2 : info->far_ptr = & ((M_MatteTexture *)node)->alphaSurface;
22880 2 : return GF_OK;
22881 2 : case 3:
22882 2 : info->name = "operation";
22883 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22884 2 : info->fieldType = GF_SG_VRML_SFSTRING;
22885 2 : info->far_ptr = & ((M_MatteTexture *) node)->operation;
22886 2 : return GF_OK;
22887 2 : case 4:
22888 2 : info->name = "overwrite";
22889 2 : info->eventType = GF_SG_EVENT_FIELD;
22890 2 : info->fieldType = GF_SG_VRML_SFBOOL;
22891 2 : info->far_ptr = & ((M_MatteTexture *) node)->overwrite;
22892 2 : return GF_OK;
22893 2 : case 5:
22894 2 : info->name = "fraction";
22895 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22896 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
22897 2 : info->far_ptr = & ((M_MatteTexture *) node)->fraction;
22898 2 : return GF_OK;
22899 2 : case 6:
22900 2 : info->name = "parameter";
22901 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
22902 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
22903 2 : info->far_ptr = & ((M_MatteTexture *) node)->parameter;
22904 2 : return GF_OK;
22905 : default:
22906 : return GF_BAD_PARAM;
22907 : }
22908 : }
22909 :
22910 :
22911 7 : static s32 MatteTexture_get_field_index_by_name(char *name)
22912 : {
22913 7 : if (!strcmp("surfaceA", name)) return 0;
22914 6 : if (!strcmp("surfaceB", name)) return 1;
22915 5 : if (!strcmp("alphaSurface", name)) return 2;
22916 4 : if (!strcmp("operation", name)) return 3;
22917 3 : if (!strcmp("overwrite", name)) return 4;
22918 2 : if (!strcmp("fraction", name)) return 5;
22919 1 : if (!strcmp("parameter", name)) return 6;
22920 0 : return -1;
22921 : }
22922 : static Bool MatteTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
22923 : {
22924 : switch (FieldIndex) {
22925 : default:
22926 : return 0;
22927 : }
22928 : }
22929 :
22930 :
22931 :
22932 1 : GF_Node *MatteTexture_Create()
22933 : {
22934 : M_MatteTexture *p;
22935 1 : GF_SAFEALLOC(p, M_MatteTexture);
22936 1 : if(!p) return NULL;
22937 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MatteTexture);
22938 :
22939 : /*default field values*/
22940 1 : p->fraction = FLT2FIX(0);
22941 1 : p->parameter.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
22942 1 : p->parameter.count = 1;
22943 1 : p->parameter.vals[0] = FLT2FIX(0);
22944 1 : return (GF_Node *)p;
22945 : }
22946 :
22947 :
22948 : /*
22949 : MediaBuffer Node deletion
22950 : */
22951 :
22952 : static void MediaBuffer_Del(GF_Node *node)
22953 : {
22954 : M_MediaBuffer *p = (M_MediaBuffer *) node;
22955 1 : gf_sg_mfurl_del(p->url);
22956 1 : gf_node_free((GF_Node *) p);
22957 : }
22958 :
22959 : static const u16 MediaBuffer_Def2All[] = { 0, 1, 2, 3, 5};
22960 : static const u16 MediaBuffer_In2All[] = { 0, 1, 2, 3, 5};
22961 : static const u16 MediaBuffer_Out2All[] = { 0, 1, 2, 3, 4, 5};
22962 :
22963 : static u32 MediaBuffer_get_field_count(GF_Node *node, u8 IndexMode)
22964 : {
22965 : switch(IndexMode) {
22966 : case GF_SG_FIELD_CODING_IN:
22967 : return 5;
22968 : case GF_SG_FIELD_CODING_DEF:
22969 : return 5;
22970 : case GF_SG_FIELD_CODING_OUT:
22971 : return 6;
22972 : case GF_SG_FIELD_CODING_DYN:
22973 : return 0;
22974 : default:
22975 : return 6;
22976 : }
22977 : }
22978 :
22979 : static GF_Err MediaBuffer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
22980 : {
22981 6 : switch(IndexMode) {
22982 0 : case GF_SG_FIELD_CODING_IN:
22983 0 : *allField = MediaBuffer_In2All[inField];
22984 : return GF_OK;
22985 0 : case GF_SG_FIELD_CODING_DEF:
22986 0 : *allField = MediaBuffer_Def2All[inField];
22987 : return GF_OK;
22988 0 : case GF_SG_FIELD_CODING_OUT:
22989 0 : *allField = MediaBuffer_Out2All[inField];
22990 : return GF_OK;
22991 : default:
22992 : return GF_BAD_PARAM;
22993 : }
22994 : }
22995 12 : static GF_Err MediaBuffer_get_field(GF_Node *node, GF_FieldInfo *info)
22996 : {
22997 12 : switch (info->fieldIndex) {
22998 2 : case 0:
22999 2 : info->name = "bufferSize";
23000 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23001 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
23002 2 : info->far_ptr = & ((M_MediaBuffer *) node)->bufferSize;
23003 2 : return GF_OK;
23004 2 : case 1:
23005 2 : info->name = "url";
23006 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23007 2 : info->fieldType = GF_SG_VRML_MFURL;
23008 2 : info->far_ptr = & ((M_MediaBuffer *) node)->url;
23009 2 : return GF_OK;
23010 2 : case 2:
23011 2 : info->name = "mediaStartTime";
23012 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23013 2 : info->fieldType = GF_SG_VRML_SFTIME;
23014 2 : info->far_ptr = & ((M_MediaBuffer *) node)->mediaStartTime;
23015 2 : return GF_OK;
23016 2 : case 3:
23017 2 : info->name = "mediaStopTime";
23018 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23019 2 : info->fieldType = GF_SG_VRML_SFTIME;
23020 2 : info->far_ptr = & ((M_MediaBuffer *) node)->mediaStopTime;
23021 2 : return GF_OK;
23022 2 : case 4:
23023 2 : info->name = "isBuffered";
23024 2 : info->eventType = GF_SG_EVENT_OUT;
23025 2 : info->fieldType = GF_SG_VRML_SFBOOL;
23026 2 : info->far_ptr = & ((M_MediaBuffer *) node)->isBuffered;
23027 2 : return GF_OK;
23028 2 : case 5:
23029 2 : info->name = "enabled";
23030 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23031 2 : info->fieldType = GF_SG_VRML_SFBOOL;
23032 2 : info->far_ptr = & ((M_MediaBuffer *) node)->enabled;
23033 2 : return GF_OK;
23034 : default:
23035 : return GF_BAD_PARAM;
23036 : }
23037 : }
23038 :
23039 :
23040 6 : static s32 MediaBuffer_get_field_index_by_name(char *name)
23041 : {
23042 6 : if (!strcmp("bufferSize", name)) return 0;
23043 5 : if (!strcmp("url", name)) return 1;
23044 4 : if (!strcmp("mediaStartTime", name)) return 2;
23045 3 : if (!strcmp("mediaStopTime", name)) return 3;
23046 2 : if (!strcmp("isBuffered", name)) return 4;
23047 1 : if (!strcmp("enabled", name)) return 5;
23048 0 : return -1;
23049 : }
23050 : static Bool MediaBuffer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23051 : {
23052 : switch (FieldIndex) {
23053 : default:
23054 : return 0;
23055 : }
23056 : }
23057 :
23058 :
23059 :
23060 1 : GF_Node *MediaBuffer_Create()
23061 : {
23062 : M_MediaBuffer *p;
23063 1 : GF_SAFEALLOC(p, M_MediaBuffer);
23064 1 : if(!p) return NULL;
23065 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MediaBuffer);
23066 :
23067 : /*default field values*/
23068 1 : p->bufferSize = FLT2FIX(0.0);
23069 1 : p->mediaStartTime = -1;
23070 1 : p->mediaStopTime = FIX_MAX;
23071 1 : p->enabled = 1;
23072 1 : return (GF_Node *)p;
23073 : }
23074 :
23075 :
23076 : /*
23077 : MediaControl Node deletion
23078 : */
23079 :
23080 : static void MediaControl_Del(GF_Node *node)
23081 : {
23082 : M_MediaControl *p = (M_MediaControl *) node;
23083 54 : gf_sg_mfurl_del(p->url);
23084 54 : gf_node_free((GF_Node *) p);
23085 : }
23086 :
23087 : static const u16 MediaControl_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
23088 : static const u16 MediaControl_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
23089 : static const u16 MediaControl_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
23090 :
23091 : static u32 MediaControl_get_field_count(GF_Node *node, u8 IndexMode)
23092 : {
23093 : switch(IndexMode) {
23094 : case GF_SG_FIELD_CODING_IN:
23095 : return 8;
23096 : case GF_SG_FIELD_CODING_DEF:
23097 : return 8;
23098 : case GF_SG_FIELD_CODING_OUT:
23099 : return 9;
23100 : case GF_SG_FIELD_CODING_DYN:
23101 : return 0;
23102 : default:
23103 : return 9;
23104 : }
23105 : }
23106 :
23107 : static GF_Err MediaControl_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23108 : {
23109 371 : switch(IndexMode) {
23110 234 : case GF_SG_FIELD_CODING_IN:
23111 234 : *allField = MediaControl_In2All[inField];
23112 : return GF_OK;
23113 128 : case GF_SG_FIELD_CODING_DEF:
23114 128 : *allField = MediaControl_Def2All[inField];
23115 : return GF_OK;
23116 0 : case GF_SG_FIELD_CODING_OUT:
23117 0 : *allField = MediaControl_Out2All[inField];
23118 : return GF_OK;
23119 : default:
23120 : return GF_BAD_PARAM;
23121 : }
23122 : }
23123 1236 : static GF_Err MediaControl_get_field(GF_Node *node, GF_FieldInfo *info)
23124 : {
23125 1236 : switch (info->fieldIndex) {
23126 101 : case 0:
23127 101 : info->name = "url";
23128 101 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23129 101 : info->fieldType = GF_SG_VRML_MFURL;
23130 101 : info->far_ptr = & ((M_MediaControl *) node)->url;
23131 101 : return GF_OK;
23132 107 : case 1:
23133 107 : info->name = "mediaStartTime";
23134 107 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23135 107 : info->fieldType = GF_SG_VRML_SFTIME;
23136 107 : info->far_ptr = & ((M_MediaControl *) node)->mediaStartTime;
23137 107 : return GF_OK;
23138 120 : case 2:
23139 120 : info->name = "mediaStopTime";
23140 120 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23141 120 : info->fieldType = GF_SG_VRML_SFTIME;
23142 120 : info->far_ptr = & ((M_MediaControl *) node)->mediaStopTime;
23143 120 : return GF_OK;
23144 692 : case 3:
23145 692 : info->name = "mediaSpeed";
23146 692 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23147 692 : info->fieldType = GF_SG_VRML_SFFLOAT;
23148 692 : info->far_ptr = & ((M_MediaControl *) node)->mediaSpeed;
23149 692 : return GF_OK;
23150 63 : case 4:
23151 63 : info->name = "loop";
23152 63 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23153 63 : info->fieldType = GF_SG_VRML_SFBOOL;
23154 63 : info->far_ptr = & ((M_MediaControl *) node)->loop;
23155 63 : return GF_OK;
23156 50 : case 5:
23157 50 : info->name = "preRoll";
23158 50 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23159 50 : info->fieldType = GF_SG_VRML_SFBOOL;
23160 50 : info->far_ptr = & ((M_MediaControl *) node)->preRoll;
23161 50 : return GF_OK;
23162 51 : case 6:
23163 51 : info->name = "mute";
23164 51 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23165 51 : info->fieldType = GF_SG_VRML_SFBOOL;
23166 51 : info->far_ptr = & ((M_MediaControl *) node)->mute;
23167 51 : return GF_OK;
23168 42 : case 7:
23169 42 : info->name = "enabled";
23170 42 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23171 42 : info->fieldType = GF_SG_VRML_SFBOOL;
23172 42 : info->far_ptr = & ((M_MediaControl *) node)->enabled;
23173 42 : return GF_OK;
23174 10 : case 8:
23175 10 : info->name = "isPreRolled";
23176 10 : info->eventType = GF_SG_EVENT_OUT;
23177 10 : info->fieldType = GF_SG_VRML_SFBOOL;
23178 10 : info->far_ptr = & ((M_MediaControl *) node)->isPreRolled;
23179 10 : return GF_OK;
23180 : default:
23181 : return GF_BAD_PARAM;
23182 : }
23183 : }
23184 :
23185 :
23186 769 : static s32 MediaControl_get_field_index_by_name(char *name)
23187 : {
23188 769 : if (!strcmp("url", name)) return 0;
23189 735 : if (!strcmp("mediaStartTime", name)) return 1;
23190 698 : if (!strcmp("mediaStopTime", name)) return 2;
23191 619 : if (!strcmp("mediaSpeed", name)) return 3;
23192 28 : if (!strcmp("loop", name)) return 4;
23193 16 : if (!strcmp("preRoll", name)) return 5;
23194 7 : if (!strcmp("mute", name)) return 6;
23195 2 : if (!strcmp("enabled", name)) return 7;
23196 1 : if (!strcmp("isPreRolled", name)) return 8;
23197 0 : return -1;
23198 : }
23199 : static Bool MediaControl_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23200 : {
23201 : switch (FieldIndex) {
23202 : default:
23203 : return 0;
23204 : }
23205 : }
23206 :
23207 :
23208 :
23209 54 : GF_Node *MediaControl_Create()
23210 : {
23211 : M_MediaControl *p;
23212 54 : GF_SAFEALLOC(p, M_MediaControl);
23213 54 : if(!p) return NULL;
23214 54 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MediaControl);
23215 :
23216 : /*default field values*/
23217 54 : p->mediaStartTime = -1;
23218 54 : p->mediaStopTime = FIX_MAX;
23219 54 : p->mediaSpeed = FLT2FIX(1.0);
23220 54 : p->preRoll = 1;
23221 54 : p->enabled = 1;
23222 54 : return (GF_Node *)p;
23223 : }
23224 :
23225 :
23226 : /*
23227 : MediaSensor Node deletion
23228 : */
23229 :
23230 17 : static void MediaSensor_Del(GF_Node *node)
23231 : {
23232 : M_MediaSensor *p = (M_MediaSensor *) node;
23233 17 : gf_sg_mfurl_del(p->url);
23234 17 : gf_sg_mfstring_del(p->info);
23235 17 : gf_node_free((GF_Node *) p);
23236 17 : }
23237 :
23238 : static const u16 MediaSensor_Def2All[] = { 0};
23239 : static const u16 MediaSensor_In2All[] = { 0};
23240 : static const u16 MediaSensor_Out2All[] = { 0, 1, 2, 3, 4, 5};
23241 :
23242 : static u32 MediaSensor_get_field_count(GF_Node *node, u8 IndexMode)
23243 : {
23244 : switch(IndexMode) {
23245 : case GF_SG_FIELD_CODING_IN:
23246 : return 1;
23247 : case GF_SG_FIELD_CODING_DEF:
23248 : return 1;
23249 : case GF_SG_FIELD_CODING_OUT:
23250 : return 6;
23251 : case GF_SG_FIELD_CODING_DYN:
23252 : return 0;
23253 : default:
23254 : return 6;
23255 : }
23256 : }
23257 :
23258 : static GF_Err MediaSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23259 : {
23260 6 : switch(IndexMode) {
23261 0 : case GF_SG_FIELD_CODING_IN:
23262 0 : *allField = MediaSensor_In2All[inField];
23263 : return GF_OK;
23264 0 : case GF_SG_FIELD_CODING_DEF:
23265 0 : *allField = MediaSensor_Def2All[inField];
23266 : return GF_OK;
23267 0 : case GF_SG_FIELD_CODING_OUT:
23268 0 : *allField = MediaSensor_Out2All[inField];
23269 : return GF_OK;
23270 : default:
23271 : return GF_BAD_PARAM;
23272 : }
23273 : }
23274 94 : static GF_Err MediaSensor_get_field(GF_Node *node, GF_FieldInfo *info)
23275 : {
23276 94 : switch (info->fieldIndex) {
23277 17 : case 0:
23278 17 : info->name = "url";
23279 17 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23280 17 : info->fieldType = GF_SG_VRML_MFURL;
23281 17 : info->far_ptr = & ((M_MediaSensor *) node)->url;
23282 17 : return GF_OK;
23283 27 : case 1:
23284 27 : info->name = "mediaCurrentTime";
23285 27 : info->eventType = GF_SG_EVENT_OUT;
23286 27 : info->fieldType = GF_SG_VRML_SFTIME;
23287 27 : info->far_ptr = & ((M_MediaSensor *) node)->mediaCurrentTime;
23288 27 : return GF_OK;
23289 4 : case 2:
23290 4 : info->name = "streamObjectStartTime";
23291 4 : info->eventType = GF_SG_EVENT_OUT;
23292 4 : info->fieldType = GF_SG_VRML_SFTIME;
23293 4 : info->far_ptr = & ((M_MediaSensor *) node)->streamObjectStartTime;
23294 4 : return GF_OK;
23295 26 : case 3:
23296 26 : info->name = "mediaDuration";
23297 26 : info->eventType = GF_SG_EVENT_OUT;
23298 26 : info->fieldType = GF_SG_VRML_SFTIME;
23299 26 : info->far_ptr = & ((M_MediaSensor *) node)->mediaDuration;
23300 26 : return GF_OK;
23301 16 : case 4:
23302 16 : info->name = "isActive";
23303 16 : info->eventType = GF_SG_EVENT_OUT;
23304 16 : info->fieldType = GF_SG_VRML_SFBOOL;
23305 16 : info->far_ptr = & ((M_MediaSensor *) node)->isActive;
23306 16 : return GF_OK;
23307 4 : case 5:
23308 4 : info->name = "info";
23309 4 : info->eventType = GF_SG_EVENT_OUT;
23310 4 : info->fieldType = GF_SG_VRML_MFSTRING;
23311 4 : info->far_ptr = & ((M_MediaSensor *) node)->info;
23312 4 : return GF_OK;
23313 : default:
23314 : return GF_BAD_PARAM;
23315 : }
23316 : }
23317 :
23318 :
23319 56 : static s32 MediaSensor_get_field_index_by_name(char *name)
23320 : {
23321 56 : if (!strcmp("url", name)) return 0;
23322 41 : if (!strcmp("mediaCurrentTime", name)) return 1;
23323 27 : if (!strcmp("streamObjectStartTime", name)) return 2;
23324 24 : if (!strcmp("mediaDuration", name)) return 3;
23325 11 : if (!strcmp("isActive", name)) return 4;
23326 3 : if (!strcmp("info", name)) return 5;
23327 0 : return -1;
23328 : }
23329 : static Bool MediaSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23330 : {
23331 : switch (FieldIndex) {
23332 : default:
23333 : return 0;
23334 : }
23335 : }
23336 :
23337 :
23338 :
23339 17 : GF_Node *MediaSensor_Create()
23340 : {
23341 : M_MediaSensor *p;
23342 17 : GF_SAFEALLOC(p, M_MediaSensor);
23343 17 : if(!p) return NULL;
23344 17 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MediaSensor);
23345 :
23346 : /*default field values*/
23347 17 : return (GF_Node *)p;
23348 : }
23349 :
23350 :
23351 : /*
23352 : BitWrapper Node deletion
23353 : */
23354 :
23355 67 : static void BitWrapper_Del(GF_Node *node)
23356 : {
23357 : M_BitWrapper *p = (M_BitWrapper *) node;
23358 67 : gf_node_unregister((GF_Node *) p->node, (GF_Node *) p);
23359 67 : gf_sg_mfurl_del(p->url);
23360 67 : gf_sg_sfstring_del(p->buffer);
23361 67 : gf_node_free((GF_Node *) p);
23362 67 : }
23363 :
23364 : static const u16 BitWrapper_Def2All[] = { 0, 1, 2, 3};
23365 :
23366 : static u32 BitWrapper_get_field_count(GF_Node *node, u8 IndexMode)
23367 : {
23368 78 : switch(IndexMode) {
23369 : case GF_SG_FIELD_CODING_IN:
23370 : return 0;
23371 58 : case GF_SG_FIELD_CODING_DEF:
23372 : return 4;
23373 : case GF_SG_FIELD_CODING_OUT:
23374 : return 0;
23375 : case GF_SG_FIELD_CODING_DYN:
23376 : return 0;
23377 17 : default:
23378 : return 4;
23379 : }
23380 : }
23381 :
23382 : static GF_Err BitWrapper_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23383 : {
23384 103 : switch(IndexMode) {
23385 99 : case GF_SG_FIELD_CODING_DEF:
23386 99 : *allField = BitWrapper_Def2All[inField];
23387 : return GF_OK;
23388 : default:
23389 : return GF_BAD_PARAM;
23390 : }
23391 : }
23392 320 : static GF_Err BitWrapper_get_field(GF_Node *node, GF_FieldInfo *info)
23393 : {
23394 320 : switch (info->fieldIndex) {
23395 38 : case 0:
23396 38 : info->name = "node";
23397 38 : info->eventType = GF_SG_EVENT_FIELD;
23398 38 : info->fieldType = GF_SG_VRML_SFNODE;
23399 38 : info->NDTtype = NDT_SFWorldNode;
23400 38 : info->far_ptr = & ((M_BitWrapper *)node)->node;
23401 38 : return GF_OK;
23402 74 : case 1:
23403 74 : info->name = "type";
23404 74 : info->eventType = GF_SG_EVENT_FIELD;
23405 74 : info->fieldType = GF_SG_VRML_SFINT32;
23406 74 : info->far_ptr = & ((M_BitWrapper *) node)->type;
23407 74 : return GF_OK;
23408 74 : case 2:
23409 74 : info->name = "url";
23410 74 : info->eventType = GF_SG_EVENT_FIELD;
23411 74 : info->fieldType = GF_SG_VRML_MFURL;
23412 74 : info->far_ptr = & ((M_BitWrapper *) node)->url;
23413 74 : return GF_OK;
23414 134 : case 3:
23415 134 : info->name = "buffer";
23416 134 : info->eventType = GF_SG_EVENT_FIELD;
23417 134 : info->fieldType = GF_SG_VRML_SFSTRING;
23418 134 : info->far_ptr = & ((M_BitWrapper *) node)->buffer;
23419 134 : return GF_OK;
23420 : default:
23421 : return GF_BAD_PARAM;
23422 : }
23423 : }
23424 :
23425 :
23426 19 : static s32 BitWrapper_get_field_index_by_name(char *name)
23427 : {
23428 19 : if (!strcmp("node", name)) return 0;
23429 18 : if (!strcmp("type", name)) return 1;
23430 17 : if (!strcmp("url", name)) return 2;
23431 16 : if (!strcmp("buffer", name)) return 3;
23432 0 : return -1;
23433 : }
23434 : static Bool BitWrapper_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23435 : {
23436 : switch (FieldIndex) {
23437 : default:
23438 : return 0;
23439 : }
23440 : }
23441 :
23442 :
23443 :
23444 67 : GF_Node *BitWrapper_Create()
23445 : {
23446 : M_BitWrapper *p;
23447 67 : GF_SAFEALLOC(p, M_BitWrapper);
23448 67 : if(!p) return NULL;
23449 67 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BitWrapper);
23450 :
23451 : /*default field values*/
23452 67 : p->type = 0;
23453 67 : return (GF_Node *)p;
23454 : }
23455 :
23456 :
23457 : /*
23458 : CoordinateInterpolator4D Node deletion
23459 : */
23460 :
23461 2 : static void CoordinateInterpolator4D_Del(GF_Node *node)
23462 : {
23463 : M_CoordinateInterpolator4D *p = (M_CoordinateInterpolator4D *) node;
23464 2 : gf_sg_mffloat_del(p->key);
23465 2 : gf_sg_mfvec4f_del(p->keyValue);
23466 2 : gf_sg_mfvec4f_del(p->value_changed);
23467 2 : gf_node_free((GF_Node *) p);
23468 2 : }
23469 :
23470 : static const u16 CoordinateInterpolator4D_Def2All[] = { 1, 2};
23471 : static const u16 CoordinateInterpolator4D_In2All[] = { 0, 1, 2};
23472 : static const u16 CoordinateInterpolator4D_Out2All[] = { 1, 2, 3};
23473 :
23474 : static u32 CoordinateInterpolator4D_get_field_count(GF_Node *node, u8 IndexMode)
23475 : {
23476 : switch(IndexMode) {
23477 : case GF_SG_FIELD_CODING_IN:
23478 : return 3;
23479 : case GF_SG_FIELD_CODING_DEF:
23480 : return 2;
23481 : case GF_SG_FIELD_CODING_OUT:
23482 : return 3;
23483 : case GF_SG_FIELD_CODING_DYN:
23484 : return 0;
23485 : default:
23486 : return 4;
23487 : }
23488 : }
23489 :
23490 : static GF_Err CoordinateInterpolator4D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23491 : {
23492 4 : switch(IndexMode) {
23493 0 : case GF_SG_FIELD_CODING_IN:
23494 0 : *allField = CoordinateInterpolator4D_In2All[inField];
23495 : return GF_OK;
23496 0 : case GF_SG_FIELD_CODING_DEF:
23497 0 : *allField = CoordinateInterpolator4D_Def2All[inField];
23498 : return GF_OK;
23499 0 : case GF_SG_FIELD_CODING_OUT:
23500 0 : *allField = CoordinateInterpolator4D_Out2All[inField];
23501 : return GF_OK;
23502 : default:
23503 : return GF_BAD_PARAM;
23504 : }
23505 : }
23506 12 : static GF_Err CoordinateInterpolator4D_get_field(GF_Node *node, GF_FieldInfo *info)
23507 : {
23508 12 : switch (info->fieldIndex) {
23509 4 : case 0:
23510 4 : info->name = "set_fraction";
23511 4 : info->eventType = GF_SG_EVENT_IN;
23512 4 : info->on_event_in = ((M_CoordinateInterpolator4D *)node)->on_set_fraction;
23513 4 : info->fieldType = GF_SG_VRML_SFFLOAT;
23514 4 : info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->set_fraction;
23515 4 : return GF_OK;
23516 3 : case 1:
23517 3 : info->name = "key";
23518 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23519 3 : info->fieldType = GF_SG_VRML_MFFLOAT;
23520 3 : info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->key;
23521 3 : return GF_OK;
23522 3 : case 2:
23523 3 : info->name = "keyValue";
23524 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23525 3 : info->fieldType = GF_SG_VRML_MFVEC4F;
23526 3 : info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->keyValue;
23527 3 : return GF_OK;
23528 2 : case 3:
23529 2 : info->name = "value_changed";
23530 2 : info->eventType = GF_SG_EVENT_OUT;
23531 2 : info->fieldType = GF_SG_VRML_MFVEC4F;
23532 2 : info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->value_changed;
23533 2 : return GF_OK;
23534 : default:
23535 : return GF_BAD_PARAM;
23536 : }
23537 : }
23538 :
23539 :
23540 7 : static s32 CoordinateInterpolator4D_get_field_index_by_name(char *name)
23541 : {
23542 7 : if (!strcmp("set_fraction", name)) return 0;
23543 5 : if (!strcmp("key", name)) return 1;
23544 3 : if (!strcmp("keyValue", name)) return 2;
23545 1 : if (!strcmp("value_changed", name)) return 3;
23546 0 : return -1;
23547 : }
23548 : static Bool CoordinateInterpolator4D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23549 : {
23550 4 : switch (FieldIndex) {
23551 1 : case 1:
23552 1 : *AType = 0;
23553 1 : *QType = 8;
23554 1 : *b_min = FLT2FIX(0);
23555 1 : *b_max = FLT2FIX(1);
23556 : return 1;
23557 1 : case 2:
23558 1 : *AType = 0;
23559 1 : *QType = 15;
23560 1 : *b_min = FIX_MIN;
23561 1 : *b_max = FIX_MAX;
23562 : return 1;
23563 : default:
23564 : return 0;
23565 : }
23566 : }
23567 :
23568 :
23569 :
23570 2 : GF_Node *CoordinateInterpolator4D_Create()
23571 : {
23572 : M_CoordinateInterpolator4D *p;
23573 2 : GF_SAFEALLOC(p, M_CoordinateInterpolator4D);
23574 2 : if(!p) return NULL;
23575 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CoordinateInterpolator4D);
23576 :
23577 : /*default field values*/
23578 2 : return (GF_Node *)p;
23579 : }
23580 :
23581 :
23582 : /*
23583 : DepthImage Node deletion
23584 : */
23585 :
23586 : static void DepthImage_Del(GF_Node *node)
23587 : {
23588 : M_DepthImage *p = (M_DepthImage *) node;
23589 1 : gf_node_unregister((GF_Node *) p->diTexture, (GF_Node *) p);
23590 1 : gf_node_free((GF_Node *) p);
23591 : }
23592 :
23593 : static const u16 DepthImage_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
23594 :
23595 : static u32 DepthImage_get_field_count(GF_Node *node, u8 IndexMode)
23596 : {
23597 6 : switch(IndexMode) {
23598 : case GF_SG_FIELD_CODING_IN:
23599 : return 0;
23600 1 : case GF_SG_FIELD_CODING_DEF:
23601 : return 7;
23602 : case GF_SG_FIELD_CODING_OUT:
23603 : return 0;
23604 : case GF_SG_FIELD_CODING_DYN:
23605 : return 0;
23606 2 : default:
23607 : return 7;
23608 : }
23609 : }
23610 :
23611 : static GF_Err DepthImage_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23612 : {
23613 7 : switch(IndexMode) {
23614 0 : case GF_SG_FIELD_CODING_DEF:
23615 0 : *allField = DepthImage_Def2All[inField];
23616 : return GF_OK;
23617 : default:
23618 : return GF_BAD_PARAM;
23619 : }
23620 : }
23621 14 : static GF_Err DepthImage_get_field(GF_Node *node, GF_FieldInfo *info)
23622 : {
23623 14 : switch (info->fieldIndex) {
23624 2 : case 0:
23625 2 : info->name = "diTexture";
23626 2 : info->eventType = GF_SG_EVENT_FIELD;
23627 2 : info->fieldType = GF_SG_VRML_SFNODE;
23628 2 : info->NDTtype = NDT_SFDepthTextureNode;
23629 2 : info->far_ptr = & ((M_DepthImage *)node)->diTexture;
23630 2 : return GF_OK;
23631 2 : case 1:
23632 2 : info->name = "farPlane";
23633 2 : info->eventType = GF_SG_EVENT_FIELD;
23634 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
23635 2 : info->far_ptr = & ((M_DepthImage *) node)->farPlane;
23636 2 : return GF_OK;
23637 2 : case 2:
23638 2 : info->name = "fieldOfView";
23639 2 : info->eventType = GF_SG_EVENT_FIELD;
23640 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
23641 2 : info->far_ptr = & ((M_DepthImage *) node)->fieldOfView;
23642 2 : return GF_OK;
23643 2 : case 3:
23644 2 : info->name = "nearPlane";
23645 2 : info->eventType = GF_SG_EVENT_FIELD;
23646 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
23647 2 : info->far_ptr = & ((M_DepthImage *) node)->nearPlane;
23648 2 : return GF_OK;
23649 2 : case 4:
23650 2 : info->name = "orientation";
23651 2 : info->eventType = GF_SG_EVENT_FIELD;
23652 2 : info->fieldType = GF_SG_VRML_SFROTATION;
23653 2 : info->far_ptr = & ((M_DepthImage *) node)->orientation;
23654 2 : return GF_OK;
23655 2 : case 5:
23656 2 : info->name = "orthographic";
23657 2 : info->eventType = GF_SG_EVENT_FIELD;
23658 2 : info->fieldType = GF_SG_VRML_SFBOOL;
23659 2 : info->far_ptr = & ((M_DepthImage *) node)->orthographic;
23660 2 : return GF_OK;
23661 2 : case 6:
23662 2 : info->name = "position";
23663 2 : info->eventType = GF_SG_EVENT_FIELD;
23664 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
23665 2 : info->far_ptr = & ((M_DepthImage *) node)->position;
23666 2 : return GF_OK;
23667 : default:
23668 : return GF_BAD_PARAM;
23669 : }
23670 : }
23671 :
23672 :
23673 7 : static s32 DepthImage_get_field_index_by_name(char *name)
23674 : {
23675 7 : if (!strcmp("diTexture", name)) return 0;
23676 6 : if (!strcmp("farPlane", name)) return 1;
23677 5 : if (!strcmp("fieldOfView", name)) return 2;
23678 4 : if (!strcmp("nearPlane", name)) return 3;
23679 3 : if (!strcmp("orientation", name)) return 4;
23680 2 : if (!strcmp("orthographic", name)) return 5;
23681 1 : if (!strcmp("position", name)) return 6;
23682 0 : return -1;
23683 : }
23684 : static Bool DepthImage_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23685 : {
23686 : switch (FieldIndex) {
23687 : default:
23688 : return 0;
23689 : }
23690 : }
23691 :
23692 :
23693 :
23694 1 : GF_Node *DepthImage_Create()
23695 : {
23696 : M_DepthImage *p;
23697 1 : GF_SAFEALLOC(p, M_DepthImage);
23698 1 : if(!p) return NULL;
23699 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_DepthImage);
23700 :
23701 : /*default field values*/
23702 1 : p->farPlane = FLT2FIX(100);
23703 1 : p->fieldOfView.x = FLT2FIX(0.785398);
23704 1 : p->fieldOfView.y = FLT2FIX(0.785398);
23705 1 : p->nearPlane = FLT2FIX(10);
23706 1 : p->orientation.x = FLT2FIX(0);
23707 1 : p->orientation.y = FLT2FIX(0);
23708 1 : p->orientation.z = FLT2FIX(1);
23709 1 : p->orientation.q = FLT2FIX(0);
23710 1 : p->orthographic = 1;
23711 1 : p->position.x = FLT2FIX(0);
23712 1 : p->position.y = FLT2FIX(0);
23713 1 : p->position.z = FLT2FIX(10);
23714 1 : return (GF_Node *)p;
23715 : }
23716 :
23717 :
23718 : /*
23719 : FFD Node deletion
23720 : */
23721 :
23722 1 : static void FFD_Del(GF_Node *node)
23723 : {
23724 : M_FFD *p = (M_FFD *) node;
23725 1 : gf_sg_mfvec4f_del(p->controlPoint);
23726 1 : gf_sg_mffloat_del(p->uKnot);
23727 1 : gf_sg_mffloat_del(p->vKnot);
23728 1 : gf_sg_mffloat_del(p->wKnot);
23729 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
23730 1 : gf_node_free((GF_Node *) p);
23731 1 : }
23732 :
23733 : static const u16 FFD_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
23734 : static const u16 FFD_In2All[] = { 0, 1, 2, 3};
23735 : static const u16 FFD_Out2All[] = { 2, 3};
23736 : static const u16 FFD_Dyn2All[] = { 3};
23737 :
23738 : static u32 FFD_get_field_count(GF_Node *node, u8 IndexMode)
23739 : {
23740 : switch(IndexMode) {
23741 : case GF_SG_FIELD_CODING_IN:
23742 : return 4;
23743 : case GF_SG_FIELD_CODING_DEF:
23744 : return 11;
23745 : case GF_SG_FIELD_CODING_OUT:
23746 : return 2;
23747 : case GF_SG_FIELD_CODING_DYN:
23748 : return 1;
23749 : default:
23750 : return 13;
23751 : }
23752 : }
23753 :
23754 : static GF_Err FFD_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23755 : {
23756 13 : switch(IndexMode) {
23757 0 : case GF_SG_FIELD_CODING_IN:
23758 0 : *allField = FFD_In2All[inField];
23759 : return GF_OK;
23760 0 : case GF_SG_FIELD_CODING_DEF:
23761 0 : *allField = FFD_Def2All[inField];
23762 : return GF_OK;
23763 0 : case GF_SG_FIELD_CODING_OUT:
23764 0 : *allField = FFD_Out2All[inField];
23765 : return GF_OK;
23766 0 : case GF_SG_FIELD_CODING_DYN:
23767 0 : *allField = FFD_Dyn2All[inField];
23768 : return GF_OK;
23769 : default:
23770 : return GF_BAD_PARAM;
23771 : }
23772 : }
23773 26 : static GF_Err FFD_get_field(GF_Node *node, GF_FieldInfo *info)
23774 : {
23775 26 : switch (info->fieldIndex) {
23776 2 : case 0:
23777 2 : info->name = "addChildren";
23778 2 : info->eventType = GF_SG_EVENT_IN;
23779 2 : info->on_event_in = ((M_FFD *)node)->on_addChildren;
23780 2 : info->fieldType = GF_SG_VRML_MFNODE;
23781 2 : info->NDTtype = NDT_SF3DNode;
23782 2 : info->far_ptr = & ((M_FFD *)node)->addChildren;
23783 2 : return GF_OK;
23784 2 : case 1:
23785 2 : info->name = "removeChildren";
23786 2 : info->eventType = GF_SG_EVENT_IN;
23787 2 : info->on_event_in = ((M_FFD *)node)->on_removeChildren;
23788 2 : info->fieldType = GF_SG_VRML_MFNODE;
23789 2 : info->NDTtype = NDT_SF3DNode;
23790 2 : info->far_ptr = & ((M_FFD *)node)->removeChildren;
23791 2 : return GF_OK;
23792 2 : case 2:
23793 2 : info->name = "children";
23794 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23795 2 : info->fieldType = GF_SG_VRML_MFNODE;
23796 2 : info->NDTtype = NDT_SF3DNode;
23797 2 : info->far_ptr = & ((M_FFD *)node)->children;
23798 2 : return GF_OK;
23799 2 : case 3:
23800 2 : info->name = "controlPoint";
23801 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
23802 2 : info->fieldType = GF_SG_VRML_MFVEC4F;
23803 2 : info->far_ptr = & ((M_FFD *) node)->controlPoint;
23804 2 : return GF_OK;
23805 2 : case 4:
23806 2 : info->name = "uDimension";
23807 2 : info->eventType = GF_SG_EVENT_FIELD;
23808 2 : info->fieldType = GF_SG_VRML_SFINT32;
23809 2 : info->far_ptr = & ((M_FFD *) node)->uDimension;
23810 2 : return GF_OK;
23811 2 : case 5:
23812 2 : info->name = "uKnot";
23813 2 : info->eventType = GF_SG_EVENT_FIELD;
23814 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
23815 2 : info->far_ptr = & ((M_FFD *) node)->uKnot;
23816 2 : return GF_OK;
23817 2 : case 6:
23818 2 : info->name = "uOrder";
23819 2 : info->eventType = GF_SG_EVENT_FIELD;
23820 2 : info->fieldType = GF_SG_VRML_SFINT32;
23821 2 : info->far_ptr = & ((M_FFD *) node)->uOrder;
23822 2 : return GF_OK;
23823 2 : case 7:
23824 2 : info->name = "vDimension";
23825 2 : info->eventType = GF_SG_EVENT_FIELD;
23826 2 : info->fieldType = GF_SG_VRML_SFINT32;
23827 2 : info->far_ptr = & ((M_FFD *) node)->vDimension;
23828 2 : return GF_OK;
23829 2 : case 8:
23830 2 : info->name = "vKnot";
23831 2 : info->eventType = GF_SG_EVENT_FIELD;
23832 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
23833 2 : info->far_ptr = & ((M_FFD *) node)->vKnot;
23834 2 : return GF_OK;
23835 2 : case 9:
23836 2 : info->name = "vOrder";
23837 2 : info->eventType = GF_SG_EVENT_FIELD;
23838 2 : info->fieldType = GF_SG_VRML_SFINT32;
23839 2 : info->far_ptr = & ((M_FFD *) node)->vOrder;
23840 2 : return GF_OK;
23841 2 : case 10:
23842 2 : info->name = "wDimension";
23843 2 : info->eventType = GF_SG_EVENT_FIELD;
23844 2 : info->fieldType = GF_SG_VRML_SFINT32;
23845 2 : info->far_ptr = & ((M_FFD *) node)->wDimension;
23846 2 : return GF_OK;
23847 2 : case 11:
23848 2 : info->name = "wKnot";
23849 2 : info->eventType = GF_SG_EVENT_FIELD;
23850 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
23851 2 : info->far_ptr = & ((M_FFD *) node)->wKnot;
23852 2 : return GF_OK;
23853 2 : case 12:
23854 2 : info->name = "wOrder";
23855 2 : info->eventType = GF_SG_EVENT_FIELD;
23856 2 : info->fieldType = GF_SG_VRML_SFINT32;
23857 2 : info->far_ptr = & ((M_FFD *) node)->wOrder;
23858 2 : return GF_OK;
23859 : default:
23860 : return GF_BAD_PARAM;
23861 : }
23862 : }
23863 :
23864 :
23865 13 : static s32 FFD_get_field_index_by_name(char *name)
23866 : {
23867 13 : if (!strcmp("addChildren", name)) return 0;
23868 12 : if (!strcmp("removeChildren", name)) return 1;
23869 11 : if (!strcmp("children", name)) return 2;
23870 10 : if (!strcmp("controlPoint", name)) return 3;
23871 9 : if (!strcmp("uDimension", name)) return 4;
23872 8 : if (!strcmp("uKnot", name)) return 5;
23873 7 : if (!strcmp("uOrder", name)) return 6;
23874 6 : if (!strcmp("vDimension", name)) return 7;
23875 5 : if (!strcmp("vKnot", name)) return 8;
23876 4 : if (!strcmp("vOrder", name)) return 9;
23877 3 : if (!strcmp("wDimension", name)) return 10;
23878 2 : if (!strcmp("wKnot", name)) return 11;
23879 1 : if (!strcmp("wOrder", name)) return 12;
23880 0 : return -1;
23881 : }
23882 13 : static Bool FFD_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
23883 : {
23884 13 : switch (FieldIndex) {
23885 1 : case 3:
23886 1 : *AType = 15;
23887 1 : *QType = 15;
23888 1 : *b_min = FIX_MIN;
23889 1 : *b_max = FIX_MAX;
23890 : return 1;
23891 1 : case 4:
23892 1 : *AType = 0;
23893 1 : *QType = 13;
23894 1 : *QT13_bits = 8;
23895 1 : *b_min = FLT2FIX(2);
23896 1 : *b_max = FLT2FIX(257);
23897 : return 1;
23898 1 : case 6:
23899 1 : *AType = 0;
23900 1 : *QType = 13;
23901 1 : *QT13_bits = 5;
23902 1 : *b_min = FLT2FIX(2);
23903 1 : *b_max = FLT2FIX(33);
23904 : return 1;
23905 1 : case 7:
23906 1 : *AType = 0;
23907 1 : *QType = 13;
23908 1 : *QT13_bits = 8;
23909 1 : *b_min = FLT2FIX(2);
23910 1 : *b_max = FLT2FIX(257);
23911 : return 1;
23912 1 : case 9:
23913 1 : *AType = 0;
23914 1 : *QType = 13;
23915 1 : *QT13_bits = 5;
23916 1 : *b_min = FLT2FIX(2);
23917 1 : *b_max = FLT2FIX(33);
23918 : return 1;
23919 1 : case 10:
23920 1 : *AType = 0;
23921 1 : *QType = 13;
23922 1 : *QT13_bits = 8;
23923 1 : *b_min = FLT2FIX(2);
23924 1 : *b_max = FLT2FIX(257);
23925 : return 1;
23926 1 : case 12:
23927 1 : *AType = 0;
23928 1 : *QType = 13;
23929 1 : *QT13_bits = 5;
23930 1 : *b_min = FLT2FIX(2);
23931 1 : *b_max = FLT2FIX(33);
23932 : return 1;
23933 : default:
23934 : return 0;
23935 : }
23936 : }
23937 :
23938 :
23939 :
23940 1 : GF_Node *FFD_Create()
23941 : {
23942 : M_FFD *p;
23943 1 : GF_SAFEALLOC(p, M_FFD);
23944 1 : if(!p) return NULL;
23945 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FFD);
23946 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
23947 :
23948 : /*default field values*/
23949 1 : p->uDimension = 2;
23950 1 : p->uOrder = 2;
23951 1 : p->vDimension = 2;
23952 1 : p->vOrder = 2;
23953 1 : p->wDimension = 2;
23954 1 : p->wOrder = 2;
23955 1 : return (GF_Node *)p;
23956 : }
23957 :
23958 :
23959 : /*
23960 : Implicit Node deletion
23961 : */
23962 :
23963 1 : static void Implicit_Del(GF_Node *node)
23964 : {
23965 : M_Implicit *p = (M_Implicit *) node;
23966 1 : gf_sg_mffloat_del(p->c);
23967 1 : gf_sg_mfint32_del(p->densities);
23968 1 : gf_node_free((GF_Node *) p);
23969 1 : }
23970 :
23971 : static const u16 Implicit_Def2All[] = { 0, 1, 2, 3, 4};
23972 : static const u16 Implicit_In2All[] = { 0, 1, 2, 3, 4};
23973 : static const u16 Implicit_Out2All[] = { 0, 1, 2, 3, 4};
23974 : static const u16 Implicit_Dyn2All[] = { 0, 1};
23975 :
23976 : static u32 Implicit_get_field_count(GF_Node *node, u8 IndexMode)
23977 : {
23978 6 : switch(IndexMode) {
23979 : case GF_SG_FIELD_CODING_IN:
23980 : return 5;
23981 : case GF_SG_FIELD_CODING_DEF:
23982 : return 5;
23983 : case GF_SG_FIELD_CODING_OUT:
23984 : return 5;
23985 1 : case GF_SG_FIELD_CODING_DYN:
23986 : return 2;
23987 : default:
23988 : return 5;
23989 : }
23990 : }
23991 :
23992 : static GF_Err Implicit_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
23993 : {
23994 5 : switch(IndexMode) {
23995 0 : case GF_SG_FIELD_CODING_IN:
23996 0 : *allField = Implicit_In2All[inField];
23997 : return GF_OK;
23998 0 : case GF_SG_FIELD_CODING_DEF:
23999 0 : *allField = Implicit_Def2All[inField];
24000 : return GF_OK;
24001 0 : case GF_SG_FIELD_CODING_OUT:
24002 0 : *allField = Implicit_Out2All[inField];
24003 : return GF_OK;
24004 0 : case GF_SG_FIELD_CODING_DYN:
24005 0 : *allField = Implicit_Dyn2All[inField];
24006 : return GF_OK;
24007 : default:
24008 : return GF_BAD_PARAM;
24009 : }
24010 : }
24011 10 : static GF_Err Implicit_get_field(GF_Node *node, GF_FieldInfo *info)
24012 : {
24013 10 : switch (info->fieldIndex) {
24014 2 : case 0:
24015 2 : info->name = "bboxSize";
24016 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24017 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
24018 2 : info->far_ptr = & ((M_Implicit *) node)->bboxSize;
24019 2 : return GF_OK;
24020 2 : case 1:
24021 2 : info->name = "c";
24022 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24023 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
24024 2 : info->far_ptr = & ((M_Implicit *) node)->c;
24025 2 : return GF_OK;
24026 2 : case 2:
24027 2 : info->name = "densities";
24028 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24029 2 : info->fieldType = GF_SG_VRML_MFINT32;
24030 2 : info->far_ptr = & ((M_Implicit *) node)->densities;
24031 2 : return GF_OK;
24032 2 : case 3:
24033 2 : info->name = "dual";
24034 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24035 2 : info->fieldType = GF_SG_VRML_SFBOOL;
24036 2 : info->far_ptr = & ((M_Implicit *) node)->dual;
24037 2 : return GF_OK;
24038 2 : case 4:
24039 2 : info->name = "solid";
24040 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24041 2 : info->fieldType = GF_SG_VRML_SFBOOL;
24042 2 : info->far_ptr = & ((M_Implicit *) node)->solid;
24043 2 : return GF_OK;
24044 : default:
24045 : return GF_BAD_PARAM;
24046 : }
24047 : }
24048 :
24049 :
24050 5 : static s32 Implicit_get_field_index_by_name(char *name)
24051 : {
24052 5 : if (!strcmp("bboxSize", name)) return 0;
24053 4 : if (!strcmp("c", name)) return 1;
24054 3 : if (!strcmp("densities", name)) return 2;
24055 2 : if (!strcmp("dual", name)) return 3;
24056 1 : if (!strcmp("solid", name)) return 4;
24057 0 : return -1;
24058 : }
24059 : static Bool Implicit_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24060 : {
24061 5 : switch (FieldIndex) {
24062 1 : case 0:
24063 1 : *AType = 11;
24064 1 : *QType = 11;
24065 1 : *b_min = FLT2FIX(0);
24066 1 : *b_max = FIX_MAX;
24067 : return 1;
24068 1 : case 1:
24069 1 : *AType = 7;
24070 1 : *QType = 0;
24071 1 : *b_min = FIX_MIN;
24072 1 : *b_max = FIX_MAX;
24073 : return 1;
24074 : default:
24075 : return 0;
24076 : }
24077 : }
24078 :
24079 :
24080 :
24081 1 : GF_Node *Implicit_Create()
24082 : {
24083 : M_Implicit *p;
24084 1 : GF_SAFEALLOC(p, M_Implicit);
24085 1 : if(!p) return NULL;
24086 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Implicit);
24087 :
24088 : /*default field values*/
24089 1 : p->bboxSize.x = FLT2FIX(2);
24090 1 : p->bboxSize.y = FLT2FIX(2);
24091 1 : p->bboxSize.z = FLT2FIX(2);
24092 1 : return (GF_Node *)p;
24093 : }
24094 :
24095 :
24096 : /*
24097 : XXLFM_Appearance Node deletion
24098 : */
24099 :
24100 1 : static void XXLFM_Appearance_Del(GF_Node *node)
24101 : {
24102 : M_XXLFM_Appearance *p = (M_XXLFM_Appearance *) node;
24103 1 : gf_node_unregister((GF_Node *) p->blendList, (GF_Node *) p);
24104 1 : gf_node_unregister_children((GF_Node *) p, p->lightMapList);
24105 1 : gf_node_unregister_children((GF_Node *) p, p->tileList);
24106 1 : gf_node_unregister((GF_Node *) p->vertexFrameList, (GF_Node *) p);
24107 1 : gf_node_free((GF_Node *) p);
24108 1 : }
24109 :
24110 : static const u16 XXLFM_Appearance_Def2All[] = { 0, 1, 2, 3};
24111 : static const u16 XXLFM_Appearance_In2All[] = { 0, 1, 2, 3};
24112 : static const u16 XXLFM_Appearance_Out2All[] = { 0, 1, 2, 3};
24113 :
24114 : static u32 XXLFM_Appearance_get_field_count(GF_Node *node, u8 IndexMode)
24115 : {
24116 6 : switch(IndexMode) {
24117 : case GF_SG_FIELD_CODING_IN:
24118 : return 4;
24119 : case GF_SG_FIELD_CODING_DEF:
24120 : return 4;
24121 : case GF_SG_FIELD_CODING_OUT:
24122 : return 4;
24123 1 : case GF_SG_FIELD_CODING_DYN:
24124 : return 0;
24125 : default:
24126 : return 4;
24127 : }
24128 : }
24129 :
24130 : static GF_Err XXLFM_Appearance_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24131 : {
24132 4 : switch(IndexMode) {
24133 0 : case GF_SG_FIELD_CODING_IN:
24134 0 : *allField = XXLFM_Appearance_In2All[inField];
24135 : return GF_OK;
24136 0 : case GF_SG_FIELD_CODING_DEF:
24137 0 : *allField = XXLFM_Appearance_Def2All[inField];
24138 : return GF_OK;
24139 0 : case GF_SG_FIELD_CODING_OUT:
24140 0 : *allField = XXLFM_Appearance_Out2All[inField];
24141 : return GF_OK;
24142 : default:
24143 : return GF_BAD_PARAM;
24144 : }
24145 : }
24146 8 : static GF_Err XXLFM_Appearance_get_field(GF_Node *node, GF_FieldInfo *info)
24147 : {
24148 8 : switch (info->fieldIndex) {
24149 2 : case 0:
24150 2 : info->name = "blendList";
24151 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24152 2 : info->fieldType = GF_SG_VRML_SFNODE;
24153 2 : info->NDTtype = NDT_SFBlendListNode;
24154 2 : info->far_ptr = & ((M_XXLFM_Appearance *)node)->blendList;
24155 2 : return GF_OK;
24156 2 : case 1:
24157 2 : info->name = "lightMapList";
24158 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24159 2 : info->fieldType = GF_SG_VRML_MFNODE;
24160 2 : info->NDTtype = NDT_SFLightMapNode;
24161 2 : info->far_ptr = & ((M_XXLFM_Appearance *)node)->lightMapList;
24162 2 : return GF_OK;
24163 2 : case 2:
24164 2 : info->name = "tileList";
24165 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24166 2 : info->fieldType = GF_SG_VRML_MFNODE;
24167 2 : info->NDTtype = NDT_SFTextureNode;
24168 2 : info->far_ptr = & ((M_XXLFM_Appearance *)node)->tileList;
24169 2 : return GF_OK;
24170 2 : case 3:
24171 2 : info->name = "vertexFrameList";
24172 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24173 2 : info->fieldType = GF_SG_VRML_SFNODE;
24174 2 : info->NDTtype = NDT_SFFrameListNode;
24175 2 : info->far_ptr = & ((M_XXLFM_Appearance *)node)->vertexFrameList;
24176 2 : return GF_OK;
24177 : default:
24178 : return GF_BAD_PARAM;
24179 : }
24180 : }
24181 :
24182 :
24183 4 : static s32 XXLFM_Appearance_get_field_index_by_name(char *name)
24184 : {
24185 4 : if (!strcmp("blendList", name)) return 0;
24186 3 : if (!strcmp("lightMapList", name)) return 1;
24187 2 : if (!strcmp("tileList", name)) return 2;
24188 1 : if (!strcmp("vertexFrameList", name)) return 3;
24189 0 : return -1;
24190 : }
24191 : static Bool XXLFM_Appearance_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24192 : {
24193 : switch (FieldIndex) {
24194 : default:
24195 : return 0;
24196 : }
24197 : }
24198 :
24199 :
24200 :
24201 1 : GF_Node *XXLFM_Appearance_Create()
24202 : {
24203 : M_XXLFM_Appearance *p;
24204 1 : GF_SAFEALLOC(p, M_XXLFM_Appearance);
24205 1 : if(!p) return NULL;
24206 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_Appearance);
24207 :
24208 : /*default field values*/
24209 1 : return (GF_Node *)p;
24210 : }
24211 :
24212 :
24213 : /*
24214 : XXLFM_BlendList Node deletion
24215 : */
24216 :
24217 1 : static void XXLFM_BlendList_Del(GF_Node *node)
24218 : {
24219 : M_XXLFM_BlendList *p = (M_XXLFM_BlendList *) node;
24220 1 : gf_sg_mfint32_del(p->blendMode);
24221 1 : gf_sg_mfint32_del(p->lightMapIndex);
24222 1 : gf_node_free((GF_Node *) p);
24223 1 : }
24224 :
24225 : static const u16 XXLFM_BlendList_Def2All[] = { 0, 1};
24226 : static const u16 XXLFM_BlendList_In2All[] = { 0, 1};
24227 : static const u16 XXLFM_BlendList_Out2All[] = { 0, 1};
24228 :
24229 : static u32 XXLFM_BlendList_get_field_count(GF_Node *node, u8 IndexMode)
24230 : {
24231 6 : switch(IndexMode) {
24232 : case GF_SG_FIELD_CODING_IN:
24233 : return 2;
24234 : case GF_SG_FIELD_CODING_DEF:
24235 : return 2;
24236 : case GF_SG_FIELD_CODING_OUT:
24237 : return 2;
24238 1 : case GF_SG_FIELD_CODING_DYN:
24239 : return 0;
24240 : default:
24241 : return 2;
24242 : }
24243 : }
24244 :
24245 : static GF_Err XXLFM_BlendList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24246 : {
24247 2 : switch(IndexMode) {
24248 0 : case GF_SG_FIELD_CODING_IN:
24249 0 : *allField = XXLFM_BlendList_In2All[inField];
24250 : return GF_OK;
24251 0 : case GF_SG_FIELD_CODING_DEF:
24252 0 : *allField = XXLFM_BlendList_Def2All[inField];
24253 : return GF_OK;
24254 0 : case GF_SG_FIELD_CODING_OUT:
24255 0 : *allField = XXLFM_BlendList_Out2All[inField];
24256 : return GF_OK;
24257 : default:
24258 : return GF_BAD_PARAM;
24259 : }
24260 : }
24261 : static GF_Err XXLFM_BlendList_get_field(GF_Node *node, GF_FieldInfo *info)
24262 : {
24263 4 : switch (info->fieldIndex) {
24264 2 : case 0:
24265 2 : info->name = "blendMode";
24266 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24267 2 : info->fieldType = GF_SG_VRML_MFINT32;
24268 2 : info->far_ptr = & ((M_XXLFM_BlendList *) node)->blendMode;
24269 : return GF_OK;
24270 2 : case 1:
24271 2 : info->name = "lightMapIndex";
24272 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24273 2 : info->fieldType = GF_SG_VRML_MFINT32;
24274 2 : info->far_ptr = & ((M_XXLFM_BlendList *) node)->lightMapIndex;
24275 : return GF_OK;
24276 : default:
24277 : return GF_BAD_PARAM;
24278 : }
24279 : }
24280 :
24281 :
24282 2 : static s32 XXLFM_BlendList_get_field_index_by_name(char *name)
24283 : {
24284 2 : if (!strcmp("blendMode", name)) return 0;
24285 1 : if (!strcmp("lightMapIndex", name)) return 1;
24286 0 : return -1;
24287 : }
24288 : static Bool XXLFM_BlendList_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24289 : {
24290 2 : switch (FieldIndex) {
24291 1 : case 0:
24292 1 : *AType = 0;
24293 1 : *QType = 13;
24294 1 : *QT13_bits = 1;
24295 1 : *b_min = FLT2FIX(0);
24296 1 : *b_max = FLT2FIX(1);
24297 : return 1;
24298 1 : case 1:
24299 1 : *AType = 0;
24300 1 : *QType = 14;
24301 : return 1;
24302 : default:
24303 : return 0;
24304 : }
24305 : }
24306 :
24307 :
24308 :
24309 1 : GF_Node *XXLFM_BlendList_Create()
24310 : {
24311 : M_XXLFM_BlendList *p;
24312 1 : GF_SAFEALLOC(p, M_XXLFM_BlendList);
24313 1 : if(!p) return NULL;
24314 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_BlendList);
24315 :
24316 : /*default field values*/
24317 1 : return (GF_Node *)p;
24318 : }
24319 :
24320 :
24321 : /*
24322 : XXLFM_FrameList Node deletion
24323 : */
24324 :
24325 1 : static void XXLFM_FrameList_Del(GF_Node *node)
24326 : {
24327 : M_XXLFM_FrameList *p = (M_XXLFM_FrameList *) node;
24328 1 : gf_sg_mfint32_del(p->index);
24329 1 : gf_sg_mfvec3f_del(p->frame);
24330 1 : gf_node_free((GF_Node *) p);
24331 1 : }
24332 :
24333 : static const u16 XXLFM_FrameList_Def2All[] = { 0, 1};
24334 : static const u16 XXLFM_FrameList_In2All[] = { 0, 1};
24335 : static const u16 XXLFM_FrameList_Out2All[] = { 0, 1};
24336 :
24337 : static u32 XXLFM_FrameList_get_field_count(GF_Node *node, u8 IndexMode)
24338 : {
24339 6 : switch(IndexMode) {
24340 : case GF_SG_FIELD_CODING_IN:
24341 : return 2;
24342 : case GF_SG_FIELD_CODING_DEF:
24343 : return 2;
24344 : case GF_SG_FIELD_CODING_OUT:
24345 : return 2;
24346 1 : case GF_SG_FIELD_CODING_DYN:
24347 : return 0;
24348 : default:
24349 : return 2;
24350 : }
24351 : }
24352 :
24353 : static GF_Err XXLFM_FrameList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24354 : {
24355 2 : switch(IndexMode) {
24356 0 : case GF_SG_FIELD_CODING_IN:
24357 0 : *allField = XXLFM_FrameList_In2All[inField];
24358 : return GF_OK;
24359 0 : case GF_SG_FIELD_CODING_DEF:
24360 0 : *allField = XXLFM_FrameList_Def2All[inField];
24361 : return GF_OK;
24362 0 : case GF_SG_FIELD_CODING_OUT:
24363 0 : *allField = XXLFM_FrameList_Out2All[inField];
24364 : return GF_OK;
24365 : default:
24366 : return GF_BAD_PARAM;
24367 : }
24368 : }
24369 : static GF_Err XXLFM_FrameList_get_field(GF_Node *node, GF_FieldInfo *info)
24370 : {
24371 4 : switch (info->fieldIndex) {
24372 2 : case 0:
24373 2 : info->name = "index";
24374 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24375 2 : info->fieldType = GF_SG_VRML_MFINT32;
24376 2 : info->far_ptr = & ((M_XXLFM_FrameList *) node)->index;
24377 : return GF_OK;
24378 2 : case 1:
24379 2 : info->name = "frame";
24380 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24381 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
24382 2 : info->far_ptr = & ((M_XXLFM_FrameList *) node)->frame;
24383 : return GF_OK;
24384 : default:
24385 : return GF_BAD_PARAM;
24386 : }
24387 : }
24388 :
24389 :
24390 2 : static s32 XXLFM_FrameList_get_field_index_by_name(char *name)
24391 : {
24392 2 : if (!strcmp("index", name)) return 0;
24393 1 : if (!strcmp("frame", name)) return 1;
24394 0 : return -1;
24395 : }
24396 : static Bool XXLFM_FrameList_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24397 : {
24398 2 : switch (FieldIndex) {
24399 1 : case 0:
24400 1 : *AType = 0;
24401 1 : *QType = 14;
24402 : return 1;
24403 1 : case 1:
24404 1 : *AType = 0;
24405 1 : *QType = 1;
24406 1 : *b_min = FLT2FIX(-1);
24407 1 : *b_max = FLT2FIX(1);
24408 : return 1;
24409 : default:
24410 : return 0;
24411 : }
24412 : }
24413 :
24414 :
24415 :
24416 1 : GF_Node *XXLFM_FrameList_Create()
24417 : {
24418 : M_XXLFM_FrameList *p;
24419 1 : GF_SAFEALLOC(p, M_XXLFM_FrameList);
24420 1 : if(!p) return NULL;
24421 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_FrameList);
24422 :
24423 : /*default field values*/
24424 1 : p->index.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
24425 1 : p->index.count = 1;
24426 1 : p->index.vals[0] = -1;
24427 1 : p->frame.vals = (SFVec3f *)gf_malloc(sizeof(SFVec3f)*3);
24428 1 : p->frame.count = 3;
24429 1 : p->frame.vals[0].x = FLT2FIX(1);
24430 1 : p->frame.vals[0].y = FLT2FIX(0);
24431 1 : p->frame.vals[0].z = FLT2FIX(0);
24432 1 : p->frame.vals[1].x = FLT2FIX(0);
24433 1 : p->frame.vals[1].y = FLT2FIX(1);
24434 1 : p->frame.vals[1].z = FLT2FIX(0);
24435 1 : p->frame.vals[2].x = FLT2FIX(0);
24436 1 : p->frame.vals[2].y = FLT2FIX(0);
24437 1 : p->frame.vals[2].z = FLT2FIX(1);
24438 1 : return (GF_Node *)p;
24439 : }
24440 :
24441 :
24442 : /*
24443 : XXLFM_LightMap Node deletion
24444 : */
24445 :
24446 1 : static void XXLFM_LightMap_Del(GF_Node *node)
24447 : {
24448 : M_XXLFM_LightMap *p = (M_XXLFM_LightMap *) node;
24449 1 : gf_node_unregister((GF_Node *) p->surfaceMapList, (GF_Node *) p);
24450 1 : gf_node_unregister((GF_Node *) p->viewMapList, (GF_Node *) p);
24451 1 : gf_node_free((GF_Node *) p);
24452 1 : }
24453 :
24454 : static const u16 XXLFM_LightMap_Def2All[] = { 0, 1, 2, 3, 4};
24455 : static const u16 XXLFM_LightMap_In2All[] = { 0, 1, 2, 3, 4};
24456 : static const u16 XXLFM_LightMap_Out2All[] = { 0, 1, 2, 3, 4};
24457 :
24458 : static u32 XXLFM_LightMap_get_field_count(GF_Node *node, u8 IndexMode)
24459 : {
24460 6 : switch(IndexMode) {
24461 : case GF_SG_FIELD_CODING_IN:
24462 : return 5;
24463 : case GF_SG_FIELD_CODING_DEF:
24464 : return 5;
24465 : case GF_SG_FIELD_CODING_OUT:
24466 : return 5;
24467 1 : case GF_SG_FIELD_CODING_DYN:
24468 : return 0;
24469 : default:
24470 : return 5;
24471 : }
24472 : }
24473 :
24474 : static GF_Err XXLFM_LightMap_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24475 : {
24476 5 : switch(IndexMode) {
24477 0 : case GF_SG_FIELD_CODING_IN:
24478 0 : *allField = XXLFM_LightMap_In2All[inField];
24479 : return GF_OK;
24480 0 : case GF_SG_FIELD_CODING_DEF:
24481 0 : *allField = XXLFM_LightMap_Def2All[inField];
24482 : return GF_OK;
24483 0 : case GF_SG_FIELD_CODING_OUT:
24484 0 : *allField = XXLFM_LightMap_Out2All[inField];
24485 : return GF_OK;
24486 : default:
24487 : return GF_BAD_PARAM;
24488 : }
24489 : }
24490 10 : static GF_Err XXLFM_LightMap_get_field(GF_Node *node, GF_FieldInfo *info)
24491 : {
24492 10 : switch (info->fieldIndex) {
24493 2 : case 0:
24494 2 : info->name = "biasRGB";
24495 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24496 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
24497 2 : info->far_ptr = & ((M_XXLFM_LightMap *) node)->biasRGB;
24498 2 : return GF_OK;
24499 2 : case 1:
24500 2 : info->name = "priorityLevel";
24501 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24502 2 : info->fieldType = GF_SG_VRML_SFINT32;
24503 2 : info->far_ptr = & ((M_XXLFM_LightMap *) node)->priorityLevel;
24504 2 : return GF_OK;
24505 2 : case 2:
24506 2 : info->name = "scaleRGB";
24507 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24508 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
24509 2 : info->far_ptr = & ((M_XXLFM_LightMap *) node)->scaleRGB;
24510 2 : return GF_OK;
24511 2 : case 3:
24512 2 : info->name = "surfaceMapList";
24513 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24514 2 : info->fieldType = GF_SG_VRML_SFNODE;
24515 2 : info->NDTtype = NDT_SFSurfaceMapNode;
24516 2 : info->far_ptr = & ((M_XXLFM_LightMap *)node)->surfaceMapList;
24517 2 : return GF_OK;
24518 2 : case 4:
24519 2 : info->name = "viewMapList";
24520 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24521 2 : info->fieldType = GF_SG_VRML_SFNODE;
24522 2 : info->NDTtype = NDT_SFViewMapNode;
24523 2 : info->far_ptr = & ((M_XXLFM_LightMap *)node)->viewMapList;
24524 2 : return GF_OK;
24525 : default:
24526 : return GF_BAD_PARAM;
24527 : }
24528 : }
24529 :
24530 :
24531 5 : static s32 XXLFM_LightMap_get_field_index_by_name(char *name)
24532 : {
24533 5 : if (!strcmp("biasRGB", name)) return 0;
24534 4 : if (!strcmp("priorityLevel", name)) return 1;
24535 3 : if (!strcmp("scaleRGB", name)) return 2;
24536 2 : if (!strcmp("surfaceMapList", name)) return 3;
24537 1 : if (!strcmp("viewMapList", name)) return 4;
24538 0 : return -1;
24539 : }
24540 : static Bool XXLFM_LightMap_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24541 : {
24542 5 : switch (FieldIndex) {
24543 1 : case 0:
24544 1 : *AType = 0;
24545 1 : *QType = 7;
24546 1 : *b_min = FLT2FIX(-1);
24547 1 : *b_max = FLT2FIX(1);
24548 : return 1;
24549 1 : case 1:
24550 1 : *AType = 0;
24551 1 : *QType = 13;
24552 1 : *QT13_bits = 8;
24553 1 : *b_min = FLT2FIX(0);
24554 1 : *b_max = FLT2FIX(255);
24555 : return 1;
24556 1 : case 2:
24557 1 : *AType = 0;
24558 1 : *QType = 7;
24559 1 : *b_min = FLT2FIX(-1);
24560 1 : *b_max = FLT2FIX(1);
24561 : return 1;
24562 : default:
24563 : return 0;
24564 : }
24565 : }
24566 :
24567 :
24568 :
24569 1 : GF_Node *XXLFM_LightMap_Create()
24570 : {
24571 : M_XXLFM_LightMap *p;
24572 1 : GF_SAFEALLOC(p, M_XXLFM_LightMap);
24573 1 : if(!p) return NULL;
24574 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_LightMap);
24575 :
24576 : /*default field values*/
24577 1 : p->biasRGB.x = FLT2FIX(0);
24578 1 : p->biasRGB.y = FLT2FIX(0);
24579 1 : p->biasRGB.z = FLT2FIX(0);
24580 1 : p->priorityLevel = 0;
24581 1 : p->scaleRGB.x = FLT2FIX(1);
24582 1 : p->scaleRGB.y = FLT2FIX(1);
24583 1 : p->scaleRGB.z = FLT2FIX(1);
24584 1 : return (GF_Node *)p;
24585 : }
24586 :
24587 :
24588 : /*
24589 : XXLFM_SurfaceMapList Node deletion
24590 : */
24591 :
24592 1 : static void XXLFM_SurfaceMapList_Del(GF_Node *node)
24593 : {
24594 : M_XXLFM_SurfaceMapList *p = (M_XXLFM_SurfaceMapList *) node;
24595 1 : gf_sg_mfint32_del(p->tileIndex);
24596 1 : gf_node_unregister((GF_Node *) p->triangleCoordinate, (GF_Node *) p);
24597 1 : gf_sg_mfint32_del(p->triangleIndex);
24598 1 : gf_sg_mfint32_del(p->viewMapIndex);
24599 1 : gf_node_free((GF_Node *) p);
24600 1 : }
24601 :
24602 : static const u16 XXLFM_SurfaceMapList_Def2All[] = { 0, 1, 2, 3};
24603 : static const u16 XXLFM_SurfaceMapList_In2All[] = { 0, 1, 2, 3};
24604 : static const u16 XXLFM_SurfaceMapList_Out2All[] = { 0, 1, 2, 3};
24605 :
24606 : static u32 XXLFM_SurfaceMapList_get_field_count(GF_Node *node, u8 IndexMode)
24607 : {
24608 6 : switch(IndexMode) {
24609 : case GF_SG_FIELD_CODING_IN:
24610 : return 4;
24611 : case GF_SG_FIELD_CODING_DEF:
24612 : return 4;
24613 : case GF_SG_FIELD_CODING_OUT:
24614 : return 4;
24615 1 : case GF_SG_FIELD_CODING_DYN:
24616 : return 0;
24617 : default:
24618 : return 4;
24619 : }
24620 : }
24621 :
24622 : static GF_Err XXLFM_SurfaceMapList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24623 : {
24624 4 : switch(IndexMode) {
24625 0 : case GF_SG_FIELD_CODING_IN:
24626 0 : *allField = XXLFM_SurfaceMapList_In2All[inField];
24627 : return GF_OK;
24628 0 : case GF_SG_FIELD_CODING_DEF:
24629 0 : *allField = XXLFM_SurfaceMapList_Def2All[inField];
24630 : return GF_OK;
24631 0 : case GF_SG_FIELD_CODING_OUT:
24632 0 : *allField = XXLFM_SurfaceMapList_Out2All[inField];
24633 : return GF_OK;
24634 : default:
24635 : return GF_BAD_PARAM;
24636 : }
24637 : }
24638 8 : static GF_Err XXLFM_SurfaceMapList_get_field(GF_Node *node, GF_FieldInfo *info)
24639 : {
24640 8 : switch (info->fieldIndex) {
24641 2 : case 0:
24642 2 : info->name = "tileIndex";
24643 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24644 2 : info->fieldType = GF_SG_VRML_MFINT32;
24645 2 : info->far_ptr = & ((M_XXLFM_SurfaceMapList *) node)->tileIndex;
24646 2 : return GF_OK;
24647 2 : case 1:
24648 2 : info->name = "triangleCoordinate";
24649 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24650 2 : info->fieldType = GF_SG_VRML_SFNODE;
24651 2 : info->NDTtype = NDT_SFTextureCoordinateNode;
24652 2 : info->far_ptr = & ((M_XXLFM_SurfaceMapList *)node)->triangleCoordinate;
24653 2 : return GF_OK;
24654 2 : case 2:
24655 2 : info->name = "triangleIndex";
24656 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24657 2 : info->fieldType = GF_SG_VRML_MFINT32;
24658 2 : info->far_ptr = & ((M_XXLFM_SurfaceMapList *) node)->triangleIndex;
24659 2 : return GF_OK;
24660 2 : case 3:
24661 2 : info->name = "viewMapIndex";
24662 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24663 2 : info->fieldType = GF_SG_VRML_MFINT32;
24664 2 : info->far_ptr = & ((M_XXLFM_SurfaceMapList *) node)->viewMapIndex;
24665 2 : return GF_OK;
24666 : default:
24667 : return GF_BAD_PARAM;
24668 : }
24669 : }
24670 :
24671 :
24672 4 : static s32 XXLFM_SurfaceMapList_get_field_index_by_name(char *name)
24673 : {
24674 4 : if (!strcmp("tileIndex", name)) return 0;
24675 3 : if (!strcmp("triangleCoordinate", name)) return 1;
24676 2 : if (!strcmp("triangleIndex", name)) return 2;
24677 1 : if (!strcmp("viewMapIndex", name)) return 3;
24678 0 : return -1;
24679 : }
24680 : static Bool XXLFM_SurfaceMapList_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24681 : {
24682 4 : switch (FieldIndex) {
24683 1 : case 0:
24684 1 : *AType = 0;
24685 1 : *QType = 14;
24686 : return 1;
24687 1 : case 2:
24688 1 : *AType = 0;
24689 1 : *QType = 14;
24690 : return 1;
24691 1 : case 3:
24692 1 : *AType = 0;
24693 1 : *QType = 14;
24694 : return 1;
24695 : default:
24696 : return 0;
24697 : }
24698 : }
24699 :
24700 :
24701 :
24702 1 : GF_Node *XXLFM_SurfaceMapList_Create()
24703 : {
24704 : M_XXLFM_SurfaceMapList *p;
24705 1 : GF_SAFEALLOC(p, M_XXLFM_SurfaceMapList);
24706 1 : if(!p) return NULL;
24707 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_SurfaceMapList);
24708 :
24709 : /*default field values*/
24710 1 : return (GF_Node *)p;
24711 : }
24712 :
24713 :
24714 : /*
24715 : XXLFM_ViewMapList Node deletion
24716 : */
24717 :
24718 1 : static void XXLFM_ViewMapList_Del(GF_Node *node)
24719 : {
24720 : M_XXLFM_ViewMapList *p = (M_XXLFM_ViewMapList *) node;
24721 1 : gf_node_unregister((GF_Node *) p->textureOrigin, (GF_Node *) p);
24722 1 : gf_node_unregister((GF_Node *) p->textureSize, (GF_Node *) p);
24723 1 : gf_sg_mfint32_del(p->tileIndex);
24724 1 : gf_sg_mfint32_del(p->vertexIndex);
24725 1 : gf_node_free((GF_Node *) p);
24726 1 : }
24727 :
24728 : static const u16 XXLFM_ViewMapList_Def2All[] = { 0, 1, 2, 3};
24729 : static const u16 XXLFM_ViewMapList_In2All[] = { 0, 1, 2, 3};
24730 : static const u16 XXLFM_ViewMapList_Out2All[] = { 0, 1, 2, 3};
24731 :
24732 : static u32 XXLFM_ViewMapList_get_field_count(GF_Node *node, u8 IndexMode)
24733 : {
24734 6 : switch(IndexMode) {
24735 : case GF_SG_FIELD_CODING_IN:
24736 : return 4;
24737 : case GF_SG_FIELD_CODING_DEF:
24738 : return 4;
24739 : case GF_SG_FIELD_CODING_OUT:
24740 : return 4;
24741 1 : case GF_SG_FIELD_CODING_DYN:
24742 : return 0;
24743 : default:
24744 : return 4;
24745 : }
24746 : }
24747 :
24748 : static GF_Err XXLFM_ViewMapList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24749 : {
24750 4 : switch(IndexMode) {
24751 0 : case GF_SG_FIELD_CODING_IN:
24752 0 : *allField = XXLFM_ViewMapList_In2All[inField];
24753 : return GF_OK;
24754 0 : case GF_SG_FIELD_CODING_DEF:
24755 0 : *allField = XXLFM_ViewMapList_Def2All[inField];
24756 : return GF_OK;
24757 0 : case GF_SG_FIELD_CODING_OUT:
24758 0 : *allField = XXLFM_ViewMapList_Out2All[inField];
24759 : return GF_OK;
24760 : default:
24761 : return GF_BAD_PARAM;
24762 : }
24763 : }
24764 8 : static GF_Err XXLFM_ViewMapList_get_field(GF_Node *node, GF_FieldInfo *info)
24765 : {
24766 8 : switch (info->fieldIndex) {
24767 2 : case 0:
24768 2 : info->name = "textureOrigin";
24769 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24770 2 : info->fieldType = GF_SG_VRML_SFNODE;
24771 2 : info->NDTtype = NDT_SFTextureCoordinateNode;
24772 2 : info->far_ptr = & ((M_XXLFM_ViewMapList *)node)->textureOrigin;
24773 2 : return GF_OK;
24774 2 : case 1:
24775 2 : info->name = "textureSize";
24776 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24777 2 : info->fieldType = GF_SG_VRML_SFNODE;
24778 2 : info->NDTtype = NDT_SFTextureCoordinateNode;
24779 2 : info->far_ptr = & ((M_XXLFM_ViewMapList *)node)->textureSize;
24780 2 : return GF_OK;
24781 2 : case 2:
24782 2 : info->name = "tileIndex";
24783 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24784 2 : info->fieldType = GF_SG_VRML_MFINT32;
24785 2 : info->far_ptr = & ((M_XXLFM_ViewMapList *) node)->tileIndex;
24786 2 : return GF_OK;
24787 2 : case 3:
24788 2 : info->name = "vertexIndex";
24789 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24790 2 : info->fieldType = GF_SG_VRML_MFINT32;
24791 2 : info->far_ptr = & ((M_XXLFM_ViewMapList *) node)->vertexIndex;
24792 2 : return GF_OK;
24793 : default:
24794 : return GF_BAD_PARAM;
24795 : }
24796 : }
24797 :
24798 :
24799 4 : static s32 XXLFM_ViewMapList_get_field_index_by_name(char *name)
24800 : {
24801 4 : if (!strcmp("textureOrigin", name)) return 0;
24802 3 : if (!strcmp("textureSize", name)) return 1;
24803 2 : if (!strcmp("tileIndex", name)) return 2;
24804 1 : if (!strcmp("vertexIndex", name)) return 3;
24805 0 : return -1;
24806 : }
24807 : static Bool XXLFM_ViewMapList_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
24808 : {
24809 4 : switch (FieldIndex) {
24810 1 : case 2:
24811 1 : *AType = 0;
24812 1 : *QType = 14;
24813 : return 1;
24814 1 : case 3:
24815 1 : *AType = 0;
24816 1 : *QType = 14;
24817 : return 1;
24818 : default:
24819 : return 0;
24820 : }
24821 : }
24822 :
24823 :
24824 :
24825 1 : GF_Node *XXLFM_ViewMapList_Create()
24826 : {
24827 : M_XXLFM_ViewMapList *p;
24828 1 : GF_SAFEALLOC(p, M_XXLFM_ViewMapList);
24829 1 : if(!p) return NULL;
24830 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_ViewMapList);
24831 :
24832 : /*default field values*/
24833 1 : return (GF_Node *)p;
24834 : }
24835 :
24836 :
24837 : /*
24838 : MeshGrid Node deletion
24839 : */
24840 :
24841 1 : static void MeshGrid_Del(GF_Node *node)
24842 : {
24843 : M_MeshGrid *p = (M_MeshGrid *) node;
24844 1 : gf_sg_mfint32_del(p->set_colorIndex);
24845 1 : gf_sg_mfint32_del(p->set_coordIndex);
24846 1 : gf_sg_mfint32_del(p->set_normalIndex);
24847 1 : gf_sg_mfint32_del(p->set_texCoordIndex);
24848 1 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
24849 1 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
24850 1 : gf_node_unregister((GF_Node *) p->gridCoord, (GF_Node *) p);
24851 1 : gf_sg_mfint32_del(p->nLevels);
24852 1 : gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
24853 1 : gf_sg_mfint32_del(p->nSlices);
24854 1 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
24855 1 : gf_sg_mffloat_del(p->vertexOffset);
24856 1 : gf_sg_mfint32_del(p->vertexLink);
24857 1 : gf_sg_mfint32_del(p->colorIndex);
24858 1 : gf_sg_mfint32_del(p->coordIndex);
24859 1 : gf_sg_mfint32_del(p->normalIndex);
24860 1 : gf_sg_mfint32_del(p->texCoordIndex);
24861 1 : gf_sg_mfint32_del(p->nVertices);
24862 1 : gf_node_free((GF_Node *) p);
24863 1 : }
24864 :
24865 : static const u16 MeshGrid_Def2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
24866 : static const u16 MeshGrid_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
24867 : static const u16 MeshGrid_Out2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21, 22};
24868 : static const u16 MeshGrid_Dyn2All[] = { 6, 7, 9, 10, 12, 14};
24869 :
24870 : static u32 MeshGrid_get_field_count(GF_Node *node, u8 IndexMode)
24871 : {
24872 : switch(IndexMode) {
24873 : case GF_SG_FIELD_CODING_IN:
24874 : return 16;
24875 : case GF_SG_FIELD_CODING_DEF:
24876 : return 17;
24877 : case GF_SG_FIELD_CODING_OUT:
24878 : return 14;
24879 : case GF_SG_FIELD_CODING_DYN:
24880 : return 6;
24881 : default:
24882 : return 23;
24883 : }
24884 : }
24885 :
24886 : static GF_Err MeshGrid_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
24887 : {
24888 23 : switch(IndexMode) {
24889 0 : case GF_SG_FIELD_CODING_IN:
24890 0 : *allField = MeshGrid_In2All[inField];
24891 : return GF_OK;
24892 0 : case GF_SG_FIELD_CODING_DEF:
24893 0 : *allField = MeshGrid_Def2All[inField];
24894 : return GF_OK;
24895 0 : case GF_SG_FIELD_CODING_OUT:
24896 0 : *allField = MeshGrid_Out2All[inField];
24897 : return GF_OK;
24898 0 : case GF_SG_FIELD_CODING_DYN:
24899 0 : *allField = MeshGrid_Dyn2All[inField];
24900 : return GF_OK;
24901 : default:
24902 : return GF_BAD_PARAM;
24903 : }
24904 : }
24905 46 : static GF_Err MeshGrid_get_field(GF_Node *node, GF_FieldInfo *info)
24906 : {
24907 46 : switch (info->fieldIndex) {
24908 2 : case 0:
24909 2 : info->name = "set_colorIndex";
24910 2 : info->eventType = GF_SG_EVENT_IN;
24911 2 : info->on_event_in = ((M_MeshGrid *)node)->on_set_colorIndex;
24912 2 : info->fieldType = GF_SG_VRML_MFINT32;
24913 2 : info->far_ptr = & ((M_MeshGrid *) node)->set_colorIndex;
24914 2 : return GF_OK;
24915 2 : case 1:
24916 2 : info->name = "set_coordIndex";
24917 2 : info->eventType = GF_SG_EVENT_IN;
24918 2 : info->on_event_in = ((M_MeshGrid *)node)->on_set_coordIndex;
24919 2 : info->fieldType = GF_SG_VRML_MFINT32;
24920 2 : info->far_ptr = & ((M_MeshGrid *) node)->set_coordIndex;
24921 2 : return GF_OK;
24922 2 : case 2:
24923 2 : info->name = "set_normalIndex";
24924 2 : info->eventType = GF_SG_EVENT_IN;
24925 2 : info->on_event_in = ((M_MeshGrid *)node)->on_set_normalIndex;
24926 2 : info->fieldType = GF_SG_VRML_MFINT32;
24927 2 : info->far_ptr = & ((M_MeshGrid *) node)->set_normalIndex;
24928 2 : return GF_OK;
24929 2 : case 3:
24930 2 : info->name = "set_texCoordIndex";
24931 2 : info->eventType = GF_SG_EVENT_IN;
24932 2 : info->on_event_in = ((M_MeshGrid *)node)->on_set_texCoordIndex;
24933 2 : info->fieldType = GF_SG_VRML_MFINT32;
24934 2 : info->far_ptr = & ((M_MeshGrid *) node)->set_texCoordIndex;
24935 2 : return GF_OK;
24936 2 : case 4:
24937 2 : info->name = "color";
24938 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24939 2 : info->fieldType = GF_SG_VRML_SFNODE;
24940 2 : info->NDTtype = NDT_SFColorNode;
24941 2 : info->far_ptr = & ((M_MeshGrid *)node)->color;
24942 2 : return GF_OK;
24943 2 : case 5:
24944 2 : info->name = "coord";
24945 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24946 2 : info->fieldType = GF_SG_VRML_SFNODE;
24947 2 : info->NDTtype = NDT_SFCoordinateNode;
24948 2 : info->far_ptr = & ((M_MeshGrid *)node)->coord;
24949 2 : return GF_OK;
24950 2 : case 6:
24951 2 : info->name = "displayLevel";
24952 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24953 2 : info->fieldType = GF_SG_VRML_SFINT32;
24954 2 : info->far_ptr = & ((M_MeshGrid *) node)->displayLevel;
24955 2 : return GF_OK;
24956 2 : case 7:
24957 2 : info->name = "filterType";
24958 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24959 2 : info->fieldType = GF_SG_VRML_SFINT32;
24960 2 : info->far_ptr = & ((M_MeshGrid *) node)->filterType;
24961 2 : return GF_OK;
24962 2 : case 8:
24963 2 : info->name = "gridCoord";
24964 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24965 2 : info->fieldType = GF_SG_VRML_SFNODE;
24966 2 : info->NDTtype = NDT_SFCoordinateNode;
24967 2 : info->far_ptr = & ((M_MeshGrid *)node)->gridCoord;
24968 2 : return GF_OK;
24969 2 : case 9:
24970 2 : info->name = "hierarchicalLevel";
24971 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24972 2 : info->fieldType = GF_SG_VRML_SFINT32;
24973 2 : info->far_ptr = & ((M_MeshGrid *) node)->hierarchicalLevel;
24974 2 : return GF_OK;
24975 2 : case 10:
24976 2 : info->name = "nLevels";
24977 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24978 2 : info->fieldType = GF_SG_VRML_MFINT32;
24979 2 : info->far_ptr = & ((M_MeshGrid *) node)->nLevels;
24980 2 : return GF_OK;
24981 2 : case 11:
24982 2 : info->name = "normal";
24983 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24984 2 : info->fieldType = GF_SG_VRML_SFNODE;
24985 2 : info->NDTtype = NDT_SFNormalNode;
24986 2 : info->far_ptr = & ((M_MeshGrid *)node)->normal;
24987 2 : return GF_OK;
24988 2 : case 12:
24989 2 : info->name = "nSlices";
24990 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24991 2 : info->fieldType = GF_SG_VRML_MFINT32;
24992 2 : info->far_ptr = & ((M_MeshGrid *) node)->nSlices;
24993 2 : return GF_OK;
24994 2 : case 13:
24995 2 : info->name = "texCoord";
24996 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
24997 2 : info->fieldType = GF_SG_VRML_SFNODE;
24998 2 : info->NDTtype = NDT_SFTextureCoordinateNode;
24999 2 : info->far_ptr = & ((M_MeshGrid *)node)->texCoord;
25000 2 : return GF_OK;
25001 2 : case 14:
25002 2 : info->name = "vertexOffset";
25003 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25004 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
25005 2 : info->far_ptr = & ((M_MeshGrid *) node)->vertexOffset;
25006 2 : return GF_OK;
25007 2 : case 15:
25008 2 : info->name = "vertexLink";
25009 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25010 2 : info->fieldType = GF_SG_VRML_MFINT32;
25011 2 : info->far_ptr = & ((M_MeshGrid *) node)->vertexLink;
25012 2 : return GF_OK;
25013 2 : case 16:
25014 2 : info->name = "colorIndex";
25015 2 : info->eventType = GF_SG_EVENT_FIELD;
25016 2 : info->fieldType = GF_SG_VRML_MFINT32;
25017 2 : info->far_ptr = & ((M_MeshGrid *) node)->colorIndex;
25018 2 : return GF_OK;
25019 2 : case 17:
25020 2 : info->name = "coordIndex";
25021 2 : info->eventType = GF_SG_EVENT_FIELD;
25022 2 : info->fieldType = GF_SG_VRML_MFINT32;
25023 2 : info->far_ptr = & ((M_MeshGrid *) node)->coordIndex;
25024 2 : return GF_OK;
25025 2 : case 18:
25026 2 : info->name = "normalIndex";
25027 2 : info->eventType = GF_SG_EVENT_FIELD;
25028 2 : info->fieldType = GF_SG_VRML_MFINT32;
25029 2 : info->far_ptr = & ((M_MeshGrid *) node)->normalIndex;
25030 2 : return GF_OK;
25031 2 : case 19:
25032 2 : info->name = "solid";
25033 2 : info->eventType = GF_SG_EVENT_FIELD;
25034 2 : info->fieldType = GF_SG_VRML_SFBOOL;
25035 2 : info->far_ptr = & ((M_MeshGrid *) node)->solid;
25036 2 : return GF_OK;
25037 2 : case 20:
25038 2 : info->name = "texCoordIndex";
25039 2 : info->eventType = GF_SG_EVENT_FIELD;
25040 2 : info->fieldType = GF_SG_VRML_MFINT32;
25041 2 : info->far_ptr = & ((M_MeshGrid *) node)->texCoordIndex;
25042 2 : return GF_OK;
25043 2 : case 21:
25044 2 : info->name = "isLoading";
25045 2 : info->eventType = GF_SG_EVENT_OUT;
25046 2 : info->fieldType = GF_SG_VRML_SFBOOL;
25047 2 : info->far_ptr = & ((M_MeshGrid *) node)->isLoading;
25048 2 : return GF_OK;
25049 2 : case 22:
25050 2 : info->name = "nVertices";
25051 2 : info->eventType = GF_SG_EVENT_OUT;
25052 2 : info->fieldType = GF_SG_VRML_MFINT32;
25053 2 : info->far_ptr = & ((M_MeshGrid *) node)->nVertices;
25054 2 : return GF_OK;
25055 : default:
25056 : return GF_BAD_PARAM;
25057 : }
25058 : }
25059 :
25060 :
25061 23 : static s32 MeshGrid_get_field_index_by_name(char *name)
25062 : {
25063 23 : if (!strcmp("set_colorIndex", name)) return 0;
25064 22 : if (!strcmp("set_coordIndex", name)) return 1;
25065 21 : if (!strcmp("set_normalIndex", name)) return 2;
25066 20 : if (!strcmp("set_texCoordIndex", name)) return 3;
25067 19 : if (!strcmp("color", name)) return 4;
25068 18 : if (!strcmp("coord", name)) return 5;
25069 17 : if (!strcmp("displayLevel", name)) return 6;
25070 16 : if (!strcmp("filterType", name)) return 7;
25071 15 : if (!strcmp("gridCoord", name)) return 8;
25072 14 : if (!strcmp("hierarchicalLevel", name)) return 9;
25073 13 : if (!strcmp("nLevels", name)) return 10;
25074 12 : if (!strcmp("normal", name)) return 11;
25075 11 : if (!strcmp("nSlices", name)) return 12;
25076 10 : if (!strcmp("texCoord", name)) return 13;
25077 9 : if (!strcmp("vertexOffset", name)) return 14;
25078 8 : if (!strcmp("vertexLink", name)) return 15;
25079 7 : if (!strcmp("colorIndex", name)) return 16;
25080 6 : if (!strcmp("coordIndex", name)) return 17;
25081 5 : if (!strcmp("normalIndex", name)) return 18;
25082 4 : if (!strcmp("solid", name)) return 19;
25083 3 : if (!strcmp("texCoordIndex", name)) return 20;
25084 2 : if (!strcmp("isLoading", name)) return 21;
25085 1 : if (!strcmp("nVertices", name)) return 22;
25086 0 : return -1;
25087 : }
25088 23 : static Bool MeshGrid_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25089 : {
25090 23 : switch (FieldIndex) {
25091 1 : case 6:
25092 1 : *AType = 13;
25093 1 : *QType = 13;
25094 1 : *QT13_bits = 32;
25095 1 : *b_min = FLT2FIX(0);
25096 1 : *b_max = FIX_MAX;
25097 : return 1;
25098 1 : case 7:
25099 1 : *AType = 13;
25100 1 : *QType = 13;
25101 1 : *QT13_bits = 2;
25102 1 : *b_min = FLT2FIX(0);
25103 1 : *b_max = FLT2FIX( 1);
25104 : return 1;
25105 1 : case 9:
25106 1 : *AType = 13;
25107 1 : *QType = 13;
25108 1 : *QT13_bits = 32;
25109 1 : *b_min = FLT2FIX(-1);
25110 1 : *b_max = FIX_MAX;
25111 : return 1;
25112 1 : case 10:
25113 1 : *AType = 7;
25114 1 : *QType = 7;
25115 : return 1;
25116 1 : case 12:
25117 1 : *AType = 7;
25118 1 : *QType = 7;
25119 : return 1;
25120 1 : case 14:
25121 1 : *AType = 7;
25122 1 : *QType = 7;
25123 1 : *b_min = FLT2FIX(0.0);
25124 1 : *b_max = FLT2FIX( 2.0);
25125 : return 1;
25126 1 : case 15:
25127 1 : *AType = 0;
25128 1 : *QType = 13;
25129 1 : *QT13_bits = 2;
25130 1 : *b_min = FLT2FIX(0);
25131 1 : *b_max = FLT2FIX( 3);
25132 : return 1;
25133 1 : case 16:
25134 1 : *AType = 0;
25135 1 : *QType = 14;
25136 1 : *b_min = FLT2FIX(-1);
25137 1 : *b_max = FIX_MAX;
25138 : return 1;
25139 1 : case 17:
25140 1 : *AType = 0;
25141 1 : *QType = 14;
25142 1 : *b_min = FLT2FIX(-1);
25143 1 : *b_max = FIX_MAX;
25144 : return 1;
25145 1 : case 18:
25146 1 : *AType = 0;
25147 1 : *QType = 14;
25148 1 : *b_min = FLT2FIX(-1);
25149 1 : *b_max = FIX_MAX;
25150 : return 1;
25151 1 : case 20:
25152 1 : *AType = 0;
25153 1 : *QType = 14;
25154 1 : *b_min = FLT2FIX(-1);
25155 1 : *b_max = FIX_MAX;
25156 : return 1;
25157 : default:
25158 : return 0;
25159 : }
25160 : }
25161 :
25162 :
25163 :
25164 1 : GF_Node *MeshGrid_Create()
25165 : {
25166 : M_MeshGrid *p;
25167 1 : GF_SAFEALLOC(p, M_MeshGrid);
25168 1 : if(!p) return NULL;
25169 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MeshGrid);
25170 :
25171 : /*default field values*/
25172 1 : p->displayLevel = 0;
25173 1 : p->filterType = 0;
25174 1 : p->hierarchicalLevel = 0;
25175 1 : p->solid = 1;
25176 1 : return (GF_Node *)p;
25177 : }
25178 :
25179 :
25180 : /*
25181 : NonLinearDeformer Node deletion
25182 : */
25183 :
25184 67 : static void NonLinearDeformer_Del(GF_Node *node)
25185 : {
25186 : M_NonLinearDeformer *p = (M_NonLinearDeformer *) node;
25187 67 : gf_sg_mffloat_del(p->extend);
25188 67 : gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
25189 67 : gf_node_free((GF_Node *) p);
25190 67 : }
25191 :
25192 : static const u16 NonLinearDeformer_Def2All[] = { 0, 1, 2, 3, 4};
25193 : static const u16 NonLinearDeformer_In2All[] = { 0, 1, 2, 3, 4};
25194 : static const u16 NonLinearDeformer_Out2All[] = { 0, 1, 2, 3, 4};
25195 :
25196 : static u32 NonLinearDeformer_get_field_count(GF_Node *node, u8 IndexMode)
25197 : {
25198 76 : switch(IndexMode) {
25199 : case GF_SG_FIELD_CODING_IN:
25200 : return 5;
25201 : case GF_SG_FIELD_CODING_DEF:
25202 : return 5;
25203 : case GF_SG_FIELD_CODING_OUT:
25204 : return 5;
25205 1 : case GF_SG_FIELD_CODING_DYN:
25206 : return 0;
25207 : default:
25208 : return 5;
25209 : }
25210 : }
25211 :
25212 : static GF_Err NonLinearDeformer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
25213 : {
25214 165 : switch(IndexMode) {
25215 0 : case GF_SG_FIELD_CODING_IN:
25216 0 : *allField = NonLinearDeformer_In2All[inField];
25217 : return GF_OK;
25218 160 : case GF_SG_FIELD_CODING_DEF:
25219 160 : *allField = NonLinearDeformer_Def2All[inField];
25220 : return GF_OK;
25221 0 : case GF_SG_FIELD_CODING_OUT:
25222 0 : *allField = NonLinearDeformer_Out2All[inField];
25223 : return GF_OK;
25224 : default:
25225 : return GF_BAD_PARAM;
25226 : }
25227 : }
25228 568 : static GF_Err NonLinearDeformer_get_field(GF_Node *node, GF_FieldInfo *info)
25229 : {
25230 568 : switch (info->fieldIndex) {
25231 132 : case 0:
25232 132 : info->name = "axis";
25233 132 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25234 132 : info->fieldType = GF_SG_VRML_SFVEC3F;
25235 132 : info->far_ptr = & ((M_NonLinearDeformer *) node)->axis;
25236 132 : return GF_OK;
25237 132 : case 1:
25238 132 : info->name = "extend";
25239 132 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25240 132 : info->fieldType = GF_SG_VRML_MFFLOAT;
25241 132 : info->far_ptr = & ((M_NonLinearDeformer *) node)->extend;
25242 132 : return GF_OK;
25243 97 : case 2:
25244 97 : info->name = "geometry";
25245 97 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25246 97 : info->fieldType = GF_SG_VRML_SFNODE;
25247 97 : info->NDTtype = NDT_SFGeometryNode;
25248 97 : info->far_ptr = & ((M_NonLinearDeformer *)node)->geometry;
25249 97 : return GF_OK;
25250 134 : case 3:
25251 134 : info->name = "param";
25252 134 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25253 134 : info->fieldType = GF_SG_VRML_SFFLOAT;
25254 134 : info->far_ptr = & ((M_NonLinearDeformer *) node)->param;
25255 134 : return GF_OK;
25256 73 : case 4:
25257 73 : info->name = "type";
25258 73 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25259 73 : info->fieldType = GF_SG_VRML_SFINT32;
25260 73 : info->far_ptr = & ((M_NonLinearDeformer *) node)->type;
25261 73 : return GF_OK;
25262 : default:
25263 : return GF_BAD_PARAM;
25264 : }
25265 : }
25266 :
25267 :
25268 71 : static s32 NonLinearDeformer_get_field_index_by_name(char *name)
25269 : {
25270 71 : if (!strcmp("axis", name)) return 0;
25271 54 : if (!strcmp("extend", name)) return 1;
25272 37 : if (!strcmp("geometry", name)) return 2;
25273 20 : if (!strcmp("param", name)) return 3;
25274 2 : if (!strcmp("type", name)) return 4;
25275 0 : return -1;
25276 : }
25277 : static Bool NonLinearDeformer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25278 : {
25279 : switch (FieldIndex) {
25280 : default:
25281 : return 0;
25282 : }
25283 : }
25284 :
25285 :
25286 :
25287 67 : GF_Node *NonLinearDeformer_Create()
25288 : {
25289 : M_NonLinearDeformer *p;
25290 67 : GF_SAFEALLOC(p, M_NonLinearDeformer);
25291 67 : if(!p) return NULL;
25292 67 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NonLinearDeformer);
25293 :
25294 : /*default field values*/
25295 67 : p->axis.x = FLT2FIX(0);
25296 67 : p->axis.y = FLT2FIX(0);
25297 67 : p->axis.z = FLT2FIX(1);
25298 67 : p->param = FLT2FIX(0);
25299 67 : p->type = 0;
25300 67 : return (GF_Node *)p;
25301 : }
25302 :
25303 :
25304 : /*
25305 : NurbsCurve Node deletion
25306 : */
25307 :
25308 1 : static void NurbsCurve_Del(GF_Node *node)
25309 : {
25310 : M_NurbsCurve *p = (M_NurbsCurve *) node;
25311 1 : gf_sg_mfint32_del(p->set_colorIndex);
25312 1 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
25313 1 : gf_sg_mfvec4f_del(p->controlPoint);
25314 1 : gf_sg_mfint32_del(p->colorIndex);
25315 1 : gf_sg_mffloat_del(p->knot);
25316 1 : gf_node_free((GF_Node *) p);
25317 1 : }
25318 :
25319 : static const u16 NurbsCurve_Def2All[] = { 1, 2, 3, 4, 5, 6, 7};
25320 : static const u16 NurbsCurve_In2All[] = { 0, 1, 2, 3};
25321 : static const u16 NurbsCurve_Out2All[] = { 1, 2, 3};
25322 : static const u16 NurbsCurve_Dyn2All[] = { 2};
25323 :
25324 : static u32 NurbsCurve_get_field_count(GF_Node *node, u8 IndexMode)
25325 : {
25326 : switch(IndexMode) {
25327 : case GF_SG_FIELD_CODING_IN:
25328 : return 4;
25329 : case GF_SG_FIELD_CODING_DEF:
25330 : return 7;
25331 : case GF_SG_FIELD_CODING_OUT:
25332 : return 3;
25333 : case GF_SG_FIELD_CODING_DYN:
25334 : return 1;
25335 : default:
25336 : return 8;
25337 : }
25338 : }
25339 :
25340 : static GF_Err NurbsCurve_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
25341 : {
25342 8 : switch(IndexMode) {
25343 0 : case GF_SG_FIELD_CODING_IN:
25344 0 : *allField = NurbsCurve_In2All[inField];
25345 : return GF_OK;
25346 0 : case GF_SG_FIELD_CODING_DEF:
25347 0 : *allField = NurbsCurve_Def2All[inField];
25348 : return GF_OK;
25349 0 : case GF_SG_FIELD_CODING_OUT:
25350 0 : *allField = NurbsCurve_Out2All[inField];
25351 : return GF_OK;
25352 0 : case GF_SG_FIELD_CODING_DYN:
25353 0 : *allField = NurbsCurve_Dyn2All[inField];
25354 : return GF_OK;
25355 : default:
25356 : return GF_BAD_PARAM;
25357 : }
25358 : }
25359 16 : static GF_Err NurbsCurve_get_field(GF_Node *node, GF_FieldInfo *info)
25360 : {
25361 16 : switch (info->fieldIndex) {
25362 2 : case 0:
25363 2 : info->name = "set_colorIndex";
25364 2 : info->eventType = GF_SG_EVENT_IN;
25365 2 : info->on_event_in = ((M_NurbsCurve *)node)->on_set_colorIndex;
25366 2 : info->fieldType = GF_SG_VRML_MFINT32;
25367 2 : info->far_ptr = & ((M_NurbsCurve *) node)->set_colorIndex;
25368 2 : return GF_OK;
25369 2 : case 1:
25370 2 : info->name = "color";
25371 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25372 2 : info->fieldType = GF_SG_VRML_SFNODE;
25373 2 : info->NDTtype = NDT_SFColorNode;
25374 2 : info->far_ptr = & ((M_NurbsCurve *)node)->color;
25375 2 : return GF_OK;
25376 2 : case 2:
25377 2 : info->name = "controlPoint";
25378 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25379 2 : info->fieldType = GF_SG_VRML_MFVEC4F;
25380 2 : info->far_ptr = & ((M_NurbsCurve *) node)->controlPoint;
25381 2 : return GF_OK;
25382 2 : case 3:
25383 2 : info->name = "tessellation";
25384 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25385 2 : info->fieldType = GF_SG_VRML_SFINT32;
25386 2 : info->far_ptr = & ((M_NurbsCurve *) node)->tessellation;
25387 2 : return GF_OK;
25388 2 : case 4:
25389 2 : info->name = "colorIndex";
25390 2 : info->eventType = GF_SG_EVENT_FIELD;
25391 2 : info->fieldType = GF_SG_VRML_MFINT32;
25392 2 : info->far_ptr = & ((M_NurbsCurve *) node)->colorIndex;
25393 2 : return GF_OK;
25394 2 : case 5:
25395 2 : info->name = "colorPerVertex";
25396 2 : info->eventType = GF_SG_EVENT_FIELD;
25397 2 : info->fieldType = GF_SG_VRML_SFBOOL;
25398 2 : info->far_ptr = & ((M_NurbsCurve *) node)->colorPerVertex;
25399 2 : return GF_OK;
25400 2 : case 6:
25401 2 : info->name = "knot";
25402 2 : info->eventType = GF_SG_EVENT_FIELD;
25403 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
25404 2 : info->far_ptr = & ((M_NurbsCurve *) node)->knot;
25405 2 : return GF_OK;
25406 2 : case 7:
25407 2 : info->name = "order";
25408 2 : info->eventType = GF_SG_EVENT_FIELD;
25409 2 : info->fieldType = GF_SG_VRML_SFINT32;
25410 2 : info->far_ptr = & ((M_NurbsCurve *) node)->order;
25411 2 : return GF_OK;
25412 : default:
25413 : return GF_BAD_PARAM;
25414 : }
25415 : }
25416 :
25417 :
25418 8 : static s32 NurbsCurve_get_field_index_by_name(char *name)
25419 : {
25420 8 : if (!strcmp("set_colorIndex", name)) return 0;
25421 7 : if (!strcmp("color", name)) return 1;
25422 6 : if (!strcmp("controlPoint", name)) return 2;
25423 5 : if (!strcmp("tessellation", name)) return 3;
25424 4 : if (!strcmp("colorIndex", name)) return 4;
25425 3 : if (!strcmp("colorPerVertex", name)) return 5;
25426 2 : if (!strcmp("knot", name)) return 6;
25427 1 : if (!strcmp("order", name)) return 7;
25428 0 : return -1;
25429 : }
25430 : static Bool NurbsCurve_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25431 : {
25432 8 : switch (FieldIndex) {
25433 1 : case 2:
25434 1 : *AType = 15;
25435 1 : *QType = 15;
25436 1 : *b_min = FIX_MIN;
25437 1 : *b_max = FIX_MAX;
25438 : return 1;
25439 1 : case 4:
25440 1 : *AType = 0;
25441 1 : *QType = 14;
25442 : return 1;
25443 1 : case 7:
25444 1 : *AType = 0;
25445 1 : *QType = 13;
25446 1 : *QT13_bits = 5;
25447 1 : *b_min = FLT2FIX(3);
25448 1 : *b_max = FLT2FIX(34);
25449 : return 1;
25450 : default:
25451 : return 0;
25452 : }
25453 : }
25454 :
25455 :
25456 :
25457 1 : GF_Node *NurbsCurve_Create()
25458 : {
25459 : M_NurbsCurve *p;
25460 1 : GF_SAFEALLOC(p, M_NurbsCurve);
25461 1 : if(!p) return NULL;
25462 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NurbsCurve);
25463 :
25464 : /*default field values*/
25465 1 : p->tessellation = 0;
25466 1 : p->colorPerVertex = 1;
25467 1 : p->order = 4;
25468 1 : return (GF_Node *)p;
25469 : }
25470 :
25471 :
25472 : /*
25473 : NurbsCurve2D Node deletion
25474 : */
25475 :
25476 1 : static void NurbsCurve2D_Del(GF_Node *node)
25477 : {
25478 : M_NurbsCurve2D *p = (M_NurbsCurve2D *) node;
25479 1 : gf_sg_mfint32_del(p->set_colorIndex);
25480 1 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
25481 1 : gf_sg_mfvec3f_del(p->controlPoint);
25482 1 : gf_sg_mfint32_del(p->colorIndex);
25483 1 : gf_sg_mffloat_del(p->knot);
25484 1 : gf_node_free((GF_Node *) p);
25485 1 : }
25486 :
25487 : static const u16 NurbsCurve2D_Def2All[] = { 1, 2, 3, 4, 5, 6, 7};
25488 : static const u16 NurbsCurve2D_In2All[] = { 0, 1, 2, 3};
25489 : static const u16 NurbsCurve2D_Out2All[] = { 1, 2, 3};
25490 : static const u16 NurbsCurve2D_Dyn2All[] = { 2};
25491 :
25492 : static u32 NurbsCurve2D_get_field_count(GF_Node *node, u8 IndexMode)
25493 : {
25494 : switch(IndexMode) {
25495 : case GF_SG_FIELD_CODING_IN:
25496 : return 4;
25497 : case GF_SG_FIELD_CODING_DEF:
25498 : return 7;
25499 : case GF_SG_FIELD_CODING_OUT:
25500 : return 3;
25501 : case GF_SG_FIELD_CODING_DYN:
25502 : return 1;
25503 : default:
25504 : return 8;
25505 : }
25506 : }
25507 :
25508 : static GF_Err NurbsCurve2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
25509 : {
25510 8 : switch(IndexMode) {
25511 0 : case GF_SG_FIELD_CODING_IN:
25512 0 : *allField = NurbsCurve2D_In2All[inField];
25513 : return GF_OK;
25514 0 : case GF_SG_FIELD_CODING_DEF:
25515 0 : *allField = NurbsCurve2D_Def2All[inField];
25516 : return GF_OK;
25517 0 : case GF_SG_FIELD_CODING_OUT:
25518 0 : *allField = NurbsCurve2D_Out2All[inField];
25519 : return GF_OK;
25520 0 : case GF_SG_FIELD_CODING_DYN:
25521 0 : *allField = NurbsCurve2D_Dyn2All[inField];
25522 : return GF_OK;
25523 : default:
25524 : return GF_BAD_PARAM;
25525 : }
25526 : }
25527 16 : static GF_Err NurbsCurve2D_get_field(GF_Node *node, GF_FieldInfo *info)
25528 : {
25529 16 : switch (info->fieldIndex) {
25530 2 : case 0:
25531 2 : info->name = "set_colorIndex";
25532 2 : info->eventType = GF_SG_EVENT_IN;
25533 2 : info->on_event_in = ((M_NurbsCurve2D *)node)->on_set_colorIndex;
25534 2 : info->fieldType = GF_SG_VRML_MFINT32;
25535 2 : info->far_ptr = & ((M_NurbsCurve2D *) node)->set_colorIndex;
25536 2 : return GF_OK;
25537 2 : case 1:
25538 2 : info->name = "color";
25539 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25540 2 : info->fieldType = GF_SG_VRML_SFNODE;
25541 2 : info->NDTtype = NDT_SFColorNode;
25542 2 : info->far_ptr = & ((M_NurbsCurve2D *)node)->color;
25543 2 : return GF_OK;
25544 2 : case 2:
25545 2 : info->name = "controlPoint";
25546 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25547 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
25548 2 : info->far_ptr = & ((M_NurbsCurve2D *) node)->controlPoint;
25549 2 : return GF_OK;
25550 2 : case 3:
25551 2 : info->name = "tessellation";
25552 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25553 2 : info->fieldType = GF_SG_VRML_SFINT32;
25554 2 : info->far_ptr = & ((M_NurbsCurve2D *) node)->tessellation;
25555 2 : return GF_OK;
25556 2 : case 4:
25557 2 : info->name = "colorIndex";
25558 2 : info->eventType = GF_SG_EVENT_FIELD;
25559 2 : info->fieldType = GF_SG_VRML_MFINT32;
25560 2 : info->far_ptr = & ((M_NurbsCurve2D *) node)->colorIndex;
25561 2 : return GF_OK;
25562 2 : case 5:
25563 2 : info->name = "colorPerVertex";
25564 2 : info->eventType = GF_SG_EVENT_FIELD;
25565 2 : info->fieldType = GF_SG_VRML_SFBOOL;
25566 2 : info->far_ptr = & ((M_NurbsCurve2D *) node)->colorPerVertex;
25567 2 : return GF_OK;
25568 2 : case 6:
25569 2 : info->name = "knot";
25570 2 : info->eventType = GF_SG_EVENT_FIELD;
25571 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
25572 2 : info->far_ptr = & ((M_NurbsCurve2D *) node)->knot;
25573 2 : return GF_OK;
25574 2 : case 7:
25575 2 : info->name = "order";
25576 2 : info->eventType = GF_SG_EVENT_FIELD;
25577 2 : info->fieldType = GF_SG_VRML_SFINT32;
25578 2 : info->far_ptr = & ((M_NurbsCurve2D *) node)->order;
25579 2 : return GF_OK;
25580 : default:
25581 : return GF_BAD_PARAM;
25582 : }
25583 : }
25584 :
25585 :
25586 8 : static s32 NurbsCurve2D_get_field_index_by_name(char *name)
25587 : {
25588 8 : if (!strcmp("set_colorIndex", name)) return 0;
25589 7 : if (!strcmp("color", name)) return 1;
25590 6 : if (!strcmp("controlPoint", name)) return 2;
25591 5 : if (!strcmp("tessellation", name)) return 3;
25592 4 : if (!strcmp("colorIndex", name)) return 4;
25593 3 : if (!strcmp("colorPerVertex", name)) return 5;
25594 2 : if (!strcmp("knot", name)) return 6;
25595 1 : if (!strcmp("order", name)) return 7;
25596 0 : return -1;
25597 : }
25598 : static Bool NurbsCurve2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25599 : {
25600 8 : switch (FieldIndex) {
25601 1 : case 2:
25602 1 : *AType = 2;
25603 1 : *QType = 2;
25604 1 : *b_min = FIX_MIN;
25605 1 : *b_max = FIX_MAX;
25606 : return 1;
25607 1 : case 4:
25608 1 : *AType = 0;
25609 1 : *QType = 14;
25610 : return 1;
25611 1 : case 7:
25612 1 : *AType = 0;
25613 1 : *QType = 13;
25614 1 : *QT13_bits = 5;
25615 1 : *b_min = FLT2FIX(3);
25616 1 : *b_max = FLT2FIX(34);
25617 : return 1;
25618 : default:
25619 : return 0;
25620 : }
25621 : }
25622 :
25623 :
25624 :
25625 1 : GF_Node *NurbsCurve2D_Create()
25626 : {
25627 : M_NurbsCurve2D *p;
25628 1 : GF_SAFEALLOC(p, M_NurbsCurve2D);
25629 1 : if(!p) return NULL;
25630 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NurbsCurve2D);
25631 :
25632 : /*default field values*/
25633 1 : p->tessellation = 0;
25634 1 : p->colorPerVertex = 1;
25635 1 : p->order = 4;
25636 1 : return (GF_Node *)p;
25637 : }
25638 :
25639 :
25640 : /*
25641 : NurbsSurface Node deletion
25642 : */
25643 :
25644 1 : static void NurbsSurface_Del(GF_Node *node)
25645 : {
25646 : M_NurbsSurface *p = (M_NurbsSurface *) node;
25647 1 : gf_sg_mfint32_del(p->set_colorIndex);
25648 1 : gf_sg_mfint32_del(p->set_texColorIndex);
25649 1 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
25650 1 : gf_sg_mfvec4f_del(p->controlPoint);
25651 1 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
25652 1 : gf_sg_mfint32_del(p->colorIndex);
25653 1 : gf_sg_mfint32_del(p->texColorIndex);
25654 1 : gf_sg_mffloat_del(p->uKnot);
25655 1 : gf_sg_mffloat_del(p->vKnot);
25656 1 : gf_node_free((GF_Node *) p);
25657 1 : }
25658 :
25659 : static const u16 NurbsSurface_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
25660 : static const u16 NurbsSurface_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
25661 : static const u16 NurbsSurface_Out2All[] = { 2, 3, 4, 5, 6};
25662 : static const u16 NurbsSurface_Dyn2All[] = { 3};
25663 :
25664 : static u32 NurbsSurface_get_field_count(GF_Node *node, u8 IndexMode)
25665 : {
25666 : switch(IndexMode) {
25667 : case GF_SG_FIELD_CODING_IN:
25668 : return 7;
25669 : case GF_SG_FIELD_CODING_DEF:
25670 : return 16;
25671 : case GF_SG_FIELD_CODING_OUT:
25672 : return 5;
25673 : case GF_SG_FIELD_CODING_DYN:
25674 : return 1;
25675 : default:
25676 : return 18;
25677 : }
25678 : }
25679 :
25680 : static GF_Err NurbsSurface_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
25681 : {
25682 18 : switch(IndexMode) {
25683 0 : case GF_SG_FIELD_CODING_IN:
25684 0 : *allField = NurbsSurface_In2All[inField];
25685 : return GF_OK;
25686 0 : case GF_SG_FIELD_CODING_DEF:
25687 0 : *allField = NurbsSurface_Def2All[inField];
25688 : return GF_OK;
25689 0 : case GF_SG_FIELD_CODING_OUT:
25690 0 : *allField = NurbsSurface_Out2All[inField];
25691 : return GF_OK;
25692 0 : case GF_SG_FIELD_CODING_DYN:
25693 0 : *allField = NurbsSurface_Dyn2All[inField];
25694 : return GF_OK;
25695 : default:
25696 : return GF_BAD_PARAM;
25697 : }
25698 : }
25699 36 : static GF_Err NurbsSurface_get_field(GF_Node *node, GF_FieldInfo *info)
25700 : {
25701 36 : switch (info->fieldIndex) {
25702 2 : case 0:
25703 2 : info->name = "set_colorIndex";
25704 2 : info->eventType = GF_SG_EVENT_IN;
25705 2 : info->on_event_in = ((M_NurbsSurface *)node)->on_set_colorIndex;
25706 2 : info->fieldType = GF_SG_VRML_MFINT32;
25707 2 : info->far_ptr = & ((M_NurbsSurface *) node)->set_colorIndex;
25708 2 : return GF_OK;
25709 2 : case 1:
25710 2 : info->name = "set_texColorIndex";
25711 2 : info->eventType = GF_SG_EVENT_IN;
25712 2 : info->on_event_in = ((M_NurbsSurface *)node)->on_set_texColorIndex;
25713 2 : info->fieldType = GF_SG_VRML_MFINT32;
25714 2 : info->far_ptr = & ((M_NurbsSurface *) node)->set_texColorIndex;
25715 2 : return GF_OK;
25716 2 : case 2:
25717 2 : info->name = "color";
25718 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25719 2 : info->fieldType = GF_SG_VRML_SFNODE;
25720 2 : info->NDTtype = NDT_SFColorNode;
25721 2 : info->far_ptr = & ((M_NurbsSurface *)node)->color;
25722 2 : return GF_OK;
25723 2 : case 3:
25724 2 : info->name = "controlPoint";
25725 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25726 2 : info->fieldType = GF_SG_VRML_MFVEC4F;
25727 2 : info->far_ptr = & ((M_NurbsSurface *) node)->controlPoint;
25728 2 : return GF_OK;
25729 2 : case 4:
25730 2 : info->name = "texCoord";
25731 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25732 2 : info->fieldType = GF_SG_VRML_SFNODE;
25733 2 : info->NDTtype = NDT_SFTextureCoordinateNode;
25734 2 : info->far_ptr = & ((M_NurbsSurface *)node)->texCoord;
25735 2 : return GF_OK;
25736 2 : case 5:
25737 2 : info->name = "uTessellation";
25738 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25739 2 : info->fieldType = GF_SG_VRML_SFINT32;
25740 2 : info->far_ptr = & ((M_NurbsSurface *) node)->uTessellation;
25741 2 : return GF_OK;
25742 2 : case 6:
25743 2 : info->name = "vTessellation";
25744 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
25745 2 : info->fieldType = GF_SG_VRML_SFINT32;
25746 2 : info->far_ptr = & ((M_NurbsSurface *) node)->vTessellation;
25747 2 : return GF_OK;
25748 2 : case 7:
25749 2 : info->name = "ccw";
25750 2 : info->eventType = GF_SG_EVENT_FIELD;
25751 2 : info->fieldType = GF_SG_VRML_SFBOOL;
25752 2 : info->far_ptr = & ((M_NurbsSurface *) node)->ccw;
25753 2 : return GF_OK;
25754 2 : case 8:
25755 2 : info->name = "colorIndex";
25756 2 : info->eventType = GF_SG_EVENT_FIELD;
25757 2 : info->fieldType = GF_SG_VRML_MFINT32;
25758 2 : info->far_ptr = & ((M_NurbsSurface *) node)->colorIndex;
25759 2 : return GF_OK;
25760 2 : case 9:
25761 2 : info->name = "colorPerVertex";
25762 2 : info->eventType = GF_SG_EVENT_FIELD;
25763 2 : info->fieldType = GF_SG_VRML_SFBOOL;
25764 2 : info->far_ptr = & ((M_NurbsSurface *) node)->colorPerVertex;
25765 2 : return GF_OK;
25766 2 : case 10:
25767 2 : info->name = "solid";
25768 2 : info->eventType = GF_SG_EVENT_FIELD;
25769 2 : info->fieldType = GF_SG_VRML_SFBOOL;
25770 2 : info->far_ptr = & ((M_NurbsSurface *) node)->solid;
25771 2 : return GF_OK;
25772 2 : case 11:
25773 2 : info->name = "texColorIndex";
25774 2 : info->eventType = GF_SG_EVENT_FIELD;
25775 2 : info->fieldType = GF_SG_VRML_MFINT32;
25776 2 : info->far_ptr = & ((M_NurbsSurface *) node)->texColorIndex;
25777 2 : return GF_OK;
25778 2 : case 12:
25779 2 : info->name = "uDimension";
25780 2 : info->eventType = GF_SG_EVENT_FIELD;
25781 2 : info->fieldType = GF_SG_VRML_SFINT32;
25782 2 : info->far_ptr = & ((M_NurbsSurface *) node)->uDimension;
25783 2 : return GF_OK;
25784 2 : case 13:
25785 2 : info->name = "uKnot";
25786 2 : info->eventType = GF_SG_EVENT_FIELD;
25787 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
25788 2 : info->far_ptr = & ((M_NurbsSurface *) node)->uKnot;
25789 2 : return GF_OK;
25790 2 : case 14:
25791 2 : info->name = "uOrder";
25792 2 : info->eventType = GF_SG_EVENT_FIELD;
25793 2 : info->fieldType = GF_SG_VRML_SFINT32;
25794 2 : info->far_ptr = & ((M_NurbsSurface *) node)->uOrder;
25795 2 : return GF_OK;
25796 2 : case 15:
25797 2 : info->name = "vDimension";
25798 2 : info->eventType = GF_SG_EVENT_FIELD;
25799 2 : info->fieldType = GF_SG_VRML_SFINT32;
25800 2 : info->far_ptr = & ((M_NurbsSurface *) node)->vDimension;
25801 2 : return GF_OK;
25802 2 : case 16:
25803 2 : info->name = "vKnot";
25804 2 : info->eventType = GF_SG_EVENT_FIELD;
25805 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
25806 2 : info->far_ptr = & ((M_NurbsSurface *) node)->vKnot;
25807 2 : return GF_OK;
25808 2 : case 17:
25809 2 : info->name = "vOrder";
25810 2 : info->eventType = GF_SG_EVENT_FIELD;
25811 2 : info->fieldType = GF_SG_VRML_SFINT32;
25812 2 : info->far_ptr = & ((M_NurbsSurface *) node)->vOrder;
25813 2 : return GF_OK;
25814 : default:
25815 : return GF_BAD_PARAM;
25816 : }
25817 : }
25818 :
25819 :
25820 18 : static s32 NurbsSurface_get_field_index_by_name(char *name)
25821 : {
25822 18 : if (!strcmp("set_colorIndex", name)) return 0;
25823 17 : if (!strcmp("set_texColorIndex", name)) return 1;
25824 16 : if (!strcmp("color", name)) return 2;
25825 15 : if (!strcmp("controlPoint", name)) return 3;
25826 14 : if (!strcmp("texCoord", name)) return 4;
25827 13 : if (!strcmp("uTessellation", name)) return 5;
25828 12 : if (!strcmp("vTessellation", name)) return 6;
25829 11 : if (!strcmp("ccw", name)) return 7;
25830 10 : if (!strcmp("colorIndex", name)) return 8;
25831 9 : if (!strcmp("colorPerVertex", name)) return 9;
25832 8 : if (!strcmp("solid", name)) return 10;
25833 7 : if (!strcmp("texColorIndex", name)) return 11;
25834 6 : if (!strcmp("uDimension", name)) return 12;
25835 5 : if (!strcmp("uKnot", name)) return 13;
25836 4 : if (!strcmp("uOrder", name)) return 14;
25837 3 : if (!strcmp("vDimension", name)) return 15;
25838 2 : if (!strcmp("vKnot", name)) return 16;
25839 1 : if (!strcmp("vOrder", name)) return 17;
25840 0 : return -1;
25841 : }
25842 18 : static Bool NurbsSurface_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25843 : {
25844 18 : switch (FieldIndex) {
25845 1 : case 3:
25846 1 : *AType = 15;
25847 1 : *QType = 15;
25848 1 : *b_min = FIX_MIN;
25849 1 : *b_max = FIX_MAX;
25850 : return 1;
25851 1 : case 8:
25852 1 : *AType = 0;
25853 1 : *QType = 14;
25854 : return 1;
25855 1 : case 11:
25856 1 : *AType = 0;
25857 1 : *QType = 14;
25858 : return 1;
25859 1 : case 12:
25860 1 : *AType = 0;
25861 1 : *QType = 13;
25862 1 : *QT13_bits = 8;
25863 1 : *b_min = FLT2FIX(3);
25864 1 : *b_max = FLT2FIX(258);
25865 : return 1;
25866 1 : case 14:
25867 1 : *AType = 0;
25868 1 : *QType = 13;
25869 1 : *QT13_bits = 5;
25870 1 : *b_min = FLT2FIX(3);
25871 1 : *b_max = FLT2FIX(34);
25872 : return 1;
25873 1 : case 15:
25874 1 : *AType = 0;
25875 1 : *QType = 13;
25876 1 : *QT13_bits = 8;
25877 1 : *b_min = FLT2FIX(3);
25878 1 : *b_max = FLT2FIX(258);
25879 : return 1;
25880 1 : case 17:
25881 1 : *AType = 0;
25882 1 : *QType = 13;
25883 1 : *QT13_bits = 5;
25884 1 : *b_min = FLT2FIX(3);
25885 1 : *b_max = FLT2FIX(34);
25886 : return 1;
25887 : default:
25888 : return 0;
25889 : }
25890 : }
25891 :
25892 :
25893 :
25894 1 : GF_Node *NurbsSurface_Create()
25895 : {
25896 : M_NurbsSurface *p;
25897 1 : GF_SAFEALLOC(p, M_NurbsSurface);
25898 1 : if(!p) return NULL;
25899 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_NurbsSurface);
25900 :
25901 : /*default field values*/
25902 1 : p->uTessellation = 0;
25903 1 : p->vTessellation = 0;
25904 1 : p->ccw = 1;
25905 1 : p->colorPerVertex = 1;
25906 1 : p->solid = 1;
25907 1 : p->uDimension = 4;
25908 1 : p->uOrder = 4;
25909 1 : p->vDimension = 4;
25910 1 : p->vOrder = 4;
25911 1 : return (GF_Node *)p;
25912 : }
25913 :
25914 :
25915 : /*
25916 : OctreeImage Node deletion
25917 : */
25918 :
25919 1 : static void OctreeImage_Del(GF_Node *node)
25920 : {
25921 : M_OctreeImage *p = (M_OctreeImage *) node;
25922 1 : gf_node_unregister_children((GF_Node *) p, p->images);
25923 1 : gf_sg_mfint32_del(p->octree);
25924 1 : gf_sg_mfint32_del(p->voxelImageIndex);
25925 1 : gf_node_free((GF_Node *) p);
25926 1 : }
25927 :
25928 : static const u16 OctreeImage_Def2All[] = { 0, 1, 2, 3};
25929 :
25930 : static u32 OctreeImage_get_field_count(GF_Node *node, u8 IndexMode)
25931 : {
25932 6 : switch(IndexMode) {
25933 : case GF_SG_FIELD_CODING_IN:
25934 : return 0;
25935 1 : case GF_SG_FIELD_CODING_DEF:
25936 : return 4;
25937 : case GF_SG_FIELD_CODING_OUT:
25938 : return 0;
25939 : case GF_SG_FIELD_CODING_DYN:
25940 : return 0;
25941 2 : default:
25942 : return 4;
25943 : }
25944 : }
25945 :
25946 : static GF_Err OctreeImage_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
25947 : {
25948 4 : switch(IndexMode) {
25949 0 : case GF_SG_FIELD_CODING_DEF:
25950 0 : *allField = OctreeImage_Def2All[inField];
25951 : return GF_OK;
25952 : default:
25953 : return GF_BAD_PARAM;
25954 : }
25955 : }
25956 8 : static GF_Err OctreeImage_get_field(GF_Node *node, GF_FieldInfo *info)
25957 : {
25958 8 : switch (info->fieldIndex) {
25959 2 : case 0:
25960 2 : info->name = "images";
25961 2 : info->eventType = GF_SG_EVENT_FIELD;
25962 2 : info->fieldType = GF_SG_VRML_MFNODE;
25963 2 : info->NDTtype = NDT_SFDepthImageNode;
25964 2 : info->far_ptr = & ((M_OctreeImage *)node)->images;
25965 2 : return GF_OK;
25966 2 : case 1:
25967 2 : info->name = "octree";
25968 2 : info->eventType = GF_SG_EVENT_FIELD;
25969 2 : info->fieldType = GF_SG_VRML_MFINT32;
25970 2 : info->far_ptr = & ((M_OctreeImage *) node)->octree;
25971 2 : return GF_OK;
25972 2 : case 2:
25973 2 : info->name = "octreeResolution";
25974 2 : info->eventType = GF_SG_EVENT_FIELD;
25975 2 : info->fieldType = GF_SG_VRML_SFINT32;
25976 2 : info->far_ptr = & ((M_OctreeImage *) node)->octreeResolution;
25977 2 : return GF_OK;
25978 2 : case 3:
25979 2 : info->name = "voxelImageIndex";
25980 2 : info->eventType = GF_SG_EVENT_FIELD;
25981 2 : info->fieldType = GF_SG_VRML_MFINT32;
25982 2 : info->far_ptr = & ((M_OctreeImage *) node)->voxelImageIndex;
25983 2 : return GF_OK;
25984 : default:
25985 : return GF_BAD_PARAM;
25986 : }
25987 : }
25988 :
25989 :
25990 4 : static s32 OctreeImage_get_field_index_by_name(char *name)
25991 : {
25992 4 : if (!strcmp("images", name)) return 0;
25993 3 : if (!strcmp("octree", name)) return 1;
25994 2 : if (!strcmp("octreeResolution", name)) return 2;
25995 1 : if (!strcmp("voxelImageIndex", name)) return 3;
25996 0 : return -1;
25997 : }
25998 : static Bool OctreeImage_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
25999 : {
26000 4 : switch (FieldIndex) {
26001 1 : case 1:
26002 1 : *AType = 0;
26003 1 : *QType = 13;
26004 1 : *QT13_bits = 8;
26005 1 : *b_min = FLT2FIX(0);
26006 1 : *b_max = FLT2FIX(255);
26007 : return 1;
26008 1 : case 3:
26009 1 : *AType = 0;
26010 1 : *QType = 13;
26011 1 : *QT13_bits = 8;
26012 1 : *b_min = FLT2FIX(0);
26013 1 : *b_max = FLT2FIX(255);
26014 : return 1;
26015 : default:
26016 : return 0;
26017 : }
26018 : }
26019 :
26020 :
26021 :
26022 1 : GF_Node *OctreeImage_Create()
26023 : {
26024 : M_OctreeImage *p;
26025 1 : GF_SAFEALLOC(p, M_OctreeImage);
26026 1 : if(!p) return NULL;
26027 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_OctreeImage);
26028 :
26029 : /*default field values*/
26030 1 : p->octreeResolution = 256;
26031 1 : return (GF_Node *)p;
26032 : }
26033 :
26034 :
26035 : /*
26036 : XXParticles Node deletion
26037 : */
26038 :
26039 1 : static void XXParticles_Del(GF_Node *node)
26040 : {
26041 : M_XXParticles *p = (M_XXParticles *) node;
26042 1 : gf_node_unregister_children((GF_Node *) p, p->influences);
26043 1 : gf_node_unregister((GF_Node *) p->init, (GF_Node *) p);
26044 1 : gf_node_unregister((GF_Node *) p->primitive, (GF_Node *) p);
26045 1 : gf_node_free((GF_Node *) p);
26046 1 : }
26047 :
26048 : static const u16 XXParticles_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
26049 : static const u16 XXParticles_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
26050 : static const u16 XXParticles_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24};
26051 :
26052 : static u32 XXParticles_get_field_count(GF_Node *node, u8 IndexMode)
26053 : {
26054 6 : switch(IndexMode) {
26055 : case GF_SG_FIELD_CODING_IN:
26056 : return 25;
26057 : case GF_SG_FIELD_CODING_DEF:
26058 : return 25;
26059 : case GF_SG_FIELD_CODING_OUT:
26060 : return 25;
26061 1 : case GF_SG_FIELD_CODING_DYN:
26062 : return 0;
26063 : default:
26064 : return 25;
26065 : }
26066 : }
26067 :
26068 : static GF_Err XXParticles_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26069 : {
26070 25 : switch(IndexMode) {
26071 0 : case GF_SG_FIELD_CODING_IN:
26072 0 : *allField = XXParticles_In2All[inField];
26073 : return GF_OK;
26074 0 : case GF_SG_FIELD_CODING_DEF:
26075 0 : *allField = XXParticles_Def2All[inField];
26076 : return GF_OK;
26077 0 : case GF_SG_FIELD_CODING_OUT:
26078 0 : *allField = XXParticles_Out2All[inField];
26079 : return GF_OK;
26080 : default:
26081 : return GF_BAD_PARAM;
26082 : }
26083 : }
26084 50 : static GF_Err XXParticles_get_field(GF_Node *node, GF_FieldInfo *info)
26085 : {
26086 50 : switch (info->fieldIndex) {
26087 2 : case 0:
26088 2 : info->name = "creationRate";
26089 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26090 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26091 2 : info->far_ptr = & ((M_XXParticles *) node)->creationRate;
26092 2 : return GF_OK;
26093 2 : case 1:
26094 2 : info->name = "creationRateVariation";
26095 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26096 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26097 2 : info->far_ptr = & ((M_XXParticles *) node)->creationRateVariation;
26098 2 : return GF_OK;
26099 2 : case 2:
26100 2 : info->name = "emitAlpha";
26101 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26102 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26103 2 : info->far_ptr = & ((M_XXParticles *) node)->emitAlpha;
26104 2 : return GF_OK;
26105 2 : case 3:
26106 2 : info->name = "emitColor";
26107 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26108 2 : info->fieldType = GF_SG_VRML_SFCOLOR;
26109 2 : info->far_ptr = & ((M_XXParticles *) node)->emitColor;
26110 2 : return GF_OK;
26111 2 : case 4:
26112 2 : info->name = "emitColorVariation";
26113 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26114 2 : info->fieldType = GF_SG_VRML_SFCOLOR;
26115 2 : info->far_ptr = & ((M_XXParticles *) node)->emitColorVariation;
26116 2 : return GF_OK;
26117 2 : case 5:
26118 2 : info->name = "emitterPosition";
26119 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26120 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
26121 2 : info->far_ptr = & ((M_XXParticles *) node)->emitterPosition;
26122 2 : return GF_OK;
26123 2 : case 6:
26124 2 : info->name = "emitVelocity";
26125 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26126 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
26127 2 : info->far_ptr = & ((M_XXParticles *) node)->emitVelocity;
26128 2 : return GF_OK;
26129 2 : case 7:
26130 2 : info->name = "emitVelocityVariation";
26131 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26132 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
26133 2 : info->far_ptr = & ((M_XXParticles *) node)->emitVelocityVariation;
26134 2 : return GF_OK;
26135 2 : case 8:
26136 2 : info->name = "enabled";
26137 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26138 2 : info->fieldType = GF_SG_VRML_SFBOOL;
26139 2 : info->far_ptr = & ((M_XXParticles *) node)->enabled;
26140 2 : return GF_OK;
26141 2 : case 9:
26142 2 : info->name = "fadeAlpha";
26143 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26144 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26145 2 : info->far_ptr = & ((M_XXParticles *) node)->fadeAlpha;
26146 2 : return GF_OK;
26147 2 : case 10:
26148 2 : info->name = "fadeColor";
26149 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26150 2 : info->fieldType = GF_SG_VRML_SFCOLOR;
26151 2 : info->far_ptr = & ((M_XXParticles *) node)->fadeColor;
26152 2 : return GF_OK;
26153 2 : case 11:
26154 2 : info->name = "fadeRate";
26155 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26156 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26157 2 : info->far_ptr = & ((M_XXParticles *) node)->fadeRate;
26158 2 : return GF_OK;
26159 2 : case 12:
26160 2 : info->name = "force";
26161 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26162 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
26163 2 : info->far_ptr = & ((M_XXParticles *) node)->force;
26164 2 : return GF_OK;
26165 2 : case 13:
26166 2 : info->name = "influences";
26167 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26168 2 : info->fieldType = GF_SG_VRML_MFNODE;
26169 2 : info->NDTtype = NDT_SFInfluenceNode;
26170 2 : info->far_ptr = & ((M_XXParticles *)node)->influences;
26171 2 : return GF_OK;
26172 2 : case 14:
26173 2 : info->name = "init";
26174 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26175 2 : info->fieldType = GF_SG_VRML_SFNODE;
26176 2 : info->NDTtype = NDT_SFWorldNode;
26177 2 : info->far_ptr = & ((M_XXParticles *)node)->init;
26178 2 : return GF_OK;
26179 2 : case 15:
26180 2 : info->name = "maxLifeTime";
26181 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26182 2 : info->fieldType = GF_SG_VRML_SFTIME;
26183 2 : info->far_ptr = & ((M_XXParticles *) node)->maxLifeTime;
26184 2 : return GF_OK;
26185 2 : case 16:
26186 2 : info->name = "maxLifeTimeVariation";
26187 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26188 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26189 2 : info->far_ptr = & ((M_XXParticles *) node)->maxLifeTimeVariation;
26190 2 : return GF_OK;
26191 2 : case 17:
26192 2 : info->name = "maxParticles";
26193 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26194 2 : info->fieldType = GF_SG_VRML_SFINT32;
26195 2 : info->far_ptr = & ((M_XXParticles *) node)->maxParticles;
26196 2 : return GF_OK;
26197 2 : case 18:
26198 2 : info->name = "minRange";
26199 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26200 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26201 2 : info->far_ptr = & ((M_XXParticles *) node)->minRange;
26202 2 : return GF_OK;
26203 2 : case 19:
26204 2 : info->name = "maxRange";
26205 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26206 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26207 2 : info->far_ptr = & ((M_XXParticles *) node)->maxRange;
26208 2 : return GF_OK;
26209 2 : case 20:
26210 2 : info->name = "primitive";
26211 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26212 2 : info->fieldType = GF_SG_VRML_SFNODE;
26213 2 : info->NDTtype = NDT_SFWorldNode;
26214 2 : info->far_ptr = & ((M_XXParticles *)node)->primitive;
26215 2 : return GF_OK;
26216 2 : case 21:
26217 2 : info->name = "primitiveType";
26218 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26219 2 : info->fieldType = GF_SG_VRML_SFINT32;
26220 2 : info->far_ptr = & ((M_XXParticles *) node)->primitiveType;
26221 2 : return GF_OK;
26222 2 : case 22:
26223 2 : info->name = "particleRadius";
26224 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26225 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26226 2 : info->far_ptr = & ((M_XXParticles *) node)->particleRadius;
26227 2 : return GF_OK;
26228 2 : case 23:
26229 2 : info->name = "particleRadiusRate";
26230 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26231 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26232 2 : info->far_ptr = & ((M_XXParticles *) node)->particleRadiusRate;
26233 2 : return GF_OK;
26234 2 : case 24:
26235 2 : info->name = "particleRadiusVariation";
26236 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26237 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26238 2 : info->far_ptr = & ((M_XXParticles *) node)->particleRadiusVariation;
26239 2 : return GF_OK;
26240 : default:
26241 : return GF_BAD_PARAM;
26242 : }
26243 : }
26244 :
26245 :
26246 25 : static s32 XXParticles_get_field_index_by_name(char *name)
26247 : {
26248 25 : if (!strcmp("creationRate", name)) return 0;
26249 24 : if (!strcmp("creationRateVariation", name)) return 1;
26250 23 : if (!strcmp("emitAlpha", name)) return 2;
26251 22 : if (!strcmp("emitColor", name)) return 3;
26252 21 : if (!strcmp("emitColorVariation", name)) return 4;
26253 20 : if (!strcmp("emitterPosition", name)) return 5;
26254 19 : if (!strcmp("emitVelocity", name)) return 6;
26255 18 : if (!strcmp("emitVelocityVariation", name)) return 7;
26256 17 : if (!strcmp("enabled", name)) return 8;
26257 16 : if (!strcmp("fadeAlpha", name)) return 9;
26258 15 : if (!strcmp("fadeColor", name)) return 10;
26259 14 : if (!strcmp("fadeRate", name)) return 11;
26260 13 : if (!strcmp("force", name)) return 12;
26261 12 : if (!strcmp("influences", name)) return 13;
26262 11 : if (!strcmp("init", name)) return 14;
26263 10 : if (!strcmp("maxLifeTime", name)) return 15;
26264 9 : if (!strcmp("maxLifeTimeVariation", name)) return 16;
26265 8 : if (!strcmp("maxParticles", name)) return 17;
26266 7 : if (!strcmp("minRange", name)) return 18;
26267 6 : if (!strcmp("maxRange", name)) return 19;
26268 5 : if (!strcmp("primitive", name)) return 20;
26269 4 : if (!strcmp("primitiveType", name)) return 21;
26270 3 : if (!strcmp("particleRadius", name)) return 22;
26271 2 : if (!strcmp("particleRadiusRate", name)) return 23;
26272 1 : if (!strcmp("particleRadiusVariation", name)) return 24;
26273 0 : return -1;
26274 : }
26275 : static Bool XXParticles_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26276 : {
26277 : switch (FieldIndex) {
26278 : default:
26279 : return 0;
26280 : }
26281 : }
26282 :
26283 :
26284 :
26285 1 : GF_Node *XXParticles_Create()
26286 : {
26287 : M_XXParticles *p;
26288 1 : GF_SAFEALLOC(p, M_XXParticles);
26289 1 : if(!p) return NULL;
26290 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXParticles);
26291 :
26292 : /*default field values*/
26293 1 : p->creationRate = FLT2FIX(500);
26294 1 : p->creationRateVariation = FLT2FIX(0);
26295 1 : p->emitAlpha = FLT2FIX(1.0);
26296 1 : p->emitColor.red = FLT2FIX(1);
26297 1 : p->emitColor.green = FLT2FIX(1);
26298 1 : p->emitColor.blue = FLT2FIX(1);
26299 1 : p->emitColorVariation.red = FLT2FIX(0);
26300 1 : p->emitColorVariation.green = FLT2FIX(0);
26301 1 : p->emitColorVariation.blue = FLT2FIX(0);
26302 1 : p->emitterPosition.x = FLT2FIX(0);
26303 1 : p->emitterPosition.y = FLT2FIX(3);
26304 1 : p->emitterPosition.z = FLT2FIX(0);
26305 1 : p->emitVelocity.x = FLT2FIX(0);
26306 1 : p->emitVelocity.y = FLT2FIX(0);
26307 1 : p->emitVelocity.z = FLT2FIX(0);
26308 1 : p->emitVelocityVariation.x = FLT2FIX(1);
26309 1 : p->emitVelocityVariation.y = FLT2FIX(1);
26310 1 : p->emitVelocityVariation.z = FLT2FIX(1);
26311 1 : p->enabled = 1;
26312 1 : p->fadeAlpha = FLT2FIX(1.0);
26313 1 : p->fadeColor.red = FLT2FIX(0.25);
26314 1 : p->fadeColor.green = FLT2FIX(0.25);
26315 1 : p->fadeColor.blue = FLT2FIX(0.25);
26316 1 : p->fadeRate = FLT2FIX(0.25);
26317 1 : p->force.x = FLT2FIX(0);
26318 1 : p->force.y = FLT2FIX(-9.8);
26319 1 : p->force.z = FLT2FIX(0);
26320 1 : p->maxLifeTime = 5;
26321 1 : p->maxLifeTimeVariation = FLT2FIX(0);
26322 1 : p->maxParticles = 500;
26323 1 : p->minRange = FLT2FIX(1);
26324 1 : p->maxRange = FLT2FIX(-1);
26325 1 : p->primitiveType = 2;
26326 1 : p->particleRadius = FLT2FIX(0.1);
26327 1 : p->particleRadiusRate = FLT2FIX(0);
26328 1 : p->particleRadiusVariation = FLT2FIX(0);
26329 1 : return (GF_Node *)p;
26330 : }
26331 :
26332 :
26333 : /*
26334 : XXParticleInitBox Node deletion
26335 : */
26336 :
26337 : static void XXParticleInitBox_Del(GF_Node *node)
26338 : {
26339 : M_XXParticleInitBox *p = (M_XXParticleInitBox *) node;
26340 1 : gf_node_free((GF_Node *) p);
26341 : }
26342 :
26343 : static const u16 XXParticleInitBox_Def2All[] = { 0, 1};
26344 : static const u16 XXParticleInitBox_In2All[] = { 0, 1};
26345 : static const u16 XXParticleInitBox_Out2All[] = { 0, 1};
26346 :
26347 : static u32 XXParticleInitBox_get_field_count(GF_Node *node, u8 IndexMode)
26348 : {
26349 6 : switch(IndexMode) {
26350 : case GF_SG_FIELD_CODING_IN:
26351 : return 2;
26352 : case GF_SG_FIELD_CODING_DEF:
26353 : return 2;
26354 : case GF_SG_FIELD_CODING_OUT:
26355 : return 2;
26356 1 : case GF_SG_FIELD_CODING_DYN:
26357 : return 0;
26358 : default:
26359 : return 2;
26360 : }
26361 : }
26362 :
26363 : static GF_Err XXParticleInitBox_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26364 : {
26365 2 : switch(IndexMode) {
26366 0 : case GF_SG_FIELD_CODING_IN:
26367 0 : *allField = XXParticleInitBox_In2All[inField];
26368 : return GF_OK;
26369 0 : case GF_SG_FIELD_CODING_DEF:
26370 0 : *allField = XXParticleInitBox_Def2All[inField];
26371 : return GF_OK;
26372 0 : case GF_SG_FIELD_CODING_OUT:
26373 0 : *allField = XXParticleInitBox_Out2All[inField];
26374 : return GF_OK;
26375 : default:
26376 : return GF_BAD_PARAM;
26377 : }
26378 : }
26379 : static GF_Err XXParticleInitBox_get_field(GF_Node *node, GF_FieldInfo *info)
26380 : {
26381 4 : switch (info->fieldIndex) {
26382 2 : case 0:
26383 2 : info->name = "falloff";
26384 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26385 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26386 2 : info->far_ptr = & ((M_XXParticleInitBox *) node)->falloff;
26387 : return GF_OK;
26388 2 : case 1:
26389 2 : info->name = "size";
26390 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26391 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
26392 2 : info->far_ptr = & ((M_XXParticleInitBox *) node)->size;
26393 : return GF_OK;
26394 : default:
26395 : return GF_BAD_PARAM;
26396 : }
26397 : }
26398 :
26399 :
26400 2 : static s32 XXParticleInitBox_get_field_index_by_name(char *name)
26401 : {
26402 2 : if (!strcmp("falloff", name)) return 0;
26403 1 : if (!strcmp("size", name)) return 1;
26404 0 : return -1;
26405 : }
26406 : static Bool XXParticleInitBox_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26407 : {
26408 : switch (FieldIndex) {
26409 : default:
26410 : return 0;
26411 : }
26412 : }
26413 :
26414 :
26415 :
26416 1 : GF_Node *XXParticleInitBox_Create()
26417 : {
26418 : M_XXParticleInitBox *p;
26419 1 : GF_SAFEALLOC(p, M_XXParticleInitBox);
26420 1 : if(!p) return NULL;
26421 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXParticleInitBox);
26422 :
26423 : /*default field values*/
26424 1 : p->falloff = FLT2FIX(0);
26425 1 : p->size.x = FLT2FIX(1);
26426 1 : p->size.y = FLT2FIX(1);
26427 1 : p->size.z = FLT2FIX(1);
26428 1 : return (GF_Node *)p;
26429 : }
26430 :
26431 :
26432 : /*
26433 : XXPlanarObstacle Node deletion
26434 : */
26435 :
26436 : static void XXPlanarObstacle_Del(GF_Node *node)
26437 : {
26438 : M_XXPlanarObstacle *p = (M_XXPlanarObstacle *) node;
26439 1 : gf_node_free((GF_Node *) p);
26440 : }
26441 :
26442 : static const u16 XXPlanarObstacle_Def2All[] = { 0, 1, 2, 3};
26443 : static const u16 XXPlanarObstacle_In2All[] = { 0, 1, 2, 3};
26444 : static const u16 XXPlanarObstacle_Out2All[] = { 0, 1, 2, 3};
26445 :
26446 : static u32 XXPlanarObstacle_get_field_count(GF_Node *node, u8 IndexMode)
26447 : {
26448 6 : switch(IndexMode) {
26449 : case GF_SG_FIELD_CODING_IN:
26450 : return 4;
26451 : case GF_SG_FIELD_CODING_DEF:
26452 : return 4;
26453 : case GF_SG_FIELD_CODING_OUT:
26454 : return 4;
26455 1 : case GF_SG_FIELD_CODING_DYN:
26456 : return 0;
26457 : default:
26458 : return 4;
26459 : }
26460 : }
26461 :
26462 : static GF_Err XXPlanarObstacle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26463 : {
26464 4 : switch(IndexMode) {
26465 0 : case GF_SG_FIELD_CODING_IN:
26466 0 : *allField = XXPlanarObstacle_In2All[inField];
26467 : return GF_OK;
26468 0 : case GF_SG_FIELD_CODING_DEF:
26469 0 : *allField = XXPlanarObstacle_Def2All[inField];
26470 : return GF_OK;
26471 0 : case GF_SG_FIELD_CODING_OUT:
26472 0 : *allField = XXPlanarObstacle_Out2All[inField];
26473 : return GF_OK;
26474 : default:
26475 : return GF_BAD_PARAM;
26476 : }
26477 : }
26478 8 : static GF_Err XXPlanarObstacle_get_field(GF_Node *node, GF_FieldInfo *info)
26479 : {
26480 8 : switch (info->fieldIndex) {
26481 2 : case 0:
26482 2 : info->name = "distance";
26483 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26484 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
26485 2 : info->far_ptr = & ((M_XXPlanarObstacle *) node)->distance;
26486 2 : return GF_OK;
26487 2 : case 1:
26488 2 : info->name = "normal";
26489 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26490 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
26491 2 : info->far_ptr = & ((M_XXPlanarObstacle *) node)->normal;
26492 2 : return GF_OK;
26493 2 : case 2:
26494 2 : info->name = "reflection";
26495 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26496 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26497 2 : info->far_ptr = & ((M_XXPlanarObstacle *) node)->reflection;
26498 2 : return GF_OK;
26499 2 : case 3:
26500 2 : info->name = "absorption";
26501 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26502 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26503 2 : info->far_ptr = & ((M_XXPlanarObstacle *) node)->absorption;
26504 2 : return GF_OK;
26505 : default:
26506 : return GF_BAD_PARAM;
26507 : }
26508 : }
26509 :
26510 :
26511 4 : static s32 XXPlanarObstacle_get_field_index_by_name(char *name)
26512 : {
26513 4 : if (!strcmp("distance", name)) return 0;
26514 3 : if (!strcmp("normal", name)) return 1;
26515 2 : if (!strcmp("reflection", name)) return 2;
26516 1 : if (!strcmp("absorption", name)) return 3;
26517 0 : return -1;
26518 : }
26519 : static Bool XXPlanarObstacle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26520 : {
26521 : switch (FieldIndex) {
26522 : default:
26523 : return 0;
26524 : }
26525 : }
26526 :
26527 :
26528 :
26529 1 : GF_Node *XXPlanarObstacle_Create()
26530 : {
26531 : M_XXPlanarObstacle *p;
26532 1 : GF_SAFEALLOC(p, M_XXPlanarObstacle);
26533 1 : if(!p) return NULL;
26534 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXPlanarObstacle);
26535 :
26536 : /*default field values*/
26537 1 : p->distance.x = FLT2FIX(0);
26538 1 : p->distance.y = FLT2FIX(0);
26539 1 : p->distance.z = FLT2FIX(0);
26540 1 : p->normal.x = FLT2FIX(0);
26541 1 : p->normal.y = FLT2FIX(1);
26542 1 : p->normal.z = FLT2FIX(0);
26543 1 : p->reflection = FLT2FIX(0);
26544 1 : p->absorption = FLT2FIX(0);
26545 1 : return (GF_Node *)p;
26546 : }
26547 :
26548 :
26549 : /*
26550 : XXPointAttractor Node deletion
26551 : */
26552 :
26553 : static void XXPointAttractor_Del(GF_Node *node)
26554 : {
26555 : M_XXPointAttractor *p = (M_XXPointAttractor *) node;
26556 1 : gf_node_free((GF_Node *) p);
26557 : }
26558 :
26559 : static const u16 XXPointAttractor_Def2All[] = { 0, 1, 2, 3};
26560 : static const u16 XXPointAttractor_In2All[] = { 0, 1, 2, 3};
26561 : static const u16 XXPointAttractor_Out2All[] = { 0, 1, 2, 3};
26562 :
26563 : static u32 XXPointAttractor_get_field_count(GF_Node *node, u8 IndexMode)
26564 : {
26565 6 : switch(IndexMode) {
26566 : case GF_SG_FIELD_CODING_IN:
26567 : return 4;
26568 : case GF_SG_FIELD_CODING_DEF:
26569 : return 4;
26570 : case GF_SG_FIELD_CODING_OUT:
26571 : return 4;
26572 1 : case GF_SG_FIELD_CODING_DYN:
26573 : return 0;
26574 : default:
26575 : return 4;
26576 : }
26577 : }
26578 :
26579 : static GF_Err XXPointAttractor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26580 : {
26581 4 : switch(IndexMode) {
26582 0 : case GF_SG_FIELD_CODING_IN:
26583 0 : *allField = XXPointAttractor_In2All[inField];
26584 : return GF_OK;
26585 0 : case GF_SG_FIELD_CODING_DEF:
26586 0 : *allField = XXPointAttractor_Def2All[inField];
26587 : return GF_OK;
26588 0 : case GF_SG_FIELD_CODING_OUT:
26589 0 : *allField = XXPointAttractor_Out2All[inField];
26590 : return GF_OK;
26591 : default:
26592 : return GF_BAD_PARAM;
26593 : }
26594 : }
26595 8 : static GF_Err XXPointAttractor_get_field(GF_Node *node, GF_FieldInfo *info)
26596 : {
26597 8 : switch (info->fieldIndex) {
26598 2 : case 0:
26599 2 : info->name = "innerRadius";
26600 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26601 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26602 2 : info->far_ptr = & ((M_XXPointAttractor *) node)->innerRadius;
26603 2 : return GF_OK;
26604 2 : case 1:
26605 2 : info->name = "outerRadius";
26606 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26607 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26608 2 : info->far_ptr = & ((M_XXPointAttractor *) node)->outerRadius;
26609 2 : return GF_OK;
26610 2 : case 2:
26611 2 : info->name = "position";
26612 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26613 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
26614 2 : info->far_ptr = & ((M_XXPointAttractor *) node)->position;
26615 2 : return GF_OK;
26616 2 : case 3:
26617 2 : info->name = "rate";
26618 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26619 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
26620 2 : info->far_ptr = & ((M_XXPointAttractor *) node)->rate;
26621 2 : return GF_OK;
26622 : default:
26623 : return GF_BAD_PARAM;
26624 : }
26625 : }
26626 :
26627 :
26628 4 : static s32 XXPointAttractor_get_field_index_by_name(char *name)
26629 : {
26630 4 : if (!strcmp("innerRadius", name)) return 0;
26631 3 : if (!strcmp("outerRadius", name)) return 1;
26632 2 : if (!strcmp("position", name)) return 2;
26633 1 : if (!strcmp("rate", name)) return 3;
26634 0 : return -1;
26635 : }
26636 : static Bool XXPointAttractor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26637 : {
26638 : switch (FieldIndex) {
26639 : default:
26640 : return 0;
26641 : }
26642 : }
26643 :
26644 :
26645 :
26646 1 : GF_Node *XXPointAttractor_Create()
26647 : {
26648 : M_XXPointAttractor *p;
26649 1 : GF_SAFEALLOC(p, M_XXPointAttractor);
26650 1 : if(!p) return NULL;
26651 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XXPointAttractor);
26652 :
26653 : /*default field values*/
26654 1 : p->innerRadius = FLT2FIX(10);
26655 1 : p->outerRadius = FLT2FIX(100);
26656 1 : p->position.x = FLT2FIX(0);
26657 1 : p->position.y = FLT2FIX(0);
26658 1 : p->position.z = FLT2FIX(0);
26659 1 : p->rate = FLT2FIX(1);
26660 1 : return (GF_Node *)p;
26661 : }
26662 :
26663 :
26664 : /*
26665 : PointTexture Node deletion
26666 : */
26667 :
26668 1 : static void PointTexture_Del(GF_Node *node)
26669 : {
26670 : M_PointTexture *p = (M_PointTexture *) node;
26671 1 : gf_sg_mfcolor_del(p->color);
26672 1 : gf_sg_mfint32_del(p->depth);
26673 1 : gf_node_free((GF_Node *) p);
26674 1 : }
26675 :
26676 : static const u16 PointTexture_Def2All[] = { 0, 1, 2, 3, 4};
26677 :
26678 : static u32 PointTexture_get_field_count(GF_Node *node, u8 IndexMode)
26679 : {
26680 6 : switch(IndexMode) {
26681 : case GF_SG_FIELD_CODING_IN:
26682 : return 0;
26683 1 : case GF_SG_FIELD_CODING_DEF:
26684 : return 5;
26685 : case GF_SG_FIELD_CODING_OUT:
26686 : return 0;
26687 : case GF_SG_FIELD_CODING_DYN:
26688 : return 0;
26689 2 : default:
26690 : return 5;
26691 : }
26692 : }
26693 :
26694 : static GF_Err PointTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26695 : {
26696 5 : switch(IndexMode) {
26697 0 : case GF_SG_FIELD_CODING_DEF:
26698 0 : *allField = PointTexture_Def2All[inField];
26699 : return GF_OK;
26700 : default:
26701 : return GF_BAD_PARAM;
26702 : }
26703 : }
26704 10 : static GF_Err PointTexture_get_field(GF_Node *node, GF_FieldInfo *info)
26705 : {
26706 10 : switch (info->fieldIndex) {
26707 2 : case 0:
26708 2 : info->name = "color";
26709 2 : info->eventType = GF_SG_EVENT_FIELD;
26710 2 : info->fieldType = GF_SG_VRML_MFCOLOR;
26711 2 : info->far_ptr = & ((M_PointTexture *) node)->color;
26712 2 : return GF_OK;
26713 2 : case 1:
26714 2 : info->name = "depth";
26715 2 : info->eventType = GF_SG_EVENT_FIELD;
26716 2 : info->fieldType = GF_SG_VRML_MFINT32;
26717 2 : info->far_ptr = & ((M_PointTexture *) node)->depth;
26718 2 : return GF_OK;
26719 2 : case 2:
26720 2 : info->name = "depthNbBits";
26721 2 : info->eventType = GF_SG_EVENT_FIELD;
26722 2 : info->fieldType = GF_SG_VRML_SFINT32;
26723 2 : info->far_ptr = & ((M_PointTexture *) node)->depthNbBits;
26724 2 : return GF_OK;
26725 2 : case 3:
26726 2 : info->name = "height";
26727 2 : info->eventType = GF_SG_EVENT_FIELD;
26728 2 : info->fieldType = GF_SG_VRML_SFINT32;
26729 2 : info->far_ptr = & ((M_PointTexture *) node)->height;
26730 2 : return GF_OK;
26731 2 : case 4:
26732 2 : info->name = "width";
26733 2 : info->eventType = GF_SG_EVENT_FIELD;
26734 2 : info->fieldType = GF_SG_VRML_SFINT32;
26735 2 : info->far_ptr = & ((M_PointTexture *) node)->width;
26736 2 : return GF_OK;
26737 : default:
26738 : return GF_BAD_PARAM;
26739 : }
26740 : }
26741 :
26742 :
26743 5 : static s32 PointTexture_get_field_index_by_name(char *name)
26744 : {
26745 5 : if (!strcmp("color", name)) return 0;
26746 4 : if (!strcmp("depth", name)) return 1;
26747 3 : if (!strcmp("depthNbBits", name)) return 2;
26748 2 : if (!strcmp("height", name)) return 3;
26749 1 : if (!strcmp("width", name)) return 4;
26750 0 : return -1;
26751 : }
26752 : static Bool PointTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26753 : {
26754 5 : switch (FieldIndex) {
26755 1 : case 2:
26756 1 : *AType = 0;
26757 1 : *QType = 13;
26758 1 : *QT13_bits = 5;
26759 1 : *b_min = FLT2FIX(0);
26760 1 : *b_max = FLT2FIX(31);
26761 : return 1;
26762 : default:
26763 : return 0;
26764 : }
26765 : }
26766 :
26767 :
26768 :
26769 1 : GF_Node *PointTexture_Create()
26770 : {
26771 : M_PointTexture *p;
26772 1 : GF_SAFEALLOC(p, M_PointTexture);
26773 1 : if(!p) return NULL;
26774 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PointTexture);
26775 :
26776 : /*default field values*/
26777 1 : p->depthNbBits = 7;
26778 1 : p->height = 256;
26779 1 : p->width = 256;
26780 1 : return (GF_Node *)p;
26781 : }
26782 :
26783 :
26784 : /*
26785 : PositionAnimator Node deletion
26786 : */
26787 :
26788 2 : static void PositionAnimator_Del(GF_Node *node)
26789 : {
26790 : M_PositionAnimator *p = (M_PositionAnimator *) node;
26791 2 : gf_sg_mffloat_del(p->key);
26792 2 : gf_sg_mfrotation_del(p->keyOrientation);
26793 2 : gf_sg_mfvec2f_del(p->keySpline);
26794 2 : gf_sg_mfvec3f_del(p->keyValue);
26795 2 : gf_sg_mffloat_del(p->weight);
26796 2 : gf_node_free((GF_Node *) p);
26797 2 : }
26798 :
26799 : static const u16 PositionAnimator_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
26800 : static const u16 PositionAnimator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
26801 : static const u16 PositionAnimator_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
26802 :
26803 : static u32 PositionAnimator_get_field_count(GF_Node *node, u8 IndexMode)
26804 : {
26805 : switch(IndexMode) {
26806 : case GF_SG_FIELD_CODING_IN:
26807 : return 10;
26808 : case GF_SG_FIELD_CODING_DEF:
26809 : return 9;
26810 : case GF_SG_FIELD_CODING_OUT:
26811 : return 12;
26812 : case GF_SG_FIELD_CODING_DYN:
26813 : return 0;
26814 : default:
26815 : return 13;
26816 : }
26817 : }
26818 :
26819 : static GF_Err PositionAnimator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
26820 : {
26821 13 : switch(IndexMode) {
26822 0 : case GF_SG_FIELD_CODING_IN:
26823 0 : *allField = PositionAnimator_In2All[inField];
26824 : return GF_OK;
26825 0 : case GF_SG_FIELD_CODING_DEF:
26826 0 : *allField = PositionAnimator_Def2All[inField];
26827 : return GF_OK;
26828 0 : case GF_SG_FIELD_CODING_OUT:
26829 0 : *allField = PositionAnimator_Out2All[inField];
26830 : return GF_OK;
26831 : default:
26832 : return GF_BAD_PARAM;
26833 : }
26834 : }
26835 35 : static GF_Err PositionAnimator_get_field(GF_Node *node, GF_FieldInfo *info)
26836 : {
26837 35 : switch (info->fieldIndex) {
26838 4 : case 0:
26839 4 : info->name = "set_fraction";
26840 4 : info->eventType = GF_SG_EVENT_IN;
26841 4 : info->on_event_in = ((M_PositionAnimator *)node)->on_set_fraction;
26842 4 : info->fieldType = GF_SG_VRML_SFFLOAT;
26843 4 : info->far_ptr = & ((M_PositionAnimator *) node)->set_fraction;
26844 4 : return GF_OK;
26845 2 : case 1:
26846 2 : info->name = "fromTo";
26847 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26848 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
26849 2 : info->far_ptr = & ((M_PositionAnimator *) node)->fromTo;
26850 2 : return GF_OK;
26851 3 : case 2:
26852 3 : info->name = "key";
26853 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26854 3 : info->fieldType = GF_SG_VRML_MFFLOAT;
26855 3 : info->far_ptr = & ((M_PositionAnimator *) node)->key;
26856 3 : return GF_OK;
26857 2 : case 3:
26858 2 : info->name = "keyOrientation";
26859 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26860 2 : info->fieldType = GF_SG_VRML_MFROTATION;
26861 2 : info->far_ptr = & ((M_PositionAnimator *) node)->keyOrientation;
26862 2 : return GF_OK;
26863 3 : case 4:
26864 3 : info->name = "keyType";
26865 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26866 3 : info->fieldType = GF_SG_VRML_SFINT32;
26867 3 : info->far_ptr = & ((M_PositionAnimator *) node)->keyType;
26868 3 : return GF_OK;
26869 3 : case 5:
26870 3 : info->name = "keySpline";
26871 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26872 3 : info->fieldType = GF_SG_VRML_MFVEC2F;
26873 3 : info->far_ptr = & ((M_PositionAnimator *) node)->keySpline;
26874 3 : return GF_OK;
26875 3 : case 6:
26876 3 : info->name = "keyValue";
26877 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26878 3 : info->fieldType = GF_SG_VRML_MFVEC3F;
26879 3 : info->far_ptr = & ((M_PositionAnimator *) node)->keyValue;
26880 3 : return GF_OK;
26881 3 : case 7:
26882 3 : info->name = "keyValueType";
26883 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26884 3 : info->fieldType = GF_SG_VRML_SFINT32;
26885 3 : info->far_ptr = & ((M_PositionAnimator *) node)->keyValueType;
26886 3 : return GF_OK;
26887 2 : case 8:
26888 2 : info->name = "offset";
26889 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26890 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
26891 2 : info->far_ptr = & ((M_PositionAnimator *) node)->offset;
26892 2 : return GF_OK;
26893 2 : case 9:
26894 2 : info->name = "weight";
26895 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
26896 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
26897 2 : info->far_ptr = & ((M_PositionAnimator *) node)->weight;
26898 2 : return GF_OK;
26899 2 : case 10:
26900 2 : info->name = "endValue";
26901 2 : info->eventType = GF_SG_EVENT_OUT;
26902 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
26903 2 : info->far_ptr = & ((M_PositionAnimator *) node)->endValue;
26904 2 : return GF_OK;
26905 2 : case 11:
26906 2 : info->name = "rotation_changed";
26907 2 : info->eventType = GF_SG_EVENT_OUT;
26908 2 : info->fieldType = GF_SG_VRML_SFROTATION;
26909 2 : info->far_ptr = & ((M_PositionAnimator *) node)->rotation_changed;
26910 2 : return GF_OK;
26911 4 : case 12:
26912 4 : info->name = "value_changed";
26913 4 : info->eventType = GF_SG_EVENT_OUT;
26914 4 : info->fieldType = GF_SG_VRML_SFVEC3F;
26915 4 : info->far_ptr = & ((M_PositionAnimator *) node)->value_changed;
26916 4 : return GF_OK;
26917 : default:
26918 : return GF_BAD_PARAM;
26919 : }
26920 : }
26921 :
26922 :
26923 20 : static s32 PositionAnimator_get_field_index_by_name(char *name)
26924 : {
26925 20 : if (!strcmp("set_fraction", name)) return 0;
26926 18 : if (!strcmp("fromTo", name)) return 1;
26927 17 : if (!strcmp("key", name)) return 2;
26928 15 : if (!strcmp("keyOrientation", name)) return 3;
26929 14 : if (!strcmp("keyType", name)) return 4;
26930 12 : if (!strcmp("keySpline", name)) return 5;
26931 10 : if (!strcmp("keyValue", name)) return 6;
26932 8 : if (!strcmp("keyValueType", name)) return 7;
26933 6 : if (!strcmp("offset", name)) return 8;
26934 5 : if (!strcmp("weight", name)) return 9;
26935 4 : if (!strcmp("endValue", name)) return 10;
26936 3 : if (!strcmp("rotation_changed", name)) return 11;
26937 2 : if (!strcmp("value_changed", name)) return 12;
26938 0 : return -1;
26939 : }
26940 : static Bool PositionAnimator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
26941 : {
26942 13 : switch (FieldIndex) {
26943 1 : case 1:
26944 1 : *AType = 0;
26945 1 : *QType = 8;
26946 : return 1;
26947 1 : case 2:
26948 1 : *AType = 0;
26949 1 : *QType = 8;
26950 : return 1;
26951 1 : case 5:
26952 1 : *AType = 0;
26953 1 : *QType = 8;
26954 : return 1;
26955 1 : case 6:
26956 1 : *AType = 0;
26957 1 : *QType = 4;
26958 : return 1;
26959 1 : case 8:
26960 1 : *AType = 0;
26961 1 : *QType = 1;
26962 1 : *b_min = FIX_MIN;
26963 1 : *b_max = FIX_MAX;
26964 : return 1;
26965 : default:
26966 : return 0;
26967 : }
26968 : }
26969 :
26970 :
26971 :
26972 2 : GF_Node *PositionAnimator_Create()
26973 : {
26974 : M_PositionAnimator *p;
26975 2 : GF_SAFEALLOC(p, M_PositionAnimator);
26976 2 : if(!p) return NULL;
26977 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionAnimator);
26978 :
26979 : /*default field values*/
26980 2 : p->fromTo.x = FLT2FIX(0);
26981 2 : p->fromTo.y = FLT2FIX(1);
26982 2 : p->keyType = 0;
26983 2 : p->keySpline.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
26984 2 : p->keySpline.count = 2;
26985 2 : p->keySpline.vals[0].x = FLT2FIX(0);
26986 2 : p->keySpline.vals[0].y = FLT2FIX(0);
26987 2 : p->keySpline.vals[1].x = FLT2FIX(1);
26988 2 : p->keySpline.vals[1].y = FLT2FIX(1);
26989 2 : p->keyValueType = 0;
26990 2 : p->offset.x = FLT2FIX(0);
26991 2 : p->offset.y = FLT2FIX(0);
26992 2 : p->offset.z = FLT2FIX(0);
26993 2 : return (GF_Node *)p;
26994 : }
26995 :
26996 :
26997 : /*
26998 : PositionAnimator2D Node deletion
26999 : */
27000 :
27001 3 : static void PositionAnimator2D_Del(GF_Node *node)
27002 : {
27003 : M_PositionAnimator2D *p = (M_PositionAnimator2D *) node;
27004 3 : gf_sg_mffloat_del(p->key);
27005 3 : gf_sg_mfvec2f_del(p->keySpline);
27006 3 : gf_sg_mfvec2f_del(p->keyValue);
27007 3 : gf_sg_mffloat_del(p->weight);
27008 3 : gf_node_free((GF_Node *) p);
27009 3 : }
27010 :
27011 : static const u16 PositionAnimator2D_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
27012 : static const u16 PositionAnimator2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
27013 : static const u16 PositionAnimator2D_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
27014 :
27015 : static u32 PositionAnimator2D_get_field_count(GF_Node *node, u8 IndexMode)
27016 : {
27017 : switch(IndexMode) {
27018 : case GF_SG_FIELD_CODING_IN:
27019 : return 10;
27020 : case GF_SG_FIELD_CODING_DEF:
27021 : return 9;
27022 : case GF_SG_FIELD_CODING_OUT:
27023 : return 12;
27024 : case GF_SG_FIELD_CODING_DYN:
27025 : return 0;
27026 : default:
27027 : return 13;
27028 : }
27029 : }
27030 :
27031 : static GF_Err PositionAnimator2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
27032 : {
27033 13 : switch(IndexMode) {
27034 0 : case GF_SG_FIELD_CODING_IN:
27035 0 : *allField = PositionAnimator2D_In2All[inField];
27036 : return GF_OK;
27037 0 : case GF_SG_FIELD_CODING_DEF:
27038 0 : *allField = PositionAnimator2D_Def2All[inField];
27039 : return GF_OK;
27040 0 : case GF_SG_FIELD_CODING_OUT:
27041 0 : *allField = PositionAnimator2D_Out2All[inField];
27042 : return GF_OK;
27043 : default:
27044 : return GF_BAD_PARAM;
27045 : }
27046 : }
27047 44 : static GF_Err PositionAnimator2D_get_field(GF_Node *node, GF_FieldInfo *info)
27048 : {
27049 44 : switch (info->fieldIndex) {
27050 6 : case 0:
27051 6 : info->name = "set_fraction";
27052 6 : info->eventType = GF_SG_EVENT_IN;
27053 6 : info->on_event_in = ((M_PositionAnimator2D *)node)->on_set_fraction;
27054 6 : info->fieldType = GF_SG_VRML_SFFLOAT;
27055 6 : info->far_ptr = & ((M_PositionAnimator2D *) node)->set_fraction;
27056 6 : return GF_OK;
27057 2 : case 1:
27058 2 : info->name = "fromTo";
27059 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27060 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
27061 2 : info->far_ptr = & ((M_PositionAnimator2D *) node)->fromTo;
27062 2 : return GF_OK;
27063 4 : case 2:
27064 4 : info->name = "key";
27065 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27066 4 : info->fieldType = GF_SG_VRML_MFFLOAT;
27067 4 : info->far_ptr = & ((M_PositionAnimator2D *) node)->key;
27068 4 : return GF_OK;
27069 2 : case 3:
27070 2 : info->name = "keyOrientation";
27071 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27072 2 : info->fieldType = GF_SG_VRML_SFINT32;
27073 2 : info->far_ptr = & ((M_PositionAnimator2D *) node)->keyOrientation;
27074 2 : return GF_OK;
27075 4 : case 4:
27076 4 : info->name = "keyType";
27077 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27078 4 : info->fieldType = GF_SG_VRML_SFINT32;
27079 4 : info->far_ptr = & ((M_PositionAnimator2D *) node)->keyType;
27080 4 : return GF_OK;
27081 4 : case 5:
27082 4 : info->name = "keySpline";
27083 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27084 4 : info->fieldType = GF_SG_VRML_MFVEC2F;
27085 4 : info->far_ptr = & ((M_PositionAnimator2D *) node)->keySpline;
27086 4 : return GF_OK;
27087 4 : case 6:
27088 4 : info->name = "keyValue";
27089 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27090 4 : info->fieldType = GF_SG_VRML_MFVEC2F;
27091 4 : info->far_ptr = & ((M_PositionAnimator2D *) node)->keyValue;
27092 4 : return GF_OK;
27093 4 : case 7:
27094 4 : info->name = "keyValueType";
27095 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27096 4 : info->fieldType = GF_SG_VRML_SFINT32;
27097 4 : info->far_ptr = & ((M_PositionAnimator2D *) node)->keyValueType;
27098 4 : return GF_OK;
27099 2 : case 8:
27100 2 : info->name = "offset";
27101 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27102 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
27103 2 : info->far_ptr = & ((M_PositionAnimator2D *) node)->offset;
27104 2 : return GF_OK;
27105 2 : case 9:
27106 2 : info->name = "weight";
27107 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27108 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
27109 2 : info->far_ptr = & ((M_PositionAnimator2D *) node)->weight;
27110 2 : return GF_OK;
27111 2 : case 10:
27112 2 : info->name = "endValue";
27113 2 : info->eventType = GF_SG_EVENT_OUT;
27114 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
27115 2 : info->far_ptr = & ((M_PositionAnimator2D *) node)->endValue;
27116 2 : return GF_OK;
27117 2 : case 11:
27118 2 : info->name = "rotation_changed";
27119 2 : info->eventType = GF_SG_EVENT_OUT;
27120 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
27121 2 : info->far_ptr = & ((M_PositionAnimator2D *) node)->rotation_changed;
27122 2 : return GF_OK;
27123 6 : case 12:
27124 6 : info->name = "value_changed";
27125 6 : info->eventType = GF_SG_EVENT_OUT;
27126 6 : info->fieldType = GF_SG_VRML_SFVEC2F;
27127 6 : info->far_ptr = & ((M_PositionAnimator2D *) node)->value_changed;
27128 6 : return GF_OK;
27129 : default:
27130 : return GF_BAD_PARAM;
27131 : }
27132 : }
27133 :
27134 :
27135 27 : static s32 PositionAnimator2D_get_field_index_by_name(char *name)
27136 : {
27137 27 : if (!strcmp("set_fraction", name)) return 0;
27138 24 : if (!strcmp("fromTo", name)) return 1;
27139 23 : if (!strcmp("key", name)) return 2;
27140 20 : if (!strcmp("keyOrientation", name)) return 3;
27141 19 : if (!strcmp("keyType", name)) return 4;
27142 16 : if (!strcmp("keySpline", name)) return 5;
27143 13 : if (!strcmp("keyValue", name)) return 6;
27144 10 : if (!strcmp("keyValueType", name)) return 7;
27145 7 : if (!strcmp("offset", name)) return 8;
27146 6 : if (!strcmp("weight", name)) return 9;
27147 5 : if (!strcmp("endValue", name)) return 10;
27148 4 : if (!strcmp("rotation_changed", name)) return 11;
27149 3 : if (!strcmp("value_changed", name)) return 12;
27150 0 : return -1;
27151 : }
27152 : static Bool PositionAnimator2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
27153 : {
27154 13 : switch (FieldIndex) {
27155 1 : case 1:
27156 1 : *AType = 0;
27157 1 : *QType = 8;
27158 : return 1;
27159 1 : case 2:
27160 1 : *AType = 0;
27161 1 : *QType = 8;
27162 : return 1;
27163 1 : case 5:
27164 1 : *AType = 0;
27165 1 : *QType = 8;
27166 : return 1;
27167 1 : case 6:
27168 1 : *AType = 0;
27169 1 : *QType = 4;
27170 : return 1;
27171 1 : case 8:
27172 1 : *AType = 0;
27173 1 : *QType = 2;
27174 1 : *b_min = FIX_MIN;
27175 1 : *b_max = FIX_MAX;
27176 : return 1;
27177 : default:
27178 : return 0;
27179 : }
27180 : }
27181 :
27182 :
27183 :
27184 3 : GF_Node *PositionAnimator2D_Create()
27185 : {
27186 : M_PositionAnimator2D *p;
27187 3 : GF_SAFEALLOC(p, M_PositionAnimator2D);
27188 3 : if(!p) return NULL;
27189 3 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionAnimator2D);
27190 :
27191 : /*default field values*/
27192 3 : p->fromTo.x = FLT2FIX(0);
27193 3 : p->fromTo.y = FLT2FIX(1);
27194 3 : p->keyOrientation = 0;
27195 3 : p->keyType = 0;
27196 3 : p->keySpline.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
27197 3 : p->keySpline.count = 2;
27198 3 : p->keySpline.vals[0].x = FLT2FIX(0);
27199 3 : p->keySpline.vals[0].y = FLT2FIX(0);
27200 3 : p->keySpline.vals[1].x = FLT2FIX(1);
27201 3 : p->keySpline.vals[1].y = FLT2FIX(1);
27202 3 : p->keyValueType = 0;
27203 3 : p->offset.x = FLT2FIX(0);
27204 3 : p->offset.y = FLT2FIX(0);
27205 3 : return (GF_Node *)p;
27206 : }
27207 :
27208 :
27209 : /*
27210 : PositionInterpolator4D Node deletion
27211 : */
27212 :
27213 2 : static void PositionInterpolator4D_Del(GF_Node *node)
27214 : {
27215 : M_PositionInterpolator4D *p = (M_PositionInterpolator4D *) node;
27216 2 : gf_sg_mffloat_del(p->key);
27217 2 : gf_sg_mfvec4f_del(p->keyValue);
27218 2 : gf_node_free((GF_Node *) p);
27219 2 : }
27220 :
27221 : static const u16 PositionInterpolator4D_Def2All[] = { 1, 2};
27222 : static const u16 PositionInterpolator4D_In2All[] = { 0, 1, 2};
27223 : static const u16 PositionInterpolator4D_Out2All[] = { 1, 2, 3};
27224 :
27225 : static u32 PositionInterpolator4D_get_field_count(GF_Node *node, u8 IndexMode)
27226 : {
27227 : switch(IndexMode) {
27228 : case GF_SG_FIELD_CODING_IN:
27229 : return 3;
27230 : case GF_SG_FIELD_CODING_DEF:
27231 : return 2;
27232 : case GF_SG_FIELD_CODING_OUT:
27233 : return 3;
27234 : case GF_SG_FIELD_CODING_DYN:
27235 : return 0;
27236 : default:
27237 : return 4;
27238 : }
27239 : }
27240 :
27241 : static GF_Err PositionInterpolator4D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
27242 : {
27243 4 : switch(IndexMode) {
27244 0 : case GF_SG_FIELD_CODING_IN:
27245 0 : *allField = PositionInterpolator4D_In2All[inField];
27246 : return GF_OK;
27247 0 : case GF_SG_FIELD_CODING_DEF:
27248 0 : *allField = PositionInterpolator4D_Def2All[inField];
27249 : return GF_OK;
27250 0 : case GF_SG_FIELD_CODING_OUT:
27251 0 : *allField = PositionInterpolator4D_Out2All[inField];
27252 : return GF_OK;
27253 : default:
27254 : return GF_BAD_PARAM;
27255 : }
27256 : }
27257 12 : static GF_Err PositionInterpolator4D_get_field(GF_Node *node, GF_FieldInfo *info)
27258 : {
27259 12 : switch (info->fieldIndex) {
27260 4 : case 0:
27261 4 : info->name = "set_fraction";
27262 4 : info->eventType = GF_SG_EVENT_IN;
27263 4 : info->on_event_in = ((M_PositionInterpolator4D *)node)->on_set_fraction;
27264 4 : info->fieldType = GF_SG_VRML_SFFLOAT;
27265 4 : info->far_ptr = & ((M_PositionInterpolator4D *) node)->set_fraction;
27266 4 : return GF_OK;
27267 3 : case 1:
27268 3 : info->name = "key";
27269 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27270 3 : info->fieldType = GF_SG_VRML_MFFLOAT;
27271 3 : info->far_ptr = & ((M_PositionInterpolator4D *) node)->key;
27272 3 : return GF_OK;
27273 3 : case 2:
27274 3 : info->name = "keyValue";
27275 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27276 3 : info->fieldType = GF_SG_VRML_MFVEC4F;
27277 3 : info->far_ptr = & ((M_PositionInterpolator4D *) node)->keyValue;
27278 3 : return GF_OK;
27279 2 : case 3:
27280 2 : info->name = "value_changed";
27281 2 : info->eventType = GF_SG_EVENT_OUT;
27282 2 : info->fieldType = GF_SG_VRML_SFVEC4F;
27283 2 : info->far_ptr = & ((M_PositionInterpolator4D *) node)->value_changed;
27284 2 : return GF_OK;
27285 : default:
27286 : return GF_BAD_PARAM;
27287 : }
27288 : }
27289 :
27290 :
27291 7 : static s32 PositionInterpolator4D_get_field_index_by_name(char *name)
27292 : {
27293 7 : if (!strcmp("set_fraction", name)) return 0;
27294 5 : if (!strcmp("key", name)) return 1;
27295 3 : if (!strcmp("keyValue", name)) return 2;
27296 1 : if (!strcmp("value_changed", name)) return 3;
27297 0 : return -1;
27298 : }
27299 : static Bool PositionInterpolator4D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
27300 : {
27301 4 : switch (FieldIndex) {
27302 1 : case 1:
27303 1 : *AType = 0;
27304 1 : *QType = 8;
27305 1 : *b_min = FLT2FIX(0);
27306 1 : *b_max = FLT2FIX(1);
27307 : return 1;
27308 1 : case 2:
27309 1 : *AType = 0;
27310 1 : *QType = 15;
27311 1 : *b_min = FIX_MIN;
27312 1 : *b_max = FIX_MAX;
27313 : return 1;
27314 : default:
27315 : return 0;
27316 : }
27317 : }
27318 :
27319 :
27320 :
27321 2 : GF_Node *PositionInterpolator4D_Create()
27322 : {
27323 : M_PositionInterpolator4D *p;
27324 2 : GF_SAFEALLOC(p, M_PositionInterpolator4D);
27325 2 : if(!p) return NULL;
27326 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionInterpolator4D);
27327 :
27328 : /*default field values*/
27329 2 : return (GF_Node *)p;
27330 : }
27331 :
27332 :
27333 : /*
27334 : ProceduralTexture Node deletion
27335 : */
27336 :
27337 1 : static void ProceduralTexture_Del(GF_Node *node)
27338 : {
27339 : M_ProceduralTexture *p = (M_ProceduralTexture *) node;
27340 1 : gf_sg_mfvec2f_del(p->aWarpmap);
27341 1 : gf_sg_mffloat_del(p->aWeights);
27342 1 : gf_sg_mfvec2f_del(p->bWarpmap);
27343 1 : gf_sg_mffloat_del(p->bWeights);
27344 1 : gf_sg_mfcolor_del(p->color);
27345 1 : gf_sg_mfvec2f_del(p->xWarpmap);
27346 1 : gf_sg_mfvec2f_del(p->yWarpmap);
27347 1 : gf_sg_sfimage_del(p->image_changed);
27348 1 : gf_node_free((GF_Node *) p);
27349 1 : }
27350 :
27351 : static const u16 ProceduralTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
27352 : static const u16 ProceduralTexture_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
27353 : static const u16 ProceduralTexture_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19};
27354 :
27355 : static u32 ProceduralTexture_get_field_count(GF_Node *node, u8 IndexMode)
27356 : {
27357 : switch(IndexMode) {
27358 : case GF_SG_FIELD_CODING_IN:
27359 : return 19;
27360 : case GF_SG_FIELD_CODING_DEF:
27361 : return 19;
27362 : case GF_SG_FIELD_CODING_OUT:
27363 : return 20;
27364 : case GF_SG_FIELD_CODING_DYN:
27365 : return 0;
27366 : default:
27367 : return 20;
27368 : }
27369 : }
27370 :
27371 : static GF_Err ProceduralTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
27372 : {
27373 20 : switch(IndexMode) {
27374 0 : case GF_SG_FIELD_CODING_IN:
27375 0 : *allField = ProceduralTexture_In2All[inField];
27376 : return GF_OK;
27377 0 : case GF_SG_FIELD_CODING_DEF:
27378 0 : *allField = ProceduralTexture_Def2All[inField];
27379 : return GF_OK;
27380 0 : case GF_SG_FIELD_CODING_OUT:
27381 0 : *allField = ProceduralTexture_Out2All[inField];
27382 : return GF_OK;
27383 : default:
27384 : return GF_BAD_PARAM;
27385 : }
27386 : }
27387 40 : static GF_Err ProceduralTexture_get_field(GF_Node *node, GF_FieldInfo *info)
27388 : {
27389 40 : switch (info->fieldIndex) {
27390 2 : case 0:
27391 2 : info->name = "aSmooth";
27392 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27393 2 : info->fieldType = GF_SG_VRML_SFBOOL;
27394 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->aSmooth;
27395 2 : return GF_OK;
27396 2 : case 1:
27397 2 : info->name = "aWarpmap";
27398 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27399 2 : info->fieldType = GF_SG_VRML_MFVEC2F;
27400 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->aWarpmap;
27401 2 : return GF_OK;
27402 2 : case 2:
27403 2 : info->name = "aWeights";
27404 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27405 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
27406 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->aWeights;
27407 2 : return GF_OK;
27408 2 : case 3:
27409 2 : info->name = "bSmooth";
27410 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27411 2 : info->fieldType = GF_SG_VRML_SFBOOL;
27412 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->bSmooth;
27413 2 : return GF_OK;
27414 2 : case 4:
27415 2 : info->name = "bWarpmap";
27416 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27417 2 : info->fieldType = GF_SG_VRML_MFVEC2F;
27418 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->bWarpmap;
27419 2 : return GF_OK;
27420 2 : case 5:
27421 2 : info->name = "bWeights";
27422 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27423 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
27424 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->bWeights;
27425 2 : return GF_OK;
27426 2 : case 6:
27427 2 : info->name = "cellWidth";
27428 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27429 2 : info->fieldType = GF_SG_VRML_SFINT32;
27430 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->cellWidth;
27431 2 : return GF_OK;
27432 2 : case 7:
27433 2 : info->name = "cellHeight";
27434 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27435 2 : info->fieldType = GF_SG_VRML_SFINT32;
27436 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->cellHeight;
27437 2 : return GF_OK;
27438 2 : case 8:
27439 2 : info->name = "color";
27440 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27441 2 : info->fieldType = GF_SG_VRML_MFCOLOR;
27442 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->color;
27443 2 : return GF_OK;
27444 2 : case 9:
27445 2 : info->name = "distortion";
27446 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27447 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
27448 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->distortion;
27449 2 : return GF_OK;
27450 2 : case 10:
27451 2 : info->name = "height";
27452 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27453 2 : info->fieldType = GF_SG_VRML_SFINT32;
27454 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->height;
27455 2 : return GF_OK;
27456 2 : case 11:
27457 2 : info->name = "roughness";
27458 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27459 2 : info->fieldType = GF_SG_VRML_SFINT32;
27460 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->roughness;
27461 2 : return GF_OK;
27462 2 : case 12:
27463 2 : info->name = "seed";
27464 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27465 2 : info->fieldType = GF_SG_VRML_SFINT32;
27466 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->seed;
27467 2 : return GF_OK;
27468 2 : case 13:
27469 2 : info->name = "type";
27470 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27471 2 : info->fieldType = GF_SG_VRML_SFINT32;
27472 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->type;
27473 2 : return GF_OK;
27474 2 : case 14:
27475 2 : info->name = "xSmooth";
27476 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27477 2 : info->fieldType = GF_SG_VRML_SFBOOL;
27478 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->xSmooth;
27479 2 : return GF_OK;
27480 2 : case 15:
27481 2 : info->name = "xWarpmap";
27482 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27483 2 : info->fieldType = GF_SG_VRML_MFVEC2F;
27484 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->xWarpmap;
27485 2 : return GF_OK;
27486 2 : case 16:
27487 2 : info->name = "ySmooth";
27488 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27489 2 : info->fieldType = GF_SG_VRML_SFBOOL;
27490 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->ySmooth;
27491 2 : return GF_OK;
27492 2 : case 17:
27493 2 : info->name = "yWarpmap";
27494 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27495 2 : info->fieldType = GF_SG_VRML_MFVEC2F;
27496 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->yWarpmap;
27497 2 : return GF_OK;
27498 2 : case 18:
27499 2 : info->name = "width";
27500 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27501 2 : info->fieldType = GF_SG_VRML_SFINT32;
27502 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->width;
27503 2 : return GF_OK;
27504 2 : case 19:
27505 2 : info->name = "image_changed";
27506 2 : info->eventType = GF_SG_EVENT_OUT;
27507 2 : info->fieldType = GF_SG_VRML_SFIMAGE;
27508 2 : info->far_ptr = & ((M_ProceduralTexture *) node)->image_changed;
27509 2 : return GF_OK;
27510 : default:
27511 : return GF_BAD_PARAM;
27512 : }
27513 : }
27514 :
27515 :
27516 20 : static s32 ProceduralTexture_get_field_index_by_name(char *name)
27517 : {
27518 20 : if (!strcmp("aSmooth", name)) return 0;
27519 19 : if (!strcmp("aWarpmap", name)) return 1;
27520 18 : if (!strcmp("aWeights", name)) return 2;
27521 17 : if (!strcmp("bSmooth", name)) return 3;
27522 16 : if (!strcmp("bWarpmap", name)) return 4;
27523 15 : if (!strcmp("bWeights", name)) return 5;
27524 14 : if (!strcmp("cellWidth", name)) return 6;
27525 13 : if (!strcmp("cellHeight", name)) return 7;
27526 12 : if (!strcmp("color", name)) return 8;
27527 11 : if (!strcmp("distortion", name)) return 9;
27528 10 : if (!strcmp("height", name)) return 10;
27529 9 : if (!strcmp("roughness", name)) return 11;
27530 8 : if (!strcmp("seed", name)) return 12;
27531 7 : if (!strcmp("type", name)) return 13;
27532 6 : if (!strcmp("xSmooth", name)) return 14;
27533 5 : if (!strcmp("xWarpmap", name)) return 15;
27534 4 : if (!strcmp("ySmooth", name)) return 16;
27535 3 : if (!strcmp("yWarpmap", name)) return 17;
27536 2 : if (!strcmp("width", name)) return 18;
27537 1 : if (!strcmp("image_changed", name)) return 19;
27538 0 : return -1;
27539 : }
27540 20 : static Bool ProceduralTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
27541 : {
27542 20 : switch (FieldIndex) {
27543 1 : case 1:
27544 1 : *AType = 0;
27545 1 : *QType = 2;
27546 1 : *b_min = FLT2FIX(0);
27547 1 : *b_max = FLT2FIX(1);
27548 : return 1;
27549 1 : case 4:
27550 1 : *AType = 0;
27551 1 : *QType = 2;
27552 1 : *b_min = FLT2FIX(0);
27553 1 : *b_max = FLT2FIX( 1);
27554 : return 1;
27555 1 : case 6:
27556 1 : *AType = 0;
27557 1 : *QType = 13;
27558 1 : *QT13_bits = 4;
27559 1 : *b_min = FLT2FIX(0);
27560 1 : *b_max = FLT2FIX(15);
27561 : return 1;
27562 1 : case 7:
27563 1 : *AType = 0;
27564 1 : *QType = 13;
27565 1 : *QT13_bits = 4;
27566 1 : *b_min = FLT2FIX(0);
27567 1 : *b_max = FLT2FIX(15);
27568 : return 1;
27569 1 : case 8:
27570 1 : *AType = 0;
27571 1 : *QType = 4;
27572 : return 1;
27573 1 : case 9:
27574 1 : *AType = 0;
27575 1 : *QType = 13;
27576 1 : *QT13_bits = 16;
27577 1 : *b_min = FLT2FIX(0);
27578 1 : *b_max = FLT2FIX(1);
27579 : return 1;
27580 1 : case 10:
27581 1 : *AType = 0;
27582 1 : *QType = 13;
27583 1 : *QT13_bits = 4;
27584 1 : *b_min = FLT2FIX(1);
27585 1 : *b_max = FLT2FIX(15);
27586 : return 1;
27587 1 : case 11:
27588 1 : *AType = 0;
27589 1 : *QType = 13;
27590 1 : *QT13_bits = 4;
27591 1 : *b_min = FLT2FIX(0);
27592 1 : *b_max = FLT2FIX(15);
27593 : return 1;
27594 1 : case 13:
27595 1 : *AType = 0;
27596 1 : *QType = 13;
27597 1 : *QT13_bits = 3;
27598 1 : *b_min = FLT2FIX(0);
27599 1 : *b_max = FLT2FIX(4);
27600 : return 1;
27601 1 : case 15:
27602 1 : *AType = 0;
27603 1 : *QType = 2;
27604 1 : *b_min = FLT2FIX(0);
27605 1 : *b_max = FLT2FIX(1);
27606 : return 1;
27607 1 : case 17:
27608 1 : *AType = 0;
27609 1 : *QType = 2;
27610 1 : *b_min = FLT2FIX(0);
27611 1 : *b_max = FLT2FIX(1);
27612 : return 1;
27613 1 : case 18:
27614 1 : *AType = 0;
27615 1 : *QType = 13;
27616 1 : *QT13_bits = 4;
27617 1 : *b_min = FLT2FIX(1);
27618 1 : *b_max = FLT2FIX(15);
27619 : return 1;
27620 : default:
27621 : return 0;
27622 : }
27623 : }
27624 :
27625 :
27626 :
27627 1 : GF_Node *ProceduralTexture_Create()
27628 : {
27629 : M_ProceduralTexture *p;
27630 1 : GF_SAFEALLOC(p, M_ProceduralTexture);
27631 1 : if(!p) return NULL;
27632 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ProceduralTexture);
27633 :
27634 : /*default field values*/
27635 1 : p->aWarpmap.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
27636 1 : p->aWarpmap.count = 2;
27637 1 : p->aWarpmap.vals[0].x = FLT2FIX(0);
27638 1 : p->aWarpmap.vals[0].y = FLT2FIX(0);
27639 1 : p->aWarpmap.vals[1].x = FLT2FIX(1);
27640 1 : p->aWarpmap.vals[1].y = FLT2FIX(1);
27641 1 : p->aWeights.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*16);
27642 1 : p->aWeights.count = 16;
27643 1 : p->aWeights.vals[0] = FLT2FIX(0);
27644 1 : p->aWeights.vals[1] = FLT2FIX(0);
27645 1 : p->aWeights.vals[2] = FLT2FIX(0);
27646 1 : p->aWeights.vals[3] = FLT2FIX(0);
27647 1 : p->aWeights.vals[4] = FLT2FIX(0);
27648 1 : p->aWeights.vals[5] = FLT2FIX(0);
27649 1 : p->aWeights.vals[6] = FLT2FIX(0);
27650 1 : p->aWeights.vals[7] = FLT2FIX(0);
27651 1 : p->aWeights.vals[8] = FLT2FIX(0);
27652 1 : p->aWeights.vals[9] = FLT2FIX(0);
27653 1 : p->aWeights.vals[10] = FLT2FIX(0);
27654 1 : p->aWeights.vals[11] = FLT2FIX(0);
27655 1 : p->aWeights.vals[12] = FLT2FIX(1);
27656 1 : p->aWeights.vals[13] = FLT2FIX(0);
27657 1 : p->aWeights.vals[14] = FLT2FIX(0);
27658 1 : p->aWeights.vals[15] = FLT2FIX(0);
27659 1 : p->bWarpmap.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
27660 1 : p->bWarpmap.count = 2;
27661 1 : p->bWarpmap.vals[0].x = FLT2FIX(0);
27662 1 : p->bWarpmap.vals[0].y = FLT2FIX(0);
27663 1 : p->bWarpmap.vals[1].x = FLT2FIX(1);
27664 1 : p->bWarpmap.vals[1].y = FLT2FIX(1);
27665 1 : p->bWeights.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*16);
27666 1 : p->bWeights.count = 16;
27667 1 : p->bWeights.vals[0] = FLT2FIX(0);
27668 1 : p->bWeights.vals[1] = FLT2FIX(0);
27669 1 : p->bWeights.vals[2] = FLT2FIX(0);
27670 1 : p->bWeights.vals[3] = FLT2FIX(0);
27671 1 : p->bWeights.vals[4] = FLT2FIX(0);
27672 1 : p->bWeights.vals[5] = FLT2FIX(1);
27673 1 : p->bWeights.vals[6] = FLT2FIX(0);
27674 1 : p->bWeights.vals[7] = FLT2FIX(0);
27675 1 : p->bWeights.vals[8] = FLT2FIX(0);
27676 1 : p->bWeights.vals[9] = FLT2FIX(0);
27677 1 : p->bWeights.vals[10] = FLT2FIX(0);
27678 1 : p->bWeights.vals[11] = FLT2FIX(0);
27679 1 : p->bWeights.vals[12] = FLT2FIX(0);
27680 1 : p->bWeights.vals[13] = FLT2FIX(0);
27681 1 : p->bWeights.vals[14] = FLT2FIX(0);
27682 1 : p->bWeights.vals[15] = FLT2FIX(0);
27683 1 : p->cellWidth = 4;
27684 1 : p->cellHeight = 4;
27685 1 : p->color.vals = (SFColor*)gf_malloc(sizeof(SFColor)*4);
27686 1 : p->color.count = 4;
27687 1 : p->color.vals[0].red = FLT2FIX(0.3);
27688 1 : p->color.vals[0].green = FLT2FIX(0.698);
27689 1 : p->color.vals[0].blue = FLT2FIX(1);
27690 1 : p->color.vals[1].red = FLT2FIX(0.8);
27691 1 : p->color.vals[1].green = FLT2FIX(0.8);
27692 1 : p->color.vals[1].blue = FLT2FIX(0.8);
27693 1 : p->color.vals[2].red = FLT2FIX(1);
27694 1 : p->color.vals[2].green = FLT2FIX(1);
27695 1 : p->color.vals[2].blue = FLT2FIX(1);
27696 1 : p->color.vals[3].red = FLT2FIX(0);
27697 1 : p->color.vals[3].green = FLT2FIX(0);
27698 1 : p->color.vals[3].blue = FLT2FIX(0);
27699 1 : p->distortion = FLT2FIX(0);
27700 1 : p->height = 7;
27701 1 : p->roughness = 0;
27702 1 : p->seed = 129093;
27703 1 : p->type = 0;
27704 1 : p->width = 7;
27705 1 : return (GF_Node *)p;
27706 : }
27707 :
27708 :
27709 : /*
27710 : Quadric Node deletion
27711 : */
27712 :
27713 : static void Quadric_Del(GF_Node *node)
27714 : {
27715 : M_Quadric *p = (M_Quadric *) node;
27716 1 : gf_sg_mfint32_del(p->densities);
27717 1 : gf_node_free((GF_Node *) p);
27718 : }
27719 :
27720 : static const u16 Quadric_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
27721 : static const u16 Quadric_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
27722 : static const u16 Quadric_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
27723 : static const u16 Quadric_Dyn2All[] = { 0, 3, 4, 5, 6, 7, 8};
27724 :
27725 : static u32 Quadric_get_field_count(GF_Node *node, u8 IndexMode)
27726 : {
27727 6 : switch(IndexMode) {
27728 : case GF_SG_FIELD_CODING_IN:
27729 : return 10;
27730 : case GF_SG_FIELD_CODING_DEF:
27731 : return 10;
27732 : case GF_SG_FIELD_CODING_OUT:
27733 : return 10;
27734 1 : case GF_SG_FIELD_CODING_DYN:
27735 : return 7;
27736 : default:
27737 : return 10;
27738 : }
27739 : }
27740 :
27741 : static GF_Err Quadric_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
27742 : {
27743 10 : switch(IndexMode) {
27744 0 : case GF_SG_FIELD_CODING_IN:
27745 0 : *allField = Quadric_In2All[inField];
27746 : return GF_OK;
27747 0 : case GF_SG_FIELD_CODING_DEF:
27748 0 : *allField = Quadric_Def2All[inField];
27749 : return GF_OK;
27750 0 : case GF_SG_FIELD_CODING_OUT:
27751 0 : *allField = Quadric_Out2All[inField];
27752 : return GF_OK;
27753 0 : case GF_SG_FIELD_CODING_DYN:
27754 0 : *allField = Quadric_Dyn2All[inField];
27755 : return GF_OK;
27756 : default:
27757 : return GF_BAD_PARAM;
27758 : }
27759 : }
27760 20 : static GF_Err Quadric_get_field(GF_Node *node, GF_FieldInfo *info)
27761 : {
27762 20 : switch (info->fieldIndex) {
27763 2 : case 0:
27764 2 : info->name = "bboxSize";
27765 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27766 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
27767 2 : info->far_ptr = & ((M_Quadric *) node)->bboxSize;
27768 2 : return GF_OK;
27769 2 : case 1:
27770 2 : info->name = "densities";
27771 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27772 2 : info->fieldType = GF_SG_VRML_MFINT32;
27773 2 : info->far_ptr = & ((M_Quadric *) node)->densities;
27774 2 : return GF_OK;
27775 2 : case 2:
27776 2 : info->name = "dual";
27777 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27778 2 : info->fieldType = GF_SG_VRML_SFBOOL;
27779 2 : info->far_ptr = & ((M_Quadric *) node)->dual;
27780 2 : return GF_OK;
27781 2 : case 3:
27782 2 : info->name = "P0";
27783 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27784 2 : info->fieldType = GF_SG_VRML_SFVEC4F;
27785 2 : info->far_ptr = & ((M_Quadric *) node)->P0;
27786 2 : return GF_OK;
27787 2 : case 4:
27788 2 : info->name = "P1";
27789 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27790 2 : info->fieldType = GF_SG_VRML_SFVEC4F;
27791 2 : info->far_ptr = & ((M_Quadric *) node)->P1;
27792 2 : return GF_OK;
27793 2 : case 5:
27794 2 : info->name = "P2";
27795 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27796 2 : info->fieldType = GF_SG_VRML_SFVEC4F;
27797 2 : info->far_ptr = & ((M_Quadric *) node)->P2;
27798 2 : return GF_OK;
27799 2 : case 6:
27800 2 : info->name = "P3";
27801 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27802 2 : info->fieldType = GF_SG_VRML_SFVEC4F;
27803 2 : info->far_ptr = & ((M_Quadric *) node)->P3;
27804 2 : return GF_OK;
27805 2 : case 7:
27806 2 : info->name = "P4";
27807 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27808 2 : info->fieldType = GF_SG_VRML_SFVEC4F;
27809 2 : info->far_ptr = & ((M_Quadric *) node)->P4;
27810 2 : return GF_OK;
27811 2 : case 8:
27812 2 : info->name = "P5";
27813 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27814 2 : info->fieldType = GF_SG_VRML_SFVEC4F;
27815 2 : info->far_ptr = & ((M_Quadric *) node)->P5;
27816 2 : return GF_OK;
27817 2 : case 9:
27818 2 : info->name = "solid";
27819 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
27820 2 : info->fieldType = GF_SG_VRML_SFBOOL;
27821 2 : info->far_ptr = & ((M_Quadric *) node)->solid;
27822 2 : return GF_OK;
27823 : default:
27824 : return GF_BAD_PARAM;
27825 : }
27826 : }
27827 :
27828 :
27829 10 : static s32 Quadric_get_field_index_by_name(char *name)
27830 : {
27831 10 : if (!strcmp("bboxSize", name)) return 0;
27832 9 : if (!strcmp("densities", name)) return 1;
27833 8 : if (!strcmp("dual", name)) return 2;
27834 7 : if (!strcmp("P0", name)) return 3;
27835 6 : if (!strcmp("P1", name)) return 4;
27836 5 : if (!strcmp("P2", name)) return 5;
27837 4 : if (!strcmp("P3", name)) return 6;
27838 3 : if (!strcmp("P4", name)) return 7;
27839 2 : if (!strcmp("P5", name)) return 8;
27840 1 : if (!strcmp("solid", name)) return 9;
27841 0 : return -1;
27842 : }
27843 10 : static Bool Quadric_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
27844 : {
27845 10 : switch (FieldIndex) {
27846 1 : case 0:
27847 1 : *AType = 11;
27848 1 : *QType = 11;
27849 1 : *b_min = FLT2FIX(0);
27850 1 : *b_max = FIX_MAX;
27851 : return 1;
27852 1 : case 3:
27853 1 : *AType = 15;
27854 1 : *QType = 15;
27855 1 : *b_min = FIX_MIN;
27856 1 : *b_max = FIX_MAX;
27857 : return 1;
27858 1 : case 4:
27859 1 : *AType = 15;
27860 1 : *QType = 15;
27861 1 : *b_min = FIX_MIN;
27862 1 : *b_max = FIX_MAX;
27863 : return 1;
27864 1 : case 5:
27865 1 : *AType = 15;
27866 1 : *QType = 15;
27867 1 : *b_min = FIX_MIN;
27868 1 : *b_max = FIX_MAX;
27869 : return 1;
27870 1 : case 6:
27871 1 : *AType = 15;
27872 1 : *QType = 15;
27873 1 : *b_min = FIX_MIN;
27874 1 : *b_max = FIX_MAX;
27875 : return 1;
27876 1 : case 7:
27877 1 : *AType = 15;
27878 1 : *QType = 15;
27879 1 : *b_min = FIX_MIN;
27880 1 : *b_max = FIX_MAX;
27881 : return 1;
27882 1 : case 8:
27883 1 : *AType = 15;
27884 1 : *QType = 15;
27885 1 : *b_min = FIX_MIN;
27886 1 : *b_max = FIX_MAX;
27887 : return 1;
27888 : default:
27889 : return 0;
27890 : }
27891 : }
27892 :
27893 :
27894 :
27895 1 : GF_Node *Quadric_Create()
27896 : {
27897 : M_Quadric *p;
27898 1 : GF_SAFEALLOC(p, M_Quadric);
27899 1 : if(!p) return NULL;
27900 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Quadric);
27901 :
27902 : /*default field values*/
27903 1 : p->bboxSize.x = FLT2FIX(2);
27904 1 : p->bboxSize.y = FLT2FIX(2);
27905 1 : p->bboxSize.z = FLT2FIX(2);
27906 1 : p->P0.x = FLT2FIX(-1);
27907 1 : p->P0.y = FLT2FIX(0);
27908 1 : p->P0.z = FLT2FIX(0);
27909 1 : p->P0.q = FLT2FIX(1);
27910 1 : p->P1.x = FLT2FIX(1);
27911 1 : p->P1.y = FLT2FIX(0);
27912 1 : p->P1.z = FLT2FIX(0);
27913 1 : p->P1.q = FLT2FIX(1);
27914 1 : p->P2.x = FLT2FIX(0);
27915 1 : p->P2.y = FLT2FIX(1);
27916 1 : p->P2.z = FLT2FIX(0);
27917 1 : p->P2.q = FLT2FIX(0);
27918 1 : p->P3.x = FLT2FIX(0);
27919 1 : p->P3.y = FLT2FIX(0);
27920 1 : p->P3.z = FLT2FIX(1);
27921 1 : p->P3.q = FLT2FIX(0);
27922 1 : p->P4.x = FLT2FIX(0);
27923 1 : p->P4.y = FLT2FIX(1);
27924 1 : p->P4.z = FLT2FIX(0);
27925 1 : p->P4.q = FLT2FIX(1);
27926 1 : p->P5.x = FLT2FIX(0);
27927 1 : p->P5.y = FLT2FIX(0);
27928 1 : p->P5.z = FLT2FIX(1);
27929 1 : p->P5.q = FLT2FIX(1);
27930 1 : return (GF_Node *)p;
27931 : }
27932 :
27933 :
27934 : /*
27935 : SBBone Node deletion
27936 : */
27937 :
27938 1 : static void SBBone_Del(GF_Node *node)
27939 : {
27940 : M_SBBone *p = (M_SBBone *) node;
27941 1 : gf_sg_mffloat_del(p->ikPitchLimit);
27942 1 : gf_sg_mffloat_del(p->ikRollLimit);
27943 1 : gf_sg_mffloat_del(p->ikTxLimit);
27944 1 : gf_sg_mffloat_del(p->ikTyLimit);
27945 1 : gf_sg_mffloat_del(p->ikTzLimit);
27946 1 : gf_sg_mffloat_del(p->ikYawLimit);
27947 1 : gf_sg_mffloat_del(p->sectionInner);
27948 1 : gf_sg_mffloat_del(p->sectionOuter);
27949 1 : gf_sg_mffloat_del(p->sectionPosition);
27950 1 : gf_sg_mfint32_del(p->skinCoordIndex);
27951 1 : gf_sg_mffloat_del(p->skinCoordWeight);
27952 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
27953 1 : gf_node_free((GF_Node *) p);
27954 1 : }
27955 :
27956 : static const u16 SBBone_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
27957 : static const u16 SBBone_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
27958 : static const u16 SBBone_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23};
27959 : static const u16 SBBone_Dyn2All[] = { 3, 5, 14, 16, 17, 23};
27960 :
27961 : static u32 SBBone_get_field_count(GF_Node *node, u8 IndexMode)
27962 : {
27963 : switch(IndexMode) {
27964 : case GF_SG_FIELD_CODING_IN:
27965 : return 24;
27966 : case GF_SG_FIELD_CODING_DEF:
27967 : return 22;
27968 : case GF_SG_FIELD_CODING_OUT:
27969 : return 22;
27970 : case GF_SG_FIELD_CODING_DYN:
27971 : return 6;
27972 : default:
27973 : return 24;
27974 : }
27975 : }
27976 :
27977 : static GF_Err SBBone_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
27978 : {
27979 24 : switch(IndexMode) {
27980 0 : case GF_SG_FIELD_CODING_IN:
27981 0 : *allField = SBBone_In2All[inField];
27982 : return GF_OK;
27983 0 : case GF_SG_FIELD_CODING_DEF:
27984 0 : *allField = SBBone_Def2All[inField];
27985 : return GF_OK;
27986 0 : case GF_SG_FIELD_CODING_OUT:
27987 0 : *allField = SBBone_Out2All[inField];
27988 : return GF_OK;
27989 0 : case GF_SG_FIELD_CODING_DYN:
27990 0 : *allField = SBBone_Dyn2All[inField];
27991 : return GF_OK;
27992 : default:
27993 : return GF_BAD_PARAM;
27994 : }
27995 : }
27996 48 : static GF_Err SBBone_get_field(GF_Node *node, GF_FieldInfo *info)
27997 : {
27998 48 : switch (info->fieldIndex) {
27999 2 : case 0:
28000 2 : info->name = "addChildren";
28001 2 : info->eventType = GF_SG_EVENT_IN;
28002 2 : info->on_event_in = ((M_SBBone *)node)->on_addChildren;
28003 2 : info->fieldType = GF_SG_VRML_SFNODE;
28004 2 : info->NDTtype = NDT_SF3DNode;
28005 2 : info->far_ptr = & ((M_SBBone *)node)->addChildren;
28006 2 : return GF_OK;
28007 2 : case 1:
28008 2 : info->name = "removeChildren";
28009 2 : info->eventType = GF_SG_EVENT_IN;
28010 2 : info->on_event_in = ((M_SBBone *)node)->on_removeChildren;
28011 2 : info->fieldType = GF_SG_VRML_SFNODE;
28012 2 : info->NDTtype = NDT_SF3DNode;
28013 2 : info->far_ptr = & ((M_SBBone *)node)->removeChildren;
28014 2 : return GF_OK;
28015 2 : case 2:
28016 2 : info->name = "boneID";
28017 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28018 2 : info->fieldType = GF_SG_VRML_SFINT32;
28019 2 : info->far_ptr = & ((M_SBBone *) node)->boneID;
28020 2 : return GF_OK;
28021 2 : case 3:
28022 2 : info->name = "center";
28023 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28024 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28025 2 : info->far_ptr = & ((M_SBBone *) node)->center;
28026 2 : return GF_OK;
28027 2 : case 4:
28028 2 : info->name = "children";
28029 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28030 2 : info->fieldType = GF_SG_VRML_MFNODE;
28031 2 : info->NDTtype = NDT_SF3DNode;
28032 2 : info->far_ptr = & ((M_SBBone *)node)->children;
28033 2 : return GF_OK;
28034 2 : case 5:
28035 2 : info->name = "endpoint";
28036 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28037 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28038 2 : info->far_ptr = & ((M_SBBone *) node)->endpoint;
28039 2 : return GF_OK;
28040 2 : case 6:
28041 2 : info->name = "falloff";
28042 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28043 2 : info->fieldType = GF_SG_VRML_SFINT32;
28044 2 : info->far_ptr = & ((M_SBBone *) node)->falloff;
28045 2 : return GF_OK;
28046 2 : case 7:
28047 2 : info->name = "ikChainPosition";
28048 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28049 2 : info->fieldType = GF_SG_VRML_SFINT32;
28050 2 : info->far_ptr = & ((M_SBBone *) node)->ikChainPosition;
28051 2 : return GF_OK;
28052 2 : case 8:
28053 2 : info->name = "ikPitchLimit";
28054 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28055 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28056 2 : info->far_ptr = & ((M_SBBone *) node)->ikPitchLimit;
28057 2 : return GF_OK;
28058 2 : case 9:
28059 2 : info->name = "ikRollLimit";
28060 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28061 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28062 2 : info->far_ptr = & ((M_SBBone *) node)->ikRollLimit;
28063 2 : return GF_OK;
28064 2 : case 10:
28065 2 : info->name = "ikTxLimit";
28066 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28067 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28068 2 : info->far_ptr = & ((M_SBBone *) node)->ikTxLimit;
28069 2 : return GF_OK;
28070 2 : case 11:
28071 2 : info->name = "ikTyLimit";
28072 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28073 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28074 2 : info->far_ptr = & ((M_SBBone *) node)->ikTyLimit;
28075 2 : return GF_OK;
28076 2 : case 12:
28077 2 : info->name = "ikTzLimit";
28078 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28079 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28080 2 : info->far_ptr = & ((M_SBBone *) node)->ikTzLimit;
28081 2 : return GF_OK;
28082 2 : case 13:
28083 2 : info->name = "ikYawLimit";
28084 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28085 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28086 2 : info->far_ptr = & ((M_SBBone *) node)->ikYawLimit;
28087 2 : return GF_OK;
28088 2 : case 14:
28089 2 : info->name = "rotation";
28090 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28091 2 : info->fieldType = GF_SG_VRML_SFROTATION;
28092 2 : info->far_ptr = & ((M_SBBone *) node)->rotation;
28093 2 : return GF_OK;
28094 2 : case 15:
28095 2 : info->name = "rotationOrder";
28096 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28097 2 : info->fieldType = GF_SG_VRML_SFINT32;
28098 2 : info->far_ptr = & ((M_SBBone *) node)->rotationOrder;
28099 2 : return GF_OK;
28100 2 : case 16:
28101 2 : info->name = "scale";
28102 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28103 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28104 2 : info->far_ptr = & ((M_SBBone *) node)->scale;
28105 2 : return GF_OK;
28106 2 : case 17:
28107 2 : info->name = "scaleOrientation";
28108 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28109 2 : info->fieldType = GF_SG_VRML_SFROTATION;
28110 2 : info->far_ptr = & ((M_SBBone *) node)->scaleOrientation;
28111 2 : return GF_OK;
28112 2 : case 18:
28113 2 : info->name = "sectionInner";
28114 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28115 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28116 2 : info->far_ptr = & ((M_SBBone *) node)->sectionInner;
28117 2 : return GF_OK;
28118 2 : case 19:
28119 2 : info->name = "sectionOuter";
28120 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28121 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28122 2 : info->far_ptr = & ((M_SBBone *) node)->sectionOuter;
28123 2 : return GF_OK;
28124 2 : case 20:
28125 2 : info->name = "sectionPosition";
28126 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28127 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28128 2 : info->far_ptr = & ((M_SBBone *) node)->sectionPosition;
28129 2 : return GF_OK;
28130 2 : case 21:
28131 2 : info->name = "skinCoordIndex";
28132 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28133 2 : info->fieldType = GF_SG_VRML_MFINT32;
28134 2 : info->far_ptr = & ((M_SBBone *) node)->skinCoordIndex;
28135 2 : return GF_OK;
28136 2 : case 22:
28137 2 : info->name = "skinCoordWeight";
28138 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28139 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28140 2 : info->far_ptr = & ((M_SBBone *) node)->skinCoordWeight;
28141 2 : return GF_OK;
28142 2 : case 23:
28143 2 : info->name = "translation";
28144 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28145 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28146 2 : info->far_ptr = & ((M_SBBone *) node)->translation;
28147 2 : return GF_OK;
28148 : default:
28149 : return GF_BAD_PARAM;
28150 : }
28151 : }
28152 :
28153 :
28154 24 : static s32 SBBone_get_field_index_by_name(char *name)
28155 : {
28156 24 : if (!strcmp("addChildren", name)) return 0;
28157 23 : if (!strcmp("removeChildren", name)) return 1;
28158 22 : if (!strcmp("boneID", name)) return 2;
28159 21 : if (!strcmp("center", name)) return 3;
28160 20 : if (!strcmp("children", name)) return 4;
28161 19 : if (!strcmp("endpoint", name)) return 5;
28162 18 : if (!strcmp("falloff", name)) return 6;
28163 17 : if (!strcmp("ikChainPosition", name)) return 7;
28164 16 : if (!strcmp("ikPitchLimit", name)) return 8;
28165 15 : if (!strcmp("ikRollLimit", name)) return 9;
28166 14 : if (!strcmp("ikTxLimit", name)) return 10;
28167 13 : if (!strcmp("ikTyLimit", name)) return 11;
28168 12 : if (!strcmp("ikTzLimit", name)) return 12;
28169 11 : if (!strcmp("ikYawLimit", name)) return 13;
28170 10 : if (!strcmp("rotation", name)) return 14;
28171 9 : if (!strcmp("rotationOrder", name)) return 15;
28172 8 : if (!strcmp("scale", name)) return 16;
28173 7 : if (!strcmp("scaleOrientation", name)) return 17;
28174 6 : if (!strcmp("sectionInner", name)) return 18;
28175 5 : if (!strcmp("sectionOuter", name)) return 19;
28176 4 : if (!strcmp("sectionPosition", name)) return 20;
28177 3 : if (!strcmp("skinCoordIndex", name)) return 21;
28178 2 : if (!strcmp("skinCoordWeight", name)) return 22;
28179 1 : if (!strcmp("translation", name)) return 23;
28180 0 : return -1;
28181 : }
28182 24 : static Bool SBBone_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
28183 : {
28184 24 : switch (FieldIndex) {
28185 1 : case 2:
28186 1 : *AType = 0;
28187 1 : *QType = 13;
28188 1 : *QT13_bits = 10;
28189 1 : *b_min = FLT2FIX(0);
28190 1 : *b_max = FLT2FIX(1023);
28191 : return 1;
28192 1 : case 3:
28193 1 : *AType = 1;
28194 1 : *QType = 1;
28195 : return 1;
28196 1 : case 5:
28197 1 : *AType = 1;
28198 1 : *QType = 1;
28199 : return 1;
28200 1 : case 6:
28201 1 : *AType = 0;
28202 1 : *QType = 13;
28203 1 : *QT13_bits = 3;
28204 1 : *b_min = FLT2FIX(-1);
28205 1 : *b_max = FLT2FIX(4);
28206 : return 1;
28207 1 : case 7:
28208 1 : *AType = 0;
28209 1 : *QType = 13;
28210 1 : *QT13_bits = 2;
28211 1 : *b_min = FLT2FIX(0);
28212 1 : *b_max = FLT2FIX(3);
28213 : return 1;
28214 1 : case 14:
28215 1 : *AType = 10;
28216 1 : *QType = 10;
28217 : return 1;
28218 1 : case 15:
28219 1 : *AType = 0;
28220 1 : *QType = 13;
28221 1 : *QT13_bits = 5;
28222 1 : *b_min = FLT2FIX(0);
28223 1 : *b_max = FLT2FIX(23);
28224 : return 1;
28225 1 : case 16:
28226 1 : *AType = 11;
28227 1 : *QType = 7;
28228 : return 1;
28229 1 : case 17:
28230 1 : *AType = 10;
28231 1 : *QType = 10;
28232 : return 1;
28233 1 : case 21:
28234 1 : *AType = 0;
28235 1 : *QType = 14;
28236 : return 1;
28237 1 : case 23:
28238 1 : *AType = 1;
28239 1 : *QType = 1;
28240 : return 1;
28241 : default:
28242 : return 0;
28243 : }
28244 : }
28245 :
28246 :
28247 :
28248 1 : GF_Node *SBBone_Create()
28249 : {
28250 : M_SBBone *p;
28251 1 : GF_SAFEALLOC(p, M_SBBone);
28252 1 : if(!p) return NULL;
28253 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBBone);
28254 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
28255 :
28256 : /*default field values*/
28257 1 : p->boneID = 0;
28258 1 : p->center.x = FLT2FIX(0);
28259 1 : p->center.y = FLT2FIX(0);
28260 1 : p->center.z = FLT2FIX(0);
28261 1 : p->endpoint.x = FLT2FIX(0);
28262 1 : p->endpoint.y = FLT2FIX(0);
28263 1 : p->endpoint.z = FLT2FIX(1);
28264 1 : p->falloff = 1;
28265 1 : p->ikChainPosition = 0;
28266 1 : p->rotation.x = FLT2FIX(0);
28267 1 : p->rotation.y = FLT2FIX(0);
28268 1 : p->rotation.z = FLT2FIX(1);
28269 1 : p->rotation.q = FLT2FIX(0);
28270 1 : p->rotationOrder = 0;
28271 1 : p->scale.x = FLT2FIX(0);
28272 1 : p->scale.y = FLT2FIX(0);
28273 1 : p->scale.z = FLT2FIX(0);
28274 1 : p->scaleOrientation.x = FLT2FIX(0);
28275 1 : p->scaleOrientation.y = FLT2FIX(0);
28276 1 : p->scaleOrientation.z = FLT2FIX(1);
28277 1 : p->scaleOrientation.q = FLT2FIX(0);
28278 1 : p->translation.x = FLT2FIX(0);
28279 1 : p->translation.y = FLT2FIX(0);
28280 1 : p->translation.z = FLT2FIX(0);
28281 1 : return (GF_Node *)p;
28282 : }
28283 :
28284 :
28285 : /*
28286 : SBMuscle Node deletion
28287 : */
28288 :
28289 1 : static void SBMuscle_Del(GF_Node *node)
28290 : {
28291 : M_SBMuscle *p = (M_SBMuscle *) node;
28292 1 : gf_node_unregister((GF_Node *) p->muscleCurve, (GF_Node *) p);
28293 1 : gf_sg_mfint32_del(p->skinCoordIndex);
28294 1 : gf_sg_mffloat_del(p->skinCoordWeight);
28295 1 : gf_node_free((GF_Node *) p);
28296 1 : }
28297 :
28298 : static const u16 SBMuscle_Def2All[] = { 0, 1, 2, 3, 4, 5};
28299 : static const u16 SBMuscle_In2All[] = { 0, 1, 2, 3, 4, 5};
28300 : static const u16 SBMuscle_Out2All[] = { 0, 1, 2, 3, 4, 5};
28301 : static const u16 SBMuscle_Dyn2All[] = { 3};
28302 :
28303 : static u32 SBMuscle_get_field_count(GF_Node *node, u8 IndexMode)
28304 : {
28305 6 : switch(IndexMode) {
28306 : case GF_SG_FIELD_CODING_IN:
28307 : return 6;
28308 : case GF_SG_FIELD_CODING_DEF:
28309 : return 6;
28310 : case GF_SG_FIELD_CODING_OUT:
28311 : return 6;
28312 1 : case GF_SG_FIELD_CODING_DYN:
28313 : return 1;
28314 : default:
28315 : return 6;
28316 : }
28317 : }
28318 :
28319 : static GF_Err SBMuscle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
28320 : {
28321 6 : switch(IndexMode) {
28322 0 : case GF_SG_FIELD_CODING_IN:
28323 0 : *allField = SBMuscle_In2All[inField];
28324 : return GF_OK;
28325 0 : case GF_SG_FIELD_CODING_DEF:
28326 0 : *allField = SBMuscle_Def2All[inField];
28327 : return GF_OK;
28328 0 : case GF_SG_FIELD_CODING_OUT:
28329 0 : *allField = SBMuscle_Out2All[inField];
28330 : return GF_OK;
28331 0 : case GF_SG_FIELD_CODING_DYN:
28332 0 : *allField = SBMuscle_Dyn2All[inField];
28333 : return GF_OK;
28334 : default:
28335 : return GF_BAD_PARAM;
28336 : }
28337 : }
28338 12 : static GF_Err SBMuscle_get_field(GF_Node *node, GF_FieldInfo *info)
28339 : {
28340 12 : switch (info->fieldIndex) {
28341 2 : case 0:
28342 2 : info->name = "falloff";
28343 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28344 2 : info->fieldType = GF_SG_VRML_SFINT32;
28345 2 : info->far_ptr = & ((M_SBMuscle *) node)->falloff;
28346 2 : return GF_OK;
28347 2 : case 1:
28348 2 : info->name = "muscleCurve";
28349 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28350 2 : info->fieldType = GF_SG_VRML_SFNODE;
28351 2 : info->NDTtype = NDT_SFGeometryNode;
28352 2 : info->far_ptr = & ((M_SBMuscle *)node)->muscleCurve;
28353 2 : return GF_OK;
28354 2 : case 2:
28355 2 : info->name = "muscleID";
28356 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28357 2 : info->fieldType = GF_SG_VRML_SFINT32;
28358 2 : info->far_ptr = & ((M_SBMuscle *) node)->muscleID;
28359 2 : return GF_OK;
28360 2 : case 3:
28361 2 : info->name = "radius";
28362 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28363 2 : info->fieldType = GF_SG_VRML_SFINT32;
28364 2 : info->far_ptr = & ((M_SBMuscle *) node)->radius;
28365 2 : return GF_OK;
28366 2 : case 4:
28367 2 : info->name = "skinCoordIndex";
28368 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28369 2 : info->fieldType = GF_SG_VRML_MFINT32;
28370 2 : info->far_ptr = & ((M_SBMuscle *) node)->skinCoordIndex;
28371 2 : return GF_OK;
28372 2 : case 5:
28373 2 : info->name = "skinCoordWeight";
28374 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28375 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
28376 2 : info->far_ptr = & ((M_SBMuscle *) node)->skinCoordWeight;
28377 2 : return GF_OK;
28378 : default:
28379 : return GF_BAD_PARAM;
28380 : }
28381 : }
28382 :
28383 :
28384 6 : static s32 SBMuscle_get_field_index_by_name(char *name)
28385 : {
28386 6 : if (!strcmp("falloff", name)) return 0;
28387 5 : if (!strcmp("muscleCurve", name)) return 1;
28388 4 : if (!strcmp("muscleID", name)) return 2;
28389 3 : if (!strcmp("radius", name)) return 3;
28390 2 : if (!strcmp("skinCoordIndex", name)) return 4;
28391 1 : if (!strcmp("skinCoordWeight", name)) return 5;
28392 0 : return -1;
28393 : }
28394 : static Bool SBMuscle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
28395 : {
28396 6 : switch (FieldIndex) {
28397 1 : case 0:
28398 1 : *AType = 0;
28399 1 : *QType = 13;
28400 1 : *QT13_bits = 3;
28401 1 : *b_min = FLT2FIX(-1);
28402 1 : *b_max = FLT2FIX(4);
28403 : return 1;
28404 1 : case 2:
28405 1 : *AType = 0;
28406 1 : *QType = 13;
28407 1 : *QT13_bits = 10;
28408 1 : *b_min = FLT2FIX(0);
28409 1 : *b_max = FLT2FIX(1023);
28410 : return 1;
28411 1 : case 3:
28412 1 : *AType = 11;
28413 1 : *QType = 7;
28414 : return 1;
28415 1 : case 4:
28416 1 : *AType = 0;
28417 1 : *QType = 14;
28418 1 : *b_min = FLT2FIX(0);
28419 1 : *b_max = FIX_MAX;
28420 : return 1;
28421 : default:
28422 : return 0;
28423 : }
28424 : }
28425 :
28426 :
28427 :
28428 1 : GF_Node *SBMuscle_Create()
28429 : {
28430 : M_SBMuscle *p;
28431 1 : GF_SAFEALLOC(p, M_SBMuscle);
28432 1 : if(!p) return NULL;
28433 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBMuscle);
28434 :
28435 : /*default field values*/
28436 1 : p->falloff = 1;
28437 1 : p->muscleID = 0;
28438 1 : p->radius = 1;
28439 1 : return (GF_Node *)p;
28440 : }
28441 :
28442 :
28443 : /*
28444 : SBSegment Node deletion
28445 : */
28446 :
28447 1 : static void SBSegment_Del(GF_Node *node)
28448 : {
28449 : M_SBSegment *p = (M_SBSegment *) node;
28450 1 : gf_sg_mfvec3f_del(p->momentsOfInertia);
28451 1 : gf_sg_sfstring_del(p->name);
28452 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
28453 1 : gf_node_free((GF_Node *) p);
28454 1 : }
28455 :
28456 : static const u16 SBSegment_Def2All[] = { 2, 3, 4, 5, 6};
28457 : static const u16 SBSegment_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
28458 : static const u16 SBSegment_Out2All[] = { 2, 3, 4, 5, 6};
28459 : static const u16 SBSegment_Dyn2All[] = { 2};
28460 :
28461 : static u32 SBSegment_get_field_count(GF_Node *node, u8 IndexMode)
28462 : {
28463 : switch(IndexMode) {
28464 : case GF_SG_FIELD_CODING_IN:
28465 : return 7;
28466 : case GF_SG_FIELD_CODING_DEF:
28467 : return 5;
28468 : case GF_SG_FIELD_CODING_OUT:
28469 : return 5;
28470 : case GF_SG_FIELD_CODING_DYN:
28471 : return 1;
28472 : default:
28473 : return 7;
28474 : }
28475 : }
28476 :
28477 : static GF_Err SBSegment_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
28478 : {
28479 7 : switch(IndexMode) {
28480 0 : case GF_SG_FIELD_CODING_IN:
28481 0 : *allField = SBSegment_In2All[inField];
28482 : return GF_OK;
28483 0 : case GF_SG_FIELD_CODING_DEF:
28484 0 : *allField = SBSegment_Def2All[inField];
28485 : return GF_OK;
28486 0 : case GF_SG_FIELD_CODING_OUT:
28487 0 : *allField = SBSegment_Out2All[inField];
28488 : return GF_OK;
28489 0 : case GF_SG_FIELD_CODING_DYN:
28490 0 : *allField = SBSegment_Dyn2All[inField];
28491 : return GF_OK;
28492 : default:
28493 : return GF_BAD_PARAM;
28494 : }
28495 : }
28496 14 : static GF_Err SBSegment_get_field(GF_Node *node, GF_FieldInfo *info)
28497 : {
28498 14 : switch (info->fieldIndex) {
28499 2 : case 0:
28500 2 : info->name = "addChildren";
28501 2 : info->eventType = GF_SG_EVENT_IN;
28502 2 : info->on_event_in = ((M_SBSegment *)node)->on_addChildren;
28503 2 : info->fieldType = GF_SG_VRML_MFNODE;
28504 2 : info->NDTtype = NDT_SF3DNode;
28505 2 : info->far_ptr = & ((M_SBSegment *)node)->addChildren;
28506 2 : return GF_OK;
28507 2 : case 1:
28508 2 : info->name = "removeChildren";
28509 2 : info->eventType = GF_SG_EVENT_IN;
28510 2 : info->on_event_in = ((M_SBSegment *)node)->on_removeChildren;
28511 2 : info->fieldType = GF_SG_VRML_MFNODE;
28512 2 : info->NDTtype = NDT_SF3DNode;
28513 2 : info->far_ptr = & ((M_SBSegment *)node)->removeChildren;
28514 2 : return GF_OK;
28515 2 : case 2:
28516 2 : info->name = "centerOfMass";
28517 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28518 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28519 2 : info->far_ptr = & ((M_SBSegment *) node)->centerOfMass;
28520 2 : return GF_OK;
28521 2 : case 3:
28522 2 : info->name = "children";
28523 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28524 2 : info->fieldType = GF_SG_VRML_MFNODE;
28525 2 : info->NDTtype = NDT_SF3DNode;
28526 2 : info->far_ptr = & ((M_SBSegment *)node)->children;
28527 2 : return GF_OK;
28528 2 : case 4:
28529 2 : info->name = "mass";
28530 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28531 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
28532 2 : info->far_ptr = & ((M_SBSegment *) node)->mass;
28533 2 : return GF_OK;
28534 2 : case 5:
28535 2 : info->name = "momentsOfInertia";
28536 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28537 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
28538 2 : info->far_ptr = & ((M_SBSegment *) node)->momentsOfInertia;
28539 2 : return GF_OK;
28540 2 : case 6:
28541 2 : info->name = "name";
28542 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28543 2 : info->fieldType = GF_SG_VRML_SFSTRING;
28544 2 : info->far_ptr = & ((M_SBSegment *) node)->name;
28545 2 : return GF_OK;
28546 : default:
28547 : return GF_BAD_PARAM;
28548 : }
28549 : }
28550 :
28551 :
28552 7 : static s32 SBSegment_get_field_index_by_name(char *name)
28553 : {
28554 7 : if (!strcmp("addChildren", name)) return 0;
28555 6 : if (!strcmp("removeChildren", name)) return 1;
28556 5 : if (!strcmp("centerOfMass", name)) return 2;
28557 4 : if (!strcmp("children", name)) return 3;
28558 3 : if (!strcmp("mass", name)) return 4;
28559 2 : if (!strcmp("momentsOfInertia", name)) return 5;
28560 1 : if (!strcmp("name", name)) return 6;
28561 0 : return -1;
28562 : }
28563 : static Bool SBSegment_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
28564 : {
28565 7 : switch (FieldIndex) {
28566 1 : case 2:
28567 1 : *AType = 1;
28568 1 : *QType = 1;
28569 : return 1;
28570 : default:
28571 : return 0;
28572 : }
28573 : }
28574 :
28575 :
28576 :
28577 1 : GF_Node *SBSegment_Create()
28578 : {
28579 : M_SBSegment *p;
28580 1 : GF_SAFEALLOC(p, M_SBSegment);
28581 1 : if(!p) return NULL;
28582 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBSegment);
28583 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
28584 :
28585 : /*default field values*/
28586 1 : p->centerOfMass.x = FLT2FIX(0);
28587 1 : p->centerOfMass.y = FLT2FIX(0);
28588 1 : p->centerOfMass.z = FLT2FIX(0);
28589 1 : p->mass = FLT2FIX(0);
28590 1 : p->momentsOfInertia.vals = (SFVec3f *)gf_malloc(sizeof(SFVec3f)*3);
28591 1 : p->momentsOfInertia.count = 3;
28592 1 : p->momentsOfInertia.vals[0].x = FLT2FIX(0);
28593 1 : p->momentsOfInertia.vals[0].y = FLT2FIX(0);
28594 1 : p->momentsOfInertia.vals[0].z = FLT2FIX(0);
28595 1 : p->momentsOfInertia.vals[1].x = FLT2FIX(0);
28596 1 : p->momentsOfInertia.vals[1].y = FLT2FIX(0);
28597 1 : p->momentsOfInertia.vals[1].z = FLT2FIX(0);
28598 1 : p->momentsOfInertia.vals[2].x = FLT2FIX(0);
28599 1 : p->momentsOfInertia.vals[2].y = FLT2FIX(0);
28600 1 : p->momentsOfInertia.vals[2].z = FLT2FIX(0);
28601 1 : return (GF_Node *)p;
28602 : }
28603 :
28604 :
28605 : /*
28606 : SBSite Node deletion
28607 : */
28608 :
28609 1 : static void SBSite_Del(GF_Node *node)
28610 : {
28611 : M_SBSite *p = (M_SBSite *) node;
28612 1 : gf_sg_sfstring_del(p->name);
28613 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
28614 1 : gf_node_free((GF_Node *) p);
28615 1 : }
28616 :
28617 : static const u16 SBSite_Def2All[] = { 2, 3, 4, 5, 6, 7, 8};
28618 : static const u16 SBSite_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
28619 : static const u16 SBSite_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
28620 : static const u16 SBSite_Dyn2All[] = { 2, 5, 6, 7, 8};
28621 :
28622 : static u32 SBSite_get_field_count(GF_Node *node, u8 IndexMode)
28623 : {
28624 : switch(IndexMode) {
28625 : case GF_SG_FIELD_CODING_IN:
28626 : return 9;
28627 : case GF_SG_FIELD_CODING_DEF:
28628 : return 7;
28629 : case GF_SG_FIELD_CODING_OUT:
28630 : return 7;
28631 : case GF_SG_FIELD_CODING_DYN:
28632 : return 5;
28633 : default:
28634 : return 9;
28635 : }
28636 : }
28637 :
28638 : static GF_Err SBSite_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
28639 : {
28640 9 : switch(IndexMode) {
28641 0 : case GF_SG_FIELD_CODING_IN:
28642 0 : *allField = SBSite_In2All[inField];
28643 : return GF_OK;
28644 0 : case GF_SG_FIELD_CODING_DEF:
28645 0 : *allField = SBSite_Def2All[inField];
28646 : return GF_OK;
28647 0 : case GF_SG_FIELD_CODING_OUT:
28648 0 : *allField = SBSite_Out2All[inField];
28649 : return GF_OK;
28650 0 : case GF_SG_FIELD_CODING_DYN:
28651 0 : *allField = SBSite_Dyn2All[inField];
28652 : return GF_OK;
28653 : default:
28654 : return GF_BAD_PARAM;
28655 : }
28656 : }
28657 18 : static GF_Err SBSite_get_field(GF_Node *node, GF_FieldInfo *info)
28658 : {
28659 18 : switch (info->fieldIndex) {
28660 2 : case 0:
28661 2 : info->name = "addChildren";
28662 2 : info->eventType = GF_SG_EVENT_IN;
28663 2 : info->on_event_in = ((M_SBSite *)node)->on_addChildren;
28664 2 : info->fieldType = GF_SG_VRML_MFNODE;
28665 2 : info->NDTtype = NDT_SF3DNode;
28666 2 : info->far_ptr = & ((M_SBSite *)node)->addChildren;
28667 2 : return GF_OK;
28668 2 : case 1:
28669 2 : info->name = "removeChildren";
28670 2 : info->eventType = GF_SG_EVENT_IN;
28671 2 : info->on_event_in = ((M_SBSite *)node)->on_removeChildren;
28672 2 : info->fieldType = GF_SG_VRML_MFNODE;
28673 2 : info->NDTtype = NDT_SF3DNode;
28674 2 : info->far_ptr = & ((M_SBSite *)node)->removeChildren;
28675 2 : return GF_OK;
28676 2 : case 2:
28677 2 : info->name = "center";
28678 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28679 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28680 2 : info->far_ptr = & ((M_SBSite *) node)->center;
28681 2 : return GF_OK;
28682 2 : case 3:
28683 2 : info->name = "children";
28684 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28685 2 : info->fieldType = GF_SG_VRML_MFNODE;
28686 2 : info->NDTtype = NDT_SF3DNode;
28687 2 : info->far_ptr = & ((M_SBSite *)node)->children;
28688 2 : return GF_OK;
28689 2 : case 4:
28690 2 : info->name = "name";
28691 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28692 2 : info->fieldType = GF_SG_VRML_SFSTRING;
28693 2 : info->far_ptr = & ((M_SBSite *) node)->name;
28694 2 : return GF_OK;
28695 2 : case 5:
28696 2 : info->name = "rotation";
28697 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28698 2 : info->fieldType = GF_SG_VRML_SFROTATION;
28699 2 : info->far_ptr = & ((M_SBSite *) node)->rotation;
28700 2 : return GF_OK;
28701 2 : case 6:
28702 2 : info->name = "scale";
28703 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28704 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28705 2 : info->far_ptr = & ((M_SBSite *) node)->scale;
28706 2 : return GF_OK;
28707 2 : case 7:
28708 2 : info->name = "scaleOrientation";
28709 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28710 2 : info->fieldType = GF_SG_VRML_SFROTATION;
28711 2 : info->far_ptr = & ((M_SBSite *) node)->scaleOrientation;
28712 2 : return GF_OK;
28713 2 : case 8:
28714 2 : info->name = "translation";
28715 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28716 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28717 2 : info->far_ptr = & ((M_SBSite *) node)->translation;
28718 2 : return GF_OK;
28719 : default:
28720 : return GF_BAD_PARAM;
28721 : }
28722 : }
28723 :
28724 :
28725 9 : static s32 SBSite_get_field_index_by_name(char *name)
28726 : {
28727 9 : if (!strcmp("addChildren", name)) return 0;
28728 8 : if (!strcmp("removeChildren", name)) return 1;
28729 7 : if (!strcmp("center", name)) return 2;
28730 6 : if (!strcmp("children", name)) return 3;
28731 5 : if (!strcmp("name", name)) return 4;
28732 4 : if (!strcmp("rotation", name)) return 5;
28733 3 : if (!strcmp("scale", name)) return 6;
28734 2 : if (!strcmp("scaleOrientation", name)) return 7;
28735 1 : if (!strcmp("translation", name)) return 8;
28736 0 : return -1;
28737 : }
28738 : static Bool SBSite_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
28739 : {
28740 9 : switch (FieldIndex) {
28741 1 : case 2:
28742 1 : *AType = 1;
28743 1 : *QType = 1;
28744 : return 1;
28745 1 : case 5:
28746 1 : *AType = 10;
28747 1 : *QType = 10;
28748 : return 1;
28749 1 : case 6:
28750 1 : *AType = 11;
28751 1 : *QType = 7;
28752 : return 1;
28753 1 : case 7:
28754 1 : *AType = 10;
28755 1 : *QType = 10;
28756 : return 1;
28757 1 : case 8:
28758 1 : *AType = 1;
28759 1 : *QType = 1;
28760 : return 1;
28761 : default:
28762 : return 0;
28763 : }
28764 : }
28765 :
28766 :
28767 :
28768 1 : GF_Node *SBSite_Create()
28769 : {
28770 : M_SBSite *p;
28771 1 : GF_SAFEALLOC(p, M_SBSite);
28772 1 : if(!p) return NULL;
28773 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBSite);
28774 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
28775 :
28776 : /*default field values*/
28777 1 : p->center.x = FLT2FIX(0);
28778 1 : p->center.y = FLT2FIX(0);
28779 1 : p->center.z = FLT2FIX(0);
28780 1 : p->rotation.x = FLT2FIX(0);
28781 1 : p->rotation.y = FLT2FIX(0);
28782 1 : p->rotation.z = FLT2FIX(1);
28783 1 : p->rotation.q = FLT2FIX(0);
28784 1 : p->scale.x = FLT2FIX(1);
28785 1 : p->scale.y = FLT2FIX(1);
28786 1 : p->scale.z = FLT2FIX(1);
28787 1 : p->scaleOrientation.x = FLT2FIX(0);
28788 1 : p->scaleOrientation.y = FLT2FIX(0);
28789 1 : p->scaleOrientation.z = FLT2FIX(1);
28790 1 : p->scaleOrientation.q = FLT2FIX(0);
28791 1 : p->translation.x = FLT2FIX(0);
28792 1 : p->translation.y = FLT2FIX(0);
28793 1 : p->translation.z = FLT2FIX(0);
28794 1 : return (GF_Node *)p;
28795 : }
28796 :
28797 :
28798 : /*
28799 : SBSkinnedModel Node deletion
28800 : */
28801 :
28802 1 : static void SBSkinnedModel_Del(GF_Node *node)
28803 : {
28804 : M_SBSkinnedModel *p = (M_SBSkinnedModel *) node;
28805 1 : gf_node_unregister_children((GF_Node *) p, p->bones);
28806 1 : gf_node_unregister_children((GF_Node *) p, p->muscles);
28807 1 : gf_sg_sfstring_del(p->name);
28808 1 : gf_node_unregister_children((GF_Node *) p, p->segments);
28809 1 : gf_node_unregister_children((GF_Node *) p, p->sites);
28810 1 : gf_node_unregister_children((GF_Node *) p, p->skeleton);
28811 1 : gf_node_unregister_children((GF_Node *) p, p->skin);
28812 1 : gf_node_unregister((GF_Node *) p->skinCoord, (GF_Node *) p);
28813 1 : gf_node_unregister((GF_Node *) p->skinNormal, (GF_Node *) p);
28814 1 : gf_node_unregister((GF_Node *) p->weighsComputationSkinCoord, (GF_Node *) p);
28815 1 : gf_node_free((GF_Node *) p);
28816 1 : }
28817 :
28818 : static const u16 SBSkinnedModel_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
28819 : static const u16 SBSkinnedModel_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
28820 : static const u16 SBSkinnedModel_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
28821 : static const u16 SBSkinnedModel_Dyn2All[] = { 1, 4, 6, 7, 13};
28822 :
28823 : static u32 SBSkinnedModel_get_field_count(GF_Node *node, u8 IndexMode)
28824 : {
28825 6 : switch(IndexMode) {
28826 : case GF_SG_FIELD_CODING_IN:
28827 : return 15;
28828 : case GF_SG_FIELD_CODING_DEF:
28829 : return 15;
28830 : case GF_SG_FIELD_CODING_OUT:
28831 : return 15;
28832 1 : case GF_SG_FIELD_CODING_DYN:
28833 : return 5;
28834 : default:
28835 : return 15;
28836 : }
28837 : }
28838 :
28839 : static GF_Err SBSkinnedModel_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
28840 : {
28841 15 : switch(IndexMode) {
28842 0 : case GF_SG_FIELD_CODING_IN:
28843 0 : *allField = SBSkinnedModel_In2All[inField];
28844 : return GF_OK;
28845 0 : case GF_SG_FIELD_CODING_DEF:
28846 0 : *allField = SBSkinnedModel_Def2All[inField];
28847 : return GF_OK;
28848 0 : case GF_SG_FIELD_CODING_OUT:
28849 0 : *allField = SBSkinnedModel_Out2All[inField];
28850 : return GF_OK;
28851 0 : case GF_SG_FIELD_CODING_DYN:
28852 0 : *allField = SBSkinnedModel_Dyn2All[inField];
28853 : return GF_OK;
28854 : default:
28855 : return GF_BAD_PARAM;
28856 : }
28857 : }
28858 30 : static GF_Err SBSkinnedModel_get_field(GF_Node *node, GF_FieldInfo *info)
28859 : {
28860 30 : switch (info->fieldIndex) {
28861 2 : case 0:
28862 2 : info->name = "bones";
28863 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28864 2 : info->fieldType = GF_SG_VRML_MFNODE;
28865 2 : info->NDTtype = NDT_SFSBBoneNode;
28866 2 : info->far_ptr = & ((M_SBSkinnedModel *)node)->bones;
28867 2 : return GF_OK;
28868 2 : case 1:
28869 2 : info->name = "center";
28870 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28871 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28872 2 : info->far_ptr = & ((M_SBSkinnedModel *) node)->center;
28873 2 : return GF_OK;
28874 2 : case 2:
28875 2 : info->name = "muscles";
28876 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28877 2 : info->fieldType = GF_SG_VRML_MFNODE;
28878 2 : info->NDTtype = NDT_SFSBMuscleNode;
28879 2 : info->far_ptr = & ((M_SBSkinnedModel *)node)->muscles;
28880 2 : return GF_OK;
28881 2 : case 3:
28882 2 : info->name = "name";
28883 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28884 2 : info->fieldType = GF_SG_VRML_SFSTRING;
28885 2 : info->far_ptr = & ((M_SBSkinnedModel *) node)->name;
28886 2 : return GF_OK;
28887 2 : case 4:
28888 2 : info->name = "rotation";
28889 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28890 2 : info->fieldType = GF_SG_VRML_SFROTATION;
28891 2 : info->far_ptr = & ((M_SBSkinnedModel *) node)->rotation;
28892 2 : return GF_OK;
28893 2 : case 5:
28894 2 : info->name = "segments";
28895 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28896 2 : info->fieldType = GF_SG_VRML_MFNODE;
28897 2 : info->NDTtype = NDT_SFSBSegmentNode;
28898 2 : info->far_ptr = & ((M_SBSkinnedModel *)node)->segments;
28899 2 : return GF_OK;
28900 2 : case 6:
28901 2 : info->name = "scale";
28902 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28903 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28904 2 : info->far_ptr = & ((M_SBSkinnedModel *) node)->scale;
28905 2 : return GF_OK;
28906 2 : case 7:
28907 2 : info->name = "scaleOrientation";
28908 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28909 2 : info->fieldType = GF_SG_VRML_SFROTATION;
28910 2 : info->far_ptr = & ((M_SBSkinnedModel *) node)->scaleOrientation;
28911 2 : return GF_OK;
28912 2 : case 8:
28913 2 : info->name = "sites";
28914 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28915 2 : info->fieldType = GF_SG_VRML_MFNODE;
28916 2 : info->NDTtype = NDT_SFSBSiteNode;
28917 2 : info->far_ptr = & ((M_SBSkinnedModel *)node)->sites;
28918 2 : return GF_OK;
28919 2 : case 9:
28920 2 : info->name = "skeleton";
28921 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28922 2 : info->fieldType = GF_SG_VRML_MFNODE;
28923 2 : info->NDTtype = NDT_SF3DNode;
28924 2 : info->far_ptr = & ((M_SBSkinnedModel *)node)->skeleton;
28925 2 : return GF_OK;
28926 2 : case 10:
28927 2 : info->name = "skin";
28928 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28929 2 : info->fieldType = GF_SG_VRML_MFNODE;
28930 2 : info->NDTtype = NDT_SF3DNode;
28931 2 : info->far_ptr = & ((M_SBSkinnedModel *)node)->skin;
28932 2 : return GF_OK;
28933 2 : case 11:
28934 2 : info->name = "skinCoord";
28935 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28936 2 : info->fieldType = GF_SG_VRML_SFNODE;
28937 2 : info->NDTtype = NDT_SFCoordinateNode;
28938 2 : info->far_ptr = & ((M_SBSkinnedModel *)node)->skinCoord;
28939 2 : return GF_OK;
28940 2 : case 12:
28941 2 : info->name = "skinNormal";
28942 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28943 2 : info->fieldType = GF_SG_VRML_SFNODE;
28944 2 : info->NDTtype = NDT_SFNormalNode;
28945 2 : info->far_ptr = & ((M_SBSkinnedModel *)node)->skinNormal;
28946 2 : return GF_OK;
28947 2 : case 13:
28948 2 : info->name = "translation";
28949 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28950 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
28951 2 : info->far_ptr = & ((M_SBSkinnedModel *) node)->translation;
28952 2 : return GF_OK;
28953 2 : case 14:
28954 2 : info->name = "weighsComputationSkinCoord";
28955 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
28956 2 : info->fieldType = GF_SG_VRML_SFNODE;
28957 2 : info->NDTtype = NDT_SF3DNode;
28958 2 : info->far_ptr = & ((M_SBSkinnedModel *)node)->weighsComputationSkinCoord;
28959 2 : return GF_OK;
28960 : default:
28961 : return GF_BAD_PARAM;
28962 : }
28963 : }
28964 :
28965 :
28966 15 : static s32 SBSkinnedModel_get_field_index_by_name(char *name)
28967 : {
28968 15 : if (!strcmp("bones", name)) return 0;
28969 14 : if (!strcmp("center", name)) return 1;
28970 13 : if (!strcmp("muscles", name)) return 2;
28971 12 : if (!strcmp("name", name)) return 3;
28972 11 : if (!strcmp("rotation", name)) return 4;
28973 10 : if (!strcmp("segments", name)) return 5;
28974 9 : if (!strcmp("scale", name)) return 6;
28975 8 : if (!strcmp("scaleOrientation", name)) return 7;
28976 7 : if (!strcmp("sites", name)) return 8;
28977 6 : if (!strcmp("skeleton", name)) return 9;
28978 5 : if (!strcmp("skin", name)) return 10;
28979 4 : if (!strcmp("skinCoord", name)) return 11;
28980 3 : if (!strcmp("skinNormal", name)) return 12;
28981 2 : if (!strcmp("translation", name)) return 13;
28982 1 : if (!strcmp("weighsComputationSkinCoord", name)) return 14;
28983 0 : return -1;
28984 : }
28985 : static Bool SBSkinnedModel_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
28986 : {
28987 15 : switch (FieldIndex) {
28988 1 : case 1:
28989 1 : *AType = 1;
28990 1 : *QType = 1;
28991 : return 1;
28992 1 : case 4:
28993 1 : *AType = 10;
28994 1 : *QType = 10;
28995 : return 1;
28996 1 : case 6:
28997 1 : *AType = 11;
28998 1 : *QType = 7;
28999 : return 1;
29000 1 : case 7:
29001 1 : *AType = 10;
29002 1 : *QType = 10;
29003 : return 1;
29004 1 : case 13:
29005 1 : *AType = 1;
29006 1 : *QType = 1;
29007 : return 1;
29008 : default:
29009 : return 0;
29010 : }
29011 : }
29012 :
29013 :
29014 :
29015 1 : GF_Node *SBSkinnedModel_Create()
29016 : {
29017 : M_SBSkinnedModel *p;
29018 1 : GF_SAFEALLOC(p, M_SBSkinnedModel);
29019 1 : if(!p) return NULL;
29020 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBSkinnedModel);
29021 :
29022 : /*default field values*/
29023 1 : p->center.x = FLT2FIX(0);
29024 1 : p->center.y = FLT2FIX(0);
29025 1 : p->center.z = FLT2FIX(0);
29026 1 : p->rotation.x = FLT2FIX(0);
29027 1 : p->rotation.y = FLT2FIX(0);
29028 1 : p->rotation.z = FLT2FIX(1);
29029 1 : p->rotation.q = FLT2FIX(0);
29030 1 : p->scale.x = FLT2FIX(1);
29031 1 : p->scale.y = FLT2FIX(1);
29032 1 : p->scale.z = FLT2FIX(1);
29033 1 : p->scaleOrientation.x = FLT2FIX(0);
29034 1 : p->scaleOrientation.y = FLT2FIX(0);
29035 1 : p->scaleOrientation.z = FLT2FIX(1);
29036 1 : p->scaleOrientation.q = FLT2FIX(0);
29037 1 : p->translation.x = FLT2FIX(0);
29038 1 : p->translation.y = FLT2FIX(0);
29039 1 : p->translation.z = FLT2FIX(0);
29040 1 : return (GF_Node *)p;
29041 : }
29042 :
29043 :
29044 : /*
29045 : SBVCAnimation Node deletion
29046 : */
29047 :
29048 1 : static void SBVCAnimation_Del(GF_Node *node)
29049 : {
29050 : M_SBVCAnimation *p = (M_SBVCAnimation *) node;
29051 1 : gf_sg_mfurl_del(p->url);
29052 1 : gf_node_unregister_children((GF_Node *) p, p->virtualCharacters);
29053 1 : gf_node_free((GF_Node *) p);
29054 1 : }
29055 :
29056 : static const u16 SBVCAnimation_Def2All[] = { 0, 1};
29057 : static const u16 SBVCAnimation_In2All[] = { 0, 1};
29058 : static const u16 SBVCAnimation_Out2All[] = { 0, 1};
29059 :
29060 : static u32 SBVCAnimation_get_field_count(GF_Node *node, u8 IndexMode)
29061 : {
29062 6 : switch(IndexMode) {
29063 : case GF_SG_FIELD_CODING_IN:
29064 : return 2;
29065 : case GF_SG_FIELD_CODING_DEF:
29066 : return 2;
29067 : case GF_SG_FIELD_CODING_OUT:
29068 : return 2;
29069 1 : case GF_SG_FIELD_CODING_DYN:
29070 : return 0;
29071 : default:
29072 : return 2;
29073 : }
29074 : }
29075 :
29076 : static GF_Err SBVCAnimation_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29077 : {
29078 2 : switch(IndexMode) {
29079 0 : case GF_SG_FIELD_CODING_IN:
29080 0 : *allField = SBVCAnimation_In2All[inField];
29081 : return GF_OK;
29082 0 : case GF_SG_FIELD_CODING_DEF:
29083 0 : *allField = SBVCAnimation_Def2All[inField];
29084 : return GF_OK;
29085 0 : case GF_SG_FIELD_CODING_OUT:
29086 0 : *allField = SBVCAnimation_Out2All[inField];
29087 : return GF_OK;
29088 : default:
29089 : return GF_BAD_PARAM;
29090 : }
29091 : }
29092 : static GF_Err SBVCAnimation_get_field(GF_Node *node, GF_FieldInfo *info)
29093 : {
29094 4 : switch (info->fieldIndex) {
29095 2 : case 0:
29096 2 : info->name = "url";
29097 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29098 2 : info->fieldType = GF_SG_VRML_MFURL;
29099 2 : info->far_ptr = & ((M_SBVCAnimation *) node)->url;
29100 : return GF_OK;
29101 2 : case 1:
29102 2 : info->name = "virtualCharacters";
29103 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29104 2 : info->fieldType = GF_SG_VRML_MFNODE;
29105 2 : info->NDTtype = NDT_SF3DNode;
29106 2 : info->far_ptr = & ((M_SBVCAnimation *)node)->virtualCharacters;
29107 : return GF_OK;
29108 : default:
29109 : return GF_BAD_PARAM;
29110 : }
29111 : }
29112 :
29113 :
29114 2 : static s32 SBVCAnimation_get_field_index_by_name(char *name)
29115 : {
29116 2 : if (!strcmp("url", name)) return 0;
29117 1 : if (!strcmp("virtualCharacters", name)) return 1;
29118 0 : return -1;
29119 : }
29120 : static Bool SBVCAnimation_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29121 : {
29122 : switch (FieldIndex) {
29123 : default:
29124 : return 0;
29125 : }
29126 : }
29127 :
29128 :
29129 :
29130 1 : GF_Node *SBVCAnimation_Create()
29131 : {
29132 : M_SBVCAnimation *p;
29133 1 : GF_SAFEALLOC(p, M_SBVCAnimation);
29134 1 : if(!p) return NULL;
29135 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBVCAnimation);
29136 :
29137 : /*default field values*/
29138 1 : return (GF_Node *)p;
29139 : }
29140 :
29141 :
29142 : /*
29143 : ScalarAnimator Node deletion
29144 : */
29145 :
29146 2 : static void ScalarAnimator_Del(GF_Node *node)
29147 : {
29148 : M_ScalarAnimator *p = (M_ScalarAnimator *) node;
29149 2 : gf_sg_mffloat_del(p->key);
29150 2 : gf_sg_mfvec2f_del(p->keySpline);
29151 2 : gf_sg_mffloat_del(p->keyValue);
29152 2 : gf_sg_mffloat_del(p->weight);
29153 2 : gf_node_free((GF_Node *) p);
29154 2 : }
29155 :
29156 : static const u16 ScalarAnimator_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8};
29157 : static const u16 ScalarAnimator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
29158 : static const u16 ScalarAnimator_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
29159 :
29160 : static u32 ScalarAnimator_get_field_count(GF_Node *node, u8 IndexMode)
29161 : {
29162 : switch(IndexMode) {
29163 : case GF_SG_FIELD_CODING_IN:
29164 : return 9;
29165 : case GF_SG_FIELD_CODING_DEF:
29166 : return 8;
29167 : case GF_SG_FIELD_CODING_OUT:
29168 : return 10;
29169 : case GF_SG_FIELD_CODING_DYN:
29170 : return 0;
29171 : default:
29172 : return 11;
29173 : }
29174 : }
29175 :
29176 : static GF_Err ScalarAnimator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29177 : {
29178 11 : switch(IndexMode) {
29179 0 : case GF_SG_FIELD_CODING_IN:
29180 0 : *allField = ScalarAnimator_In2All[inField];
29181 : return GF_OK;
29182 0 : case GF_SG_FIELD_CODING_DEF:
29183 0 : *allField = ScalarAnimator_Def2All[inField];
29184 : return GF_OK;
29185 0 : case GF_SG_FIELD_CODING_OUT:
29186 0 : *allField = ScalarAnimator_Out2All[inField];
29187 : return GF_OK;
29188 : default:
29189 : return GF_BAD_PARAM;
29190 : }
29191 : }
29192 30 : static GF_Err ScalarAnimator_get_field(GF_Node *node, GF_FieldInfo *info)
29193 : {
29194 30 : switch (info->fieldIndex) {
29195 4 : case 0:
29196 4 : info->name = "set_fraction";
29197 4 : info->eventType = GF_SG_EVENT_IN;
29198 4 : info->on_event_in = ((M_ScalarAnimator *)node)->on_set_fraction;
29199 4 : info->fieldType = GF_SG_VRML_SFFLOAT;
29200 4 : info->far_ptr = & ((M_ScalarAnimator *) node)->set_fraction;
29201 4 : return GF_OK;
29202 2 : case 1:
29203 2 : info->name = "fromTo";
29204 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29205 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
29206 2 : info->far_ptr = & ((M_ScalarAnimator *) node)->fromTo;
29207 2 : return GF_OK;
29208 2 : case 2:
29209 2 : info->name = "key";
29210 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29211 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
29212 2 : info->far_ptr = & ((M_ScalarAnimator *) node)->key;
29213 2 : return GF_OK;
29214 3 : case 3:
29215 3 : info->name = "keyType";
29216 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29217 3 : info->fieldType = GF_SG_VRML_SFINT32;
29218 3 : info->far_ptr = & ((M_ScalarAnimator *) node)->keyType;
29219 3 : return GF_OK;
29220 3 : case 4:
29221 3 : info->name = "keySpline";
29222 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29223 3 : info->fieldType = GF_SG_VRML_MFVEC2F;
29224 3 : info->far_ptr = & ((M_ScalarAnimator *) node)->keySpline;
29225 3 : return GF_OK;
29226 3 : case 5:
29227 3 : info->name = "keyValue";
29228 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29229 3 : info->fieldType = GF_SG_VRML_MFFLOAT;
29230 3 : info->far_ptr = & ((M_ScalarAnimator *) node)->keyValue;
29231 3 : return GF_OK;
29232 3 : case 6:
29233 3 : info->name = "keyValueType";
29234 3 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29235 3 : info->fieldType = GF_SG_VRML_SFINT32;
29236 3 : info->far_ptr = & ((M_ScalarAnimator *) node)->keyValueType;
29237 3 : return GF_OK;
29238 2 : case 7:
29239 2 : info->name = "offset";
29240 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29241 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
29242 2 : info->far_ptr = & ((M_ScalarAnimator *) node)->offset;
29243 2 : return GF_OK;
29244 2 : case 8:
29245 2 : info->name = "weight";
29246 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29247 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
29248 2 : info->far_ptr = & ((M_ScalarAnimator *) node)->weight;
29249 2 : return GF_OK;
29250 2 : case 9:
29251 2 : info->name = "endValue";
29252 2 : info->eventType = GF_SG_EVENT_OUT;
29253 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
29254 2 : info->far_ptr = & ((M_ScalarAnimator *) node)->endValue;
29255 2 : return GF_OK;
29256 4 : case 10:
29257 4 : info->name = "value_changed";
29258 4 : info->eventType = GF_SG_EVENT_OUT;
29259 4 : info->fieldType = GF_SG_VRML_SFFLOAT;
29260 4 : info->far_ptr = & ((M_ScalarAnimator *) node)->value_changed;
29261 4 : return GF_OK;
29262 : default:
29263 : return GF_BAD_PARAM;
29264 : }
29265 : }
29266 :
29267 :
29268 17 : static s32 ScalarAnimator_get_field_index_by_name(char *name)
29269 : {
29270 17 : if (!strcmp("set_fraction", name)) return 0;
29271 15 : if (!strcmp("fromTo", name)) return 1;
29272 14 : if (!strcmp("key", name)) return 2;
29273 13 : if (!strcmp("keyType", name)) return 3;
29274 11 : if (!strcmp("keySpline", name)) return 4;
29275 9 : if (!strcmp("keyValue", name)) return 5;
29276 7 : if (!strcmp("keyValueType", name)) return 6;
29277 5 : if (!strcmp("offset", name)) return 7;
29278 4 : if (!strcmp("weight", name)) return 8;
29279 3 : if (!strcmp("endValue", name)) return 9;
29280 2 : if (!strcmp("value_changed", name)) return 10;
29281 0 : return -1;
29282 : }
29283 : static Bool ScalarAnimator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29284 : {
29285 11 : switch (FieldIndex) {
29286 1 : case 1:
29287 1 : *AType = 0;
29288 1 : *QType = 8;
29289 : return 1;
29290 1 : case 2:
29291 1 : *AType = 0;
29292 1 : *QType = 8;
29293 : return 1;
29294 1 : case 4:
29295 1 : *AType = 0;
29296 1 : *QType = 8;
29297 : return 1;
29298 1 : case 5:
29299 1 : *AType = 0;
29300 1 : *QType = 0;
29301 : return 1;
29302 : default:
29303 : return 0;
29304 : }
29305 : }
29306 :
29307 :
29308 :
29309 2 : GF_Node *ScalarAnimator_Create()
29310 : {
29311 : M_ScalarAnimator *p;
29312 2 : GF_SAFEALLOC(p, M_ScalarAnimator);
29313 2 : if(!p) return NULL;
29314 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ScalarAnimator);
29315 :
29316 : /*default field values*/
29317 2 : p->fromTo.x = FLT2FIX(0);
29318 2 : p->fromTo.y = FLT2FIX(1);
29319 2 : p->keyType = 0;
29320 2 : p->keySpline.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
29321 2 : p->keySpline.count = 2;
29322 2 : p->keySpline.vals[0].x = FLT2FIX(0);
29323 2 : p->keySpline.vals[0].y = FLT2FIX(0);
29324 2 : p->keySpline.vals[1].x = FLT2FIX(1);
29325 2 : p->keySpline.vals[1].y = FLT2FIX(1);
29326 2 : p->keyValueType = 0;
29327 2 : p->offset = FLT2FIX(0);
29328 2 : return (GF_Node *)p;
29329 : }
29330 :
29331 :
29332 : /*
29333 : SimpleTexture Node deletion
29334 : */
29335 :
29336 1 : static void SimpleTexture_Del(GF_Node *node)
29337 : {
29338 : M_SimpleTexture *p = (M_SimpleTexture *) node;
29339 1 : gf_node_unregister((GF_Node *) p->depth, (GF_Node *) p);
29340 1 : gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
29341 1 : gf_node_free((GF_Node *) p);
29342 1 : }
29343 :
29344 : static const u16 SimpleTexture_Def2All[] = { 0, 1};
29345 :
29346 : static u32 SimpleTexture_get_field_count(GF_Node *node, u8 IndexMode)
29347 : {
29348 6 : switch(IndexMode) {
29349 : case GF_SG_FIELD_CODING_IN:
29350 : return 0;
29351 1 : case GF_SG_FIELD_CODING_DEF:
29352 : return 2;
29353 : case GF_SG_FIELD_CODING_OUT:
29354 : return 0;
29355 : case GF_SG_FIELD_CODING_DYN:
29356 : return 0;
29357 2 : default:
29358 : return 2;
29359 : }
29360 : }
29361 :
29362 : static GF_Err SimpleTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29363 : {
29364 2 : switch(IndexMode) {
29365 0 : case GF_SG_FIELD_CODING_DEF:
29366 0 : *allField = SimpleTexture_Def2All[inField];
29367 : return GF_OK;
29368 : default:
29369 : return GF_BAD_PARAM;
29370 : }
29371 : }
29372 : static GF_Err SimpleTexture_get_field(GF_Node *node, GF_FieldInfo *info)
29373 : {
29374 4 : switch (info->fieldIndex) {
29375 2 : case 0:
29376 2 : info->name = "depth";
29377 2 : info->eventType = GF_SG_EVENT_FIELD;
29378 2 : info->fieldType = GF_SG_VRML_SFNODE;
29379 2 : info->NDTtype = NDT_SFTextureNode;
29380 2 : info->far_ptr = & ((M_SimpleTexture *)node)->depth;
29381 : return GF_OK;
29382 2 : case 1:
29383 2 : info->name = "texture";
29384 2 : info->eventType = GF_SG_EVENT_FIELD;
29385 2 : info->fieldType = GF_SG_VRML_SFNODE;
29386 2 : info->NDTtype = NDT_SFTextureNode;
29387 2 : info->far_ptr = & ((M_SimpleTexture *)node)->texture;
29388 : return GF_OK;
29389 : default:
29390 : return GF_BAD_PARAM;
29391 : }
29392 : }
29393 :
29394 :
29395 2 : static s32 SimpleTexture_get_field_index_by_name(char *name)
29396 : {
29397 2 : if (!strcmp("depth", name)) return 0;
29398 1 : if (!strcmp("texture", name)) return 1;
29399 0 : return -1;
29400 : }
29401 : static Bool SimpleTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29402 : {
29403 : switch (FieldIndex) {
29404 : default:
29405 : return 0;
29406 : }
29407 : }
29408 :
29409 :
29410 :
29411 1 : GF_Node *SimpleTexture_Create()
29412 : {
29413 : M_SimpleTexture *p;
29414 1 : GF_SAFEALLOC(p, M_SimpleTexture);
29415 1 : if(!p) return NULL;
29416 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SimpleTexture);
29417 :
29418 : /*default field values*/
29419 1 : return (GF_Node *)p;
29420 : }
29421 :
29422 :
29423 : /*
29424 : SolidRep Node deletion
29425 : */
29426 :
29427 1 : static void SolidRep_Del(GF_Node *node)
29428 : {
29429 : M_SolidRep *p = (M_SolidRep *) node;
29430 1 : gf_sg_mfint32_del(p->densityList);
29431 1 : gf_node_unregister((GF_Node *) p->solidTree, (GF_Node *) p);
29432 1 : gf_node_free((GF_Node *) p);
29433 1 : }
29434 :
29435 : static const u16 SolidRep_Def2All[] = { 0, 1, 2};
29436 : static const u16 SolidRep_In2All[] = { 0, 1, 2};
29437 : static const u16 SolidRep_Out2All[] = { 0, 1, 2};
29438 : static const u16 SolidRep_Dyn2All[] = { 0};
29439 :
29440 : static u32 SolidRep_get_field_count(GF_Node *node, u8 IndexMode)
29441 : {
29442 6 : switch(IndexMode) {
29443 : case GF_SG_FIELD_CODING_IN:
29444 : return 3;
29445 : case GF_SG_FIELD_CODING_DEF:
29446 : return 3;
29447 : case GF_SG_FIELD_CODING_OUT:
29448 : return 3;
29449 1 : case GF_SG_FIELD_CODING_DYN:
29450 : return 1;
29451 : default:
29452 : return 3;
29453 : }
29454 : }
29455 :
29456 : static GF_Err SolidRep_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29457 : {
29458 3 : switch(IndexMode) {
29459 0 : case GF_SG_FIELD_CODING_IN:
29460 0 : *allField = SolidRep_In2All[inField];
29461 : return GF_OK;
29462 0 : case GF_SG_FIELD_CODING_DEF:
29463 0 : *allField = SolidRep_Def2All[inField];
29464 : return GF_OK;
29465 0 : case GF_SG_FIELD_CODING_OUT:
29466 0 : *allField = SolidRep_Out2All[inField];
29467 : return GF_OK;
29468 0 : case GF_SG_FIELD_CODING_DYN:
29469 0 : *allField = SolidRep_Dyn2All[inField];
29470 : return GF_OK;
29471 : default:
29472 : return GF_BAD_PARAM;
29473 : }
29474 : }
29475 : static GF_Err SolidRep_get_field(GF_Node *node, GF_FieldInfo *info)
29476 : {
29477 6 : switch (info->fieldIndex) {
29478 2 : case 0:
29479 2 : info->name = "bboxSize";
29480 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29481 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
29482 2 : info->far_ptr = & ((M_SolidRep *) node)->bboxSize;
29483 : return GF_OK;
29484 2 : case 1:
29485 2 : info->name = "densityList";
29486 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29487 2 : info->fieldType = GF_SG_VRML_MFINT32;
29488 2 : info->far_ptr = & ((M_SolidRep *) node)->densityList;
29489 : return GF_OK;
29490 2 : case 2:
29491 2 : info->name = "solidTree";
29492 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29493 2 : info->fieldType = GF_SG_VRML_SFNODE;
29494 2 : info->NDTtype = NDT_SF3DNode;
29495 2 : info->far_ptr = & ((M_SolidRep *)node)->solidTree;
29496 : return GF_OK;
29497 : default:
29498 : return GF_BAD_PARAM;
29499 : }
29500 : }
29501 :
29502 :
29503 3 : static s32 SolidRep_get_field_index_by_name(char *name)
29504 : {
29505 3 : if (!strcmp("bboxSize", name)) return 0;
29506 2 : if (!strcmp("densityList", name)) return 1;
29507 1 : if (!strcmp("solidTree", name)) return 2;
29508 0 : return -1;
29509 : }
29510 : static Bool SolidRep_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29511 : {
29512 3 : switch (FieldIndex) {
29513 1 : case 0:
29514 1 : *AType = 11;
29515 1 : *QType = 11;
29516 1 : *b_min = FLT2FIX(0);
29517 1 : *b_max = FIX_MAX;
29518 : return 1;
29519 : default:
29520 : return 0;
29521 : }
29522 : }
29523 :
29524 :
29525 :
29526 1 : GF_Node *SolidRep_Create()
29527 : {
29528 : M_SolidRep *p;
29529 1 : GF_SAFEALLOC(p, M_SolidRep);
29530 1 : if(!p) return NULL;
29531 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SolidRep);
29532 :
29533 : /*default field values*/
29534 1 : p->bboxSize.x = FLT2FIX(2);
29535 1 : p->bboxSize.y = FLT2FIX(2);
29536 1 : p->bboxSize.z = FLT2FIX(2);
29537 1 : return (GF_Node *)p;
29538 : }
29539 :
29540 :
29541 : /*
29542 : SubdivisionSurface Node deletion
29543 : */
29544 :
29545 1 : static void SubdivisionSurface_Del(GF_Node *node)
29546 : {
29547 : M_SubdivisionSurface *p = (M_SubdivisionSurface *) node;
29548 1 : gf_sg_mfint32_del(p->set_colorIndex);
29549 1 : gf_sg_mfint32_del(p->set_coordIndex);
29550 1 : gf_sg_mfint32_del(p->set_cornerVertexIndex);
29551 1 : gf_sg_mfint32_del(p->set_creaseEdgeIndex);
29552 1 : gf_sg_mfint32_del(p->set_creaseVertexIndex);
29553 1 : gf_sg_mfint32_del(p->set_dartVertexIndex);
29554 1 : gf_sg_mfint32_del(p->set_texCoordIndex);
29555 1 : gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
29556 1 : gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
29557 1 : gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
29558 1 : gf_node_unregister_children((GF_Node *) p, p->sectors);
29559 1 : gf_sg_mfint32_del(p->invisibleEdgeIndex);
29560 1 : gf_sg_mfint32_del(p->colorIndex);
29561 1 : gf_sg_mfint32_del(p->coordIndex);
29562 1 : gf_sg_mfint32_del(p->cornerVertexIndex);
29563 1 : gf_sg_mfint32_del(p->creaseEdgeIndex);
29564 1 : gf_sg_mfint32_del(p->creaseVertexIndex);
29565 1 : gf_sg_mfint32_del(p->dartVertexIndex);
29566 1 : gf_sg_mfint32_del(p->texCoordIndex);
29567 1 : gf_node_free((GF_Node *) p);
29568 1 : }
29569 :
29570 : static const u16 SubdivisionSurface_Def2All[] = { 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25};
29571 : static const u16 SubdivisionSurface_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
29572 : static const u16 SubdivisionSurface_Out2All[] = { 7, 8, 9, 10, 11, 12, 13};
29573 :
29574 : static u32 SubdivisionSurface_get_field_count(GF_Node *node, u8 IndexMode)
29575 : {
29576 : switch(IndexMode) {
29577 : case GF_SG_FIELD_CODING_IN:
29578 : return 14;
29579 : case GF_SG_FIELD_CODING_DEF:
29580 : return 19;
29581 : case GF_SG_FIELD_CODING_OUT:
29582 : return 7;
29583 : case GF_SG_FIELD_CODING_DYN:
29584 : return 0;
29585 : default:
29586 : return 26;
29587 : }
29588 : }
29589 :
29590 : static GF_Err SubdivisionSurface_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29591 : {
29592 26 : switch(IndexMode) {
29593 0 : case GF_SG_FIELD_CODING_IN:
29594 0 : *allField = SubdivisionSurface_In2All[inField];
29595 : return GF_OK;
29596 0 : case GF_SG_FIELD_CODING_DEF:
29597 0 : *allField = SubdivisionSurface_Def2All[inField];
29598 : return GF_OK;
29599 0 : case GF_SG_FIELD_CODING_OUT:
29600 0 : *allField = SubdivisionSurface_Out2All[inField];
29601 : return GF_OK;
29602 : default:
29603 : return GF_BAD_PARAM;
29604 : }
29605 : }
29606 52 : static GF_Err SubdivisionSurface_get_field(GF_Node *node, GF_FieldInfo *info)
29607 : {
29608 52 : switch (info->fieldIndex) {
29609 2 : case 0:
29610 2 : info->name = "set_colorIndex";
29611 2 : info->eventType = GF_SG_EVENT_IN;
29612 2 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_colorIndex;
29613 2 : info->fieldType = GF_SG_VRML_MFINT32;
29614 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_colorIndex;
29615 2 : return GF_OK;
29616 2 : case 1:
29617 2 : info->name = "set_coordIndex";
29618 2 : info->eventType = GF_SG_EVENT_IN;
29619 2 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_coordIndex;
29620 2 : info->fieldType = GF_SG_VRML_MFINT32;
29621 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_coordIndex;
29622 2 : return GF_OK;
29623 2 : case 2:
29624 2 : info->name = "set_cornerVertexIndex";
29625 2 : info->eventType = GF_SG_EVENT_IN;
29626 2 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_cornerVertexIndex;
29627 2 : info->fieldType = GF_SG_VRML_MFINT32;
29628 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_cornerVertexIndex;
29629 2 : return GF_OK;
29630 2 : case 3:
29631 2 : info->name = "set_creaseEdgeIndex";
29632 2 : info->eventType = GF_SG_EVENT_IN;
29633 2 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_creaseEdgeIndex;
29634 2 : info->fieldType = GF_SG_VRML_MFINT32;
29635 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_creaseEdgeIndex;
29636 2 : return GF_OK;
29637 2 : case 4:
29638 2 : info->name = "set_creaseVertexIndex";
29639 2 : info->eventType = GF_SG_EVENT_IN;
29640 2 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_creaseVertexIndex;
29641 2 : info->fieldType = GF_SG_VRML_MFINT32;
29642 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_creaseVertexIndex;
29643 2 : return GF_OK;
29644 2 : case 5:
29645 2 : info->name = "set_dartVertexIndex";
29646 2 : info->eventType = GF_SG_EVENT_IN;
29647 2 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_dartVertexIndex;
29648 2 : info->fieldType = GF_SG_VRML_MFINT32;
29649 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_dartVertexIndex;
29650 2 : return GF_OK;
29651 2 : case 6:
29652 2 : info->name = "set_texCoordIndex";
29653 2 : info->eventType = GF_SG_EVENT_IN;
29654 2 : info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_texCoordIndex;
29655 2 : info->fieldType = GF_SG_VRML_MFINT32;
29656 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->set_texCoordIndex;
29657 2 : return GF_OK;
29658 2 : case 7:
29659 2 : info->name = "color";
29660 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29661 2 : info->fieldType = GF_SG_VRML_SFNODE;
29662 2 : info->NDTtype = NDT_SFColorNode;
29663 2 : info->far_ptr = & ((M_SubdivisionSurface *)node)->color;
29664 2 : return GF_OK;
29665 2 : case 8:
29666 2 : info->name = "coord";
29667 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29668 2 : info->fieldType = GF_SG_VRML_SFNODE;
29669 2 : info->NDTtype = NDT_SFCoordinateNode;
29670 2 : info->far_ptr = & ((M_SubdivisionSurface *)node)->coord;
29671 2 : return GF_OK;
29672 2 : case 9:
29673 2 : info->name = "texCoord";
29674 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29675 2 : info->fieldType = GF_SG_VRML_SFNODE;
29676 2 : info->NDTtype = NDT_SFTextureCoordinateNode;
29677 2 : info->far_ptr = & ((M_SubdivisionSurface *)node)->texCoord;
29678 2 : return GF_OK;
29679 2 : case 10:
29680 2 : info->name = "sectors";
29681 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29682 2 : info->fieldType = GF_SG_VRML_MFNODE;
29683 2 : info->NDTtype = NDT_SFSubdivSurfaceSectorNode;
29684 2 : info->far_ptr = & ((M_SubdivisionSurface *)node)->sectors;
29685 2 : return GF_OK;
29686 2 : case 11:
29687 2 : info->name = "subdivisionLevel";
29688 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29689 2 : info->fieldType = GF_SG_VRML_SFINT32;
29690 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->subdivisionLevel;
29691 2 : return GF_OK;
29692 2 : case 12:
29693 2 : info->name = "subdivisionType";
29694 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29695 2 : info->fieldType = GF_SG_VRML_SFINT32;
29696 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->subdivisionType;
29697 2 : return GF_OK;
29698 2 : case 13:
29699 2 : info->name = "subdivisionSubType";
29700 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29701 2 : info->fieldType = GF_SG_VRML_SFINT32;
29702 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->subdivisionSubType;
29703 2 : return GF_OK;
29704 2 : case 14:
29705 2 : info->name = "invisibleEdgeIndex";
29706 2 : info->eventType = GF_SG_EVENT_FIELD;
29707 2 : info->fieldType = GF_SG_VRML_MFINT32;
29708 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->invisibleEdgeIndex;
29709 2 : return GF_OK;
29710 2 : case 15:
29711 2 : info->name = "ccw";
29712 2 : info->eventType = GF_SG_EVENT_FIELD;
29713 2 : info->fieldType = GF_SG_VRML_SFBOOL;
29714 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->ccw;
29715 2 : return GF_OK;
29716 2 : case 16:
29717 2 : info->name = "colorIndex";
29718 2 : info->eventType = GF_SG_EVENT_FIELD;
29719 2 : info->fieldType = GF_SG_VRML_MFINT32;
29720 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->colorIndex;
29721 2 : return GF_OK;
29722 2 : case 17:
29723 2 : info->name = "colorPerVertex";
29724 2 : info->eventType = GF_SG_EVENT_FIELD;
29725 2 : info->fieldType = GF_SG_VRML_SFBOOL;
29726 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->colorPerVertex;
29727 2 : return GF_OK;
29728 2 : case 18:
29729 2 : info->name = "convex";
29730 2 : info->eventType = GF_SG_EVENT_FIELD;
29731 2 : info->fieldType = GF_SG_VRML_SFBOOL;
29732 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->convex;
29733 2 : return GF_OK;
29734 2 : case 19:
29735 2 : info->name = "coordIndex";
29736 2 : info->eventType = GF_SG_EVENT_FIELD;
29737 2 : info->fieldType = GF_SG_VRML_MFINT32;
29738 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->coordIndex;
29739 2 : return GF_OK;
29740 2 : case 20:
29741 2 : info->name = "cornerVertexIndex";
29742 2 : info->eventType = GF_SG_EVENT_FIELD;
29743 2 : info->fieldType = GF_SG_VRML_MFINT32;
29744 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->cornerVertexIndex;
29745 2 : return GF_OK;
29746 2 : case 21:
29747 2 : info->name = "creaseEdgeIndex";
29748 2 : info->eventType = GF_SG_EVENT_FIELD;
29749 2 : info->fieldType = GF_SG_VRML_MFINT32;
29750 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->creaseEdgeIndex;
29751 2 : return GF_OK;
29752 2 : case 22:
29753 2 : info->name = "creaseVertexIndex";
29754 2 : info->eventType = GF_SG_EVENT_FIELD;
29755 2 : info->fieldType = GF_SG_VRML_MFINT32;
29756 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->creaseVertexIndex;
29757 2 : return GF_OK;
29758 2 : case 23:
29759 2 : info->name = "dartVertexIndex";
29760 2 : info->eventType = GF_SG_EVENT_FIELD;
29761 2 : info->fieldType = GF_SG_VRML_MFINT32;
29762 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->dartVertexIndex;
29763 2 : return GF_OK;
29764 2 : case 24:
29765 2 : info->name = "solid";
29766 2 : info->eventType = GF_SG_EVENT_FIELD;
29767 2 : info->fieldType = GF_SG_VRML_SFBOOL;
29768 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->solid;
29769 2 : return GF_OK;
29770 2 : case 25:
29771 2 : info->name = "texCoordIndex";
29772 2 : info->eventType = GF_SG_EVENT_FIELD;
29773 2 : info->fieldType = GF_SG_VRML_MFINT32;
29774 2 : info->far_ptr = & ((M_SubdivisionSurface *) node)->texCoordIndex;
29775 2 : return GF_OK;
29776 : default:
29777 : return GF_BAD_PARAM;
29778 : }
29779 : }
29780 :
29781 :
29782 26 : static s32 SubdivisionSurface_get_field_index_by_name(char *name)
29783 : {
29784 26 : if (!strcmp("set_colorIndex", name)) return 0;
29785 25 : if (!strcmp("set_coordIndex", name)) return 1;
29786 24 : if (!strcmp("set_cornerVertexIndex", name)) return 2;
29787 23 : if (!strcmp("set_creaseEdgeIndex", name)) return 3;
29788 22 : if (!strcmp("set_creaseVertexIndex", name)) return 4;
29789 21 : if (!strcmp("set_dartVertexIndex", name)) return 5;
29790 20 : if (!strcmp("set_texCoordIndex", name)) return 6;
29791 19 : if (!strcmp("color", name)) return 7;
29792 18 : if (!strcmp("coord", name)) return 8;
29793 17 : if (!strcmp("texCoord", name)) return 9;
29794 16 : if (!strcmp("sectors", name)) return 10;
29795 15 : if (!strcmp("subdivisionLevel", name)) return 11;
29796 14 : if (!strcmp("subdivisionType", name)) return 12;
29797 13 : if (!strcmp("subdivisionSubType", name)) return 13;
29798 12 : if (!strcmp("invisibleEdgeIndex", name)) return 14;
29799 11 : if (!strcmp("ccw", name)) return 15;
29800 10 : if (!strcmp("colorIndex", name)) return 16;
29801 9 : if (!strcmp("colorPerVertex", name)) return 17;
29802 8 : if (!strcmp("convex", name)) return 18;
29803 7 : if (!strcmp("coordIndex", name)) return 19;
29804 6 : if (!strcmp("cornerVertexIndex", name)) return 20;
29805 5 : if (!strcmp("creaseEdgeIndex", name)) return 21;
29806 4 : if (!strcmp("creaseVertexIndex", name)) return 22;
29807 3 : if (!strcmp("dartVertexIndex", name)) return 23;
29808 2 : if (!strcmp("solid", name)) return 24;
29809 1 : if (!strcmp("texCoordIndex", name)) return 25;
29810 0 : return -1;
29811 : }
29812 : static Bool SubdivisionSurface_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29813 : {
29814 26 : switch (FieldIndex) {
29815 1 : case 12:
29816 1 : *AType = 0;
29817 1 : *QType = 13;
29818 1 : *QT13_bits = 2;
29819 1 : *b_min = FLT2FIX(0);
29820 1 : *b_max = FLT2FIX(3);
29821 : return 1;
29822 1 : case 13:
29823 1 : *AType = 0;
29824 1 : *QType = 13;
29825 1 : *QT13_bits = 2;
29826 1 : *b_min = FLT2FIX(0);
29827 1 : *b_max = FLT2FIX(3);
29828 : return 1;
29829 : default:
29830 : return 0;
29831 : }
29832 : }
29833 :
29834 :
29835 :
29836 1 : GF_Node *SubdivisionSurface_Create()
29837 : {
29838 : M_SubdivisionSurface *p;
29839 1 : GF_SAFEALLOC(p, M_SubdivisionSurface);
29840 1 : if(!p) return NULL;
29841 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SubdivisionSurface);
29842 :
29843 : /*default field values*/
29844 1 : p->subdivisionLevel = 0;
29845 1 : p->subdivisionType = 0;
29846 1 : p->subdivisionSubType = 0;
29847 1 : p->ccw = 1;
29848 1 : p->colorPerVertex = 1;
29849 1 : p->convex = 1;
29850 1 : p->solid = 1;
29851 1 : return (GF_Node *)p;
29852 : }
29853 :
29854 :
29855 : /*
29856 : SubdivSurfaceSector Node deletion
29857 : */
29858 :
29859 : static void SubdivSurfaceSector_Del(GF_Node *node)
29860 : {
29861 : M_SubdivSurfaceSector *p = (M_SubdivSurfaceSector *) node;
29862 1 : gf_node_free((GF_Node *) p);
29863 : }
29864 :
29865 : static const u16 SubdivSurfaceSector_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
29866 : static const u16 SubdivSurfaceSector_In2All[] = { 0, 1, 2, 3, 4};
29867 : static const u16 SubdivSurfaceSector_Out2All[] = { 0, 1, 2, 3, 4};
29868 :
29869 : static u32 SubdivSurfaceSector_get_field_count(GF_Node *node, u8 IndexMode)
29870 : {
29871 : switch(IndexMode) {
29872 : case GF_SG_FIELD_CODING_IN:
29873 : return 5;
29874 : case GF_SG_FIELD_CODING_DEF:
29875 : return 7;
29876 : case GF_SG_FIELD_CODING_OUT:
29877 : return 5;
29878 : case GF_SG_FIELD_CODING_DYN:
29879 : return 0;
29880 : default:
29881 : return 7;
29882 : }
29883 : }
29884 :
29885 : static GF_Err SubdivSurfaceSector_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
29886 : {
29887 7 : switch(IndexMode) {
29888 0 : case GF_SG_FIELD_CODING_IN:
29889 0 : *allField = SubdivSurfaceSector_In2All[inField];
29890 : return GF_OK;
29891 0 : case GF_SG_FIELD_CODING_DEF:
29892 0 : *allField = SubdivSurfaceSector_Def2All[inField];
29893 : return GF_OK;
29894 0 : case GF_SG_FIELD_CODING_OUT:
29895 0 : *allField = SubdivSurfaceSector_Out2All[inField];
29896 : return GF_OK;
29897 : default:
29898 : return GF_BAD_PARAM;
29899 : }
29900 : }
29901 14 : static GF_Err SubdivSurfaceSector_get_field(GF_Node *node, GF_FieldInfo *info)
29902 : {
29903 14 : switch (info->fieldIndex) {
29904 2 : case 0:
29905 2 : info->name = "flatness";
29906 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29907 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
29908 2 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->flatness;
29909 2 : return GF_OK;
29910 2 : case 1:
29911 2 : info->name = "normal";
29912 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29913 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
29914 2 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->normal;
29915 2 : return GF_OK;
29916 2 : case 2:
29917 2 : info->name = "normalTension";
29918 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29919 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
29920 2 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->normalTension;
29921 2 : return GF_OK;
29922 2 : case 3:
29923 2 : info->name = "tag";
29924 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29925 2 : info->fieldType = GF_SG_VRML_SFINT32;
29926 2 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->_tag;
29927 2 : return GF_OK;
29928 2 : case 4:
29929 2 : info->name = "theta";
29930 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
29931 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
29932 2 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->theta;
29933 2 : return GF_OK;
29934 2 : case 5:
29935 2 : info->name = "faceIndex";
29936 2 : info->eventType = GF_SG_EVENT_FIELD;
29937 2 : info->fieldType = GF_SG_VRML_SFINT32;
29938 2 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->faceIndex;
29939 2 : return GF_OK;
29940 2 : case 6:
29941 2 : info->name = "vertexIndex";
29942 2 : info->eventType = GF_SG_EVENT_FIELD;
29943 2 : info->fieldType = GF_SG_VRML_SFINT32;
29944 2 : info->far_ptr = & ((M_SubdivSurfaceSector *) node)->vertexIndex;
29945 2 : return GF_OK;
29946 : default:
29947 : return GF_BAD_PARAM;
29948 : }
29949 : }
29950 :
29951 :
29952 7 : static s32 SubdivSurfaceSector_get_field_index_by_name(char *name)
29953 : {
29954 7 : if (!strcmp("flatness", name)) return 0;
29955 6 : if (!strcmp("normal", name)) return 1;
29956 5 : if (!strcmp("normalTension", name)) return 2;
29957 4 : if (!strcmp("tag", name)) return 3;
29958 3 : if (!strcmp("theta", name)) return 4;
29959 2 : if (!strcmp("faceIndex", name)) return 5;
29960 1 : if (!strcmp("vertexIndex", name)) return 6;
29961 0 : return -1;
29962 : }
29963 7 : static Bool SubdivSurfaceSector_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
29964 : {
29965 7 : switch (FieldIndex) {
29966 1 : case 0:
29967 1 : *AType = 0;
29968 1 : *QType = 7;
29969 1 : *b_min = FLT2FIX(0);
29970 1 : *b_max = FLT2FIX(1);
29971 : return 1;
29972 1 : case 1:
29973 1 : *AType = 0;
29974 1 : *QType = 9;
29975 : return 1;
29976 1 : case 2:
29977 1 : *AType = 0;
29978 1 : *QType = 7;
29979 1 : *b_min = FLT2FIX(0);
29980 1 : *b_max = FLT2FIX(1);
29981 : return 1;
29982 1 : case 3:
29983 1 : *AType = 0;
29984 1 : *QType = 13;
29985 1 : *QT13_bits = 2;
29986 1 : *b_min = FLT2FIX(0);
29987 1 : *b_max = FLT2FIX(2);
29988 : return 1;
29989 1 : case 4:
29990 1 : *AType = 0;
29991 1 : *QType = 6;
29992 1 : *b_min = FLT2FIX(0);
29993 1 : *b_max = FLT2FIX(6.2831853);
29994 : return 1;
29995 1 : case 5:
29996 1 : *AType = 0;
29997 1 : *QType = 14;
29998 : return 1;
29999 1 : case 6:
30000 1 : *AType = 0;
30001 1 : *QType = 14;
30002 : return 1;
30003 : default:
30004 : return 0;
30005 : }
30006 : }
30007 :
30008 :
30009 :
30010 1 : GF_Node *SubdivSurfaceSector_Create()
30011 : {
30012 : M_SubdivSurfaceSector *p;
30013 1 : GF_SAFEALLOC(p, M_SubdivSurfaceSector);
30014 1 : if(!p) return NULL;
30015 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SubdivSurfaceSector);
30016 :
30017 : /*default field values*/
30018 1 : p->flatness = FLT2FIX(0);
30019 1 : p->normal.x = FLT2FIX(0);
30020 1 : p->normal.y = FLT2FIX(0);
30021 1 : p->normal.z = FLT2FIX(0);
30022 1 : p->normalTension = FLT2FIX(0);
30023 1 : p->_tag = 0;
30024 1 : p->theta = FLT2FIX(0);
30025 1 : p->faceIndex = 0;
30026 1 : p->vertexIndex = 0;
30027 1 : return (GF_Node *)p;
30028 : }
30029 :
30030 :
30031 : /*
30032 : WaveletSubdivisionSurface Node deletion
30033 : */
30034 :
30035 : static void WaveletSubdivisionSurface_Del(GF_Node *node)
30036 : {
30037 : M_WaveletSubdivisionSurface *p = (M_WaveletSubdivisionSurface *) node;
30038 1 : gf_node_unregister((GF_Node *) p->baseMesh, (GF_Node *) p);
30039 1 : gf_node_free((GF_Node *) p);
30040 : }
30041 :
30042 : static const u16 WaveletSubdivisionSurface_Def2All[] = { 0, 1, 2, 3};
30043 : static const u16 WaveletSubdivisionSurface_In2All[] = { 0, 1, 2, 3};
30044 : static const u16 WaveletSubdivisionSurface_Out2All[] = { 0, 1, 2, 3};
30045 :
30046 : static u32 WaveletSubdivisionSurface_get_field_count(GF_Node *node, u8 IndexMode)
30047 : {
30048 6 : switch(IndexMode) {
30049 : case GF_SG_FIELD_CODING_IN:
30050 : return 4;
30051 : case GF_SG_FIELD_CODING_DEF:
30052 : return 4;
30053 : case GF_SG_FIELD_CODING_OUT:
30054 : return 4;
30055 1 : case GF_SG_FIELD_CODING_DYN:
30056 : return 0;
30057 : default:
30058 : return 4;
30059 : }
30060 : }
30061 :
30062 : static GF_Err WaveletSubdivisionSurface_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30063 : {
30064 4 : switch(IndexMode) {
30065 0 : case GF_SG_FIELD_CODING_IN:
30066 0 : *allField = WaveletSubdivisionSurface_In2All[inField];
30067 : return GF_OK;
30068 0 : case GF_SG_FIELD_CODING_DEF:
30069 0 : *allField = WaveletSubdivisionSurface_Def2All[inField];
30070 : return GF_OK;
30071 0 : case GF_SG_FIELD_CODING_OUT:
30072 0 : *allField = WaveletSubdivisionSurface_Out2All[inField];
30073 : return GF_OK;
30074 : default:
30075 : return GF_BAD_PARAM;
30076 : }
30077 : }
30078 8 : static GF_Err WaveletSubdivisionSurface_get_field(GF_Node *node, GF_FieldInfo *info)
30079 : {
30080 8 : switch (info->fieldIndex) {
30081 2 : case 0:
30082 2 : info->name = "baseMesh";
30083 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30084 2 : info->fieldType = GF_SG_VRML_SFNODE;
30085 2 : info->NDTtype = NDT_SFGeometryNode;
30086 2 : info->far_ptr = & ((M_WaveletSubdivisionSurface *)node)->baseMesh;
30087 2 : return GF_OK;
30088 2 : case 1:
30089 2 : info->name = "fieldOfView";
30090 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30091 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
30092 2 : info->far_ptr = & ((M_WaveletSubdivisionSurface *) node)->fieldOfView;
30093 2 : return GF_OK;
30094 2 : case 2:
30095 2 : info->name = "frequency";
30096 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30097 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
30098 2 : info->far_ptr = & ((M_WaveletSubdivisionSurface *) node)->frequency;
30099 2 : return GF_OK;
30100 2 : case 3:
30101 2 : info->name = "quality";
30102 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30103 2 : info->fieldType = GF_SG_VRML_SFINT32;
30104 2 : info->far_ptr = & ((M_WaveletSubdivisionSurface *) node)->quality;
30105 2 : return GF_OK;
30106 : default:
30107 : return GF_BAD_PARAM;
30108 : }
30109 : }
30110 :
30111 :
30112 4 : static s32 WaveletSubdivisionSurface_get_field_index_by_name(char *name)
30113 : {
30114 4 : if (!strcmp("baseMesh", name)) return 0;
30115 3 : if (!strcmp("fieldOfView", name)) return 1;
30116 2 : if (!strcmp("frequency", name)) return 2;
30117 1 : if (!strcmp("quality", name)) return 3;
30118 0 : return -1;
30119 : }
30120 : static Bool WaveletSubdivisionSurface_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
30121 : {
30122 : switch (FieldIndex) {
30123 : default:
30124 : return 0;
30125 : }
30126 : }
30127 :
30128 :
30129 :
30130 1 : GF_Node *WaveletSubdivisionSurface_Create()
30131 : {
30132 : M_WaveletSubdivisionSurface *p;
30133 1 : GF_SAFEALLOC(p, M_WaveletSubdivisionSurface);
30134 1 : if(!p) return NULL;
30135 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_WaveletSubdivisionSurface);
30136 :
30137 : /*default field values*/
30138 1 : p->fieldOfView = FLT2FIX(0.785398);
30139 1 : p->frequency = FLT2FIX(1.0);
30140 1 : p->quality = 1;
30141 1 : return (GF_Node *)p;
30142 : }
30143 :
30144 :
30145 : /*
30146 : Clipper2D Node deletion
30147 : */
30148 :
30149 68 : static void Clipper2D_Del(GF_Node *node)
30150 : {
30151 : M_Clipper2D *p = (M_Clipper2D *) node;
30152 68 : gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
30153 68 : gf_node_unregister((GF_Node *) p->transform, (GF_Node *) p);
30154 68 : gf_sg_vrml_parent_destroy((GF_Node *) p);
30155 68 : gf_node_free((GF_Node *) p);
30156 68 : }
30157 :
30158 : static const u16 Clipper2D_Def2All[] = { 2, 3, 4, 5, 6};
30159 : static const u16 Clipper2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
30160 : static const u16 Clipper2D_Out2All[] = { 2, 3, 4, 5, 6};
30161 :
30162 : static u32 Clipper2D_get_field_count(GF_Node *node, u8 IndexMode)
30163 : {
30164 : switch(IndexMode) {
30165 : case GF_SG_FIELD_CODING_IN:
30166 : return 7;
30167 : case GF_SG_FIELD_CODING_DEF:
30168 : return 5;
30169 : case GF_SG_FIELD_CODING_OUT:
30170 : return 5;
30171 : case GF_SG_FIELD_CODING_DYN:
30172 : return 0;
30173 : default:
30174 : return 7;
30175 : }
30176 : }
30177 :
30178 : static GF_Err Clipper2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30179 : {
30180 122 : switch(IndexMode) {
30181 0 : case GF_SG_FIELD_CODING_IN:
30182 0 : *allField = Clipper2D_In2All[inField];
30183 : return GF_OK;
30184 115 : case GF_SG_FIELD_CODING_DEF:
30185 115 : *allField = Clipper2D_Def2All[inField];
30186 : return GF_OK;
30187 0 : case GF_SG_FIELD_CODING_OUT:
30188 0 : *allField = Clipper2D_Out2All[inField];
30189 : return GF_OK;
30190 : default:
30191 : return GF_BAD_PARAM;
30192 : }
30193 : }
30194 362 : static GF_Err Clipper2D_get_field(GF_Node *node, GF_FieldInfo *info)
30195 : {
30196 362 : switch (info->fieldIndex) {
30197 17 : case 0:
30198 17 : info->name = "addChildren";
30199 17 : info->eventType = GF_SG_EVENT_IN;
30200 17 : info->on_event_in = ((M_Clipper2D *)node)->on_addChildren;
30201 17 : info->fieldType = GF_SG_VRML_MFNODE;
30202 17 : info->NDTtype = NDT_SF2DNode;
30203 17 : info->far_ptr = & ((M_Clipper2D *)node)->addChildren;
30204 17 : return GF_OK;
30205 17 : case 1:
30206 17 : info->name = "removeChildren";
30207 17 : info->eventType = GF_SG_EVENT_IN;
30208 17 : info->on_event_in = ((M_Clipper2D *)node)->on_removeChildren;
30209 17 : info->fieldType = GF_SG_VRML_MFNODE;
30210 17 : info->NDTtype = NDT_SF2DNode;
30211 17 : info->far_ptr = & ((M_Clipper2D *)node)->removeChildren;
30212 17 : return GF_OK;
30213 39 : case 2:
30214 39 : info->name = "children";
30215 39 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30216 39 : info->fieldType = GF_SG_VRML_MFNODE;
30217 39 : info->NDTtype = NDT_SF2DNode;
30218 39 : info->far_ptr = & ((M_Clipper2D *)node)->children;
30219 39 : return GF_OK;
30220 39 : case 3:
30221 39 : info->name = "geometry";
30222 39 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30223 39 : info->fieldType = GF_SG_VRML_SFNODE;
30224 39 : info->NDTtype = NDT_SFGeometryNode;
30225 39 : info->far_ptr = & ((M_Clipper2D *)node)->geometry;
30226 39 : return GF_OK;
30227 137 : case 4:
30228 137 : info->name = "inside";
30229 137 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30230 137 : info->fieldType = GF_SG_VRML_SFBOOL;
30231 137 : info->far_ptr = & ((M_Clipper2D *) node)->inside;
30232 137 : return GF_OK;
30233 39 : case 5:
30234 39 : info->name = "transform";
30235 39 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30236 39 : info->fieldType = GF_SG_VRML_SFNODE;
30237 39 : info->NDTtype = NDT_SF2DNode;
30238 39 : info->far_ptr = & ((M_Clipper2D *)node)->transform;
30239 39 : return GF_OK;
30240 74 : case 6:
30241 74 : info->name = "XOR";
30242 74 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30243 74 : info->fieldType = GF_SG_VRML_SFBOOL;
30244 74 : info->far_ptr = & ((M_Clipper2D *) node)->XOR;
30245 74 : return GF_OK;
30246 : default:
30247 : return GF_BAD_PARAM;
30248 : }
30249 : }
30250 :
30251 :
30252 36 : static s32 Clipper2D_get_field_index_by_name(char *name)
30253 : {
30254 36 : if (!strcmp("addChildren", name)) return 0;
30255 35 : if (!strcmp("removeChildren", name)) return 1;
30256 34 : if (!strcmp("children", name)) return 2;
30257 31 : if (!strcmp("geometry", name)) return 3;
30258 28 : if (!strcmp("inside", name)) return 4;
30259 6 : if (!strcmp("transform", name)) return 5;
30260 3 : if (!strcmp("XOR", name)) return 6;
30261 0 : return -1;
30262 : }
30263 : static Bool Clipper2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
30264 : {
30265 : switch (FieldIndex) {
30266 : default:
30267 : return 0;
30268 : }
30269 : }
30270 :
30271 :
30272 :
30273 68 : GF_Node *Clipper2D_Create()
30274 : {
30275 : M_Clipper2D *p;
30276 68 : GF_SAFEALLOC(p, M_Clipper2D);
30277 68 : if(!p) return NULL;
30278 68 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Clipper2D);
30279 68 : gf_sg_vrml_parent_setup((GF_Node *) p);
30280 :
30281 : /*default field values*/
30282 68 : p->inside = 1;
30283 68 : return (GF_Node *)p;
30284 : }
30285 :
30286 :
30287 : /*
30288 : ColorTransform Node deletion
30289 : */
30290 :
30291 : static void ColorTransform_Del(GF_Node *node)
30292 : {
30293 : M_ColorTransform *p = (M_ColorTransform *) node;
30294 633 : gf_sg_vrml_parent_destroy((GF_Node *) p);
30295 633 : gf_node_free((GF_Node *) p);
30296 : }
30297 :
30298 : static const u16 ColorTransform_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
30299 : static const u16 ColorTransform_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
30300 : static const u16 ColorTransform_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
30301 : static const u16 ColorTransform_Dyn2All[] = { 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22};
30302 :
30303 : static u32 ColorTransform_get_field_count(GF_Node *node, u8 IndexMode)
30304 : {
30305 : switch(IndexMode) {
30306 : case GF_SG_FIELD_CODING_IN:
30307 : return 23;
30308 : case GF_SG_FIELD_CODING_DEF:
30309 : return 21;
30310 : case GF_SG_FIELD_CODING_OUT:
30311 : return 21;
30312 : case GF_SG_FIELD_CODING_DYN:
30313 : return 20;
30314 : default:
30315 : return 23;
30316 : }
30317 : }
30318 :
30319 : static GF_Err ColorTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30320 : {
30321 2024 : switch(IndexMode) {
30322 0 : case GF_SG_FIELD_CODING_IN:
30323 0 : *allField = ColorTransform_In2All[inField];
30324 : return GF_OK;
30325 2001 : case GF_SG_FIELD_CODING_DEF:
30326 2001 : *allField = ColorTransform_Def2All[inField];
30327 : return GF_OK;
30328 0 : case GF_SG_FIELD_CODING_OUT:
30329 0 : *allField = ColorTransform_Out2All[inField];
30330 : return GF_OK;
30331 0 : case GF_SG_FIELD_CODING_DYN:
30332 0 : *allField = ColorTransform_Dyn2All[inField];
30333 : return GF_OK;
30334 : default:
30335 : return GF_BAD_PARAM;
30336 : }
30337 : }
30338 25453 : static GF_Err ColorTransform_get_field(GF_Node *node, GF_FieldInfo *info)
30339 : {
30340 25453 : switch (info->fieldIndex) {
30341 798 : case 0:
30342 798 : info->name = "addChildren";
30343 798 : info->eventType = GF_SG_EVENT_IN;
30344 798 : info->on_event_in = ((M_ColorTransform *)node)->on_addChildren;
30345 798 : info->fieldType = GF_SG_VRML_MFNODE;
30346 798 : info->NDTtype = NDT_SF3DNode;
30347 798 : info->far_ptr = & ((M_ColorTransform *)node)->addChildren;
30348 798 : return GF_OK;
30349 798 : case 1:
30350 798 : info->name = "removeChildren";
30351 798 : info->eventType = GF_SG_EVENT_IN;
30352 798 : info->on_event_in = ((M_ColorTransform *)node)->on_removeChildren;
30353 798 : info->fieldType = GF_SG_VRML_MFNODE;
30354 798 : info->NDTtype = NDT_SF3DNode;
30355 798 : info->far_ptr = & ((M_ColorTransform *)node)->removeChildren;
30356 798 : return GF_OK;
30357 1054 : case 2:
30358 1054 : info->name = "children";
30359 1054 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30360 1054 : info->fieldType = GF_SG_VRML_MFNODE;
30361 1054 : info->NDTtype = NDT_SF3DNode;
30362 1054 : info->far_ptr = & ((M_ColorTransform *)node)->children;
30363 1054 : return GF_OK;
30364 1088 : case 3:
30365 1088 : info->name = "mrr";
30366 1088 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30367 1088 : info->fieldType = GF_SG_VRML_SFFLOAT;
30368 1088 : info->far_ptr = & ((M_ColorTransform *) node)->mrr;
30369 1088 : return GF_OK;
30370 1023 : case 4:
30371 1023 : info->name = "mrg";
30372 1023 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30373 1023 : info->fieldType = GF_SG_VRML_SFFLOAT;
30374 1023 : info->far_ptr = & ((M_ColorTransform *) node)->mrg;
30375 1023 : return GF_OK;
30376 1000 : case 5:
30377 1000 : info->name = "mrb";
30378 1000 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30379 1000 : info->fieldType = GF_SG_VRML_SFFLOAT;
30380 1000 : info->far_ptr = & ((M_ColorTransform *) node)->mrb;
30381 1000 : return GF_OK;
30382 994 : case 6:
30383 994 : info->name = "mra";
30384 994 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30385 994 : info->fieldType = GF_SG_VRML_SFFLOAT;
30386 994 : info->far_ptr = & ((M_ColorTransform *) node)->mra;
30387 994 : return GF_OK;
30388 1808 : case 7:
30389 1808 : info->name = "tr";
30390 1808 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30391 1808 : info->fieldType = GF_SG_VRML_SFFLOAT;
30392 1808 : info->far_ptr = & ((M_ColorTransform *) node)->tr;
30393 1808 : return GF_OK;
30394 994 : case 8:
30395 994 : info->name = "mgr";
30396 994 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30397 994 : info->fieldType = GF_SG_VRML_SFFLOAT;
30398 994 : info->far_ptr = & ((M_ColorTransform *) node)->mgr;
30399 994 : return GF_OK;
30400 1087 : case 9:
30401 1087 : info->name = "mgg";
30402 1087 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30403 1087 : info->fieldType = GF_SG_VRML_SFFLOAT;
30404 1087 : info->far_ptr = & ((M_ColorTransform *) node)->mgg;
30405 1087 : return GF_OK;
30406 994 : case 10:
30407 994 : info->name = "mgb";
30408 994 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30409 994 : info->fieldType = GF_SG_VRML_SFFLOAT;
30410 994 : info->far_ptr = & ((M_ColorTransform *) node)->mgb;
30411 994 : return GF_OK;
30412 994 : case 11:
30413 994 : info->name = "mga";
30414 994 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30415 994 : info->fieldType = GF_SG_VRML_SFFLOAT;
30416 994 : info->far_ptr = & ((M_ColorTransform *) node)->mga;
30417 994 : return GF_OK;
30418 1776 : case 12:
30419 1776 : info->name = "tg";
30420 1776 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30421 1776 : info->fieldType = GF_SG_VRML_SFFLOAT;
30422 1776 : info->far_ptr = & ((M_ColorTransform *) node)->tg;
30423 1776 : return GF_OK;
30424 1023 : case 13:
30425 1023 : info->name = "mbr";
30426 1023 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30427 1023 : info->fieldType = GF_SG_VRML_SFFLOAT;
30428 1023 : info->far_ptr = & ((M_ColorTransform *) node)->mbr;
30429 1023 : return GF_OK;
30430 994 : case 14:
30431 994 : info->name = "mbg";
30432 994 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30433 994 : info->fieldType = GF_SG_VRML_SFFLOAT;
30434 994 : info->far_ptr = & ((M_ColorTransform *) node)->mbg;
30435 994 : return GF_OK;
30436 1087 : case 15:
30437 1087 : info->name = "mbb";
30438 1087 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30439 1087 : info->fieldType = GF_SG_VRML_SFFLOAT;
30440 1087 : info->far_ptr = & ((M_ColorTransform *) node)->mbb;
30441 1087 : return GF_OK;
30442 994 : case 16:
30443 994 : info->name = "mba";
30444 994 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30445 994 : info->fieldType = GF_SG_VRML_SFFLOAT;
30446 994 : info->far_ptr = & ((M_ColorTransform *) node)->mba;
30447 994 : return GF_OK;
30448 1776 : case 17:
30449 1776 : info->name = "tb";
30450 1776 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30451 1776 : info->fieldType = GF_SG_VRML_SFFLOAT;
30452 1776 : info->far_ptr = & ((M_ColorTransform *) node)->tb;
30453 1776 : return GF_OK;
30454 994 : case 18:
30455 994 : info->name = "mar";
30456 994 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30457 994 : info->fieldType = GF_SG_VRML_SFFLOAT;
30458 994 : info->far_ptr = & ((M_ColorTransform *) node)->mar;
30459 994 : return GF_OK;
30460 994 : case 19:
30461 994 : info->name = "mag";
30462 994 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30463 994 : info->fieldType = GF_SG_VRML_SFFLOAT;
30464 994 : info->far_ptr = & ((M_ColorTransform *) node)->mag;
30465 994 : return GF_OK;
30466 994 : case 20:
30467 994 : info->name = "mab";
30468 994 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30469 994 : info->fieldType = GF_SG_VRML_SFFLOAT;
30470 994 : info->far_ptr = & ((M_ColorTransform *) node)->mab;
30471 994 : return GF_OK;
30472 1080 : case 21:
30473 1080 : info->name = "maa";
30474 1080 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30475 1080 : info->fieldType = GF_SG_VRML_SFFLOAT;
30476 1080 : info->far_ptr = & ((M_ColorTransform *) node)->maa;
30477 1080 : return GF_OK;
30478 1109 : case 22:
30479 1109 : info->name = "ta";
30480 1109 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30481 1109 : info->fieldType = GF_SG_VRML_SFFLOAT;
30482 1109 : info->far_ptr = & ((M_ColorTransform *) node)->ta;
30483 1109 : return GF_OK;
30484 : default:
30485 : return GF_BAD_PARAM;
30486 : }
30487 : }
30488 :
30489 :
30490 355 : static s32 ColorTransform_get_field_index_by_name(char *name)
30491 : {
30492 355 : if (!strcmp("addChildren", name)) return 0;
30493 354 : if (!strcmp("removeChildren", name)) return 1;
30494 353 : if (!strcmp("children", name)) return 2;
30495 302 : if (!strcmp("mrr", name)) return 3;
30496 251 : if (!strcmp("mrg", name)) return 4;
30497 221 : if (!strcmp("mrb", name)) return 5;
30498 217 : if (!strcmp("mra", name)) return 6;
30499 216 : if (!strcmp("tr", name)) return 7;
30500 183 : if (!strcmp("mgr", name)) return 8;
30501 182 : if (!strcmp("mgg", name)) return 9;
30502 132 : if (!strcmp("mgb", name)) return 10;
30503 131 : if (!strcmp("mga", name)) return 11;
30504 130 : if (!strcmp("tg", name)) return 12;
30505 128 : if (!strcmp("mbr", name)) return 13;
30506 98 : if (!strcmp("mbg", name)) return 14;
30507 97 : if (!strcmp("mbb", name)) return 15;
30508 47 : if (!strcmp("mba", name)) return 16;
30509 46 : if (!strcmp("tb", name)) return 17;
30510 44 : if (!strcmp("mar", name)) return 18;
30511 43 : if (!strcmp("mag", name)) return 19;
30512 42 : if (!strcmp("mab", name)) return 20;
30513 41 : if (!strcmp("maa", name)) return 21;
30514 20 : if (!strcmp("ta", name)) return 22;
30515 0 : return -1;
30516 : }
30517 63 : static Bool ColorTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
30518 : {
30519 63 : switch (FieldIndex) {
30520 9 : case 3:
30521 9 : *AType = 7;
30522 9 : *QType = 7;
30523 9 : *b_min = FIX_MIN;
30524 9 : *b_max = FIX_MAX;
30525 : return 1;
30526 1 : case 4:
30527 1 : *AType = 7;
30528 1 : *QType = 7;
30529 1 : *b_min = FIX_MIN;
30530 1 : *b_max = FIX_MAX;
30531 : return 1;
30532 1 : case 5:
30533 1 : *AType = 7;
30534 1 : *QType = 7;
30535 1 : *b_min = FIX_MIN;
30536 1 : *b_max = FIX_MAX;
30537 : return 1;
30538 1 : case 6:
30539 1 : *AType = 7;
30540 1 : *QType = 7;
30541 1 : *b_min = FIX_MIN;
30542 1 : *b_max = FIX_MAX;
30543 : return 1;
30544 1 : case 7:
30545 1 : *AType = 7;
30546 1 : *QType = 4;
30547 1 : *b_min = FIX_MIN;
30548 1 : *b_max = FIX_MAX;
30549 : return 1;
30550 1 : case 8:
30551 1 : *AType = 7;
30552 1 : *QType = 7;
30553 1 : *b_min = FIX_MIN;
30554 1 : *b_max = FIX_MAX;
30555 : return 1;
30556 9 : case 9:
30557 9 : *AType = 7;
30558 9 : *QType = 7;
30559 9 : *b_min = FIX_MIN;
30560 9 : *b_max = FIX_MAX;
30561 : return 1;
30562 1 : case 10:
30563 1 : *AType = 7;
30564 1 : *QType = 7;
30565 1 : *b_min = FIX_MIN;
30566 1 : *b_max = FIX_MAX;
30567 : return 1;
30568 1 : case 11:
30569 1 : *AType = 7;
30570 1 : *QType = 7;
30571 1 : *b_min = FIX_MIN;
30572 1 : *b_max = FIX_MAX;
30573 : return 1;
30574 1 : case 12:
30575 1 : *AType = 7;
30576 1 : *QType = 4;
30577 1 : *b_min = FIX_MIN;
30578 1 : *b_max = FIX_MAX;
30579 : return 1;
30580 1 : case 13:
30581 1 : *AType = 7;
30582 1 : *QType = 7;
30583 1 : *b_min = FIX_MIN;
30584 1 : *b_max = FIX_MAX;
30585 : return 1;
30586 1 : case 14:
30587 1 : *AType = 7;
30588 1 : *QType = 7;
30589 1 : *b_min = FIX_MIN;
30590 1 : *b_max = FIX_MAX;
30591 : return 1;
30592 9 : case 15:
30593 9 : *AType = 7;
30594 9 : *QType = 7;
30595 9 : *b_min = FIX_MIN;
30596 9 : *b_max = FIX_MAX;
30597 : return 1;
30598 1 : case 16:
30599 1 : *AType = 7;
30600 1 : *QType = 7;
30601 1 : *b_min = FIX_MIN;
30602 1 : *b_max = FIX_MAX;
30603 : return 1;
30604 1 : case 17:
30605 1 : *AType = 7;
30606 1 : *QType = 4;
30607 1 : *b_min = FIX_MIN;
30608 1 : *b_max = FIX_MAX;
30609 : return 1;
30610 1 : case 18:
30611 1 : *AType = 7;
30612 1 : *QType = 7;
30613 1 : *b_min = FIX_MIN;
30614 1 : *b_max = FIX_MAX;
30615 : return 1;
30616 1 : case 19:
30617 1 : *AType = 7;
30618 1 : *QType = 7;
30619 1 : *b_min = FIX_MIN;
30620 1 : *b_max = FIX_MAX;
30621 : return 1;
30622 1 : case 20:
30623 1 : *AType = 7;
30624 1 : *QType = 7;
30625 1 : *b_min = FIX_MIN;
30626 1 : *b_max = FIX_MAX;
30627 : return 1;
30628 9 : case 21:
30629 9 : *AType = 7;
30630 9 : *QType = 7;
30631 9 : *b_min = FIX_MIN;
30632 9 : *b_max = FIX_MAX;
30633 : return 1;
30634 9 : case 22:
30635 9 : *AType = 7;
30636 9 : *QType = 4;
30637 9 : *b_min = FIX_MIN;
30638 9 : *b_max = FIX_MAX;
30639 : return 1;
30640 : default:
30641 : return 0;
30642 : }
30643 : }
30644 :
30645 :
30646 :
30647 633 : GF_Node *ColorTransform_Create()
30648 : {
30649 : M_ColorTransform *p;
30650 633 : GF_SAFEALLOC(p, M_ColorTransform);
30651 633 : if(!p) return NULL;
30652 633 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ColorTransform);
30653 633 : gf_sg_vrml_parent_setup((GF_Node *) p);
30654 :
30655 : /*default field values*/
30656 633 : p->mrr = FLT2FIX(1);
30657 633 : p->mrg = FLT2FIX(0);
30658 633 : p->mrb = FLT2FIX(0);
30659 633 : p->mra = FLT2FIX(0);
30660 633 : p->tr = FLT2FIX(0);
30661 633 : p->mgr = FLT2FIX(0);
30662 633 : p->mgg = FLT2FIX(1);
30663 633 : p->mgb = FLT2FIX(0);
30664 633 : p->mga = FLT2FIX(0);
30665 633 : p->tg = FLT2FIX(0);
30666 633 : p->mbr = FLT2FIX(0);
30667 633 : p->mbg = FLT2FIX(0);
30668 633 : p->mbb = FLT2FIX(1);
30669 633 : p->mba = FLT2FIX(0);
30670 633 : p->tb = FLT2FIX(0);
30671 633 : p->mar = FLT2FIX(0);
30672 633 : p->mag = FLT2FIX(0);
30673 633 : p->mab = FLT2FIX(0);
30674 633 : p->maa = FLT2FIX(1);
30675 633 : p->ta = FLT2FIX(0);
30676 633 : return (GF_Node *)p;
30677 : }
30678 :
30679 :
30680 : /*
30681 : Ellipse Node deletion
30682 : */
30683 :
30684 : static void Ellipse_Del(GF_Node *node)
30685 : {
30686 : M_Ellipse *p = (M_Ellipse *) node;
30687 5 : gf_node_free((GF_Node *) p);
30688 : }
30689 :
30690 : static const u16 Ellipse_Def2All[] = { 0};
30691 : static const u16 Ellipse_In2All[] = { 0};
30692 : static const u16 Ellipse_Out2All[] = { 0};
30693 : static const u16 Ellipse_Dyn2All[] = { 0};
30694 :
30695 : static u32 Ellipse_get_field_count(GF_Node *node, u8 IndexMode)
30696 : {
30697 : switch(IndexMode) {
30698 : case GF_SG_FIELD_CODING_IN:
30699 : return 1;
30700 : case GF_SG_FIELD_CODING_DEF:
30701 : return 1;
30702 : case GF_SG_FIELD_CODING_OUT:
30703 : return 1;
30704 : case GF_SG_FIELD_CODING_DYN:
30705 : return 1;
30706 : default:
30707 : return 1;
30708 : }
30709 : }
30710 :
30711 : static GF_Err Ellipse_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30712 : {
30713 1 : switch(IndexMode) {
30714 0 : case GF_SG_FIELD_CODING_IN:
30715 0 : *allField = Ellipse_In2All[inField];
30716 : return GF_OK;
30717 0 : case GF_SG_FIELD_CODING_DEF:
30718 0 : *allField = Ellipse_Def2All[inField];
30719 : return GF_OK;
30720 0 : case GF_SG_FIELD_CODING_OUT:
30721 0 : *allField = Ellipse_Out2All[inField];
30722 : return GF_OK;
30723 0 : case GF_SG_FIELD_CODING_DYN:
30724 0 : *allField = Ellipse_Dyn2All[inField];
30725 : return GF_OK;
30726 : default:
30727 : return GF_BAD_PARAM;
30728 : }
30729 : }
30730 : static GF_Err Ellipse_get_field(GF_Node *node, GF_FieldInfo *info)
30731 : {
30732 6 : switch (info->fieldIndex) {
30733 6 : case 0:
30734 6 : info->name = "radius";
30735 6 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30736 6 : info->fieldType = GF_SG_VRML_SFVEC2F;
30737 6 : info->far_ptr = & ((M_Ellipse *) node)->radius;
30738 : return GF_OK;
30739 : default:
30740 : return GF_BAD_PARAM;
30741 : }
30742 : }
30743 :
30744 :
30745 : static s32 Ellipse_get_field_index_by_name(char *name)
30746 : {
30747 5 : if (!strcmp("radius", name)) return 0;
30748 : return -1;
30749 : }
30750 : static Bool Ellipse_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
30751 : {
30752 1 : switch (FieldIndex) {
30753 1 : case 0:
30754 1 : *AType = 2;
30755 1 : *QType = 12;
30756 1 : *b_min = FLT2FIX(0);
30757 1 : *b_max = FIX_MAX;
30758 : return 1;
30759 : default:
30760 : return 0;
30761 : }
30762 : }
30763 :
30764 :
30765 :
30766 5 : GF_Node *Ellipse_Create()
30767 : {
30768 : M_Ellipse *p;
30769 5 : GF_SAFEALLOC(p, M_Ellipse);
30770 5 : if(!p) return NULL;
30771 5 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Ellipse);
30772 :
30773 : /*default field values*/
30774 5 : p->radius.x = FLT2FIX(1);
30775 5 : p->radius.y = FLT2FIX(1);
30776 5 : return (GF_Node *)p;
30777 : }
30778 :
30779 :
30780 : /*
30781 : LinearGradient Node deletion
30782 : */
30783 :
30784 338 : static void LinearGradient_Del(GF_Node *node)
30785 : {
30786 : M_LinearGradient *p = (M_LinearGradient *) node;
30787 338 : gf_sg_mffloat_del(p->key);
30788 338 : gf_sg_mfcolor_del(p->keyValue);
30789 338 : gf_sg_mffloat_del(p->opacity);
30790 338 : gf_node_unregister((GF_Node *) p->transform, (GF_Node *) p);
30791 338 : gf_node_free((GF_Node *) p);
30792 338 : }
30793 :
30794 : static const u16 LinearGradient_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
30795 : static const u16 LinearGradient_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
30796 : static const u16 LinearGradient_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
30797 : static const u16 LinearGradient_Dyn2All[] = { 0, 5};
30798 :
30799 : static u32 LinearGradient_get_field_count(GF_Node *node, u8 IndexMode)
30800 : {
30801 580 : switch(IndexMode) {
30802 : case GF_SG_FIELD_CODING_IN:
30803 : return 7;
30804 : case GF_SG_FIELD_CODING_DEF:
30805 : return 7;
30806 : case GF_SG_FIELD_CODING_OUT:
30807 : return 7;
30808 1 : case GF_SG_FIELD_CODING_DYN:
30809 : return 2;
30810 : default:
30811 : return 7;
30812 : }
30813 : }
30814 :
30815 : static GF_Err LinearGradient_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30816 : {
30817 906 : switch(IndexMode) {
30818 0 : case GF_SG_FIELD_CODING_IN:
30819 0 : *allField = LinearGradient_In2All[inField];
30820 : return GF_OK;
30821 899 : case GF_SG_FIELD_CODING_DEF:
30822 899 : *allField = LinearGradient_Def2All[inField];
30823 : return GF_OK;
30824 0 : case GF_SG_FIELD_CODING_OUT:
30825 0 : *allField = LinearGradient_Out2All[inField];
30826 : return GF_OK;
30827 0 : case GF_SG_FIELD_CODING_DYN:
30828 0 : *allField = LinearGradient_Dyn2All[inField];
30829 : return GF_OK;
30830 : default:
30831 : return GF_BAD_PARAM;
30832 : }
30833 : }
30834 5675 : static GF_Err LinearGradient_get_field(GF_Node *node, GF_FieldInfo *info)
30835 : {
30836 5675 : switch (info->fieldIndex) {
30837 936 : case 0:
30838 936 : info->name = "endPoint";
30839 936 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30840 936 : info->fieldType = GF_SG_VRML_SFVEC2F;
30841 936 : info->far_ptr = & ((M_LinearGradient *) node)->endPoint;
30842 936 : return GF_OK;
30843 982 : case 1:
30844 982 : info->name = "key";
30845 982 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30846 982 : info->fieldType = GF_SG_VRML_MFFLOAT;
30847 982 : info->far_ptr = & ((M_LinearGradient *) node)->key;
30848 982 : return GF_OK;
30849 988 : case 2:
30850 988 : info->name = "keyValue";
30851 988 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30852 988 : info->fieldType = GF_SG_VRML_MFCOLOR;
30853 988 : info->far_ptr = & ((M_LinearGradient *) node)->keyValue;
30854 988 : return GF_OK;
30855 609 : case 3:
30856 609 : info->name = "opacity";
30857 609 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30858 609 : info->fieldType = GF_SG_VRML_MFFLOAT;
30859 609 : info->far_ptr = & ((M_LinearGradient *) node)->opacity;
30860 609 : return GF_OK;
30861 604 : case 4:
30862 604 : info->name = "spreadMethod";
30863 604 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30864 604 : info->fieldType = GF_SG_VRML_SFINT32;
30865 604 : info->far_ptr = & ((M_LinearGradient *) node)->spreadMethod;
30866 604 : return GF_OK;
30867 913 : case 5:
30868 913 : info->name = "startPoint";
30869 913 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30870 913 : info->fieldType = GF_SG_VRML_SFVEC2F;
30871 913 : info->far_ptr = & ((M_LinearGradient *) node)->startPoint;
30872 913 : return GF_OK;
30873 643 : case 6:
30874 643 : info->name = "transform";
30875 643 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
30876 643 : info->fieldType = GF_SG_VRML_SFNODE;
30877 643 : info->NDTtype = NDT_SF3DNode;
30878 643 : info->far_ptr = & ((M_LinearGradient *)node)->transform;
30879 643 : return GF_OK;
30880 : default:
30881 : return GF_BAD_PARAM;
30882 : }
30883 : }
30884 :
30885 :
30886 1035 : static s32 LinearGradient_get_field_index_by_name(char *name)
30887 : {
30888 1035 : if (!strcmp("endPoint", name)) return 0;
30889 814 : if (!strcmp("key", name)) return 1;
30890 583 : if (!strcmp("keyValue", name)) return 2;
30891 346 : if (!strcmp("opacity", name)) return 3;
30892 314 : if (!strcmp("spreadMethod", name)) return 4;
30893 294 : if (!strcmp("startPoint", name)) return 5;
30894 103 : if (!strcmp("transform", name)) return 6;
30895 0 : return -1;
30896 : }
30897 95 : static Bool LinearGradient_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
30898 : {
30899 95 : switch (FieldIndex) {
30900 1 : case 0:
30901 1 : *AType = 2;
30902 1 : *QType = 5;
30903 1 : *b_min = FIX_MIN;
30904 1 : *b_max = FIX_MAX;
30905 : return 1;
30906 41 : case 1:
30907 41 : *AType = 0;
30908 41 : *QType = 8;
30909 41 : *b_min = FLT2FIX(0);
30910 41 : *b_max = FLT2FIX(1);
30911 : return 1;
30912 41 : case 2:
30913 41 : *AType = 0;
30914 41 : *QType = 4;
30915 41 : *b_min = FLT2FIX(0);
30916 41 : *b_max = FLT2FIX(1);
30917 : return 1;
30918 1 : case 3:
30919 1 : *AType = 0;
30920 1 : *QType = 7;
30921 1 : *b_min = FLT2FIX(0);
30922 1 : *b_max = FLT2FIX(1);
30923 : return 1;
30924 1 : case 4:
30925 1 : *AType = 0;
30926 1 : *QType = 13;
30927 1 : *QT13_bits = 2;
30928 1 : *b_min = FLT2FIX(0);
30929 1 : *b_max = FLT2FIX(2);
30930 : return 1;
30931 9 : case 5:
30932 9 : *AType = 2;
30933 9 : *QType = 5;
30934 9 : *b_min = FIX_MIN;
30935 9 : *b_max = FIX_MAX;
30936 : return 1;
30937 : default:
30938 : return 0;
30939 : }
30940 : }
30941 :
30942 :
30943 :
30944 338 : GF_Node *LinearGradient_Create()
30945 : {
30946 : M_LinearGradient *p;
30947 338 : GF_SAFEALLOC(p, M_LinearGradient);
30948 338 : if(!p) return NULL;
30949 338 : gf_node_setup((GF_Node *)p, TAG_MPEG4_LinearGradient);
30950 :
30951 : /*default field values*/
30952 338 : p->endPoint.x = FLT2FIX(1);
30953 338 : p->endPoint.y = FLT2FIX(0);
30954 338 : p->opacity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
30955 338 : p->opacity.count = 1;
30956 338 : p->opacity.vals[0] = FLT2FIX(1);
30957 338 : p->spreadMethod = 0;
30958 338 : p->startPoint.x = FLT2FIX(0);
30959 338 : p->startPoint.y = FLT2FIX(0);
30960 338 : return (GF_Node *)p;
30961 : }
30962 :
30963 :
30964 : /*
30965 : PathLayout Node deletion
30966 : */
30967 :
30968 68 : static void PathLayout_Del(GF_Node *node)
30969 : {
30970 : M_PathLayout *p = (M_PathLayout *) node;
30971 68 : gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
30972 68 : gf_sg_mfint32_del(p->alignment);
30973 68 : gf_sg_vrml_parent_destroy((GF_Node *) p);
30974 68 : gf_node_free((GF_Node *) p);
30975 68 : }
30976 :
30977 : static const u16 PathLayout_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9};
30978 : static const u16 PathLayout_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
30979 : static const u16 PathLayout_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9};
30980 : static const u16 PathLayout_Dyn2All[] = { 5, 6};
30981 :
30982 : static u32 PathLayout_get_field_count(GF_Node *node, u8 IndexMode)
30983 : {
30984 : switch(IndexMode) {
30985 : case GF_SG_FIELD_CODING_IN:
30986 : return 10;
30987 : case GF_SG_FIELD_CODING_DEF:
30988 : return 8;
30989 : case GF_SG_FIELD_CODING_OUT:
30990 : return 8;
30991 : case GF_SG_FIELD_CODING_DYN:
30992 : return 2;
30993 : default:
30994 : return 10;
30995 : }
30996 : }
30997 :
30998 : static GF_Err PathLayout_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
30999 : {
31000 185 : switch(IndexMode) {
31001 0 : case GF_SG_FIELD_CODING_IN:
31002 0 : *allField = PathLayout_In2All[inField];
31003 : return GF_OK;
31004 175 : case GF_SG_FIELD_CODING_DEF:
31005 175 : *allField = PathLayout_Def2All[inField];
31006 : return GF_OK;
31007 0 : case GF_SG_FIELD_CODING_OUT:
31008 0 : *allField = PathLayout_Out2All[inField];
31009 : return GF_OK;
31010 0 : case GF_SG_FIELD_CODING_DYN:
31011 0 : *allField = PathLayout_Dyn2All[inField];
31012 : return GF_OK;
31013 : default:
31014 : return GF_BAD_PARAM;
31015 : }
31016 : }
31017 627 : static GF_Err PathLayout_get_field(GF_Node *node, GF_FieldInfo *info)
31018 : {
31019 627 : switch (info->fieldIndex) {
31020 17 : case 0:
31021 17 : info->name = "addChildren";
31022 17 : info->eventType = GF_SG_EVENT_IN;
31023 17 : info->on_event_in = ((M_PathLayout *)node)->on_addChildren;
31024 17 : info->fieldType = GF_SG_VRML_MFNODE;
31025 17 : info->NDTtype = NDT_SF2DNode;
31026 17 : info->far_ptr = & ((M_PathLayout *)node)->addChildren;
31027 17 : return GF_OK;
31028 17 : case 1:
31029 17 : info->name = "removeChildren";
31030 17 : info->eventType = GF_SG_EVENT_IN;
31031 17 : info->on_event_in = ((M_PathLayout *)node)->on_removeChildren;
31032 17 : info->fieldType = GF_SG_VRML_MFNODE;
31033 17 : info->NDTtype = NDT_SF2DNode;
31034 17 : info->far_ptr = & ((M_PathLayout *)node)->removeChildren;
31035 17 : return GF_OK;
31036 39 : case 2:
31037 39 : info->name = "children";
31038 39 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31039 39 : info->fieldType = GF_SG_VRML_MFNODE;
31040 39 : info->NDTtype = NDT_SF2DNode;
31041 39 : info->far_ptr = & ((M_PathLayout *)node)->children;
31042 39 : return GF_OK;
31043 39 : case 3:
31044 39 : info->name = "geometry";
31045 39 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31046 39 : info->fieldType = GF_SG_VRML_SFNODE;
31047 39 : info->NDTtype = NDT_SFGeometryNode;
31048 39 : info->far_ptr = & ((M_PathLayout *)node)->geometry;
31049 39 : return GF_OK;
31050 133 : case 4:
31051 133 : info->name = "alignment";
31052 133 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31053 133 : info->fieldType = GF_SG_VRML_MFINT32;
31054 133 : info->far_ptr = & ((M_PathLayout *) node)->alignment;
31055 133 : return GF_OK;
31056 78 : case 5:
31057 78 : info->name = "pathOffset";
31058 78 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31059 78 : info->fieldType = GF_SG_VRML_SFFLOAT;
31060 78 : info->far_ptr = & ((M_PathLayout *) node)->pathOffset;
31061 78 : return GF_OK;
31062 72 : case 6:
31063 72 : info->name = "spacing";
31064 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31065 72 : info->fieldType = GF_SG_VRML_SFFLOAT;
31066 72 : info->far_ptr = & ((M_PathLayout *) node)->spacing;
31067 72 : return GF_OK;
31068 72 : case 7:
31069 72 : info->name = "reverseLayout";
31070 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31071 72 : info->fieldType = GF_SG_VRML_SFBOOL;
31072 72 : info->far_ptr = & ((M_PathLayout *) node)->reverseLayout;
31073 72 : return GF_OK;
31074 88 : case 8:
31075 88 : info->name = "wrapMode";
31076 88 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31077 88 : info->fieldType = GF_SG_VRML_SFINT32;
31078 88 : info->far_ptr = & ((M_PathLayout *) node)->wrapMode;
31079 88 : return GF_OK;
31080 72 : case 9:
31081 72 : info->name = "splitText";
31082 72 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31083 72 : info->fieldType = GF_SG_VRML_SFBOOL;
31084 72 : info->far_ptr = & ((M_PathLayout *) node)->splitText;
31085 72 : return GF_OK;
31086 : default:
31087 : return GF_BAD_PARAM;
31088 : }
31089 : }
31090 :
31091 :
31092 43 : static s32 PathLayout_get_field_index_by_name(char *name)
31093 : {
31094 43 : if (!strcmp("addChildren", name)) return 0;
31095 42 : if (!strcmp("removeChildren", name)) return 1;
31096 41 : if (!strcmp("children", name)) return 2;
31097 38 : if (!strcmp("geometry", name)) return 3;
31098 35 : if (!strcmp("alignment", name)) return 4;
31099 17 : if (!strcmp("pathOffset", name)) return 5;
31100 12 : if (!strcmp("spacing", name)) return 6;
31101 11 : if (!strcmp("reverseLayout", name)) return 7;
31102 10 : if (!strcmp("wrapMode", name)) return 8;
31103 1 : if (!strcmp("splitText", name)) return 9;
31104 0 : return -1;
31105 : }
31106 : static Bool PathLayout_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
31107 : {
31108 26 : switch (FieldIndex) {
31109 17 : case 4:
31110 17 : *AType = 0;
31111 17 : *QType = 13;
31112 17 : *QT13_bits = 2;
31113 17 : *b_min = FLT2FIX(-1);
31114 17 : *b_max = FLT2FIX(1);
31115 : return 1;
31116 1 : case 5:
31117 1 : *AType = 7;
31118 1 : *QType = 7;
31119 1 : *b_min = FIX_MIN;
31120 1 : *b_max = FIX_MAX;
31121 : return 1;
31122 1 : case 6:
31123 1 : *AType = 7;
31124 1 : *QType = 7;
31125 1 : *b_min = FIX_MIN;
31126 1 : *b_max = FIX_MAX;
31127 : return 1;
31128 1 : case 8:
31129 1 : *AType = 0;
31130 1 : *QType = 13;
31131 1 : *QT13_bits = 2;
31132 1 : *b_min = FLT2FIX(0);
31133 1 : *b_max = FLT2FIX(2);
31134 : return 1;
31135 : default:
31136 : return 0;
31137 : }
31138 : }
31139 :
31140 :
31141 :
31142 68 : GF_Node *PathLayout_Create()
31143 : {
31144 : M_PathLayout *p;
31145 68 : GF_SAFEALLOC(p, M_PathLayout);
31146 68 : if(!p) return NULL;
31147 68 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PathLayout);
31148 68 : gf_sg_vrml_parent_setup((GF_Node *) p);
31149 :
31150 : /*default field values*/
31151 68 : p->alignment.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
31152 68 : p->alignment.count = 1;
31153 68 : p->alignment.vals[0] = 0;
31154 68 : p->pathOffset = FLT2FIX(0);
31155 68 : p->spacing = FLT2FIX(1.0);
31156 68 : p->wrapMode = 0;
31157 68 : p->splitText = 1;
31158 68 : return (GF_Node *)p;
31159 : }
31160 :
31161 :
31162 : /*
31163 : RadialGradient Node deletion
31164 : */
31165 :
31166 497 : static void RadialGradient_Del(GF_Node *node)
31167 : {
31168 : M_RadialGradient *p = (M_RadialGradient *) node;
31169 497 : gf_sg_mffloat_del(p->key);
31170 497 : gf_sg_mfcolor_del(p->keyValue);
31171 497 : gf_sg_mffloat_del(p->opacity);
31172 497 : gf_node_unregister((GF_Node *) p->transform, (GF_Node *) p);
31173 497 : gf_node_free((GF_Node *) p);
31174 497 : }
31175 :
31176 : static const u16 RadialGradient_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
31177 : static const u16 RadialGradient_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
31178 : static const u16 RadialGradient_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
31179 : static const u16 RadialGradient_Dyn2All[] = { 0, 1, 5};
31180 :
31181 : static u32 RadialGradient_get_field_count(GF_Node *node, u8 IndexMode)
31182 : {
31183 618 : switch(IndexMode) {
31184 : case GF_SG_FIELD_CODING_IN:
31185 : return 8;
31186 : case GF_SG_FIELD_CODING_DEF:
31187 : return 8;
31188 : case GF_SG_FIELD_CODING_OUT:
31189 : return 8;
31190 1 : case GF_SG_FIELD_CODING_DYN:
31191 : return 3;
31192 : default:
31193 : return 8;
31194 : }
31195 : }
31196 :
31197 : static GF_Err RadialGradient_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
31198 : {
31199 221 : switch(IndexMode) {
31200 0 : case GF_SG_FIELD_CODING_IN:
31201 0 : *allField = RadialGradient_In2All[inField];
31202 : return GF_OK;
31203 213 : case GF_SG_FIELD_CODING_DEF:
31204 213 : *allField = RadialGradient_Def2All[inField];
31205 : return GF_OK;
31206 0 : case GF_SG_FIELD_CODING_OUT:
31207 0 : *allField = RadialGradient_Out2All[inField];
31208 : return GF_OK;
31209 0 : case GF_SG_FIELD_CODING_DYN:
31210 0 : *allField = RadialGradient_Dyn2All[inField];
31211 : return GF_OK;
31212 : default:
31213 : return GF_BAD_PARAM;
31214 : }
31215 : }
31216 8364 : static GF_Err RadialGradient_get_field(GF_Node *node, GF_FieldInfo *info)
31217 : {
31218 8364 : switch (info->fieldIndex) {
31219 1008 : case 0:
31220 1008 : info->name = "center";
31221 1008 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31222 1008 : info->fieldType = GF_SG_VRML_SFVEC2F;
31223 1008 : info->far_ptr = & ((M_RadialGradient *) node)->center;
31224 1008 : return GF_OK;
31225 1108 : case 1:
31226 1108 : info->name = "focalPoint";
31227 1108 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31228 1108 : info->fieldType = GF_SG_VRML_SFVEC2F;
31229 1108 : info->far_ptr = & ((M_RadialGradient *) node)->focalPoint;
31230 1108 : return GF_OK;
31231 1104 : case 2:
31232 1104 : info->name = "key";
31233 1104 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31234 1104 : info->fieldType = GF_SG_VRML_MFFLOAT;
31235 1104 : info->far_ptr = & ((M_RadialGradient *) node)->key;
31236 1104 : return GF_OK;
31237 1104 : case 3:
31238 1104 : info->name = "keyValue";
31239 1104 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31240 1104 : info->fieldType = GF_SG_VRML_MFCOLOR;
31241 1104 : info->far_ptr = & ((M_RadialGradient *) node)->keyValue;
31242 1104 : return GF_OK;
31243 1037 : case 4:
31244 1037 : info->name = "opacity";
31245 1037 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31246 1037 : info->fieldType = GF_SG_VRML_MFFLOAT;
31247 1037 : info->far_ptr = & ((M_RadialGradient *) node)->opacity;
31248 1037 : return GF_OK;
31249 1010 : case 5:
31250 1010 : info->name = "radius";
31251 1010 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31252 1010 : info->fieldType = GF_SG_VRML_SFFLOAT;
31253 1010 : info->far_ptr = & ((M_RadialGradient *) node)->radius;
31254 1010 : return GF_OK;
31255 1023 : case 6:
31256 1023 : info->name = "spreadMethod";
31257 1023 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31258 1023 : info->fieldType = GF_SG_VRML_SFINT32;
31259 1023 : info->far_ptr = & ((M_RadialGradient *) node)->spreadMethod;
31260 1023 : return GF_OK;
31261 970 : case 7:
31262 970 : info->name = "transform";
31263 970 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31264 970 : info->fieldType = GF_SG_VRML_SFNODE;
31265 970 : info->NDTtype = NDT_SF3DNode;
31266 970 : info->far_ptr = & ((M_RadialGradient *)node)->transform;
31267 970 : return GF_OK;
31268 : default:
31269 : return GF_BAD_PARAM;
31270 : }
31271 : }
31272 :
31273 :
31274 226 : static s32 RadialGradient_get_field_index_by_name(char *name)
31275 : {
31276 226 : if (!strcmp("center", name)) return 0;
31277 222 : if (!strcmp("focalPoint", name)) return 1;
31278 164 : if (!strcmp("key", name)) return 2;
31279 108 : if (!strcmp("keyValue", name)) return 3;
31280 52 : if (!strcmp("opacity", name)) return 4;
31281 18 : if (!strcmp("radius", name)) return 5;
31282 12 : if (!strcmp("spreadMethod", name)) return 6;
31283 2 : if (!strcmp("transform", name)) return 7;
31284 0 : return -1;
31285 : }
31286 64 : static Bool RadialGradient_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
31287 : {
31288 64 : switch (FieldIndex) {
31289 1 : case 0:
31290 1 : *AType = 2;
31291 1 : *QType = 5;
31292 1 : *b_min = FIX_MIN;
31293 1 : *b_max = FIX_MAX;
31294 : return 1;
31295 9 : case 1:
31296 9 : *AType = 2;
31297 9 : *QType = 5;
31298 9 : *b_min = FIX_MIN;
31299 9 : *b_max = FIX_MAX;
31300 : return 1;
31301 25 : case 2:
31302 25 : *AType = 0;
31303 25 : *QType = 8;
31304 25 : *b_min = FLT2FIX(0);
31305 25 : *b_max = FLT2FIX(1);
31306 : return 1;
31307 25 : case 3:
31308 25 : *AType = 0;
31309 25 : *QType = 4;
31310 25 : *b_min = FLT2FIX(0);
31311 25 : *b_max = FLT2FIX(1);
31312 : return 1;
31313 1 : case 4:
31314 1 : *AType = 0;
31315 1 : *QType = 7;
31316 1 : *b_min = FLT2FIX(0);
31317 1 : *b_max = FLT2FIX(1);
31318 : return 1;
31319 1 : case 5:
31320 1 : *AType = 7;
31321 1 : *QType = 12;
31322 1 : *b_min = FLT2FIX(0);
31323 1 : *b_max = FIX_MAX;
31324 : return 1;
31325 1 : case 6:
31326 1 : *AType = 0;
31327 1 : *QType = 13;
31328 1 : *QT13_bits = 2;
31329 1 : *b_min = FLT2FIX(0);
31330 1 : *b_max = FLT2FIX(2);
31331 : return 1;
31332 : default:
31333 : return 0;
31334 : }
31335 : }
31336 :
31337 :
31338 :
31339 497 : GF_Node *RadialGradient_Create()
31340 : {
31341 : M_RadialGradient *p;
31342 497 : GF_SAFEALLOC(p, M_RadialGradient);
31343 497 : if(!p) return NULL;
31344 497 : gf_node_setup((GF_Node *)p, TAG_MPEG4_RadialGradient);
31345 :
31346 : /*default field values*/
31347 497 : p->center.x = FLT2FIX(0.5);
31348 497 : p->center.y = FLT2FIX(0.5);
31349 497 : p->focalPoint.x = FLT2FIX(0);
31350 497 : p->focalPoint.y = FLT2FIX(0);
31351 497 : p->opacity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
31352 497 : p->opacity.count = 1;
31353 497 : p->opacity.vals[0] = FLT2FIX(1);
31354 497 : p->radius = FLT2FIX(0.5);
31355 497 : p->spreadMethod = 0;
31356 497 : return (GF_Node *)p;
31357 : }
31358 :
31359 :
31360 : /*
31361 : SynthesizedTexture Node deletion
31362 : */
31363 :
31364 1 : static void SynthesizedTexture_Del(GF_Node *node)
31365 : {
31366 : M_SynthesizedTexture *p = (M_SynthesizedTexture *) node;
31367 1 : gf_sg_mfvec3f_del(p->translation);
31368 1 : gf_sg_mfrotation_del(p->rotation);
31369 1 : gf_sg_mfurl_del(p->url);
31370 1 : gf_node_free((GF_Node *) p);
31371 1 : }
31372 :
31373 : static const u16 SynthesizedTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
31374 : static const u16 SynthesizedTexture_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
31375 : static const u16 SynthesizedTexture_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
31376 : static const u16 SynthesizedTexture_Dyn2All[] = { 0, 1, 5};
31377 :
31378 : static u32 SynthesizedTexture_get_field_count(GF_Node *node, u8 IndexMode)
31379 : {
31380 : switch(IndexMode) {
31381 : case GF_SG_FIELD_CODING_IN:
31382 : return 9;
31383 : case GF_SG_FIELD_CODING_DEF:
31384 : return 9;
31385 : case GF_SG_FIELD_CODING_OUT:
31386 : return 11;
31387 : case GF_SG_FIELD_CODING_DYN:
31388 : return 3;
31389 : default:
31390 : return 11;
31391 : }
31392 : }
31393 :
31394 : static GF_Err SynthesizedTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
31395 : {
31396 11 : switch(IndexMode) {
31397 0 : case GF_SG_FIELD_CODING_IN:
31398 0 : *allField = SynthesizedTexture_In2All[inField];
31399 : return GF_OK;
31400 0 : case GF_SG_FIELD_CODING_DEF:
31401 0 : *allField = SynthesizedTexture_Def2All[inField];
31402 : return GF_OK;
31403 0 : case GF_SG_FIELD_CODING_OUT:
31404 0 : *allField = SynthesizedTexture_Out2All[inField];
31405 : return GF_OK;
31406 0 : case GF_SG_FIELD_CODING_DYN:
31407 0 : *allField = SynthesizedTexture_Dyn2All[inField];
31408 : return GF_OK;
31409 : default:
31410 : return GF_BAD_PARAM;
31411 : }
31412 : }
31413 22 : static GF_Err SynthesizedTexture_get_field(GF_Node *node, GF_FieldInfo *info)
31414 : {
31415 22 : switch (info->fieldIndex) {
31416 2 : case 0:
31417 2 : info->name = "translation";
31418 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31419 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
31420 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->translation;
31421 2 : return GF_OK;
31422 2 : case 1:
31423 2 : info->name = "rotation";
31424 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31425 2 : info->fieldType = GF_SG_VRML_MFROTATION;
31426 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->rotation;
31427 2 : return GF_OK;
31428 2 : case 2:
31429 2 : info->name = "pixelWidth";
31430 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31431 2 : info->fieldType = GF_SG_VRML_SFINT32;
31432 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->pixelWidth;
31433 2 : return GF_OK;
31434 2 : case 3:
31435 2 : info->name = "pixelHeight";
31436 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31437 2 : info->fieldType = GF_SG_VRML_SFINT32;
31438 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->pixelHeight;
31439 2 : return GF_OK;
31440 2 : case 4:
31441 2 : info->name = "loop";
31442 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31443 2 : info->fieldType = GF_SG_VRML_SFBOOL;
31444 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->loop;
31445 2 : return GF_OK;
31446 2 : case 5:
31447 2 : info->name = "speed";
31448 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31449 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
31450 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->speed;
31451 2 : return GF_OK;
31452 2 : case 6:
31453 2 : info->name = "startTime";
31454 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31455 2 : info->fieldType = GF_SG_VRML_SFTIME;
31456 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->startTime;
31457 2 : return GF_OK;
31458 2 : case 7:
31459 2 : info->name = "stopTime";
31460 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31461 2 : info->fieldType = GF_SG_VRML_SFTIME;
31462 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->stopTime;
31463 2 : return GF_OK;
31464 2 : case 8:
31465 2 : info->name = "url";
31466 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31467 2 : info->fieldType = GF_SG_VRML_MFURL;
31468 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->url;
31469 2 : return GF_OK;
31470 2 : case 9:
31471 2 : info->name = "duration_changed";
31472 2 : info->eventType = GF_SG_EVENT_OUT;
31473 2 : info->fieldType = GF_SG_VRML_SFTIME;
31474 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->duration_changed;
31475 2 : return GF_OK;
31476 2 : case 10:
31477 2 : info->name = "isActive";
31478 2 : info->eventType = GF_SG_EVENT_OUT;
31479 2 : info->fieldType = GF_SG_VRML_SFBOOL;
31480 2 : info->far_ptr = & ((M_SynthesizedTexture *) node)->isActive;
31481 2 : return GF_OK;
31482 : default:
31483 : return GF_BAD_PARAM;
31484 : }
31485 : }
31486 :
31487 :
31488 11 : static s32 SynthesizedTexture_get_field_index_by_name(char *name)
31489 : {
31490 11 : if (!strcmp("translation", name)) return 0;
31491 10 : if (!strcmp("rotation", name)) return 1;
31492 9 : if (!strcmp("pixelWidth", name)) return 2;
31493 8 : if (!strcmp("pixelHeight", name)) return 3;
31494 7 : if (!strcmp("loop", name)) return 4;
31495 6 : if (!strcmp("speed", name)) return 5;
31496 5 : if (!strcmp("startTime", name)) return 6;
31497 4 : if (!strcmp("stopTime", name)) return 7;
31498 3 : if (!strcmp("url", name)) return 8;
31499 2 : if (!strcmp("duration_changed", name)) return 9;
31500 1 : if (!strcmp("isActive", name)) return 10;
31501 0 : return -1;
31502 : }
31503 11 : static Bool SynthesizedTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
31504 : {
31505 11 : switch (FieldIndex) {
31506 1 : case 0:
31507 1 : *AType = 1;
31508 1 : *QType = 1;
31509 1 : *b_min = FIX_MIN;
31510 1 : *b_max = FIX_MAX;
31511 : return 1;
31512 1 : case 1:
31513 1 : *AType = 10;
31514 1 : *QType = 10;
31515 1 : *b_min = FIX_MIN;
31516 1 : *b_max = FIX_MAX;
31517 : return 1;
31518 1 : case 2:
31519 1 : *AType = 0;
31520 1 : *QType = 13;
31521 1 : *QT13_bits = 16;
31522 1 : *b_min = FLT2FIX(0);
31523 1 : *b_max = FIX_MAX;
31524 : return 1;
31525 1 : case 3:
31526 1 : *AType = 0;
31527 1 : *QType = 13;
31528 1 : *QT13_bits = 16;
31529 1 : *b_min = FLT2FIX(0);
31530 1 : *b_max = FIX_MAX;
31531 : return 1;
31532 1 : case 5:
31533 1 : *AType = 7;
31534 1 : *QType = 0;
31535 1 : *b_min = FIX_MIN;
31536 1 : *b_max = FIX_MAX;
31537 : return 1;
31538 : default:
31539 : return 0;
31540 : }
31541 : }
31542 :
31543 :
31544 :
31545 1 : GF_Node *SynthesizedTexture_Create()
31546 : {
31547 : M_SynthesizedTexture *p;
31548 1 : GF_SAFEALLOC(p, M_SynthesizedTexture);
31549 1 : if(!p) return NULL;
31550 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SynthesizedTexture);
31551 :
31552 : /*default field values*/
31553 1 : p->pixelWidth = -1;
31554 1 : p->pixelHeight = -1;
31555 1 : p->speed = FLT2FIX(1.0);
31556 1 : p->startTime = 0;
31557 1 : p->stopTime = 0;
31558 1 : return (GF_Node *)p;
31559 : }
31560 :
31561 :
31562 : /*
31563 : TransformMatrix2D Node deletion
31564 : */
31565 :
31566 : static void TransformMatrix2D_Del(GF_Node *node)
31567 : {
31568 : M_TransformMatrix2D *p = (M_TransformMatrix2D *) node;
31569 7370 : gf_sg_vrml_parent_destroy((GF_Node *) p);
31570 7370 : gf_node_free((GF_Node *) p);
31571 : }
31572 :
31573 : static const u16 TransformMatrix2D_Def2All[] = { 2, 3, 4, 5, 6, 7, 8};
31574 : static const u16 TransformMatrix2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
31575 : static const u16 TransformMatrix2D_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
31576 : static const u16 TransformMatrix2D_Dyn2All[] = { 3, 4, 5, 6, 7, 8};
31577 :
31578 : static u32 TransformMatrix2D_get_field_count(GF_Node *node, u8 IndexMode)
31579 : {
31580 : switch(IndexMode) {
31581 : case GF_SG_FIELD_CODING_IN:
31582 : return 9;
31583 : case GF_SG_FIELD_CODING_DEF:
31584 : return 7;
31585 : case GF_SG_FIELD_CODING_OUT:
31586 : return 7;
31587 : case GF_SG_FIELD_CODING_DYN:
31588 : return 6;
31589 : default:
31590 : return 9;
31591 : }
31592 : }
31593 :
31594 : static GF_Err TransformMatrix2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
31595 : {
31596 27524 : switch(IndexMode) {
31597 0 : case GF_SG_FIELD_CODING_IN:
31598 0 : *allField = TransformMatrix2D_In2All[inField];
31599 : return GF_OK;
31600 27515 : case GF_SG_FIELD_CODING_DEF:
31601 27515 : *allField = TransformMatrix2D_Def2All[inField];
31602 : return GF_OK;
31603 0 : case GF_SG_FIELD_CODING_OUT:
31604 0 : *allField = TransformMatrix2D_Out2All[inField];
31605 : return GF_OK;
31606 0 : case GF_SG_FIELD_CODING_DYN:
31607 0 : *allField = TransformMatrix2D_Dyn2All[inField];
31608 : return GF_OK;
31609 : default:
31610 : return GF_BAD_PARAM;
31611 : }
31612 : }
31613 64458 : static GF_Err TransformMatrix2D_get_field(GF_Node *node, GF_FieldInfo *info)
31614 : {
31615 64458 : switch (info->fieldIndex) {
31616 32 : case 0:
31617 32 : info->name = "addChildren";
31618 32 : info->eventType = GF_SG_EVENT_IN;
31619 32 : info->on_event_in = ((M_TransformMatrix2D *)node)->on_addChildren;
31620 32 : info->fieldType = GF_SG_VRML_MFNODE;
31621 32 : info->NDTtype = NDT_SF2DNode;
31622 32 : info->far_ptr = & ((M_TransformMatrix2D *)node)->addChildren;
31623 32 : return GF_OK;
31624 32 : case 1:
31625 32 : info->name = "removeChildren";
31626 32 : info->eventType = GF_SG_EVENT_IN;
31627 32 : info->on_event_in = ((M_TransformMatrix2D *)node)->on_removeChildren;
31628 32 : info->fieldType = GF_SG_VRML_MFNODE;
31629 32 : info->NDTtype = NDT_SF2DNode;
31630 32 : info->far_ptr = & ((M_TransformMatrix2D *)node)->removeChildren;
31631 32 : return GF_OK;
31632 7259 : case 2:
31633 7259 : info->name = "children";
31634 7259 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31635 7259 : info->fieldType = GF_SG_VRML_MFNODE;
31636 7259 : info->NDTtype = NDT_SF2DNode;
31637 7259 : info->far_ptr = & ((M_TransformMatrix2D *)node)->children;
31638 7259 : return GF_OK;
31639 9995 : case 3:
31640 9995 : info->name = "mxx";
31641 9995 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31642 9995 : info->fieldType = GF_SG_VRML_SFFLOAT;
31643 9995 : info->far_ptr = & ((M_TransformMatrix2D *) node)->mxx;
31644 9995 : return GF_OK;
31645 8144 : case 4:
31646 8144 : info->name = "mxy";
31647 8144 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31648 8144 : info->fieldType = GF_SG_VRML_SFFLOAT;
31649 8144 : info->far_ptr = & ((M_TransformMatrix2D *) node)->mxy;
31650 8144 : return GF_OK;
31651 10470 : case 5:
31652 10470 : info->name = "tx";
31653 10470 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31654 10470 : info->fieldType = GF_SG_VRML_SFFLOAT;
31655 10470 : info->far_ptr = & ((M_TransformMatrix2D *) node)->tx;
31656 10470 : return GF_OK;
31657 8061 : case 6:
31658 8061 : info->name = "myx";
31659 8061 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31660 8061 : info->fieldType = GF_SG_VRML_SFFLOAT;
31661 8061 : info->far_ptr = & ((M_TransformMatrix2D *) node)->myx;
31662 8061 : return GF_OK;
31663 9993 : case 7:
31664 9993 : info->name = "myy";
31665 9993 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31666 9993 : info->fieldType = GF_SG_VRML_SFFLOAT;
31667 9993 : info->far_ptr = & ((M_TransformMatrix2D *) node)->myy;
31668 9993 : return GF_OK;
31669 10472 : case 8:
31670 10472 : info->name = "ty";
31671 10472 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31672 10472 : info->fieldType = GF_SG_VRML_SFFLOAT;
31673 10472 : info->far_ptr = & ((M_TransformMatrix2D *) node)->ty;
31674 10472 : return GF_OK;
31675 : default:
31676 : return GF_BAD_PARAM;
31677 : }
31678 : }
31679 :
31680 :
31681 81 : static s32 TransformMatrix2D_get_field_index_by_name(char *name)
31682 : {
31683 81 : if (!strcmp("addChildren", name)) return 0;
31684 80 : if (!strcmp("removeChildren", name)) return 1;
31685 79 : if (!strcmp("children", name)) return 2;
31686 52 : if (!strcmp("mxx", name)) return 3;
31687 45 : if (!strcmp("mxy", name)) return 4;
31688 29 : if (!strcmp("tx", name)) return 5;
31689 23 : if (!strcmp("myx", name)) return 6;
31690 16 : if (!strcmp("myy", name)) return 7;
31691 8 : if (!strcmp("ty", name)) return 8;
31692 0 : return -1;
31693 : }
31694 9 : static Bool TransformMatrix2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
31695 : {
31696 9 : switch (FieldIndex) {
31697 1 : case 3:
31698 1 : *AType = 7;
31699 1 : *QType = 7;
31700 1 : *b_min = FIX_MIN;
31701 1 : *b_max = FIX_MAX;
31702 : return 1;
31703 1 : case 4:
31704 1 : *AType = 7;
31705 1 : *QType = 7;
31706 1 : *b_min = FIX_MIN;
31707 1 : *b_max = FIX_MAX;
31708 : return 1;
31709 1 : case 5:
31710 1 : *AType = 7;
31711 1 : *QType = 7;
31712 1 : *b_min = FIX_MIN;
31713 1 : *b_max = FIX_MAX;
31714 : return 1;
31715 1 : case 6:
31716 1 : *AType = 7;
31717 1 : *QType = 7;
31718 1 : *b_min = FIX_MIN;
31719 1 : *b_max = FIX_MAX;
31720 : return 1;
31721 1 : case 7:
31722 1 : *AType = 7;
31723 1 : *QType = 7;
31724 1 : *b_min = FIX_MIN;
31725 1 : *b_max = FIX_MAX;
31726 : return 1;
31727 1 : case 8:
31728 1 : *AType = 7;
31729 1 : *QType = 7;
31730 1 : *b_min = FIX_MIN;
31731 1 : *b_max = FIX_MAX;
31732 : return 1;
31733 : default:
31734 : return 0;
31735 : }
31736 : }
31737 :
31738 :
31739 :
31740 7370 : GF_Node *TransformMatrix2D_Create()
31741 : {
31742 : M_TransformMatrix2D *p;
31743 7370 : GF_SAFEALLOC(p, M_TransformMatrix2D);
31744 7370 : if(!p) return NULL;
31745 7370 : gf_node_setup((GF_Node *)p, TAG_MPEG4_TransformMatrix2D);
31746 7370 : gf_sg_vrml_parent_setup((GF_Node *) p);
31747 :
31748 : /*default field values*/
31749 7370 : p->mxx = FLT2FIX(1);
31750 7370 : p->mxy = FLT2FIX(0);
31751 7370 : p->tx = FLT2FIX(0);
31752 7370 : p->myx = FLT2FIX(0);
31753 7370 : p->myy = FLT2FIX(1);
31754 7370 : p->ty = FLT2FIX(0);
31755 7370 : return (GF_Node *)p;
31756 : }
31757 :
31758 :
31759 : /*
31760 : Viewport Node deletion
31761 : */
31762 :
31763 106 : static void Viewport_Del(GF_Node *node)
31764 : {
31765 : M_Viewport *p = (M_Viewport *) node;
31766 106 : gf_sg_mfint32_del(p->alignment);
31767 106 : gf_sg_sfstring_del(p->description);
31768 106 : gf_node_free((GF_Node *) p);
31769 106 : }
31770 :
31771 : static const u16 Viewport_Def2All[] = { 1, 2, 3, 4, 5, 6};
31772 : static const u16 Viewport_In2All[] = { 0, 1, 2, 3, 4, 5};
31773 : static const u16 Viewport_Out2All[] = { 1, 2, 3, 4, 5, 7, 8};
31774 : static const u16 Viewport_Dyn2All[] = { 1, 2, 3};
31775 :
31776 : static u32 Viewport_get_field_count(GF_Node *node, u8 IndexMode)
31777 : {
31778 : switch(IndexMode) {
31779 : case GF_SG_FIELD_CODING_IN:
31780 : return 6;
31781 : case GF_SG_FIELD_CODING_DEF:
31782 : return 6;
31783 : case GF_SG_FIELD_CODING_OUT:
31784 : return 7;
31785 : case GF_SG_FIELD_CODING_DYN:
31786 : return 3;
31787 : default:
31788 : return 9;
31789 : }
31790 : }
31791 :
31792 : static GF_Err Viewport_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
31793 : {
31794 174 : switch(IndexMode) {
31795 0 : case GF_SG_FIELD_CODING_IN:
31796 0 : *allField = Viewport_In2All[inField];
31797 : return GF_OK;
31798 165 : case GF_SG_FIELD_CODING_DEF:
31799 165 : *allField = Viewport_Def2All[inField];
31800 : return GF_OK;
31801 0 : case GF_SG_FIELD_CODING_OUT:
31802 0 : *allField = Viewport_Out2All[inField];
31803 : return GF_OK;
31804 0 : case GF_SG_FIELD_CODING_DYN:
31805 0 : *allField = Viewport_Dyn2All[inField];
31806 : return GF_OK;
31807 : default:
31808 : return GF_BAD_PARAM;
31809 : }
31810 : }
31811 863 : static GF_Err Viewport_get_field(GF_Node *node, GF_FieldInfo *info)
31812 : {
31813 863 : switch (info->fieldIndex) {
31814 21 : case 0:
31815 21 : info->name = "set_bind";
31816 21 : info->eventType = GF_SG_EVENT_IN;
31817 21 : info->on_event_in = ((M_Viewport *)node)->on_set_bind;
31818 21 : info->fieldType = GF_SG_VRML_SFBOOL;
31819 21 : info->far_ptr = & ((M_Viewport *) node)->set_bind;
31820 21 : return GF_OK;
31821 104 : case 1:
31822 104 : info->name = "position";
31823 104 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31824 104 : info->fieldType = GF_SG_VRML_SFVEC2F;
31825 104 : info->far_ptr = & ((M_Viewport *) node)->position;
31826 104 : return GF_OK;
31827 162 : case 2:
31828 162 : info->name = "size";
31829 162 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31830 162 : info->fieldType = GF_SG_VRML_SFVEC2F;
31831 162 : info->far_ptr = & ((M_Viewport *) node)->size;
31832 162 : return GF_OK;
31833 117 : case 3:
31834 117 : info->name = "orientation";
31835 117 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31836 117 : info->fieldType = GF_SG_VRML_SFFLOAT;
31837 117 : info->far_ptr = & ((M_Viewport *) node)->orientation;
31838 117 : return GF_OK;
31839 153 : case 4:
31840 153 : info->name = "alignment";
31841 153 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31842 153 : info->fieldType = GF_SG_VRML_MFINT32;
31843 153 : info->far_ptr = & ((M_Viewport *) node)->alignment;
31844 153 : return GF_OK;
31845 154 : case 5:
31846 154 : info->name = "fit";
31847 154 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
31848 154 : info->fieldType = GF_SG_VRML_SFINT32;
31849 154 : info->far_ptr = & ((M_Viewport *) node)->fit;
31850 154 : return GF_OK;
31851 118 : case 6:
31852 118 : info->name = "description";
31853 118 : info->eventType = GF_SG_EVENT_FIELD;
31854 118 : info->fieldType = GF_SG_VRML_SFSTRING;
31855 118 : info->far_ptr = & ((M_Viewport *) node)->description;
31856 118 : return GF_OK;
31857 17 : case 7:
31858 17 : info->name = "bindTime";
31859 17 : info->eventType = GF_SG_EVENT_OUT;
31860 17 : info->fieldType = GF_SG_VRML_SFTIME;
31861 17 : info->far_ptr = & ((M_Viewport *) node)->bindTime;
31862 17 : return GF_OK;
31863 17 : case 8:
31864 17 : info->name = "isBound";
31865 17 : info->eventType = GF_SG_EVENT_OUT;
31866 17 : info->fieldType = GF_SG_VRML_SFBOOL;
31867 17 : info->far_ptr = & ((M_Viewport *) node)->isBound;
31868 17 : return GF_OK;
31869 : default:
31870 : return GF_BAD_PARAM;
31871 : }
31872 : }
31873 :
31874 :
31875 252 : static s32 Viewport_get_field_index_by_name(char *name)
31876 : {
31877 252 : if (!strcmp("set_bind", name)) return 0;
31878 249 : if (!strcmp("position", name)) return 1;
31879 206 : if (!strcmp("size", name)) return 2;
31880 144 : if (!strcmp("orientation", name)) return 3;
31881 127 : if (!strcmp("alignment", name)) return 4;
31882 74 : if (!strcmp("fit", name)) return 5;
31883 20 : if (!strcmp("description", name)) return 6;
31884 2 : if (!strcmp("bindTime", name)) return 7;
31885 1 : if (!strcmp("isBound", name)) return 8;
31886 0 : return -1;
31887 : }
31888 24 : static Bool Viewport_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
31889 : {
31890 24 : switch (FieldIndex) {
31891 1 : case 1:
31892 1 : *AType = 1;
31893 1 : *QType = 1;
31894 1 : *b_min = FIX_MIN;
31895 1 : *b_max = FIX_MAX;
31896 : return 1;
31897 4 : case 2:
31898 4 : *AType = 12;
31899 4 : *QType = 12;
31900 4 : *b_min = FIX_MIN;
31901 4 : *b_max = FIX_MAX;
31902 : return 1;
31903 4 : case 3:
31904 4 : *AType = 6;
31905 4 : *QType = 6;
31906 4 : *b_min = FLT2FIX(0);
31907 4 : *b_max = FLT2FIX(6.2831853);
31908 : return 1;
31909 7 : case 4:
31910 7 : *AType = 0;
31911 7 : *QType = 13;
31912 7 : *QT13_bits = 3;
31913 7 : *b_min = FLT2FIX(-1);
31914 7 : *b_max = FLT2FIX(1);
31915 : return 1;
31916 4 : case 5:
31917 4 : *AType = 0;
31918 4 : *QType = 13;
31919 4 : *QT13_bits = 3;
31920 4 : *b_min = FLT2FIX(0);
31921 4 : *b_max = FLT2FIX(2);
31922 : return 1;
31923 : default:
31924 : return 0;
31925 : }
31926 : }
31927 :
31928 :
31929 :
31930 106 : GF_Node *Viewport_Create()
31931 : {
31932 : M_Viewport *p;
31933 106 : GF_SAFEALLOC(p, M_Viewport);
31934 106 : if(!p) return NULL;
31935 106 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Viewport);
31936 :
31937 : /*default field values*/
31938 106 : p->position.x = FLT2FIX(0);
31939 106 : p->position.y = FLT2FIX(0);
31940 106 : p->size.x = FLT2FIX(-1);
31941 106 : p->size.y = FLT2FIX(-1);
31942 106 : p->orientation = FLT2FIX(0);
31943 106 : p->alignment.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
31944 106 : p->alignment.count = 1;
31945 106 : p->alignment.vals[0] = 0;
31946 106 : p->fit = 0;
31947 106 : return (GF_Node *)p;
31948 : }
31949 :
31950 :
31951 : /*
31952 : XCurve2D Node deletion
31953 : */
31954 :
31955 834 : static void XCurve2D_Del(GF_Node *node)
31956 : {
31957 : M_XCurve2D *p = (M_XCurve2D *) node;
31958 834 : gf_node_unregister((GF_Node *) p->point, (GF_Node *) p);
31959 834 : gf_sg_mfint32_del(p->type);
31960 834 : gf_node_free((GF_Node *) p);
31961 834 : }
31962 :
31963 : static const u16 XCurve2D_Def2All[] = { 0, 1, 2};
31964 : static const u16 XCurve2D_In2All[] = { 0, 1, 2};
31965 : static const u16 XCurve2D_Out2All[] = { 0, 1, 2};
31966 : static const u16 XCurve2D_Dyn2All[] = { 1};
31967 :
31968 : static u32 XCurve2D_get_field_count(GF_Node *node, u8 IndexMode)
31969 : {
31970 790 : switch(IndexMode) {
31971 : case GF_SG_FIELD_CODING_IN:
31972 : return 3;
31973 : case GF_SG_FIELD_CODING_DEF:
31974 : return 3;
31975 : case GF_SG_FIELD_CODING_OUT:
31976 : return 3;
31977 1 : case GF_SG_FIELD_CODING_DYN:
31978 : return 1;
31979 : default:
31980 : return 3;
31981 : }
31982 : }
31983 :
31984 : static GF_Err XCurve2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
31985 : {
31986 1164 : switch(IndexMode) {
31987 0 : case GF_SG_FIELD_CODING_IN:
31988 0 : *allField = XCurve2D_In2All[inField];
31989 : return GF_OK;
31990 1161 : case GF_SG_FIELD_CODING_DEF:
31991 1161 : *allField = XCurve2D_Def2All[inField];
31992 : return GF_OK;
31993 0 : case GF_SG_FIELD_CODING_OUT:
31994 0 : *allField = XCurve2D_Out2All[inField];
31995 : return GF_OK;
31996 0 : case GF_SG_FIELD_CODING_DYN:
31997 0 : *allField = XCurve2D_Dyn2All[inField];
31998 : return GF_OK;
31999 : default:
32000 : return GF_BAD_PARAM;
32001 : }
32002 : }
32003 : static GF_Err XCurve2D_get_field(GF_Node *node, GF_FieldInfo *info)
32004 : {
32005 3167 : switch (info->fieldIndex) {
32006 816 : case 0:
32007 816 : info->name = "point";
32008 816 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32009 816 : info->fieldType = GF_SG_VRML_SFNODE;
32010 816 : info->NDTtype = NDT_SFCoordinate2DNode;
32011 816 : info->far_ptr = & ((M_XCurve2D *)node)->point;
32012 : return GF_OK;
32013 1143 : case 1:
32014 1143 : info->name = "fineness";
32015 1143 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32016 1143 : info->fieldType = GF_SG_VRML_SFFLOAT;
32017 1143 : info->far_ptr = & ((M_XCurve2D *) node)->fineness;
32018 : return GF_OK;
32019 1208 : case 2:
32020 1208 : info->name = "type";
32021 1208 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32022 1208 : info->fieldType = GF_SG_VRML_MFINT32;
32023 1208 : info->far_ptr = & ((M_XCurve2D *) node)->type;
32024 : return GF_OK;
32025 : default:
32026 : return GF_BAD_PARAM;
32027 : }
32028 : }
32029 :
32030 :
32031 45 : static s32 XCurve2D_get_field_index_by_name(char *name)
32032 : {
32033 45 : if (!strcmp("point", name)) return 0;
32034 23 : if (!strcmp("fineness", name)) return 1;
32035 22 : if (!strcmp("type", name)) return 2;
32036 0 : return -1;
32037 : }
32038 : static Bool XCurve2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
32039 : {
32040 11 : switch (FieldIndex) {
32041 1 : case 1:
32042 1 : *AType = 7;
32043 1 : *QType = 0;
32044 1 : *b_min = FLT2FIX(0);
32045 1 : *b_max = FLT2FIX(1);
32046 : return 1;
32047 9 : case 2:
32048 9 : *AType = 0;
32049 9 : *QType = 13;
32050 9 : *QT13_bits = 4;
32051 9 : *b_min = FLT2FIX(0);
32052 9 : *b_max = FLT2FIX(15);
32053 : return 1;
32054 : default:
32055 : return 0;
32056 : }
32057 : }
32058 :
32059 :
32060 :
32061 834 : GF_Node *XCurve2D_Create()
32062 : {
32063 : M_XCurve2D *p;
32064 834 : GF_SAFEALLOC(p, M_XCurve2D);
32065 834 : if(!p) return NULL;
32066 834 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XCurve2D);
32067 :
32068 : /*default field values*/
32069 834 : p->fineness = FLT2FIX(0.5);
32070 834 : return (GF_Node *)p;
32071 : }
32072 :
32073 :
32074 : /*
32075 : XFontStyle Node deletion
32076 : */
32077 :
32078 1 : static void XFontStyle_Del(GF_Node *node)
32079 : {
32080 : M_XFontStyle *p = (M_XFontStyle *) node;
32081 1 : gf_sg_mfstring_del(p->fontName);
32082 1 : gf_sg_mfstring_del(p->justify);
32083 1 : gf_sg_sfstring_del(p->language);
32084 1 : gf_sg_sfstring_del(p->stretch);
32085 1 : gf_sg_sfstring_del(p->style);
32086 1 : gf_sg_mfstring_del(p->featureName);
32087 1 : gf_sg_mfint32_del(p->featureStartOffset);
32088 1 : gf_sg_mfint32_del(p->featureLength);
32089 1 : gf_sg_mfint32_del(p->featureValue);
32090 1 : gf_node_free((GF_Node *) p);
32091 1 : }
32092 :
32093 : static const u16 XFontStyle_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
32094 : static const u16 XFontStyle_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
32095 : static const u16 XFontStyle_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
32096 :
32097 : static u32 XFontStyle_get_field_count(GF_Node *node, u8 IndexMode)
32098 : {
32099 6 : switch(IndexMode) {
32100 : case GF_SG_FIELD_CODING_IN:
32101 : return 17;
32102 : case GF_SG_FIELD_CODING_DEF:
32103 : return 17;
32104 : case GF_SG_FIELD_CODING_OUT:
32105 : return 17;
32106 1 : case GF_SG_FIELD_CODING_DYN:
32107 : return 0;
32108 : default:
32109 : return 17;
32110 : }
32111 : }
32112 :
32113 : static GF_Err XFontStyle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
32114 : {
32115 17 : switch(IndexMode) {
32116 0 : case GF_SG_FIELD_CODING_IN:
32117 0 : *allField = XFontStyle_In2All[inField];
32118 : return GF_OK;
32119 0 : case GF_SG_FIELD_CODING_DEF:
32120 0 : *allField = XFontStyle_Def2All[inField];
32121 : return GF_OK;
32122 0 : case GF_SG_FIELD_CODING_OUT:
32123 0 : *allField = XFontStyle_Out2All[inField];
32124 : return GF_OK;
32125 : default:
32126 : return GF_BAD_PARAM;
32127 : }
32128 : }
32129 34 : static GF_Err XFontStyle_get_field(GF_Node *node, GF_FieldInfo *info)
32130 : {
32131 34 : switch (info->fieldIndex) {
32132 2 : case 0:
32133 2 : info->name = "fontName";
32134 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32135 2 : info->fieldType = GF_SG_VRML_MFSTRING;
32136 2 : info->far_ptr = & ((M_XFontStyle *) node)->fontName;
32137 2 : return GF_OK;
32138 2 : case 1:
32139 2 : info->name = "horizontal";
32140 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32141 2 : info->fieldType = GF_SG_VRML_SFBOOL;
32142 2 : info->far_ptr = & ((M_XFontStyle *) node)->horizontal;
32143 2 : return GF_OK;
32144 2 : case 2:
32145 2 : info->name = "justify";
32146 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32147 2 : info->fieldType = GF_SG_VRML_MFSTRING;
32148 2 : info->far_ptr = & ((M_XFontStyle *) node)->justify;
32149 2 : return GF_OK;
32150 2 : case 3:
32151 2 : info->name = "language";
32152 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32153 2 : info->fieldType = GF_SG_VRML_SFSTRING;
32154 2 : info->far_ptr = & ((M_XFontStyle *) node)->language;
32155 2 : return GF_OK;
32156 2 : case 4:
32157 2 : info->name = "leftToRight";
32158 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32159 2 : info->fieldType = GF_SG_VRML_SFBOOL;
32160 2 : info->far_ptr = & ((M_XFontStyle *) node)->leftToRight;
32161 2 : return GF_OK;
32162 2 : case 5:
32163 2 : info->name = "size";
32164 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32165 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
32166 2 : info->far_ptr = & ((M_XFontStyle *) node)->size;
32167 2 : return GF_OK;
32168 2 : case 6:
32169 2 : info->name = "stretch";
32170 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32171 2 : info->fieldType = GF_SG_VRML_SFSTRING;
32172 2 : info->far_ptr = & ((M_XFontStyle *) node)->stretch;
32173 2 : return GF_OK;
32174 2 : case 7:
32175 2 : info->name = "letterSpacing";
32176 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32177 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
32178 2 : info->far_ptr = & ((M_XFontStyle *) node)->letterSpacing;
32179 2 : return GF_OK;
32180 2 : case 8:
32181 2 : info->name = "wordSpacing";
32182 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32183 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
32184 2 : info->far_ptr = & ((M_XFontStyle *) node)->wordSpacing;
32185 2 : return GF_OK;
32186 2 : case 9:
32187 2 : info->name = "weight";
32188 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32189 2 : info->fieldType = GF_SG_VRML_SFINT32;
32190 2 : info->far_ptr = & ((M_XFontStyle *) node)->weight;
32191 2 : return GF_OK;
32192 2 : case 10:
32193 2 : info->name = "fontKerning";
32194 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32195 2 : info->fieldType = GF_SG_VRML_SFBOOL;
32196 2 : info->far_ptr = & ((M_XFontStyle *) node)->fontKerning;
32197 2 : return GF_OK;
32198 2 : case 11:
32199 2 : info->name = "style";
32200 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32201 2 : info->fieldType = GF_SG_VRML_SFSTRING;
32202 2 : info->far_ptr = & ((M_XFontStyle *) node)->style;
32203 2 : return GF_OK;
32204 2 : case 12:
32205 2 : info->name = "topToBottom";
32206 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32207 2 : info->fieldType = GF_SG_VRML_SFBOOL;
32208 2 : info->far_ptr = & ((M_XFontStyle *) node)->topToBottom;
32209 2 : return GF_OK;
32210 2 : case 13:
32211 2 : info->name = "featureName";
32212 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32213 2 : info->fieldType = GF_SG_VRML_MFSTRING;
32214 2 : info->far_ptr = & ((M_XFontStyle *) node)->featureName;
32215 2 : return GF_OK;
32216 2 : case 14:
32217 2 : info->name = "featureStartOffset";
32218 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32219 2 : info->fieldType = GF_SG_VRML_MFINT32;
32220 2 : info->far_ptr = & ((M_XFontStyle *) node)->featureStartOffset;
32221 2 : return GF_OK;
32222 2 : case 15:
32223 2 : info->name = "featureLength";
32224 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32225 2 : info->fieldType = GF_SG_VRML_MFINT32;
32226 2 : info->far_ptr = & ((M_XFontStyle *) node)->featureLength;
32227 2 : return GF_OK;
32228 2 : case 16:
32229 2 : info->name = "featureValue";
32230 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32231 2 : info->fieldType = GF_SG_VRML_MFINT32;
32232 2 : info->far_ptr = & ((M_XFontStyle *) node)->featureValue;
32233 2 : return GF_OK;
32234 : default:
32235 : return GF_BAD_PARAM;
32236 : }
32237 : }
32238 :
32239 :
32240 17 : static s32 XFontStyle_get_field_index_by_name(char *name)
32241 : {
32242 17 : if (!strcmp("fontName", name)) return 0;
32243 16 : if (!strcmp("horizontal", name)) return 1;
32244 15 : if (!strcmp("justify", name)) return 2;
32245 14 : if (!strcmp("language", name)) return 3;
32246 13 : if (!strcmp("leftToRight", name)) return 4;
32247 12 : if (!strcmp("size", name)) return 5;
32248 11 : if (!strcmp("stretch", name)) return 6;
32249 10 : if (!strcmp("letterSpacing", name)) return 7;
32250 9 : if (!strcmp("wordSpacing", name)) return 8;
32251 8 : if (!strcmp("weight", name)) return 9;
32252 7 : if (!strcmp("fontKerning", name)) return 10;
32253 6 : if (!strcmp("style", name)) return 11;
32254 5 : if (!strcmp("topToBottom", name)) return 12;
32255 4 : if (!strcmp("featureName", name)) return 13;
32256 3 : if (!strcmp("featureStartOffset", name)) return 14;
32257 2 : if (!strcmp("featureLength", name)) return 15;
32258 1 : if (!strcmp("featureValue", name)) return 16;
32259 0 : return -1;
32260 : }
32261 : static Bool XFontStyle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
32262 : {
32263 17 : switch (FieldIndex) {
32264 1 : case 5:
32265 1 : *AType = 0;
32266 1 : *QType = 11;
32267 1 : *b_min = FLT2FIX(0);
32268 1 : *b_max = FIX_MAX;
32269 : return 1;
32270 1 : case 7:
32271 1 : *AType = 0;
32272 1 : *QType = 11;
32273 1 : *b_min = FLT2FIX(0);
32274 1 : *b_max = FIX_MAX;
32275 : return 1;
32276 1 : case 8:
32277 1 : *AType = 0;
32278 1 : *QType = 11;
32279 1 : *b_min = FLT2FIX(0);
32280 1 : *b_max = FIX_MAX;
32281 : return 1;
32282 : default:
32283 : return 0;
32284 : }
32285 : }
32286 :
32287 :
32288 :
32289 1 : GF_Node *XFontStyle_Create()
32290 : {
32291 : M_XFontStyle *p;
32292 1 : GF_SAFEALLOC(p, M_XFontStyle);
32293 1 : if(!p) return NULL;
32294 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XFontStyle);
32295 :
32296 : /*default field values*/
32297 1 : p->fontName.vals = (char**)gf_malloc(sizeof(SFString)*1);
32298 1 : p->fontName.count = 1;
32299 1 : p->fontName.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
32300 1 : strcpy(p->fontName.vals[0], "SERIF");
32301 1 : p->horizontal = 1;
32302 1 : p->justify.vals = (char**)gf_malloc(sizeof(SFString)*1);
32303 1 : p->justify.count = 1;
32304 1 : p->justify.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
32305 1 : strcpy(p->justify.vals[0], "BEGIN");
32306 1 : p->leftToRight = 1;
32307 1 : p->size = FLT2FIX(1.0);
32308 1 : p->stretch.buffer = (char*)gf_malloc(sizeof(char) * 7);
32309 : strcpy(p->stretch.buffer, "NORMAL");
32310 1 : p->letterSpacing = FLT2FIX(0.0);
32311 1 : p->wordSpacing = FLT2FIX(0.0);
32312 1 : p->weight = 400;
32313 1 : p->fontKerning = 1;
32314 1 : p->style.buffer = (char*)gf_malloc(sizeof(char) * 6);
32315 : strcpy(p->style.buffer, "PLAIN");
32316 1 : p->topToBottom = 1;
32317 1 : return (GF_Node *)p;
32318 : }
32319 :
32320 :
32321 : /*
32322 : XLineProperties Node deletion
32323 : */
32324 :
32325 504 : static void XLineProperties_Del(GF_Node *node)
32326 : {
32327 : M_XLineProperties *p = (M_XLineProperties *) node;
32328 504 : gf_sg_mffloat_del(p->dashes);
32329 504 : gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
32330 504 : gf_node_unregister((GF_Node *) p->textureTransform, (GF_Node *) p);
32331 504 : gf_node_free((GF_Node *) p);
32332 504 : }
32333 :
32334 : static const u16 XLineProperties_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
32335 : static const u16 XLineProperties_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
32336 : static const u16 XLineProperties_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
32337 : static const u16 XLineProperties_Dyn2All[] = { 0, 7, 8, 9, 10};
32338 :
32339 : static u32 XLineProperties_get_field_count(GF_Node *node, u8 IndexMode)
32340 : {
32341 2909 : switch(IndexMode) {
32342 : case GF_SG_FIELD_CODING_IN:
32343 : return 13;
32344 : case GF_SG_FIELD_CODING_DEF:
32345 : return 13;
32346 : case GF_SG_FIELD_CODING_OUT:
32347 : return 13;
32348 1 : case GF_SG_FIELD_CODING_DYN:
32349 : return 5;
32350 : default:
32351 : return 13;
32352 : }
32353 : }
32354 :
32355 : static GF_Err XLineProperties_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
32356 : {
32357 303 : switch(IndexMode) {
32358 0 : case GF_SG_FIELD_CODING_IN:
32359 0 : *allField = XLineProperties_In2All[inField];
32360 : return GF_OK;
32361 290 : case GF_SG_FIELD_CODING_DEF:
32362 290 : *allField = XLineProperties_Def2All[inField];
32363 : return GF_OK;
32364 0 : case GF_SG_FIELD_CODING_OUT:
32365 0 : *allField = XLineProperties_Out2All[inField];
32366 : return GF_OK;
32367 0 : case GF_SG_FIELD_CODING_DYN:
32368 0 : *allField = XLineProperties_Dyn2All[inField];
32369 : return GF_OK;
32370 : default:
32371 : return GF_BAD_PARAM;
32372 : }
32373 : }
32374 44624 : static GF_Err XLineProperties_get_field(GF_Node *node, GF_FieldInfo *info)
32375 : {
32376 44624 : switch (info->fieldIndex) {
32377 3331 : case 0:
32378 3331 : info->name = "lineColor";
32379 3331 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32380 3331 : info->fieldType = GF_SG_VRML_SFCOLOR;
32381 3331 : info->far_ptr = & ((M_XLineProperties *) node)->lineColor;
32382 3331 : return GF_OK;
32383 3303 : case 1:
32384 3303 : info->name = "lineStyle";
32385 3303 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32386 3303 : info->fieldType = GF_SG_VRML_SFINT32;
32387 3303 : info->far_ptr = & ((M_XLineProperties *) node)->lineStyle;
32388 3303 : return GF_OK;
32389 4086 : case 2:
32390 4086 : info->name = "isCenterAligned";
32391 4086 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32392 4086 : info->fieldType = GF_SG_VRML_SFBOOL;
32393 4086 : info->far_ptr = & ((M_XLineProperties *) node)->isCenterAligned;
32394 4086 : return GF_OK;
32395 3298 : case 3:
32396 3298 : info->name = "isScalable";
32397 3298 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32398 3298 : info->fieldType = GF_SG_VRML_SFBOOL;
32399 3298 : info->far_ptr = & ((M_XLineProperties *) node)->isScalable;
32400 3298 : return GF_OK;
32401 3306 : case 4:
32402 3306 : info->name = "lineCap";
32403 3306 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32404 3306 : info->fieldType = GF_SG_VRML_SFINT32;
32405 3306 : info->far_ptr = & ((M_XLineProperties *) node)->lineCap;
32406 3306 : return GF_OK;
32407 3297 : case 5:
32408 3297 : info->name = "lineJoin";
32409 3297 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32410 3297 : info->fieldType = GF_SG_VRML_SFINT32;
32411 3297 : info->far_ptr = & ((M_XLineProperties *) node)->lineJoin;
32412 3297 : return GF_OK;
32413 3296 : case 6:
32414 3296 : info->name = "miterLimit";
32415 3296 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32416 3296 : info->fieldType = GF_SG_VRML_SFFLOAT;
32417 3296 : info->far_ptr = & ((M_XLineProperties *) node)->miterLimit;
32418 3296 : return GF_OK;
32419 4081 : case 7:
32420 4081 : info->name = "transparency";
32421 4081 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32422 4081 : info->fieldType = GF_SG_VRML_SFFLOAT;
32423 4081 : info->far_ptr = & ((M_XLineProperties *) node)->transparency;
32424 4081 : return GF_OK;
32425 3432 : case 8:
32426 3432 : info->name = "width";
32427 3432 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32428 3432 : info->fieldType = GF_SG_VRML_SFFLOAT;
32429 3432 : info->far_ptr = & ((M_XLineProperties *) node)->width;
32430 3432 : return GF_OK;
32431 3297 : case 9:
32432 3297 : info->name = "dashOffset";
32433 3297 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32434 3297 : info->fieldType = GF_SG_VRML_SFFLOAT;
32435 3297 : info->far_ptr = & ((M_XLineProperties *) node)->dashOffset;
32436 3297 : return GF_OK;
32437 3299 : case 10:
32438 3299 : info->name = "dashes";
32439 3299 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32440 3299 : info->fieldType = GF_SG_VRML_MFFLOAT;
32441 3299 : info->far_ptr = & ((M_XLineProperties *) node)->dashes;
32442 3299 : return GF_OK;
32443 3335 : case 11:
32444 3335 : info->name = "texture";
32445 3335 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32446 3335 : info->fieldType = GF_SG_VRML_SFNODE;
32447 3335 : info->NDTtype = NDT_SFTextureNode;
32448 3335 : info->far_ptr = & ((M_XLineProperties *)node)->texture;
32449 3335 : return GF_OK;
32450 3263 : case 12:
32451 3263 : info->name = "textureTransform";
32452 3263 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32453 3263 : info->fieldType = GF_SG_VRML_SFNODE;
32454 3263 : info->NDTtype = NDT_SFTextureTransformNode;
32455 3263 : info->far_ptr = & ((M_XLineProperties *)node)->textureTransform;
32456 3263 : return GF_OK;
32457 : default:
32458 : return GF_BAD_PARAM;
32459 : }
32460 : }
32461 :
32462 :
32463 202 : static s32 XLineProperties_get_field_index_by_name(char *name)
32464 : {
32465 202 : if (!strcmp("lineColor", name)) return 0;
32466 167 : if (!strcmp("lineStyle", name)) return 1;
32467 158 : if (!strcmp("isCenterAligned", name)) return 2;
32468 147 : if (!strcmp("isScalable", name)) return 3;
32469 143 : if (!strcmp("lineCap", name)) return 4;
32470 131 : if (!strcmp("lineJoin", name)) return 5;
32471 128 : if (!strcmp("miterLimit", name)) return 6;
32472 126 : if (!strcmp("transparency", name)) return 7;
32473 121 : if (!strcmp("width", name)) return 8;
32474 42 : if (!strcmp("dashOffset", name)) return 9;
32475 40 : if (!strcmp("dashes", name)) return 10;
32476 36 : if (!strcmp("texture", name)) return 11;
32477 4 : if (!strcmp("textureTransform", name)) return 12;
32478 0 : return -1;
32479 : }
32480 21 : static Bool XLineProperties_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
32481 : {
32482 21 : switch (FieldIndex) {
32483 1 : case 0:
32484 1 : *AType = 4;
32485 1 : *QType = 4;
32486 1 : *b_min = FLT2FIX(0);
32487 1 : *b_max = FLT2FIX(1);
32488 : return 1;
32489 1 : case 1:
32490 1 : *AType = 0;
32491 1 : *QType = 13;
32492 1 : *QT13_bits = 3;
32493 1 : *b_min = FLT2FIX(0);
32494 1 : *b_max = FLT2FIX(5);
32495 : return 1;
32496 1 : case 4:
32497 1 : *AType = 0;
32498 1 : *QType = 13;
32499 1 : *QT13_bits = 3;
32500 1 : *b_min = FLT2FIX(0);
32501 1 : *b_max = FLT2FIX(2);
32502 : return 1;
32503 1 : case 5:
32504 1 : *AType = 0;
32505 1 : *QType = 13;
32506 1 : *QT13_bits = 3;
32507 1 : *b_min = FLT2FIX(0);
32508 1 : *b_max = FLT2FIX(2);
32509 : return 1;
32510 1 : case 6:
32511 1 : *AType = 0;
32512 1 : *QType = 12;
32513 1 : *b_min = FLT2FIX(1);
32514 1 : *b_max = FIX_MAX;
32515 : return 1;
32516 1 : case 7:
32517 1 : *AType = 8;
32518 1 : *QType = 4;
32519 1 : *b_min = FLT2FIX(0);
32520 1 : *b_max = FLT2FIX(1);
32521 : return 1;
32522 9 : case 8:
32523 9 : *AType = 7;
32524 9 : *QType = 12;
32525 9 : *b_min = FLT2FIX(0);
32526 9 : *b_max = FIX_MAX;
32527 : return 1;
32528 1 : case 9:
32529 1 : *AType = 7;
32530 1 : *QType = 12;
32531 1 : *b_min = FLT2FIX(0);
32532 1 : *b_max = FIX_MAX;
32533 : return 1;
32534 1 : case 10:
32535 1 : *AType = 7;
32536 1 : *QType = 12;
32537 1 : *b_min = FLT2FIX(0);
32538 1 : *b_max = FIX_MAX;
32539 : return 1;
32540 : default:
32541 : return 0;
32542 : }
32543 : }
32544 :
32545 :
32546 :
32547 504 : GF_Node *XLineProperties_Create()
32548 : {
32549 : M_XLineProperties *p;
32550 504 : GF_SAFEALLOC(p, M_XLineProperties);
32551 504 : if(!p) return NULL;
32552 504 : gf_node_setup((GF_Node *)p, TAG_MPEG4_XLineProperties);
32553 :
32554 : /*default field values*/
32555 504 : p->lineColor.red = FLT2FIX(0);
32556 504 : p->lineColor.green = FLT2FIX(0);
32557 504 : p->lineColor.blue = FLT2FIX(0);
32558 504 : p->lineStyle = 0;
32559 504 : p->isCenterAligned = 1;
32560 504 : p->isScalable = 1;
32561 504 : p->lineCap = 0;
32562 504 : p->lineJoin = 0;
32563 504 : p->miterLimit = FLT2FIX(4);
32564 504 : p->transparency = FLT2FIX(0);
32565 504 : p->width = FLT2FIX(1);
32566 504 : p->dashOffset = FLT2FIX(0);
32567 504 : return (GF_Node *)p;
32568 : }
32569 :
32570 :
32571 : /*
32572 : AdvancedAudioBuffer Node deletion
32573 : */
32574 :
32575 1 : static void AdvancedAudioBuffer_Del(GF_Node *node)
32576 : {
32577 : M_AdvancedAudioBuffer *p = (M_AdvancedAudioBuffer *) node;
32578 1 : gf_sg_mfint32_del(p->phaseGroup);
32579 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
32580 1 : gf_node_free((GF_Node *) p);
32581 1 : }
32582 :
32583 : static const u16 AdvancedAudioBuffer_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
32584 : static const u16 AdvancedAudioBuffer_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
32585 : static const u16 AdvancedAudioBuffer_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17};
32586 : static const u16 AdvancedAudioBuffer_Dyn2All[] = { 4};
32587 :
32588 : static u32 AdvancedAudioBuffer_get_field_count(GF_Node *node, u8 IndexMode)
32589 : {
32590 6 : switch(IndexMode) {
32591 : case GF_SG_FIELD_CODING_IN:
32592 : return 14;
32593 : case GF_SG_FIELD_CODING_DEF:
32594 : return 14;
32595 : case GF_SG_FIELD_CODING_OUT:
32596 : return 14;
32597 1 : case GF_SG_FIELD_CODING_DYN:
32598 : return 1;
32599 2 : default:
32600 : return 18;
32601 : }
32602 : }
32603 :
32604 : static GF_Err AdvancedAudioBuffer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
32605 : {
32606 18 : switch(IndexMode) {
32607 0 : case GF_SG_FIELD_CODING_IN:
32608 0 : *allField = AdvancedAudioBuffer_In2All[inField];
32609 : return GF_OK;
32610 0 : case GF_SG_FIELD_CODING_DEF:
32611 0 : *allField = AdvancedAudioBuffer_Def2All[inField];
32612 : return GF_OK;
32613 0 : case GF_SG_FIELD_CODING_OUT:
32614 0 : *allField = AdvancedAudioBuffer_Out2All[inField];
32615 : return GF_OK;
32616 0 : case GF_SG_FIELD_CODING_DYN:
32617 0 : *allField = AdvancedAudioBuffer_Dyn2All[inField];
32618 : return GF_OK;
32619 : default:
32620 : return GF_BAD_PARAM;
32621 : }
32622 : }
32623 36 : static GF_Err AdvancedAudioBuffer_get_field(GF_Node *node, GF_FieldInfo *info)
32624 : {
32625 36 : switch (info->fieldIndex) {
32626 2 : case 0:
32627 2 : info->name = "addChildren";
32628 2 : info->eventType = GF_SG_EVENT_IN;
32629 2 : info->on_event_in = ((M_AdvancedAudioBuffer *)node)->on_addChildren;
32630 2 : info->fieldType = GF_SG_VRML_MFNODE;
32631 2 : info->NDTtype = NDT_SFAudioNode;
32632 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *)node)->addChildren;
32633 2 : return GF_OK;
32634 2 : case 1:
32635 2 : info->name = "removeChildren";
32636 2 : info->eventType = GF_SG_EVENT_IN;
32637 2 : info->on_event_in = ((M_AdvancedAudioBuffer *)node)->on_removeChildren;
32638 2 : info->fieldType = GF_SG_VRML_MFNODE;
32639 2 : info->NDTtype = NDT_SFAudioNode;
32640 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *)node)->removeChildren;
32641 2 : return GF_OK;
32642 2 : case 2:
32643 2 : info->name = "children";
32644 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32645 2 : info->fieldType = GF_SG_VRML_MFNODE;
32646 2 : info->NDTtype = NDT_SFAudioNode;
32647 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *)node)->children;
32648 2 : return GF_OK;
32649 2 : case 3:
32650 2 : info->name = "loop";
32651 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32652 2 : info->fieldType = GF_SG_VRML_SFBOOL;
32653 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->loop;
32654 2 : return GF_OK;
32655 2 : case 4:
32656 2 : info->name = "pitch";
32657 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32658 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
32659 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->pitch;
32660 2 : return GF_OK;
32661 2 : case 5:
32662 2 : info->name = "startTime";
32663 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32664 2 : info->fieldType = GF_SG_VRML_SFTIME;
32665 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->startTime;
32666 2 : return GF_OK;
32667 2 : case 6:
32668 2 : info->name = "stopTime";
32669 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32670 2 : info->fieldType = GF_SG_VRML_SFTIME;
32671 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->stopTime;
32672 2 : return GF_OK;
32673 2 : case 7:
32674 2 : info->name = "startLoadTime";
32675 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32676 2 : info->fieldType = GF_SG_VRML_SFTIME;
32677 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->startLoadTime;
32678 2 : return GF_OK;
32679 2 : case 8:
32680 2 : info->name = "stopLoadTime";
32681 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32682 2 : info->fieldType = GF_SG_VRML_SFTIME;
32683 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->stopLoadTime;
32684 2 : return GF_OK;
32685 2 : case 9:
32686 2 : info->name = "loadMode";
32687 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32688 2 : info->fieldType = GF_SG_VRML_SFINT32;
32689 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->loadMode;
32690 2 : return GF_OK;
32691 2 : case 10:
32692 2 : info->name = "numAccumulatedBlocks";
32693 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32694 2 : info->fieldType = GF_SG_VRML_SFINT32;
32695 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->numAccumulatedBlocks;
32696 2 : return GF_OK;
32697 2 : case 11:
32698 2 : info->name = "deleteBlock";
32699 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32700 2 : info->fieldType = GF_SG_VRML_SFINT32;
32701 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->deleteBlock;
32702 2 : return GF_OK;
32703 2 : case 12:
32704 2 : info->name = "playBlock";
32705 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32706 2 : info->fieldType = GF_SG_VRML_SFINT32;
32707 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->playBlock;
32708 2 : return GF_OK;
32709 2 : case 13:
32710 2 : info->name = "length";
32711 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32712 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
32713 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->length;
32714 2 : return GF_OK;
32715 2 : case 14:
32716 2 : info->name = "numChan";
32717 2 : info->eventType = GF_SG_EVENT_FIELD;
32718 2 : info->fieldType = GF_SG_VRML_SFINT32;
32719 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->numChan;
32720 2 : return GF_OK;
32721 2 : case 15:
32722 2 : info->name = "phaseGroup";
32723 2 : info->eventType = GF_SG_EVENT_FIELD;
32724 2 : info->fieldType = GF_SG_VRML_MFINT32;
32725 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->phaseGroup;
32726 2 : return GF_OK;
32727 2 : case 16:
32728 2 : info->name = "duration_changed";
32729 2 : info->eventType = GF_SG_EVENT_OUT;
32730 2 : info->fieldType = GF_SG_VRML_SFTIME;
32731 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->duration_changed;
32732 2 : return GF_OK;
32733 2 : case 17:
32734 2 : info->name = "isActive";
32735 2 : info->eventType = GF_SG_EVENT_OUT;
32736 2 : info->fieldType = GF_SG_VRML_SFBOOL;
32737 2 : info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->isActive;
32738 2 : return GF_OK;
32739 : default:
32740 : return GF_BAD_PARAM;
32741 : }
32742 : }
32743 :
32744 :
32745 18 : static s32 AdvancedAudioBuffer_get_field_index_by_name(char *name)
32746 : {
32747 18 : if (!strcmp("addChildren", name)) return 0;
32748 17 : if (!strcmp("removeChildren", name)) return 1;
32749 16 : if (!strcmp("children", name)) return 2;
32750 15 : if (!strcmp("loop", name)) return 3;
32751 14 : if (!strcmp("pitch", name)) return 4;
32752 13 : if (!strcmp("startTime", name)) return 5;
32753 12 : if (!strcmp("stopTime", name)) return 6;
32754 11 : if (!strcmp("startLoadTime", name)) return 7;
32755 10 : if (!strcmp("stopLoadTime", name)) return 8;
32756 9 : if (!strcmp("loadMode", name)) return 9;
32757 8 : if (!strcmp("numAccumulatedBlocks", name)) return 10;
32758 7 : if (!strcmp("deleteBlock", name)) return 11;
32759 6 : if (!strcmp("playBlock", name)) return 12;
32760 5 : if (!strcmp("length", name)) return 13;
32761 4 : if (!strcmp("numChan", name)) return 14;
32762 3 : if (!strcmp("phaseGroup", name)) return 15;
32763 2 : if (!strcmp("duration_changed", name)) return 16;
32764 1 : if (!strcmp("isActive", name)) return 17;
32765 0 : return -1;
32766 : }
32767 18 : static Bool AdvancedAudioBuffer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
32768 : {
32769 18 : switch (FieldIndex) {
32770 1 : case 4:
32771 1 : *AType = 7;
32772 1 : *QType = 0;
32773 1 : *b_min = FLT2FIX(0);
32774 1 : *b_max = FIX_MAX;
32775 : return 1;
32776 1 : case 5:
32777 1 : *AType = 0;
32778 1 : *QType = 0;
32779 1 : *b_min = FLT2FIX(0);
32780 1 : *b_max = FIX_MAX;
32781 : return 1;
32782 1 : case 6:
32783 1 : *AType = 0;
32784 1 : *QType = 0;
32785 1 : *b_min = FLT2FIX(0);
32786 1 : *b_max = FIX_MAX;
32787 : return 1;
32788 1 : case 7:
32789 1 : *AType = 0;
32790 1 : *QType = 0;
32791 1 : *b_min = FLT2FIX(0);
32792 1 : *b_max = FIX_MAX;
32793 : return 1;
32794 1 : case 8:
32795 1 : *AType = 0;
32796 1 : *QType = 0;
32797 1 : *b_min = FLT2FIX(0);
32798 1 : *b_max = FIX_MAX;
32799 : return 1;
32800 1 : case 9:
32801 1 : *AType = 0;
32802 1 : *QType = 13;
32803 1 : *QT13_bits = 3;
32804 1 : *b_min = FLT2FIX(0);
32805 1 : *b_max = FLT2FIX(4);
32806 : return 1;
32807 1 : case 10:
32808 1 : *AType = 0;
32809 1 : *QType = 13;
32810 1 : *QT13_bits = 16;
32811 1 : *b_min = FLT2FIX(0);
32812 1 : *b_max = FIX_MAX;
32813 : return 1;
32814 1 : case 11:
32815 1 : *AType = 0;
32816 1 : *QType = 13;
32817 1 : *QT13_bits = 17;
32818 1 : *b_min = FIX_MIN;
32819 1 : *b_max = FLT2FIX( 0);
32820 : return 1;
32821 1 : case 12:
32822 1 : *AType = 0;
32823 1 : *QType = 13;
32824 1 : *QT13_bits = 17;
32825 1 : *b_min = FIX_MIN;
32826 1 : *b_max = FLT2FIX( 0);
32827 : return 1;
32828 1 : case 13:
32829 1 : *AType = 0;
32830 1 : *QType = 0;
32831 1 : *b_min = FLT2FIX(0);
32832 1 : *b_max = FIX_MAX;
32833 : return 1;
32834 1 : case 14:
32835 1 : *AType = 0;
32836 1 : *QType = 13;
32837 1 : *QT13_bits = 8;
32838 1 : *b_min = FLT2FIX(0);
32839 1 : *b_max = FLT2FIX(255);
32840 : return 1;
32841 1 : case 15:
32842 1 : *AType = 0;
32843 1 : *QType = 13;
32844 1 : *QT13_bits = 8;
32845 1 : *b_min = FLT2FIX(0);
32846 1 : *b_max = FLT2FIX(255);
32847 : return 1;
32848 : default:
32849 : return 0;
32850 : }
32851 : }
32852 :
32853 :
32854 :
32855 1 : GF_Node *AdvancedAudioBuffer_Create()
32856 : {
32857 : M_AdvancedAudioBuffer *p;
32858 1 : GF_SAFEALLOC(p, M_AdvancedAudioBuffer);
32859 1 : if(!p) return NULL;
32860 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AdvancedAudioBuffer);
32861 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
32862 :
32863 : /*default field values*/
32864 1 : p->pitch = FLT2FIX(1.0);
32865 1 : p->startTime = 0;
32866 1 : p->stopTime = 0;
32867 1 : p->startLoadTime = 0;
32868 1 : p->stopLoadTime = 0;
32869 1 : p->loadMode = 0;
32870 1 : p->numAccumulatedBlocks = 0;
32871 1 : p->deleteBlock = 0;
32872 1 : p->playBlock = 0;
32873 1 : p->length = FLT2FIX(0.0);
32874 1 : p->numChan = 1;
32875 1 : return (GF_Node *)p;
32876 : }
32877 :
32878 :
32879 : /*
32880 : AudioChannelConfig Node deletion
32881 : */
32882 :
32883 1 : static void AudioChannelConfig_Del(GF_Node *node)
32884 : {
32885 : M_AudioChannelConfig *p = (M_AudioChannelConfig *) node;
32886 1 : gf_sg_mfint32_del(p->channelCoordinateSystems);
32887 1 : gf_sg_mffloat_del(p->channelSoundLocation);
32888 1 : gf_sg_mfint32_del(p->channelDirectionalPattern);
32889 1 : gf_sg_mfvec3f_del(p->channelDirection);
32890 1 : gf_sg_mfint32_del(p->ambComponentIndex);
32891 1 : gf_sg_mffloat_del(p->ambBackwardMatrix);
32892 1 : gf_sg_mfint32_del(p->ambSoundfieldResolution);
32893 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
32894 1 : gf_node_free((GF_Node *) p);
32895 1 : }
32896 :
32897 : static const u16 AudioChannelConfig_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21};
32898 : static const u16 AudioChannelConfig_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
32899 : static const u16 AudioChannelConfig_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
32900 :
32901 : static u32 AudioChannelConfig_get_field_count(GF_Node *node, u8 IndexMode)
32902 : {
32903 : switch(IndexMode) {
32904 : case GF_SG_FIELD_CODING_IN:
32905 : return 21;
32906 : case GF_SG_FIELD_CODING_DEF:
32907 : return 20;
32908 : case GF_SG_FIELD_CODING_OUT:
32909 : return 19;
32910 : case GF_SG_FIELD_CODING_DYN:
32911 : return 0;
32912 : default:
32913 : return 22;
32914 : }
32915 : }
32916 :
32917 : static GF_Err AudioChannelConfig_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
32918 : {
32919 22 : switch(IndexMode) {
32920 0 : case GF_SG_FIELD_CODING_IN:
32921 0 : *allField = AudioChannelConfig_In2All[inField];
32922 : return GF_OK;
32923 0 : case GF_SG_FIELD_CODING_DEF:
32924 0 : *allField = AudioChannelConfig_Def2All[inField];
32925 : return GF_OK;
32926 0 : case GF_SG_FIELD_CODING_OUT:
32927 0 : *allField = AudioChannelConfig_Out2All[inField];
32928 : return GF_OK;
32929 : default:
32930 : return GF_BAD_PARAM;
32931 : }
32932 : }
32933 44 : static GF_Err AudioChannelConfig_get_field(GF_Node *node, GF_FieldInfo *info)
32934 : {
32935 44 : switch (info->fieldIndex) {
32936 2 : case 0:
32937 2 : info->name = "addChildren";
32938 2 : info->eventType = GF_SG_EVENT_IN;
32939 2 : info->on_event_in = ((M_AudioChannelConfig *)node)->on_addChildren;
32940 2 : info->fieldType = GF_SG_VRML_MFNODE;
32941 2 : info->NDTtype = NDT_SFAudioNode;
32942 2 : info->far_ptr = & ((M_AudioChannelConfig *)node)->addChildren;
32943 2 : return GF_OK;
32944 2 : case 1:
32945 2 : info->name = "removeChildren";
32946 2 : info->eventType = GF_SG_EVENT_IN;
32947 2 : info->on_event_in = ((M_AudioChannelConfig *)node)->on_removeChildren;
32948 2 : info->fieldType = GF_SG_VRML_MFNODE;
32949 2 : info->NDTtype = NDT_SFAudioNode;
32950 2 : info->far_ptr = & ((M_AudioChannelConfig *)node)->removeChildren;
32951 2 : return GF_OK;
32952 2 : case 2:
32953 2 : info->name = "children";
32954 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32955 2 : info->fieldType = GF_SG_VRML_MFNODE;
32956 2 : info->NDTtype = NDT_SFAudioNode;
32957 2 : info->far_ptr = & ((M_AudioChannelConfig *)node)->children;
32958 2 : return GF_OK;
32959 2 : case 3:
32960 2 : info->name = "generalChannelFormat";
32961 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32962 2 : info->fieldType = GF_SG_VRML_SFINT32;
32963 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->generalChannelFormat;
32964 2 : return GF_OK;
32965 2 : case 4:
32966 2 : info->name = "fixedPreset";
32967 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32968 2 : info->fieldType = GF_SG_VRML_SFINT32;
32969 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->fixedPreset;
32970 2 : return GF_OK;
32971 2 : case 5:
32972 2 : info->name = "fixedPresetSubset";
32973 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32974 2 : info->fieldType = GF_SG_VRML_SFINT32;
32975 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->fixedPresetSubset;
32976 2 : return GF_OK;
32977 2 : case 6:
32978 2 : info->name = "fixedPresetAddInf";
32979 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32980 2 : info->fieldType = GF_SG_VRML_SFINT32;
32981 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->fixedPresetAddInf;
32982 2 : return GF_OK;
32983 2 : case 7:
32984 2 : info->name = "channelCoordinateSystems";
32985 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32986 2 : info->fieldType = GF_SG_VRML_MFINT32;
32987 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->channelCoordinateSystems;
32988 2 : return GF_OK;
32989 2 : case 8:
32990 2 : info->name = "channelSoundLocation";
32991 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32992 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
32993 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->channelSoundLocation;
32994 2 : return GF_OK;
32995 2 : case 9:
32996 2 : info->name = "channelDirectionalPattern";
32997 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
32998 2 : info->fieldType = GF_SG_VRML_MFINT32;
32999 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->channelDirectionalPattern;
33000 2 : return GF_OK;
33001 2 : case 10:
33002 2 : info->name = "channelDirection";
33003 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33004 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
33005 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->channelDirection;
33006 2 : return GF_OK;
33007 2 : case 11:
33008 2 : info->name = "ambResolution2D";
33009 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33010 2 : info->fieldType = GF_SG_VRML_SFINT32;
33011 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambResolution2D;
33012 2 : return GF_OK;
33013 2 : case 12:
33014 2 : info->name = "ambResolution3D";
33015 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33016 2 : info->fieldType = GF_SG_VRML_SFINT32;
33017 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambResolution3D;
33018 2 : return GF_OK;
33019 2 : case 13:
33020 2 : info->name = "ambEncodingConvention";
33021 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33022 2 : info->fieldType = GF_SG_VRML_SFINT32;
33023 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambEncodingConvention;
33024 2 : return GF_OK;
33025 2 : case 14:
33026 2 : info->name = "ambNfcReferenceDistance";
33027 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33028 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
33029 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambNfcReferenceDistance;
33030 2 : return GF_OK;
33031 2 : case 15:
33032 2 : info->name = "ambSoundSpeed";
33033 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33034 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
33035 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambSoundSpeed;
33036 2 : return GF_OK;
33037 2 : case 16:
33038 2 : info->name = "ambArrangementRule";
33039 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33040 2 : info->fieldType = GF_SG_VRML_SFINT32;
33041 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambArrangementRule;
33042 2 : return GF_OK;
33043 2 : case 17:
33044 2 : info->name = "ambRecombinationPreset";
33045 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33046 2 : info->fieldType = GF_SG_VRML_SFINT32;
33047 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambRecombinationPreset;
33048 2 : return GF_OK;
33049 2 : case 18:
33050 2 : info->name = "ambComponentIndex";
33051 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33052 2 : info->fieldType = GF_SG_VRML_MFINT32;
33053 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambComponentIndex;
33054 2 : return GF_OK;
33055 2 : case 19:
33056 2 : info->name = "ambBackwardMatrix";
33057 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33058 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
33059 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambBackwardMatrix;
33060 2 : return GF_OK;
33061 2 : case 20:
33062 2 : info->name = "ambSoundfieldResolution";
33063 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33064 2 : info->fieldType = GF_SG_VRML_MFINT32;
33065 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->ambSoundfieldResolution;
33066 2 : return GF_OK;
33067 2 : case 21:
33068 2 : info->name = "numChannel";
33069 2 : info->eventType = GF_SG_EVENT_FIELD;
33070 2 : info->fieldType = GF_SG_VRML_SFINT32;
33071 2 : info->far_ptr = & ((M_AudioChannelConfig *) node)->numChannel;
33072 2 : return GF_OK;
33073 : default:
33074 : return GF_BAD_PARAM;
33075 : }
33076 : }
33077 :
33078 :
33079 22 : static s32 AudioChannelConfig_get_field_index_by_name(char *name)
33080 : {
33081 22 : if (!strcmp("addChildren", name)) return 0;
33082 21 : if (!strcmp("removeChildren", name)) return 1;
33083 20 : if (!strcmp("children", name)) return 2;
33084 19 : if (!strcmp("generalChannelFormat", name)) return 3;
33085 18 : if (!strcmp("fixedPreset", name)) return 4;
33086 17 : if (!strcmp("fixedPresetSubset", name)) return 5;
33087 16 : if (!strcmp("fixedPresetAddInf", name)) return 6;
33088 15 : if (!strcmp("channelCoordinateSystems", name)) return 7;
33089 14 : if (!strcmp("channelSoundLocation", name)) return 8;
33090 13 : if (!strcmp("channelDirectionalPattern", name)) return 9;
33091 12 : if (!strcmp("channelDirection", name)) return 10;
33092 11 : if (!strcmp("ambResolution2D", name)) return 11;
33093 10 : if (!strcmp("ambResolution3D", name)) return 12;
33094 9 : if (!strcmp("ambEncodingConvention", name)) return 13;
33095 8 : if (!strcmp("ambNfcReferenceDistance", name)) return 14;
33096 7 : if (!strcmp("ambSoundSpeed", name)) return 15;
33097 6 : if (!strcmp("ambArrangementRule", name)) return 16;
33098 5 : if (!strcmp("ambRecombinationPreset", name)) return 17;
33099 4 : if (!strcmp("ambComponentIndex", name)) return 18;
33100 3 : if (!strcmp("ambBackwardMatrix", name)) return 19;
33101 2 : if (!strcmp("ambSoundfieldResolution", name)) return 20;
33102 1 : if (!strcmp("numChannel", name)) return 21;
33103 0 : return -1;
33104 : }
33105 22 : static Bool AudioChannelConfig_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33106 : {
33107 22 : switch (FieldIndex) {
33108 1 : case 3:
33109 1 : *AType = 0;
33110 1 : *QType = 13;
33111 1 : *QT13_bits = 3;
33112 1 : *b_min = FLT2FIX(0);
33113 1 : *b_max = FLT2FIX(4);
33114 : return 1;
33115 1 : case 4:
33116 1 : *AType = 0;
33117 1 : *QType = 13;
33118 1 : *QT13_bits = 4;
33119 1 : *b_min = FLT2FIX(0);
33120 1 : *b_max = FLT2FIX(15);
33121 : return 1;
33122 1 : case 6:
33123 1 : *AType = 0;
33124 1 : *QType = 13;
33125 1 : *QT13_bits = 3;
33126 1 : *b_min = FLT2FIX(0);
33127 1 : *b_max = FLT2FIX(2);
33128 : return 1;
33129 1 : case 7:
33130 1 : *AType = 0;
33131 1 : *QType = 13;
33132 1 : *QT13_bits = 3;
33133 1 : *b_min = FLT2FIX(0);
33134 1 : *b_max = FLT2FIX(6);
33135 : return 1;
33136 1 : case 9:
33137 1 : *AType = 0;
33138 1 : *QType = 13;
33139 1 : *QT13_bits = 3;
33140 1 : *b_min = FLT2FIX(0);
33141 1 : *b_max = FLT2FIX(2);
33142 : return 1;
33143 1 : case 11:
33144 1 : *AType = 0;
33145 1 : *QType = 13;
33146 1 : *QT13_bits = 7;
33147 1 : *b_min = FLT2FIX(0);
33148 1 : *b_max = FLT2FIX(127);
33149 : return 1;
33150 1 : case 12:
33151 1 : *AType = 0;
33152 1 : *QType = 13;
33153 1 : *QT13_bits = 4;
33154 1 : *b_min = FLT2FIX(0);
33155 1 : *b_max = FLT2FIX(15);
33156 : return 1;
33157 1 : case 13:
33158 1 : *AType = 0;
33159 1 : *QType = 13;
33160 1 : *QT13_bits = 3;
33161 1 : *b_min = FLT2FIX(0);
33162 1 : *b_max = FLT2FIX(5);
33163 : return 1;
33164 1 : case 16:
33165 1 : *AType = 0;
33166 1 : *QType = 13;
33167 1 : *QT13_bits = 3;
33168 1 : *b_min = FLT2FIX(0);
33169 1 : *b_max = FLT2FIX(7);
33170 : return 1;
33171 1 : case 17:
33172 1 : *AType = 0;
33173 1 : *QType = 13;
33174 1 : *QT13_bits = 4;
33175 1 : *b_min = FLT2FIX(0);
33176 1 : *b_max = FLT2FIX(15);
33177 : return 1;
33178 1 : case 18:
33179 1 : *AType = 0;
33180 1 : *QType = 13;
33181 1 : *QT13_bits = 8;
33182 1 : *b_min = FLT2FIX(0);
33183 1 : *b_max = FLT2FIX(255);
33184 : return 1;
33185 1 : case 20:
33186 1 : *AType = 0;
33187 1 : *QType = 13;
33188 1 : *QT13_bits = 7;
33189 1 : *b_min = FLT2FIX(0);
33190 1 : *b_max = FLT2FIX(127);
33191 : return 1;
33192 1 : case 21:
33193 1 : *AType = 0;
33194 1 : *QType = 13;
33195 1 : *QT13_bits = 8;
33196 1 : *b_min = FLT2FIX(0);
33197 1 : *b_max = FLT2FIX(255);
33198 : return 1;
33199 : default:
33200 : return 0;
33201 : }
33202 : }
33203 :
33204 :
33205 :
33206 1 : GF_Node *AudioChannelConfig_Create()
33207 : {
33208 : M_AudioChannelConfig *p;
33209 1 : GF_SAFEALLOC(p, M_AudioChannelConfig);
33210 1 : if(!p) return NULL;
33211 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioChannelConfig);
33212 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
33213 :
33214 : /*default field values*/
33215 1 : p->generalChannelFormat = 0;
33216 1 : p->fixedPreset = 0;
33217 1 : p->fixedPresetSubset = 0;
33218 1 : p->fixedPresetAddInf = 0;
33219 1 : p->ambResolution2D = 1;
33220 1 : p->ambResolution3D = 0;
33221 1 : p->ambEncodingConvention = 0;
33222 1 : p->ambNfcReferenceDistance = FLT2FIX(1.5);
33223 1 : p->ambSoundSpeed = FLT2FIX(340.0);
33224 1 : p->ambArrangementRule = 0;
33225 1 : p->ambRecombinationPreset = 0;
33226 1 : p->numChannel = 0;
33227 1 : return (GF_Node *)p;
33228 : }
33229 :
33230 :
33231 : /*
33232 : DepthImageV2 Node deletion
33233 : */
33234 :
33235 : static void DepthImageV2_Del(GF_Node *node)
33236 : {
33237 : M_DepthImageV2 *p = (M_DepthImageV2 *) node;
33238 1 : gf_node_unregister((GF_Node *) p->diTexture, (GF_Node *) p);
33239 1 : gf_node_free((GF_Node *) p);
33240 : }
33241 :
33242 : static const u16 DepthImageV2_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33243 :
33244 : static u32 DepthImageV2_get_field_count(GF_Node *node, u8 IndexMode)
33245 : {
33246 6 : switch(IndexMode) {
33247 : case GF_SG_FIELD_CODING_IN:
33248 : return 0;
33249 1 : case GF_SG_FIELD_CODING_DEF:
33250 : return 8;
33251 : case GF_SG_FIELD_CODING_OUT:
33252 : return 0;
33253 : case GF_SG_FIELD_CODING_DYN:
33254 : return 0;
33255 2 : default:
33256 : return 8;
33257 : }
33258 : }
33259 :
33260 : static GF_Err DepthImageV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
33261 : {
33262 8 : switch(IndexMode) {
33263 0 : case GF_SG_FIELD_CODING_DEF:
33264 0 : *allField = DepthImageV2_Def2All[inField];
33265 : return GF_OK;
33266 : default:
33267 : return GF_BAD_PARAM;
33268 : }
33269 : }
33270 16 : static GF_Err DepthImageV2_get_field(GF_Node *node, GF_FieldInfo *info)
33271 : {
33272 16 : switch (info->fieldIndex) {
33273 2 : case 0:
33274 2 : info->name = "diTexture";
33275 2 : info->eventType = GF_SG_EVENT_FIELD;
33276 2 : info->fieldType = GF_SG_VRML_SFNODE;
33277 2 : info->NDTtype = NDT_SFDepthTextureNode;
33278 2 : info->far_ptr = & ((M_DepthImageV2 *)node)->diTexture;
33279 2 : return GF_OK;
33280 2 : case 1:
33281 2 : info->name = "farPlane";
33282 2 : info->eventType = GF_SG_EVENT_FIELD;
33283 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
33284 2 : info->far_ptr = & ((M_DepthImageV2 *) node)->farPlane;
33285 2 : return GF_OK;
33286 2 : case 2:
33287 2 : info->name = "fieldOfView";
33288 2 : info->eventType = GF_SG_EVENT_FIELD;
33289 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
33290 2 : info->far_ptr = & ((M_DepthImageV2 *) node)->fieldOfView;
33291 2 : return GF_OK;
33292 2 : case 3:
33293 2 : info->name = "nearPlane";
33294 2 : info->eventType = GF_SG_EVENT_FIELD;
33295 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
33296 2 : info->far_ptr = & ((M_DepthImageV2 *) node)->nearPlane;
33297 2 : return GF_OK;
33298 2 : case 4:
33299 2 : info->name = "orientation";
33300 2 : info->eventType = GF_SG_EVENT_FIELD;
33301 2 : info->fieldType = GF_SG_VRML_SFROTATION;
33302 2 : info->far_ptr = & ((M_DepthImageV2 *) node)->orientation;
33303 2 : return GF_OK;
33304 2 : case 5:
33305 2 : info->name = "orthographic";
33306 2 : info->eventType = GF_SG_EVENT_FIELD;
33307 2 : info->fieldType = GF_SG_VRML_SFBOOL;
33308 2 : info->far_ptr = & ((M_DepthImageV2 *) node)->orthographic;
33309 2 : return GF_OK;
33310 2 : case 6:
33311 2 : info->name = "position";
33312 2 : info->eventType = GF_SG_EVENT_FIELD;
33313 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
33314 2 : info->far_ptr = & ((M_DepthImageV2 *) node)->position;
33315 2 : return GF_OK;
33316 2 : case 7:
33317 2 : info->name = "splatMinMax";
33318 2 : info->eventType = GF_SG_EVENT_FIELD;
33319 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
33320 2 : info->far_ptr = & ((M_DepthImageV2 *) node)->splatMinMax;
33321 2 : return GF_OK;
33322 : default:
33323 : return GF_BAD_PARAM;
33324 : }
33325 : }
33326 :
33327 :
33328 8 : static s32 DepthImageV2_get_field_index_by_name(char *name)
33329 : {
33330 8 : if (!strcmp("diTexture", name)) return 0;
33331 7 : if (!strcmp("farPlane", name)) return 1;
33332 6 : if (!strcmp("fieldOfView", name)) return 2;
33333 5 : if (!strcmp("nearPlane", name)) return 3;
33334 4 : if (!strcmp("orientation", name)) return 4;
33335 3 : if (!strcmp("orthographic", name)) return 5;
33336 2 : if (!strcmp("position", name)) return 6;
33337 1 : if (!strcmp("splatMinMax", name)) return 7;
33338 0 : return -1;
33339 : }
33340 : static Bool DepthImageV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33341 : {
33342 : switch (FieldIndex) {
33343 : default:
33344 : return 0;
33345 : }
33346 : }
33347 :
33348 :
33349 :
33350 1 : GF_Node *DepthImageV2_Create()
33351 : {
33352 : M_DepthImageV2 *p;
33353 1 : GF_SAFEALLOC(p, M_DepthImageV2);
33354 1 : if(!p) return NULL;
33355 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_DepthImageV2);
33356 :
33357 : /*default field values*/
33358 1 : p->farPlane = FLT2FIX(100);
33359 1 : p->fieldOfView.x = FLT2FIX(0.75);
33360 1 : p->fieldOfView.y = FLT2FIX(0.75);
33361 1 : p->nearPlane = FLT2FIX(10);
33362 1 : p->orientation.x = FLT2FIX(0);
33363 1 : p->orientation.y = FLT2FIX(0);
33364 1 : p->orientation.z = FLT2FIX(1);
33365 1 : p->orientation.q = FLT2FIX(0);
33366 1 : p->orthographic = 1;
33367 1 : p->position.x = FLT2FIX(0);
33368 1 : p->position.y = FLT2FIX(0);
33369 1 : p->position.z = FLT2FIX(10);
33370 1 : p->splatMinMax.x = FLT2FIX(0.115);
33371 1 : p->splatMinMax.y = FLT2FIX(0.975);
33372 1 : return (GF_Node *)p;
33373 : }
33374 :
33375 :
33376 : /*
33377 : MorphShape Node deletion
33378 : */
33379 :
33380 1 : static void MorphShape_Del(GF_Node *node)
33381 : {
33382 : M_MorphShape *p = (M_MorphShape *) node;
33383 1 : gf_node_unregister((GF_Node *) p->baseShape, (GF_Node *) p);
33384 1 : gf_node_unregister_children((GF_Node *) p, p->targetShapes);
33385 1 : gf_sg_mffloat_del(p->weights);
33386 1 : gf_node_free((GF_Node *) p);
33387 1 : }
33388 :
33389 : static const u16 MorphShape_Def2All[] = { 0, 1, 2, 3};
33390 : static const u16 MorphShape_In2All[] = { 0, 1, 2, 3};
33391 : static const u16 MorphShape_Out2All[] = { 0, 1, 2, 3};
33392 :
33393 : static u32 MorphShape_get_field_count(GF_Node *node, u8 IndexMode)
33394 : {
33395 6 : switch(IndexMode) {
33396 : case GF_SG_FIELD_CODING_IN:
33397 : return 4;
33398 : case GF_SG_FIELD_CODING_DEF:
33399 : return 4;
33400 : case GF_SG_FIELD_CODING_OUT:
33401 : return 4;
33402 1 : case GF_SG_FIELD_CODING_DYN:
33403 : return 0;
33404 : default:
33405 : return 4;
33406 : }
33407 : }
33408 :
33409 : static GF_Err MorphShape_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
33410 : {
33411 4 : switch(IndexMode) {
33412 0 : case GF_SG_FIELD_CODING_IN:
33413 0 : *allField = MorphShape_In2All[inField];
33414 : return GF_OK;
33415 0 : case GF_SG_FIELD_CODING_DEF:
33416 0 : *allField = MorphShape_Def2All[inField];
33417 : return GF_OK;
33418 0 : case GF_SG_FIELD_CODING_OUT:
33419 0 : *allField = MorphShape_Out2All[inField];
33420 : return GF_OK;
33421 : default:
33422 : return GF_BAD_PARAM;
33423 : }
33424 : }
33425 8 : static GF_Err MorphShape_get_field(GF_Node *node, GF_FieldInfo *info)
33426 : {
33427 8 : switch (info->fieldIndex) {
33428 2 : case 0:
33429 2 : info->name = "baseShape";
33430 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33431 2 : info->fieldType = GF_SG_VRML_SFNODE;
33432 2 : info->NDTtype = NDT_SF3DNode;
33433 2 : info->far_ptr = & ((M_MorphShape *)node)->baseShape;
33434 2 : return GF_OK;
33435 2 : case 1:
33436 2 : info->name = "morphID";
33437 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33438 2 : info->fieldType = GF_SG_VRML_SFINT32;
33439 2 : info->far_ptr = & ((M_MorphShape *) node)->morphID;
33440 2 : return GF_OK;
33441 2 : case 2:
33442 2 : info->name = "targetShapes";
33443 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33444 2 : info->fieldType = GF_SG_VRML_MFNODE;
33445 2 : info->NDTtype = NDT_SF3DNode;
33446 2 : info->far_ptr = & ((M_MorphShape *)node)->targetShapes;
33447 2 : return GF_OK;
33448 2 : case 3:
33449 2 : info->name = "weights";
33450 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33451 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
33452 2 : info->far_ptr = & ((M_MorphShape *) node)->weights;
33453 2 : return GF_OK;
33454 : default:
33455 : return GF_BAD_PARAM;
33456 : }
33457 : }
33458 :
33459 :
33460 4 : static s32 MorphShape_get_field_index_by_name(char *name)
33461 : {
33462 4 : if (!strcmp("baseShape", name)) return 0;
33463 3 : if (!strcmp("morphID", name)) return 1;
33464 2 : if (!strcmp("targetShapes", name)) return 2;
33465 1 : if (!strcmp("weights", name)) return 3;
33466 0 : return -1;
33467 : }
33468 : static Bool MorphShape_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33469 : {
33470 4 : switch (FieldIndex) {
33471 1 : case 1:
33472 1 : *AType = 0;
33473 1 : *QType = 13;
33474 1 : *QT13_bits = 7;
33475 1 : *b_min = FLT2FIX(0);
33476 1 : *b_max = FLT2FIX( 1023);
33477 : return 1;
33478 : default:
33479 : return 0;
33480 : }
33481 : }
33482 :
33483 :
33484 :
33485 1 : GF_Node *MorphShape_Create()
33486 : {
33487 : M_MorphShape *p;
33488 1 : GF_SAFEALLOC(p, M_MorphShape);
33489 1 : if(!p) return NULL;
33490 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MorphShape);
33491 :
33492 : /*default field values*/
33493 1 : p->morphID = 0;
33494 1 : return (GF_Node *)p;
33495 : }
33496 :
33497 :
33498 : /*
33499 : MultiTexture Node deletion
33500 : */
33501 :
33502 1 : static void MultiTexture_Del(GF_Node *node)
33503 : {
33504 : M_MultiTexture *p = (M_MultiTexture *) node;
33505 1 : gf_sg_mfint32_del(p->function);
33506 1 : gf_sg_mfint32_del(p->mode);
33507 1 : gf_sg_mfint32_del(p->source);
33508 1 : gf_node_unregister_children((GF_Node *) p, p->texture);
33509 1 : gf_sg_mfvec3f_del(p->cameraVector);
33510 1 : gf_node_free((GF_Node *) p);
33511 1 : }
33512 :
33513 : static const u16 MultiTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33514 : static const u16 MultiTexture_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33515 : static const u16 MultiTexture_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33516 :
33517 : static u32 MultiTexture_get_field_count(GF_Node *node, u8 IndexMode)
33518 : {
33519 6 : switch(IndexMode) {
33520 : case GF_SG_FIELD_CODING_IN:
33521 : return 8;
33522 : case GF_SG_FIELD_CODING_DEF:
33523 : return 8;
33524 : case GF_SG_FIELD_CODING_OUT:
33525 : return 8;
33526 1 : case GF_SG_FIELD_CODING_DYN:
33527 : return 0;
33528 : default:
33529 : return 8;
33530 : }
33531 : }
33532 :
33533 : static GF_Err MultiTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
33534 : {
33535 8 : switch(IndexMode) {
33536 0 : case GF_SG_FIELD_CODING_IN:
33537 0 : *allField = MultiTexture_In2All[inField];
33538 : return GF_OK;
33539 0 : case GF_SG_FIELD_CODING_DEF:
33540 0 : *allField = MultiTexture_Def2All[inField];
33541 : return GF_OK;
33542 0 : case GF_SG_FIELD_CODING_OUT:
33543 0 : *allField = MultiTexture_Out2All[inField];
33544 : return GF_OK;
33545 : default:
33546 : return GF_BAD_PARAM;
33547 : }
33548 : }
33549 16 : static GF_Err MultiTexture_get_field(GF_Node *node, GF_FieldInfo *info)
33550 : {
33551 16 : switch (info->fieldIndex) {
33552 2 : case 0:
33553 2 : info->name = "alpha";
33554 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33555 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
33556 2 : info->far_ptr = & ((M_MultiTexture *) node)->alpha;
33557 2 : return GF_OK;
33558 2 : case 1:
33559 2 : info->name = "color";
33560 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33561 2 : info->fieldType = GF_SG_VRML_SFCOLOR;
33562 2 : info->far_ptr = & ((M_MultiTexture *) node)->color;
33563 2 : return GF_OK;
33564 2 : case 2:
33565 2 : info->name = "function";
33566 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33567 2 : info->fieldType = GF_SG_VRML_MFINT32;
33568 2 : info->far_ptr = & ((M_MultiTexture *) node)->function;
33569 2 : return GF_OK;
33570 2 : case 3:
33571 2 : info->name = "mode";
33572 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33573 2 : info->fieldType = GF_SG_VRML_MFINT32;
33574 2 : info->far_ptr = & ((M_MultiTexture *) node)->mode;
33575 2 : return GF_OK;
33576 2 : case 4:
33577 2 : info->name = "source";
33578 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33579 2 : info->fieldType = GF_SG_VRML_MFINT32;
33580 2 : info->far_ptr = & ((M_MultiTexture *) node)->source;
33581 2 : return GF_OK;
33582 2 : case 5:
33583 2 : info->name = "texture";
33584 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33585 2 : info->fieldType = GF_SG_VRML_MFNODE;
33586 2 : info->NDTtype = NDT_SFTextureNode;
33587 2 : info->far_ptr = & ((M_MultiTexture *)node)->texture;
33588 2 : return GF_OK;
33589 2 : case 6:
33590 2 : info->name = "cameraVector";
33591 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33592 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
33593 2 : info->far_ptr = & ((M_MultiTexture *) node)->cameraVector;
33594 2 : return GF_OK;
33595 2 : case 7:
33596 2 : info->name = "transparent";
33597 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33598 2 : info->fieldType = GF_SG_VRML_SFBOOL;
33599 2 : info->far_ptr = & ((M_MultiTexture *) node)->transparent;
33600 2 : return GF_OK;
33601 : default:
33602 : return GF_BAD_PARAM;
33603 : }
33604 : }
33605 :
33606 :
33607 8 : static s32 MultiTexture_get_field_index_by_name(char *name)
33608 : {
33609 8 : if (!strcmp("alpha", name)) return 0;
33610 7 : if (!strcmp("color", name)) return 1;
33611 6 : if (!strcmp("function", name)) return 2;
33612 5 : if (!strcmp("mode", name)) return 3;
33613 4 : if (!strcmp("source", name)) return 4;
33614 3 : if (!strcmp("texture", name)) return 5;
33615 2 : if (!strcmp("cameraVector", name)) return 6;
33616 1 : if (!strcmp("transparent", name)) return 7;
33617 0 : return -1;
33618 : }
33619 : static Bool MultiTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33620 : {
33621 : switch (FieldIndex) {
33622 : default:
33623 : return 0;
33624 : }
33625 : }
33626 :
33627 :
33628 :
33629 1 : GF_Node *MultiTexture_Create()
33630 : {
33631 : M_MultiTexture *p;
33632 1 : GF_SAFEALLOC(p, M_MultiTexture);
33633 1 : if(!p) return NULL;
33634 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MultiTexture);
33635 :
33636 : /*default field values*/
33637 1 : p->alpha = FLT2FIX(1);
33638 1 : p->color.red = FLT2FIX(1);
33639 1 : p->color.green = FLT2FIX(1);
33640 1 : p->color.blue = FLT2FIX(1);
33641 1 : return (GF_Node *)p;
33642 : }
33643 :
33644 :
33645 : /*
33646 : PointTextureV2 Node deletion
33647 : */
33648 :
33649 1 : static void PointTextureV2_Del(GF_Node *node)
33650 : {
33651 : M_PointTextureV2 *p = (M_PointTextureV2 *) node;
33652 1 : gf_sg_mfcolor_del(p->color);
33653 1 : gf_sg_mfint32_del(p->depth);
33654 1 : gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
33655 1 : gf_sg_mfvec3f_del(p->splatU);
33656 1 : gf_sg_mfvec3f_del(p->splatV);
33657 1 : gf_node_free((GF_Node *) p);
33658 1 : }
33659 :
33660 : static const u16 PointTextureV2_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33661 :
33662 : static u32 PointTextureV2_get_field_count(GF_Node *node, u8 IndexMode)
33663 : {
33664 6 : switch(IndexMode) {
33665 : case GF_SG_FIELD_CODING_IN:
33666 : return 0;
33667 1 : case GF_SG_FIELD_CODING_DEF:
33668 : return 8;
33669 : case GF_SG_FIELD_CODING_OUT:
33670 : return 0;
33671 : case GF_SG_FIELD_CODING_DYN:
33672 : return 0;
33673 2 : default:
33674 : return 8;
33675 : }
33676 : }
33677 :
33678 : static GF_Err PointTextureV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
33679 : {
33680 8 : switch(IndexMode) {
33681 0 : case GF_SG_FIELD_CODING_DEF:
33682 0 : *allField = PointTextureV2_Def2All[inField];
33683 : return GF_OK;
33684 : default:
33685 : return GF_BAD_PARAM;
33686 : }
33687 : }
33688 16 : static GF_Err PointTextureV2_get_field(GF_Node *node, GF_FieldInfo *info)
33689 : {
33690 16 : switch (info->fieldIndex) {
33691 2 : case 0:
33692 2 : info->name = "color";
33693 2 : info->eventType = GF_SG_EVENT_FIELD;
33694 2 : info->fieldType = GF_SG_VRML_MFCOLOR;
33695 2 : info->far_ptr = & ((M_PointTextureV2 *) node)->color;
33696 2 : return GF_OK;
33697 2 : case 1:
33698 2 : info->name = "depth";
33699 2 : info->eventType = GF_SG_EVENT_FIELD;
33700 2 : info->fieldType = GF_SG_VRML_MFINT32;
33701 2 : info->far_ptr = & ((M_PointTextureV2 *) node)->depth;
33702 2 : return GF_OK;
33703 2 : case 2:
33704 2 : info->name = "depthNbBits";
33705 2 : info->eventType = GF_SG_EVENT_FIELD;
33706 2 : info->fieldType = GF_SG_VRML_SFINT32;
33707 2 : info->far_ptr = & ((M_PointTextureV2 *) node)->depthNbBits;
33708 2 : return GF_OK;
33709 2 : case 3:
33710 2 : info->name = "height";
33711 2 : info->eventType = GF_SG_EVENT_FIELD;
33712 2 : info->fieldType = GF_SG_VRML_SFINT32;
33713 2 : info->far_ptr = & ((M_PointTextureV2 *) node)->height;
33714 2 : return GF_OK;
33715 2 : case 4:
33716 2 : info->name = "normal";
33717 2 : info->eventType = GF_SG_EVENT_FIELD;
33718 2 : info->fieldType = GF_SG_VRML_SFNODE;
33719 2 : info->NDTtype = NDT_SFNormalNode;
33720 2 : info->far_ptr = & ((M_PointTextureV2 *)node)->normal;
33721 2 : return GF_OK;
33722 2 : case 5:
33723 2 : info->name = "splatU";
33724 2 : info->eventType = GF_SG_EVENT_FIELD;
33725 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
33726 2 : info->far_ptr = & ((M_PointTextureV2 *) node)->splatU;
33727 2 : return GF_OK;
33728 2 : case 6:
33729 2 : info->name = "splatV";
33730 2 : info->eventType = GF_SG_EVENT_FIELD;
33731 2 : info->fieldType = GF_SG_VRML_MFVEC3F;
33732 2 : info->far_ptr = & ((M_PointTextureV2 *) node)->splatV;
33733 2 : return GF_OK;
33734 2 : case 7:
33735 2 : info->name = "width";
33736 2 : info->eventType = GF_SG_EVENT_FIELD;
33737 2 : info->fieldType = GF_SG_VRML_SFINT32;
33738 2 : info->far_ptr = & ((M_PointTextureV2 *) node)->width;
33739 2 : return GF_OK;
33740 : default:
33741 : return GF_BAD_PARAM;
33742 : }
33743 : }
33744 :
33745 :
33746 8 : static s32 PointTextureV2_get_field_index_by_name(char *name)
33747 : {
33748 8 : if (!strcmp("color", name)) return 0;
33749 7 : if (!strcmp("depth", name)) return 1;
33750 6 : if (!strcmp("depthNbBits", name)) return 2;
33751 5 : if (!strcmp("height", name)) return 3;
33752 4 : if (!strcmp("normal", name)) return 4;
33753 3 : if (!strcmp("splatU", name)) return 5;
33754 2 : if (!strcmp("splatV", name)) return 6;
33755 1 : if (!strcmp("width", name)) return 7;
33756 0 : return -1;
33757 : }
33758 : static Bool PointTextureV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33759 : {
33760 8 : switch (FieldIndex) {
33761 1 : case 2:
33762 1 : *AType = 0;
33763 1 : *QType = 13;
33764 1 : *QT13_bits = 5;
33765 1 : *b_min = FLT2FIX(0);
33766 1 : *b_max = FLT2FIX(31);
33767 : return 1;
33768 1 : case 5:
33769 1 : *AType = 0;
33770 1 : *QType = 1;
33771 1 : *b_min = FIX_MIN;
33772 1 : *b_max = FIX_MAX;
33773 : return 1;
33774 1 : case 6:
33775 1 : *AType = 0;
33776 1 : *QType = 1;
33777 1 : *b_min = FIX_MIN;
33778 1 : *b_max = FIX_MAX;
33779 : return 1;
33780 : default:
33781 : return 0;
33782 : }
33783 : }
33784 :
33785 :
33786 :
33787 1 : GF_Node *PointTextureV2_Create()
33788 : {
33789 : M_PointTextureV2 *p;
33790 1 : GF_SAFEALLOC(p, M_PointTextureV2);
33791 1 : if(!p) return NULL;
33792 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_PointTextureV2);
33793 :
33794 : /*default field values*/
33795 1 : p->depthNbBits = 7;
33796 1 : p->height = 256;
33797 1 : p->width = 256;
33798 1 : return (GF_Node *)p;
33799 : }
33800 :
33801 :
33802 : /*
33803 : SBVCAnimationV2 Node deletion
33804 : */
33805 :
33806 1 : static void SBVCAnimationV2_Del(GF_Node *node)
33807 : {
33808 : M_SBVCAnimationV2 *p = (M_SBVCAnimationV2 *) node;
33809 1 : gf_sg_mfint32_del(p->activeUrlIndex);
33810 1 : gf_sg_mfurl_del(p->url);
33811 1 : gf_node_unregister_children((GF_Node *) p, p->virtualCharacters);
33812 1 : gf_node_free((GF_Node *) p);
33813 1 : }
33814 :
33815 : static const u16 SBVCAnimationV2_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33816 : static const u16 SBVCAnimationV2_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
33817 : static const u16 SBVCAnimationV2_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
33818 : static const u16 SBVCAnimationV2_Dyn2All[] = { 2, 5};
33819 :
33820 : static u32 SBVCAnimationV2_get_field_count(GF_Node *node, u8 IndexMode)
33821 : {
33822 : switch(IndexMode) {
33823 : case GF_SG_FIELD_CODING_IN:
33824 : return 8;
33825 : case GF_SG_FIELD_CODING_DEF:
33826 : return 8;
33827 : case GF_SG_FIELD_CODING_OUT:
33828 : return 10;
33829 : case GF_SG_FIELD_CODING_DYN:
33830 : return 2;
33831 : default:
33832 : return 10;
33833 : }
33834 : }
33835 :
33836 : static GF_Err SBVCAnimationV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
33837 : {
33838 10 : switch(IndexMode) {
33839 0 : case GF_SG_FIELD_CODING_IN:
33840 0 : *allField = SBVCAnimationV2_In2All[inField];
33841 : return GF_OK;
33842 0 : case GF_SG_FIELD_CODING_DEF:
33843 0 : *allField = SBVCAnimationV2_Def2All[inField];
33844 : return GF_OK;
33845 0 : case GF_SG_FIELD_CODING_OUT:
33846 0 : *allField = SBVCAnimationV2_Out2All[inField];
33847 : return GF_OK;
33848 0 : case GF_SG_FIELD_CODING_DYN:
33849 0 : *allField = SBVCAnimationV2_Dyn2All[inField];
33850 : return GF_OK;
33851 : default:
33852 : return GF_BAD_PARAM;
33853 : }
33854 : }
33855 20 : static GF_Err SBVCAnimationV2_get_field(GF_Node *node, GF_FieldInfo *info)
33856 : {
33857 20 : switch (info->fieldIndex) {
33858 2 : case 0:
33859 2 : info->name = "activeUrlIndex";
33860 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33861 2 : info->fieldType = GF_SG_VRML_MFINT32;
33862 2 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->activeUrlIndex;
33863 2 : return GF_OK;
33864 2 : case 1:
33865 2 : info->name = "loop";
33866 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33867 2 : info->fieldType = GF_SG_VRML_SFBOOL;
33868 2 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->loop;
33869 2 : return GF_OK;
33870 2 : case 2:
33871 2 : info->name = "speed";
33872 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33873 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
33874 2 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->speed;
33875 2 : return GF_OK;
33876 2 : case 3:
33877 2 : info->name = "startTime";
33878 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33879 2 : info->fieldType = GF_SG_VRML_SFTIME;
33880 2 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->startTime;
33881 2 : return GF_OK;
33882 2 : case 4:
33883 2 : info->name = "stopTime";
33884 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33885 2 : info->fieldType = GF_SG_VRML_SFTIME;
33886 2 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->stopTime;
33887 2 : return GF_OK;
33888 2 : case 5:
33889 2 : info->name = "transitionTime";
33890 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33891 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
33892 2 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->transitionTime;
33893 2 : return GF_OK;
33894 2 : case 6:
33895 2 : info->name = "url";
33896 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33897 2 : info->fieldType = GF_SG_VRML_MFURL;
33898 2 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->url;
33899 2 : return GF_OK;
33900 2 : case 7:
33901 2 : info->name = "virtualCharacters";
33902 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
33903 2 : info->fieldType = GF_SG_VRML_MFNODE;
33904 2 : info->NDTtype = NDT_SF3DNode;
33905 2 : info->far_ptr = & ((M_SBVCAnimationV2 *)node)->virtualCharacters;
33906 2 : return GF_OK;
33907 2 : case 8:
33908 2 : info->name = "duration_changed";
33909 2 : info->eventType = GF_SG_EVENT_OUT;
33910 2 : info->fieldType = GF_SG_VRML_SFTIME;
33911 2 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->duration_changed;
33912 2 : return GF_OK;
33913 2 : case 9:
33914 2 : info->name = "isActive";
33915 2 : info->eventType = GF_SG_EVENT_OUT;
33916 2 : info->fieldType = GF_SG_VRML_SFBOOL;
33917 2 : info->far_ptr = & ((M_SBVCAnimationV2 *) node)->isActive;
33918 2 : return GF_OK;
33919 : default:
33920 : return GF_BAD_PARAM;
33921 : }
33922 : }
33923 :
33924 :
33925 10 : static s32 SBVCAnimationV2_get_field_index_by_name(char *name)
33926 : {
33927 10 : if (!strcmp("activeUrlIndex", name)) return 0;
33928 9 : if (!strcmp("loop", name)) return 1;
33929 8 : if (!strcmp("speed", name)) return 2;
33930 7 : if (!strcmp("startTime", name)) return 3;
33931 6 : if (!strcmp("stopTime", name)) return 4;
33932 5 : if (!strcmp("transitionTime", name)) return 5;
33933 4 : if (!strcmp("url", name)) return 6;
33934 3 : if (!strcmp("virtualCharacters", name)) return 7;
33935 2 : if (!strcmp("duration_changed", name)) return 8;
33936 1 : if (!strcmp("isActive", name)) return 9;
33937 0 : return -1;
33938 : }
33939 : static Bool SBVCAnimationV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
33940 : {
33941 10 : switch (FieldIndex) {
33942 1 : case 2:
33943 1 : *AType = 7;
33944 1 : *QType = 0;
33945 1 : *b_min = FIX_MIN;
33946 1 : *b_max = FIX_MAX;
33947 : return 1;
33948 1 : case 5:
33949 1 : *AType = 7;
33950 1 : *QType = 0;
33951 1 : *b_min = FLT2FIX(0);
33952 1 : *b_max = FIX_MAX;
33953 : return 1;
33954 : default:
33955 : return 0;
33956 : }
33957 : }
33958 :
33959 :
33960 :
33961 1 : GF_Node *SBVCAnimationV2_Create()
33962 : {
33963 : M_SBVCAnimationV2 *p;
33964 1 : GF_SAFEALLOC(p, M_SBVCAnimationV2);
33965 1 : if(!p) return NULL;
33966 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SBVCAnimationV2);
33967 :
33968 : /*default field values*/
33969 1 : p->speed = FLT2FIX(1.0);
33970 1 : p->startTime = 0;
33971 1 : p->stopTime = 0;
33972 1 : p->transitionTime = FLT2FIX(0);
33973 1 : return (GF_Node *)p;
33974 : }
33975 :
33976 :
33977 : /*
33978 : SimpleTextureV2 Node deletion
33979 : */
33980 :
33981 1 : static void SimpleTextureV2_Del(GF_Node *node)
33982 : {
33983 : M_SimpleTextureV2 *p = (M_SimpleTextureV2 *) node;
33984 1 : gf_node_unregister((GF_Node *) p->depth, (GF_Node *) p);
33985 1 : gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
33986 1 : gf_node_unregister((GF_Node *) p->splatU, (GF_Node *) p);
33987 1 : gf_node_unregister((GF_Node *) p->splatV, (GF_Node *) p);
33988 1 : gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
33989 1 : gf_node_free((GF_Node *) p);
33990 1 : }
33991 :
33992 : static const u16 SimpleTextureV2_Def2All[] = { 0, 1, 2, 3, 4};
33993 :
33994 : static u32 SimpleTextureV2_get_field_count(GF_Node *node, u8 IndexMode)
33995 : {
33996 6 : switch(IndexMode) {
33997 : case GF_SG_FIELD_CODING_IN:
33998 : return 0;
33999 1 : case GF_SG_FIELD_CODING_DEF:
34000 : return 5;
34001 : case GF_SG_FIELD_CODING_OUT:
34002 : return 0;
34003 : case GF_SG_FIELD_CODING_DYN:
34004 : return 0;
34005 2 : default:
34006 : return 5;
34007 : }
34008 : }
34009 :
34010 : static GF_Err SimpleTextureV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34011 : {
34012 5 : switch(IndexMode) {
34013 0 : case GF_SG_FIELD_CODING_DEF:
34014 0 : *allField = SimpleTextureV2_Def2All[inField];
34015 : return GF_OK;
34016 : default:
34017 : return GF_BAD_PARAM;
34018 : }
34019 : }
34020 10 : static GF_Err SimpleTextureV2_get_field(GF_Node *node, GF_FieldInfo *info)
34021 : {
34022 10 : switch (info->fieldIndex) {
34023 2 : case 0:
34024 2 : info->name = "depth";
34025 2 : info->eventType = GF_SG_EVENT_FIELD;
34026 2 : info->fieldType = GF_SG_VRML_SFNODE;
34027 2 : info->NDTtype = NDT_SFTextureNode;
34028 2 : info->far_ptr = & ((M_SimpleTextureV2 *)node)->depth;
34029 2 : return GF_OK;
34030 2 : case 1:
34031 2 : info->name = "normal";
34032 2 : info->eventType = GF_SG_EVENT_FIELD;
34033 2 : info->fieldType = GF_SG_VRML_SFNODE;
34034 2 : info->NDTtype = NDT_SFTextureNode;
34035 2 : info->far_ptr = & ((M_SimpleTextureV2 *)node)->normal;
34036 2 : return GF_OK;
34037 2 : case 2:
34038 2 : info->name = "splatU";
34039 2 : info->eventType = GF_SG_EVENT_FIELD;
34040 2 : info->fieldType = GF_SG_VRML_SFNODE;
34041 2 : info->NDTtype = NDT_SFTextureNode;
34042 2 : info->far_ptr = & ((M_SimpleTextureV2 *)node)->splatU;
34043 2 : return GF_OK;
34044 2 : case 3:
34045 2 : info->name = "splatV";
34046 2 : info->eventType = GF_SG_EVENT_FIELD;
34047 2 : info->fieldType = GF_SG_VRML_SFNODE;
34048 2 : info->NDTtype = NDT_SFTextureNode;
34049 2 : info->far_ptr = & ((M_SimpleTextureV2 *)node)->splatV;
34050 2 : return GF_OK;
34051 2 : case 4:
34052 2 : info->name = "texture";
34053 2 : info->eventType = GF_SG_EVENT_FIELD;
34054 2 : info->fieldType = GF_SG_VRML_SFNODE;
34055 2 : info->NDTtype = NDT_SFTextureNode;
34056 2 : info->far_ptr = & ((M_SimpleTextureV2 *)node)->texture;
34057 2 : return GF_OK;
34058 : default:
34059 : return GF_BAD_PARAM;
34060 : }
34061 : }
34062 :
34063 :
34064 5 : static s32 SimpleTextureV2_get_field_index_by_name(char *name)
34065 : {
34066 5 : if (!strcmp("depth", name)) return 0;
34067 4 : if (!strcmp("normal", name)) return 1;
34068 3 : if (!strcmp("splatU", name)) return 2;
34069 2 : if (!strcmp("splatV", name)) return 3;
34070 1 : if (!strcmp("texture", name)) return 4;
34071 0 : return -1;
34072 : }
34073 : static Bool SimpleTextureV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
34074 : {
34075 : switch (FieldIndex) {
34076 : default:
34077 : return 0;
34078 : }
34079 : }
34080 :
34081 :
34082 :
34083 1 : GF_Node *SimpleTextureV2_Create()
34084 : {
34085 : M_SimpleTextureV2 *p;
34086 1 : GF_SAFEALLOC(p, M_SimpleTextureV2);
34087 1 : if(!p) return NULL;
34088 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SimpleTextureV2);
34089 :
34090 : /*default field values*/
34091 1 : return (GF_Node *)p;
34092 : }
34093 :
34094 :
34095 : /*
34096 : SurroundingSound Node deletion
34097 : */
34098 :
34099 : static void SurroundingSound_Del(GF_Node *node)
34100 : {
34101 : M_SurroundingSound *p = (M_SurroundingSound *) node;
34102 1 : gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
34103 1 : gf_node_free((GF_Node *) p);
34104 : }
34105 :
34106 : static const u16 SurroundingSound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
34107 : static const u16 SurroundingSound_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
34108 : static const u16 SurroundingSound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
34109 : static const u16 SurroundingSound_Dyn2All[] = { 1, 3, 5};
34110 :
34111 : static u32 SurroundingSound_get_field_count(GF_Node *node, u8 IndexMode)
34112 : {
34113 6 : switch(IndexMode) {
34114 : case GF_SG_FIELD_CODING_IN:
34115 : return 7;
34116 : case GF_SG_FIELD_CODING_DEF:
34117 : return 7;
34118 : case GF_SG_FIELD_CODING_OUT:
34119 : return 7;
34120 1 : case GF_SG_FIELD_CODING_DYN:
34121 : return 3;
34122 : default:
34123 : return 7;
34124 : }
34125 : }
34126 :
34127 : static GF_Err SurroundingSound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34128 : {
34129 7 : switch(IndexMode) {
34130 0 : case GF_SG_FIELD_CODING_IN:
34131 0 : *allField = SurroundingSound_In2All[inField];
34132 : return GF_OK;
34133 0 : case GF_SG_FIELD_CODING_DEF:
34134 0 : *allField = SurroundingSound_Def2All[inField];
34135 : return GF_OK;
34136 0 : case GF_SG_FIELD_CODING_OUT:
34137 0 : *allField = SurroundingSound_Out2All[inField];
34138 : return GF_OK;
34139 0 : case GF_SG_FIELD_CODING_DYN:
34140 0 : *allField = SurroundingSound_Dyn2All[inField];
34141 : return GF_OK;
34142 : default:
34143 : return GF_BAD_PARAM;
34144 : }
34145 : }
34146 14 : static GF_Err SurroundingSound_get_field(GF_Node *node, GF_FieldInfo *info)
34147 : {
34148 14 : switch (info->fieldIndex) {
34149 2 : case 0:
34150 2 : info->name = "source";
34151 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34152 2 : info->fieldType = GF_SG_VRML_SFNODE;
34153 2 : info->NDTtype = NDT_SFAudioNode;
34154 2 : info->far_ptr = & ((M_SurroundingSound *)node)->source;
34155 2 : return GF_OK;
34156 2 : case 1:
34157 2 : info->name = "intensity";
34158 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34159 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
34160 2 : info->far_ptr = & ((M_SurroundingSound *) node)->intensity;
34161 2 : return GF_OK;
34162 2 : case 2:
34163 2 : info->name = "distance";
34164 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34165 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
34166 2 : info->far_ptr = & ((M_SurroundingSound *) node)->distance;
34167 2 : return GF_OK;
34168 2 : case 3:
34169 2 : info->name = "location";
34170 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34171 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
34172 2 : info->far_ptr = & ((M_SurroundingSound *) node)->location;
34173 2 : return GF_OK;
34174 2 : case 4:
34175 2 : info->name = "distortionFactor";
34176 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34177 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
34178 2 : info->far_ptr = & ((M_SurroundingSound *) node)->distortionFactor;
34179 2 : return GF_OK;
34180 2 : case 5:
34181 2 : info->name = "orientation";
34182 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34183 2 : info->fieldType = GF_SG_VRML_SFROTATION;
34184 2 : info->far_ptr = & ((M_SurroundingSound *) node)->orientation;
34185 2 : return GF_OK;
34186 2 : case 6:
34187 2 : info->name = "isTransformable";
34188 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34189 2 : info->fieldType = GF_SG_VRML_SFBOOL;
34190 2 : info->far_ptr = & ((M_SurroundingSound *) node)->isTransformable;
34191 2 : return GF_OK;
34192 : default:
34193 : return GF_BAD_PARAM;
34194 : }
34195 : }
34196 :
34197 :
34198 7 : static s32 SurroundingSound_get_field_index_by_name(char *name)
34199 : {
34200 7 : if (!strcmp("source", name)) return 0;
34201 6 : if (!strcmp("intensity", name)) return 1;
34202 5 : if (!strcmp("distance", name)) return 2;
34203 4 : if (!strcmp("location", name)) return 3;
34204 3 : if (!strcmp("distortionFactor", name)) return 4;
34205 2 : if (!strcmp("orientation", name)) return 5;
34206 1 : if (!strcmp("isTransformable", name)) return 6;
34207 0 : return -1;
34208 : }
34209 : static Bool SurroundingSound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
34210 : {
34211 7 : switch (FieldIndex) {
34212 1 : case 1:
34213 1 : *AType = 7;
34214 1 : *QType = 0;
34215 1 : *b_min = FLT2FIX(0);
34216 1 : *b_max = FLT2FIX(1);
34217 : return 1;
34218 1 : case 2:
34219 1 : *AType = 0;
34220 1 : *QType = 0;
34221 1 : *b_min = FLT2FIX(0);
34222 1 : *b_max = FIX_MAX;
34223 : return 1;
34224 1 : case 3:
34225 1 : *AType = 1;
34226 1 : *QType = 1;
34227 1 : *b_min = FIX_MIN;
34228 1 : *b_max = FIX_MAX;
34229 : return 1;
34230 1 : case 5:
34231 1 : *AType = 10;
34232 1 : *QType = 10;
34233 1 : *b_min = FIX_MIN;
34234 1 : *b_max = FIX_MAX;
34235 : return 1;
34236 : default:
34237 : return 0;
34238 : }
34239 : }
34240 :
34241 :
34242 :
34243 1 : GF_Node *SurroundingSound_Create()
34244 : {
34245 : M_SurroundingSound *p;
34246 1 : GF_SAFEALLOC(p, M_SurroundingSound);
34247 1 : if(!p) return NULL;
34248 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SurroundingSound);
34249 :
34250 : /*default field values*/
34251 1 : p->intensity = FLT2FIX(1.0);
34252 1 : p->distance = FLT2FIX(0.0);
34253 1 : p->location.x = FLT2FIX(0.0);
34254 1 : p->location.y = FLT2FIX(0.0);
34255 1 : p->location.z = FLT2FIX(0.0);
34256 1 : p->distortionFactor = FLT2FIX(0.0);
34257 1 : p->orientation.x = FLT2FIX(0.0);
34258 1 : p->orientation.y = FLT2FIX(0.0);
34259 1 : p->orientation.z = FLT2FIX(1.0);
34260 1 : p->orientation.q = FLT2FIX(0.0);
34261 1 : p->isTransformable = 1;
34262 1 : return (GF_Node *)p;
34263 : }
34264 :
34265 :
34266 : /*
34267 : Transform3DAudio Node deletion
34268 : */
34269 :
34270 : static void Transform3DAudio_Del(GF_Node *node)
34271 : {
34272 : M_Transform3DAudio *p = (M_Transform3DAudio *) node;
34273 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
34274 1 : gf_node_free((GF_Node *) p);
34275 : }
34276 :
34277 : static const u16 Transform3DAudio_Def2All[] = { 2, 3, 4, 5, 6, 7, 8};
34278 : static const u16 Transform3DAudio_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
34279 : static const u16 Transform3DAudio_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
34280 : static const u16 Transform3DAudio_Dyn2All[] = { 3, 4, 5, 6, 7};
34281 :
34282 : static u32 Transform3DAudio_get_field_count(GF_Node *node, u8 IndexMode)
34283 : {
34284 : switch(IndexMode) {
34285 : case GF_SG_FIELD_CODING_IN:
34286 : return 9;
34287 : case GF_SG_FIELD_CODING_DEF:
34288 : return 7;
34289 : case GF_SG_FIELD_CODING_OUT:
34290 : return 7;
34291 : case GF_SG_FIELD_CODING_DYN:
34292 : return 5;
34293 : default:
34294 : return 9;
34295 : }
34296 : }
34297 :
34298 : static GF_Err Transform3DAudio_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34299 : {
34300 9 : switch(IndexMode) {
34301 0 : case GF_SG_FIELD_CODING_IN:
34302 0 : *allField = Transform3DAudio_In2All[inField];
34303 : return GF_OK;
34304 0 : case GF_SG_FIELD_CODING_DEF:
34305 0 : *allField = Transform3DAudio_Def2All[inField];
34306 : return GF_OK;
34307 0 : case GF_SG_FIELD_CODING_OUT:
34308 0 : *allField = Transform3DAudio_Out2All[inField];
34309 : return GF_OK;
34310 0 : case GF_SG_FIELD_CODING_DYN:
34311 0 : *allField = Transform3DAudio_Dyn2All[inField];
34312 : return GF_OK;
34313 : default:
34314 : return GF_BAD_PARAM;
34315 : }
34316 : }
34317 18 : static GF_Err Transform3DAudio_get_field(GF_Node *node, GF_FieldInfo *info)
34318 : {
34319 18 : switch (info->fieldIndex) {
34320 2 : case 0:
34321 2 : info->name = "addChildren";
34322 2 : info->eventType = GF_SG_EVENT_IN;
34323 2 : info->on_event_in = ((M_Transform3DAudio *)node)->on_addChildren;
34324 2 : info->fieldType = GF_SG_VRML_MFNODE;
34325 2 : info->NDTtype = NDT_SF3DNode;
34326 2 : info->far_ptr = & ((M_Transform3DAudio *)node)->addChildren;
34327 2 : return GF_OK;
34328 2 : case 1:
34329 2 : info->name = "removeChildren";
34330 2 : info->eventType = GF_SG_EVENT_IN;
34331 2 : info->on_event_in = ((M_Transform3DAudio *)node)->on_removeChildren;
34332 2 : info->fieldType = GF_SG_VRML_MFNODE;
34333 2 : info->NDTtype = NDT_SF3DNode;
34334 2 : info->far_ptr = & ((M_Transform3DAudio *)node)->removeChildren;
34335 2 : return GF_OK;
34336 2 : case 2:
34337 2 : info->name = "children";
34338 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34339 2 : info->fieldType = GF_SG_VRML_MFNODE;
34340 2 : info->NDTtype = NDT_SF3DNode;
34341 2 : info->far_ptr = & ((M_Transform3DAudio *)node)->children;
34342 2 : return GF_OK;
34343 2 : case 3:
34344 2 : info->name = "thirdCenterCoordinate";
34345 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34346 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
34347 2 : info->far_ptr = & ((M_Transform3DAudio *) node)->thirdCenterCoordinate;
34348 2 : return GF_OK;
34349 2 : case 4:
34350 2 : info->name = "rotationVector";
34351 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34352 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
34353 2 : info->far_ptr = & ((M_Transform3DAudio *) node)->rotationVector;
34354 2 : return GF_OK;
34355 2 : case 5:
34356 2 : info->name = "thirdScaleCoordinate";
34357 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34358 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
34359 2 : info->far_ptr = & ((M_Transform3DAudio *) node)->thirdScaleCoordinate;
34360 2 : return GF_OK;
34361 2 : case 6:
34362 2 : info->name = "scaleOrientationVector";
34363 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34364 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
34365 2 : info->far_ptr = & ((M_Transform3DAudio *) node)->scaleOrientationVector;
34366 2 : return GF_OK;
34367 2 : case 7:
34368 2 : info->name = "thirdTranslationCoordinate";
34369 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34370 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
34371 2 : info->far_ptr = & ((M_Transform3DAudio *) node)->thirdTranslationCoordinate;
34372 2 : return GF_OK;
34373 2 : case 8:
34374 2 : info->name = "coordinateTransform";
34375 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34376 2 : info->fieldType = GF_SG_VRML_SFROTATION;
34377 2 : info->far_ptr = & ((M_Transform3DAudio *) node)->coordinateTransform;
34378 2 : return GF_OK;
34379 : default:
34380 : return GF_BAD_PARAM;
34381 : }
34382 : }
34383 :
34384 :
34385 9 : static s32 Transform3DAudio_get_field_index_by_name(char *name)
34386 : {
34387 9 : if (!strcmp("addChildren", name)) return 0;
34388 8 : if (!strcmp("removeChildren", name)) return 1;
34389 7 : if (!strcmp("children", name)) return 2;
34390 6 : if (!strcmp("thirdCenterCoordinate", name)) return 3;
34391 5 : if (!strcmp("rotationVector", name)) return 4;
34392 4 : if (!strcmp("thirdScaleCoordinate", name)) return 5;
34393 3 : if (!strcmp("scaleOrientationVector", name)) return 6;
34394 2 : if (!strcmp("thirdTranslationCoordinate", name)) return 7;
34395 1 : if (!strcmp("coordinateTransform", name)) return 8;
34396 0 : return -1;
34397 : }
34398 9 : static Bool Transform3DAudio_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
34399 : {
34400 9 : switch (FieldIndex) {
34401 1 : case 3:
34402 1 : *AType = 7;
34403 1 : *QType = 0;
34404 1 : *b_min = FIX_MIN;
34405 1 : *b_max = FIX_MAX;
34406 : return 1;
34407 1 : case 4:
34408 1 : *AType = 11;
34409 1 : *QType = 7;
34410 1 : *b_min = FLT2FIX(-3.14159265);
34411 1 : *b_max = FLT2FIX(3.14159265);
34412 : return 1;
34413 1 : case 5:
34414 1 : *AType = 7;
34415 1 : *QType = 0;
34416 1 : *b_min = FLT2FIX(0);
34417 1 : *b_max = FIX_MAX;
34418 : return 1;
34419 1 : case 6:
34420 1 : *AType = 11;
34421 1 : *QType = 7;
34422 1 : *b_min = FLT2FIX(-1);
34423 1 : *b_max = FLT2FIX(1);
34424 : return 1;
34425 1 : case 7:
34426 1 : *AType = 7;
34427 1 : *QType = 0;
34428 1 : *b_min = FIX_MIN;
34429 1 : *b_max = FIX_MAX;
34430 : return 1;
34431 1 : case 8:
34432 1 : *AType = 0;
34433 1 : *QType = 10;
34434 1 : *b_min = FLT2FIX(-3.14159265);
34435 1 : *b_max = FLT2FIX(3.14159265);
34436 : return 1;
34437 : default:
34438 : return 0;
34439 : }
34440 : }
34441 :
34442 :
34443 :
34444 1 : GF_Node *Transform3DAudio_Create()
34445 : {
34446 : M_Transform3DAudio *p;
34447 1 : GF_SAFEALLOC(p, M_Transform3DAudio);
34448 1 : if(!p) return NULL;
34449 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Transform3DAudio);
34450 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
34451 :
34452 : /*default field values*/
34453 1 : p->thirdCenterCoordinate = FLT2FIX(0.0);
34454 1 : p->rotationVector.x = FLT2FIX(0.0);
34455 1 : p->rotationVector.y = FLT2FIX(0.0);
34456 1 : p->rotationVector.z = FLT2FIX(1.0);
34457 1 : p->thirdScaleCoordinate = FLT2FIX(0.0);
34458 1 : p->scaleOrientationVector.x = FLT2FIX(0.0);
34459 1 : p->scaleOrientationVector.y = FLT2FIX(0.0);
34460 1 : p->scaleOrientationVector.z = FLT2FIX(1.0);
34461 1 : p->thirdTranslationCoordinate = FLT2FIX(0.0);
34462 1 : p->coordinateTransform.x = FLT2FIX(1.0);
34463 1 : p->coordinateTransform.y = FLT2FIX(0.0);
34464 1 : p->coordinateTransform.z = FLT2FIX(0.0);
34465 1 : p->coordinateTransform.q = FLT2FIX(-1.5707963);
34466 1 : return (GF_Node *)p;
34467 : }
34468 :
34469 :
34470 : /*
34471 : WideSound Node deletion
34472 : */
34473 :
34474 23 : static void WideSound_Del(GF_Node *node)
34475 : {
34476 : M_WideSound *p = (M_WideSound *) node;
34477 23 : gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
34478 23 : gf_node_unregister((GF_Node *) p->perceptualParameters, (GF_Node *) p);
34479 23 : gf_sg_mffloat_del(p->size);
34480 23 : gf_node_free((GF_Node *) p);
34481 23 : }
34482 :
34483 : static const u16 WideSound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
34484 : static const u16 WideSound_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
34485 : static const u16 WideSound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
34486 : static const u16 WideSound_Dyn2All[] = { 1, 2, 8};
34487 :
34488 : static u32 WideSound_get_field_count(GF_Node *node, u8 IndexMode)
34489 : {
34490 : switch(IndexMode) {
34491 : case GF_SG_FIELD_CODING_IN:
34492 : return 12;
34493 : case GF_SG_FIELD_CODING_DEF:
34494 : return 15;
34495 : case GF_SG_FIELD_CODING_OUT:
34496 : return 12;
34497 : case GF_SG_FIELD_CODING_DYN:
34498 : return 3;
34499 : default:
34500 : return 15;
34501 : }
34502 : }
34503 :
34504 : static GF_Err WideSound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34505 : {
34506 120 : switch(IndexMode) {
34507 0 : case GF_SG_FIELD_CODING_IN:
34508 0 : *allField = WideSound_In2All[inField];
34509 : return GF_OK;
34510 105 : case GF_SG_FIELD_CODING_DEF:
34511 105 : *allField = WideSound_Def2All[inField];
34512 : return GF_OK;
34513 0 : case GF_SG_FIELD_CODING_OUT:
34514 0 : *allField = WideSound_Out2All[inField];
34515 : return GF_OK;
34516 0 : case GF_SG_FIELD_CODING_DYN:
34517 0 : *allField = WideSound_Dyn2All[inField];
34518 : return GF_OK;
34519 : default:
34520 : return GF_BAD_PARAM;
34521 : }
34522 : }
34523 366 : static GF_Err WideSound_get_field(GF_Node *node, GF_FieldInfo *info)
34524 : {
34525 366 : switch (info->fieldIndex) {
34526 14 : case 0:
34527 14 : info->name = "source";
34528 14 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34529 14 : info->fieldType = GF_SG_VRML_SFNODE;
34530 14 : info->NDTtype = NDT_SFAudioNode;
34531 14 : info->far_ptr = & ((M_WideSound *)node)->source;
34532 14 : return GF_OK;
34533 26 : case 1:
34534 26 : info->name = "intensity";
34535 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34536 26 : info->fieldType = GF_SG_VRML_SFFLOAT;
34537 26 : info->far_ptr = & ((M_WideSound *) node)->intensity;
34538 26 : return GF_OK;
34539 26 : case 2:
34540 26 : info->name = "location";
34541 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34542 26 : info->fieldType = GF_SG_VRML_SFVEC3F;
34543 26 : info->far_ptr = & ((M_WideSound *) node)->location;
34544 26 : return GF_OK;
34545 26 : case 3:
34546 26 : info->name = "spatialize";
34547 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34548 26 : info->fieldType = GF_SG_VRML_SFBOOL;
34549 26 : info->far_ptr = & ((M_WideSound *) node)->spatialize;
34550 26 : return GF_OK;
34551 14 : case 4:
34552 14 : info->name = "perceptualParameters";
34553 14 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34554 14 : info->fieldType = GF_SG_VRML_SFNODE;
34555 14 : info->NDTtype = NDT_SFPerceptualParameterNode;
34556 14 : info->far_ptr = & ((M_WideSound *)node)->perceptualParameters;
34557 14 : return GF_OK;
34558 26 : case 5:
34559 26 : info->name = "roomEffect";
34560 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34561 26 : info->fieldType = GF_SG_VRML_SFBOOL;
34562 26 : info->far_ptr = & ((M_WideSound *) node)->roomEffect;
34563 26 : return GF_OK;
34564 26 : case 6:
34565 26 : info->name = "shape";
34566 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34567 26 : info->fieldType = GF_SG_VRML_SFINT32;
34568 26 : info->far_ptr = & ((M_WideSound *) node)->shape;
34569 26 : return GF_OK;
34570 26 : case 7:
34571 26 : info->name = "size";
34572 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34573 26 : info->fieldType = GF_SG_VRML_MFFLOAT;
34574 26 : info->far_ptr = & ((M_WideSound *) node)->size;
34575 26 : return GF_OK;
34576 26 : case 8:
34577 26 : info->name = "direction";
34578 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34579 26 : info->fieldType = GF_SG_VRML_SFVEC3F;
34580 26 : info->far_ptr = & ((M_WideSound *) node)->direction;
34581 26 : return GF_OK;
34582 26 : case 9:
34583 26 : info->name = "density";
34584 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34585 26 : info->fieldType = GF_SG_VRML_SFFLOAT;
34586 26 : info->far_ptr = & ((M_WideSound *) node)->density;
34587 26 : return GF_OK;
34588 26 : case 10:
34589 26 : info->name = "diffuseSelect";
34590 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34591 26 : info->fieldType = GF_SG_VRML_SFINT32;
34592 26 : info->far_ptr = & ((M_WideSound *) node)->diffuseSelect;
34593 26 : return GF_OK;
34594 26 : case 11:
34595 26 : info->name = "decorrStrength";
34596 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34597 26 : info->fieldType = GF_SG_VRML_SFFLOAT;
34598 26 : info->far_ptr = & ((M_WideSound *) node)->decorrStrength;
34599 26 : return GF_OK;
34600 26 : case 12:
34601 26 : info->name = "speedOfSound";
34602 26 : info->eventType = GF_SG_EVENT_FIELD;
34603 26 : info->fieldType = GF_SG_VRML_SFFLOAT;
34604 26 : info->far_ptr = & ((M_WideSound *) node)->speedOfSound;
34605 26 : return GF_OK;
34606 26 : case 13:
34607 26 : info->name = "distance";
34608 26 : info->eventType = GF_SG_EVENT_FIELD;
34609 26 : info->fieldType = GF_SG_VRML_SFFLOAT;
34610 26 : info->far_ptr = & ((M_WideSound *) node)->distance;
34611 26 : return GF_OK;
34612 26 : case 14:
34613 26 : info->name = "useAirabs";
34614 26 : info->eventType = GF_SG_EVENT_FIELD;
34615 26 : info->fieldType = GF_SG_VRML_SFBOOL;
34616 26 : info->far_ptr = & ((M_WideSound *) node)->useAirabs;
34617 26 : return GF_OK;
34618 : default:
34619 : return GF_BAD_PARAM;
34620 : }
34621 : }
34622 :
34623 :
34624 15 : static s32 WideSound_get_field_index_by_name(char *name)
34625 : {
34626 15 : if (!strcmp("source", name)) return 0;
34627 14 : if (!strcmp("intensity", name)) return 1;
34628 13 : if (!strcmp("location", name)) return 2;
34629 12 : if (!strcmp("spatialize", name)) return 3;
34630 11 : if (!strcmp("perceptualParameters", name)) return 4;
34631 10 : if (!strcmp("roomEffect", name)) return 5;
34632 9 : if (!strcmp("shape", name)) return 6;
34633 8 : if (!strcmp("size", name)) return 7;
34634 7 : if (!strcmp("direction", name)) return 8;
34635 6 : if (!strcmp("density", name)) return 9;
34636 5 : if (!strcmp("diffuseSelect", name)) return 10;
34637 4 : if (!strcmp("decorrStrength", name)) return 11;
34638 3 : if (!strcmp("speedOfSound", name)) return 12;
34639 2 : if (!strcmp("distance", name)) return 13;
34640 1 : if (!strcmp("useAirabs", name)) return 14;
34641 0 : return -1;
34642 : }
34643 15 : static Bool WideSound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
34644 : {
34645 15 : switch (FieldIndex) {
34646 1 : case 1:
34647 1 : *AType = 7;
34648 1 : *QType = 0;
34649 1 : *b_min = FLT2FIX(0);
34650 1 : *b_max = FLT2FIX(1);
34651 : return 1;
34652 1 : case 2:
34653 1 : *AType = 1;
34654 1 : *QType = 1;
34655 1 : *b_min = FIX_MIN;
34656 1 : *b_max = FIX_MAX;
34657 : return 1;
34658 1 : case 6:
34659 1 : *AType = 0;
34660 1 : *QType = 13;
34661 1 : *QT13_bits = 4;
34662 1 : *b_min = FLT2FIX(0);
34663 1 : *b_max = FLT2FIX(4);
34664 : return 1;
34665 1 : case 8:
34666 1 : *AType = 9;
34667 1 : *QType = 9;
34668 1 : *b_min = FIX_MIN;
34669 1 : *b_max = FIX_MAX;
34670 : return 1;
34671 1 : case 10:
34672 1 : *AType = 0;
34673 1 : *QType = 0;
34674 1 : *b_min = FLT2FIX(0);
34675 1 : *b_max = FIX_MAX;
34676 : return 1;
34677 1 : case 12:
34678 1 : *AType = 0;
34679 1 : *QType = 1;
34680 1 : *b_min = FLT2FIX(0);
34681 1 : *b_max = FIX_MAX;
34682 : return 1;
34683 1 : case 13:
34684 1 : *AType = 0;
34685 1 : *QType = 0;
34686 1 : *b_min = FLT2FIX(0);
34687 1 : *b_max = FIX_MAX;
34688 : return 1;
34689 : default:
34690 : return 0;
34691 : }
34692 : }
34693 :
34694 :
34695 :
34696 23 : GF_Node *WideSound_Create()
34697 : {
34698 : M_WideSound *p;
34699 23 : GF_SAFEALLOC(p, M_WideSound);
34700 23 : if(!p) return NULL;
34701 23 : gf_node_setup((GF_Node *)p, TAG_MPEG4_WideSound);
34702 :
34703 : /*default field values*/
34704 23 : p->intensity = FLT2FIX(1);
34705 23 : p->location.x = FLT2FIX(0.0);
34706 23 : p->location.y = FLT2FIX(0.0);
34707 23 : p->location.z = FLT2FIX(0.0);
34708 23 : p->spatialize = 1;
34709 23 : p->shape = 0;
34710 23 : p->size.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
34711 23 : p->size.count = 1;
34712 23 : p->size.vals[0] = FLT2FIX(0.0);
34713 23 : p->direction.x = FLT2FIX(0.0);
34714 23 : p->direction.y = FLT2FIX(1.0);
34715 23 : p->direction.z = FLT2FIX(0.0);
34716 23 : p->density = FLT2FIX(0.5);
34717 23 : p->diffuseSelect = 1;
34718 23 : p->decorrStrength = FLT2FIX(1.0);
34719 23 : p->speedOfSound = FLT2FIX(340.0);
34720 23 : p->distance = FLT2FIX(1000.0);
34721 23 : return (GF_Node *)p;
34722 : }
34723 :
34724 :
34725 : /*
34726 : ScoreShape Node deletion
34727 : */
34728 :
34729 23 : static void ScoreShape_Del(GF_Node *node)
34730 : {
34731 : M_ScoreShape *p = (M_ScoreShape *) node;
34732 23 : gf_node_unregister((GF_Node *) p->score, (GF_Node *) p);
34733 23 : gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
34734 23 : gf_node_free((GF_Node *) p);
34735 23 : }
34736 :
34737 : static const u16 ScoreShape_Def2All[] = { 0, 1};
34738 : static const u16 ScoreShape_In2All[] = { 0, 1};
34739 : static const u16 ScoreShape_Out2All[] = { 0, 1};
34740 :
34741 : static u32 ScoreShape_get_field_count(GF_Node *node, u8 IndexMode)
34742 : {
34743 30 : switch(IndexMode) {
34744 : case GF_SG_FIELD_CODING_IN:
34745 : return 2;
34746 : case GF_SG_FIELD_CODING_DEF:
34747 : return 2;
34748 : case GF_SG_FIELD_CODING_OUT:
34749 : return 2;
34750 1 : case GF_SG_FIELD_CODING_DYN:
34751 : return 0;
34752 : default:
34753 : return 2;
34754 : }
34755 : }
34756 :
34757 : static GF_Err ScoreShape_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34758 : {
34759 16 : switch(IndexMode) {
34760 0 : case GF_SG_FIELD_CODING_IN:
34761 0 : *allField = ScoreShape_In2All[inField];
34762 : return GF_OK;
34763 14 : case GF_SG_FIELD_CODING_DEF:
34764 14 : *allField = ScoreShape_Def2All[inField];
34765 : return GF_OK;
34766 0 : case GF_SG_FIELD_CODING_OUT:
34767 0 : *allField = ScoreShape_Out2All[inField];
34768 : return GF_OK;
34769 : default:
34770 : return GF_BAD_PARAM;
34771 : }
34772 : }
34773 : static GF_Err ScoreShape_get_field(GF_Node *node, GF_FieldInfo *info)
34774 : {
34775 28 : switch (info->fieldIndex) {
34776 14 : case 0:
34777 14 : info->name = "score";
34778 14 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34779 14 : info->fieldType = GF_SG_VRML_SFNODE;
34780 14 : info->NDTtype = NDT_SFMusicScoreNode;
34781 14 : info->far_ptr = & ((M_ScoreShape *)node)->score;
34782 : return GF_OK;
34783 14 : case 1:
34784 14 : info->name = "geometry";
34785 14 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34786 14 : info->fieldType = GF_SG_VRML_SFNODE;
34787 14 : info->NDTtype = NDT_SF2DNode;
34788 14 : info->far_ptr = & ((M_ScoreShape *)node)->geometry;
34789 : return GF_OK;
34790 : default:
34791 : return GF_BAD_PARAM;
34792 : }
34793 : }
34794 :
34795 :
34796 2 : static s32 ScoreShape_get_field_index_by_name(char *name)
34797 : {
34798 2 : if (!strcmp("score", name)) return 0;
34799 1 : if (!strcmp("geometry", name)) return 1;
34800 0 : return -1;
34801 : }
34802 : static Bool ScoreShape_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
34803 : {
34804 : switch (FieldIndex) {
34805 : default:
34806 : return 0;
34807 : }
34808 : }
34809 :
34810 :
34811 :
34812 23 : GF_Node *ScoreShape_Create()
34813 : {
34814 : M_ScoreShape *p;
34815 23 : GF_SAFEALLOC(p, M_ScoreShape);
34816 23 : if(!p) return NULL;
34817 23 : gf_node_setup((GF_Node *)p, TAG_MPEG4_ScoreShape);
34818 :
34819 : /*default field values*/
34820 23 : return (GF_Node *)p;
34821 : }
34822 :
34823 :
34824 : /*
34825 : MusicScore Node deletion
34826 : */
34827 :
34828 1 : static void MusicScore_Del(GF_Node *node)
34829 : {
34830 : M_MusicScore *p = (M_MusicScore *) node;
34831 1 : gf_sg_sfstring_del(p->gotoLabel);
34832 1 : gf_sg_mfstring_del(p->argumentsOnExecute);
34833 1 : gf_sg_sfstring_del(p->commandOnExecute);
34834 1 : gf_sg_mfstring_del(p->partsLyrics);
34835 1 : gf_sg_mfint32_del(p->partsShown);
34836 1 : gf_sg_mfurl_del(p->url);
34837 1 : gf_sg_mfurl_del(p->urlSA);
34838 1 : gf_sg_sfstring_del(p->viewType);
34839 1 : gf_sg_sfstring_del(p->activatedLink);
34840 1 : gf_sg_mfstring_del(p->availableCommands);
34841 1 : gf_sg_mfstring_del(p->availableLabels);
34842 1 : gf_sg_mfstring_del(p->availableLyricLanguages);
34843 1 : gf_sg_mfstring_del(p->availableViewTypes);
34844 1 : gf_sg_mfstring_del(p->partNames);
34845 1 : gf_node_free((GF_Node *) p);
34846 1 : }
34847 :
34848 : static const u16 MusicScore_Def2All[] = { 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
34849 : static const u16 MusicScore_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
34850 : static const u16 MusicScore_Out2All[] = { 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30};
34851 : static const u16 MusicScore_Dyn2All[] = { 14};
34852 :
34853 : static u32 MusicScore_get_field_count(GF_Node *node, u8 IndexMode)
34854 : {
34855 : switch(IndexMode) {
34856 : case GF_SG_FIELD_CODING_IN:
34857 : return 21;
34858 : case GF_SG_FIELD_CODING_DEF:
34859 : return 16;
34860 : case GF_SG_FIELD_CODING_OUT:
34861 : return 26;
34862 : case GF_SG_FIELD_CODING_DYN:
34863 : return 1;
34864 : default:
34865 : return 31;
34866 : }
34867 : }
34868 :
34869 : static GF_Err MusicScore_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
34870 : {
34871 31 : switch(IndexMode) {
34872 0 : case GF_SG_FIELD_CODING_IN:
34873 0 : *allField = MusicScore_In2All[inField];
34874 : return GF_OK;
34875 0 : case GF_SG_FIELD_CODING_DEF:
34876 0 : *allField = MusicScore_Def2All[inField];
34877 : return GF_OK;
34878 0 : case GF_SG_FIELD_CODING_OUT:
34879 0 : *allField = MusicScore_Out2All[inField];
34880 : return GF_OK;
34881 0 : case GF_SG_FIELD_CODING_DYN:
34882 0 : *allField = MusicScore_Dyn2All[inField];
34883 : return GF_OK;
34884 : default:
34885 : return GF_BAD_PARAM;
34886 : }
34887 : }
34888 62 : static GF_Err MusicScore_get_field(GF_Node *node, GF_FieldInfo *info)
34889 : {
34890 62 : switch (info->fieldIndex) {
34891 2 : case 0:
34892 2 : info->name = "executeCommand";
34893 2 : info->eventType = GF_SG_EVENT_IN;
34894 2 : info->on_event_in = ((M_MusicScore *)node)->on_executeCommand;
34895 2 : info->fieldType = GF_SG_VRML_SFBOOL;
34896 2 : info->far_ptr = & ((M_MusicScore *) node)->executeCommand;
34897 2 : return GF_OK;
34898 2 : case 1:
34899 2 : info->name = "gotoLabel";
34900 2 : info->eventType = GF_SG_EVENT_IN;
34901 2 : info->on_event_in = ((M_MusicScore *)node)->on_gotoLabel;
34902 2 : info->fieldType = GF_SG_VRML_SFSTRING;
34903 2 : info->far_ptr = & ((M_MusicScore *) node)->gotoLabel;
34904 2 : return GF_OK;
34905 2 : case 2:
34906 2 : info->name = "gotoMeasure";
34907 2 : info->eventType = GF_SG_EVENT_IN;
34908 2 : info->on_event_in = ((M_MusicScore *)node)->on_gotoMeasure;
34909 2 : info->fieldType = GF_SG_VRML_SFINT32;
34910 2 : info->far_ptr = & ((M_MusicScore *) node)->gotoMeasure;
34911 2 : return GF_OK;
34912 2 : case 3:
34913 2 : info->name = "highlightTimePosition";
34914 2 : info->eventType = GF_SG_EVENT_IN;
34915 2 : info->on_event_in = ((M_MusicScore *)node)->on_highlightTimePosition;
34916 2 : info->fieldType = GF_SG_VRML_SFTIME;
34917 2 : info->far_ptr = & ((M_MusicScore *) node)->highlightTimePosition;
34918 2 : return GF_OK;
34919 2 : case 4:
34920 2 : info->name = "mousePosition";
34921 2 : info->eventType = GF_SG_EVENT_IN;
34922 2 : info->on_event_in = ((M_MusicScore *)node)->on_mousePosition;
34923 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
34924 2 : info->far_ptr = & ((M_MusicScore *) node)->mousePosition;
34925 2 : return GF_OK;
34926 2 : case 5:
34927 2 : info->name = "argumentsOnExecute";
34928 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34929 2 : info->fieldType = GF_SG_VRML_MFSTRING;
34930 2 : info->far_ptr = & ((M_MusicScore *) node)->argumentsOnExecute;
34931 2 : return GF_OK;
34932 2 : case 6:
34933 2 : info->name = "commandOnExecute";
34934 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34935 2 : info->fieldType = GF_SG_VRML_SFSTRING;
34936 2 : info->far_ptr = & ((M_MusicScore *) node)->commandOnExecute;
34937 2 : return GF_OK;
34938 2 : case 7:
34939 2 : info->name = "firstVisibleMeasure";
34940 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34941 2 : info->fieldType = GF_SG_VRML_SFINT32;
34942 2 : info->far_ptr = & ((M_MusicScore *) node)->firstVisibleMeasure;
34943 2 : return GF_OK;
34944 2 : case 8:
34945 2 : info->name = "hyperlinkEnable";
34946 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34947 2 : info->fieldType = GF_SG_VRML_SFBOOL;
34948 2 : info->far_ptr = & ((M_MusicScore *) node)->hyperlinkEnable;
34949 2 : return GF_OK;
34950 2 : case 9:
34951 2 : info->name = "loop";
34952 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34953 2 : info->fieldType = GF_SG_VRML_SFBOOL;
34954 2 : info->far_ptr = & ((M_MusicScore *) node)->loop;
34955 2 : return GF_OK;
34956 2 : case 10:
34957 2 : info->name = "partsLyrics";
34958 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34959 2 : info->fieldType = GF_SG_VRML_MFSTRING;
34960 2 : info->far_ptr = & ((M_MusicScore *) node)->partsLyrics;
34961 2 : return GF_OK;
34962 2 : case 11:
34963 2 : info->name = "partsShown";
34964 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34965 2 : info->fieldType = GF_SG_VRML_MFINT32;
34966 2 : info->far_ptr = & ((M_MusicScore *) node)->partsShown;
34967 2 : return GF_OK;
34968 2 : case 12:
34969 2 : info->name = "scoreOffset";
34970 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34971 2 : info->fieldType = GF_SG_VRML_SFTIME;
34972 2 : info->far_ptr = & ((M_MusicScore *) node)->scoreOffset;
34973 2 : return GF_OK;
34974 2 : case 13:
34975 2 : info->name = "size";
34976 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34977 2 : info->fieldType = GF_SG_VRML_SFVEC2F;
34978 2 : info->far_ptr = & ((M_MusicScore *) node)->size;
34979 2 : return GF_OK;
34980 2 : case 14:
34981 2 : info->name = "speed";
34982 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34983 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
34984 2 : info->far_ptr = & ((M_MusicScore *) node)->speed;
34985 2 : return GF_OK;
34986 2 : case 15:
34987 2 : info->name = "startTime";
34988 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34989 2 : info->fieldType = GF_SG_VRML_SFTIME;
34990 2 : info->far_ptr = & ((M_MusicScore *) node)->startTime;
34991 2 : return GF_OK;
34992 2 : case 16:
34993 2 : info->name = "stopTime";
34994 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
34995 2 : info->fieldType = GF_SG_VRML_SFTIME;
34996 2 : info->far_ptr = & ((M_MusicScore *) node)->stopTime;
34997 2 : return GF_OK;
34998 2 : case 17:
34999 2 : info->name = "transpose";
35000 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35001 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35002 2 : info->far_ptr = & ((M_MusicScore *) node)->transpose;
35003 2 : return GF_OK;
35004 2 : case 18:
35005 2 : info->name = "url";
35006 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35007 2 : info->fieldType = GF_SG_VRML_MFURL;
35008 2 : info->far_ptr = & ((M_MusicScore *) node)->url;
35009 2 : return GF_OK;
35010 2 : case 19:
35011 2 : info->name = "urlSA";
35012 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35013 2 : info->fieldType = GF_SG_VRML_MFURL;
35014 2 : info->far_ptr = & ((M_MusicScore *) node)->urlSA;
35015 2 : return GF_OK;
35016 2 : case 20:
35017 2 : info->name = "viewType";
35018 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35019 2 : info->fieldType = GF_SG_VRML_SFSTRING;
35020 2 : info->far_ptr = & ((M_MusicScore *) node)->viewType;
35021 2 : return GF_OK;
35022 2 : case 21:
35023 2 : info->name = "activatedLink";
35024 2 : info->eventType = GF_SG_EVENT_OUT;
35025 2 : info->fieldType = GF_SG_VRML_SFSTRING;
35026 2 : info->far_ptr = & ((M_MusicScore *) node)->activatedLink;
35027 2 : return GF_OK;
35028 2 : case 22:
35029 2 : info->name = "availableCommands";
35030 2 : info->eventType = GF_SG_EVENT_OUT;
35031 2 : info->fieldType = GF_SG_VRML_MFSTRING;
35032 2 : info->far_ptr = & ((M_MusicScore *) node)->availableCommands;
35033 2 : return GF_OK;
35034 2 : case 23:
35035 2 : info->name = "availableLabels";
35036 2 : info->eventType = GF_SG_EVENT_OUT;
35037 2 : info->fieldType = GF_SG_VRML_MFSTRING;
35038 2 : info->far_ptr = & ((M_MusicScore *) node)->availableLabels;
35039 2 : return GF_OK;
35040 2 : case 24:
35041 2 : info->name = "availableLyricLanguages";
35042 2 : info->eventType = GF_SG_EVENT_OUT;
35043 2 : info->fieldType = GF_SG_VRML_MFSTRING;
35044 2 : info->far_ptr = & ((M_MusicScore *) node)->availableLyricLanguages;
35045 2 : return GF_OK;
35046 2 : case 25:
35047 2 : info->name = "availableViewTypes";
35048 2 : info->eventType = GF_SG_EVENT_OUT;
35049 2 : info->fieldType = GF_SG_VRML_MFSTRING;
35050 2 : info->far_ptr = & ((M_MusicScore *) node)->availableViewTypes;
35051 2 : return GF_OK;
35052 2 : case 26:
35053 2 : info->name = "isActive";
35054 2 : info->eventType = GF_SG_EVENT_OUT;
35055 2 : info->fieldType = GF_SG_VRML_SFBOOL;
35056 2 : info->far_ptr = & ((M_MusicScore *) node)->isActive;
35057 2 : return GF_OK;
35058 2 : case 27:
35059 2 : info->name = "highlightPosition";
35060 2 : info->eventType = GF_SG_EVENT_OUT;
35061 2 : info->fieldType = GF_SG_VRML_SFVEC3F;
35062 2 : info->far_ptr = & ((M_MusicScore *) node)->highlightPosition;
35063 2 : return GF_OK;
35064 2 : case 28:
35065 2 : info->name = "lastVisibleMeasure";
35066 2 : info->eventType = GF_SG_EVENT_OUT;
35067 2 : info->fieldType = GF_SG_VRML_SFINT32;
35068 2 : info->far_ptr = & ((M_MusicScore *) node)->lastVisibleMeasure;
35069 2 : return GF_OK;
35070 2 : case 29:
35071 2 : info->name = "numMeasures";
35072 2 : info->eventType = GF_SG_EVENT_OUT;
35073 2 : info->fieldType = GF_SG_VRML_SFINT32;
35074 2 : info->far_ptr = & ((M_MusicScore *) node)->numMeasures;
35075 2 : return GF_OK;
35076 2 : case 30:
35077 2 : info->name = "partNames";
35078 2 : info->eventType = GF_SG_EVENT_OUT;
35079 2 : info->fieldType = GF_SG_VRML_MFSTRING;
35080 2 : info->far_ptr = & ((M_MusicScore *) node)->partNames;
35081 2 : return GF_OK;
35082 : default:
35083 : return GF_BAD_PARAM;
35084 : }
35085 : }
35086 :
35087 :
35088 31 : static s32 MusicScore_get_field_index_by_name(char *name)
35089 : {
35090 31 : if (!strcmp("executeCommand", name)) return 0;
35091 30 : if (!strcmp("gotoLabel", name)) return 1;
35092 29 : if (!strcmp("gotoMeasure", name)) return 2;
35093 28 : if (!strcmp("highlightTimePosition", name)) return 3;
35094 27 : if (!strcmp("mousePosition", name)) return 4;
35095 26 : if (!strcmp("argumentsOnExecute", name)) return 5;
35096 25 : if (!strcmp("commandOnExecute", name)) return 6;
35097 24 : if (!strcmp("firstVisibleMeasure", name)) return 7;
35098 23 : if (!strcmp("hyperlinkEnable", name)) return 8;
35099 22 : if (!strcmp("loop", name)) return 9;
35100 21 : if (!strcmp("partsLyrics", name)) return 10;
35101 20 : if (!strcmp("partsShown", name)) return 11;
35102 19 : if (!strcmp("scoreOffset", name)) return 12;
35103 18 : if (!strcmp("size", name)) return 13;
35104 17 : if (!strcmp("speed", name)) return 14;
35105 16 : if (!strcmp("startTime", name)) return 15;
35106 15 : if (!strcmp("stopTime", name)) return 16;
35107 14 : if (!strcmp("transpose", name)) return 17;
35108 13 : if (!strcmp("url", name)) return 18;
35109 12 : if (!strcmp("urlSA", name)) return 19;
35110 11 : if (!strcmp("viewType", name)) return 20;
35111 10 : if (!strcmp("activatedLink", name)) return 21;
35112 9 : if (!strcmp("availableCommands", name)) return 22;
35113 8 : if (!strcmp("availableLabels", name)) return 23;
35114 7 : if (!strcmp("availableLyricLanguages", name)) return 24;
35115 6 : if (!strcmp("availableViewTypes", name)) return 25;
35116 5 : if (!strcmp("isActive", name)) return 26;
35117 4 : if (!strcmp("highlightPosition", name)) return 27;
35118 3 : if (!strcmp("lastVisibleMeasure", name)) return 28;
35119 2 : if (!strcmp("numMeasures", name)) return 29;
35120 1 : if (!strcmp("partNames", name)) return 30;
35121 0 : return -1;
35122 : }
35123 : static Bool MusicScore_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35124 : {
35125 31 : switch (FieldIndex) {
35126 1 : case 14:
35127 1 : *AType = 7;
35128 1 : *QType = 0;
35129 1 : *b_min = FIX_MIN;
35130 1 : *b_max = FIX_MAX;
35131 : return 1;
35132 : default:
35133 : return 0;
35134 : }
35135 : }
35136 :
35137 :
35138 :
35139 1 : GF_Node *MusicScore_Create()
35140 : {
35141 : M_MusicScore *p;
35142 1 : GF_SAFEALLOC(p, M_MusicScore);
35143 1 : if(!p) return NULL;
35144 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_MusicScore);
35145 :
35146 : /*default field values*/
35147 1 : p->firstVisibleMeasure = 0;
35148 1 : p->hyperlinkEnable = 1;
35149 1 : p->scoreOffset = 0.0;
35150 1 : p->size.x = FLT2FIX(-1);
35151 1 : p->size.y = FLT2FIX(-1);
35152 1 : p->speed = FLT2FIX(1.0);
35153 1 : p->startTime = 0;
35154 1 : p->stopTime = 0;
35155 1 : p->transpose = FLT2FIX(0.0);
35156 1 : return (GF_Node *)p;
35157 : }
35158 :
35159 :
35160 : /*
35161 : FootPrintSetNode Node deletion
35162 : */
35163 :
35164 : static void FootPrintSetNode_Del(GF_Node *node)
35165 : {
35166 : M_FootPrintSetNode *p = (M_FootPrintSetNode *) node;
35167 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
35168 1 : gf_node_free((GF_Node *) p);
35169 : }
35170 :
35171 : static const u16 FootPrintSetNode_Def2All[] = { 0};
35172 : static const u16 FootPrintSetNode_In2All[] = { 0};
35173 : static const u16 FootPrintSetNode_Out2All[] = { 0};
35174 :
35175 : static u32 FootPrintSetNode_get_field_count(GF_Node *node, u8 IndexMode)
35176 : {
35177 6 : switch(IndexMode) {
35178 : case GF_SG_FIELD_CODING_IN:
35179 : return 1;
35180 : case GF_SG_FIELD_CODING_DEF:
35181 : return 1;
35182 : case GF_SG_FIELD_CODING_OUT:
35183 : return 1;
35184 1 : case GF_SG_FIELD_CODING_DYN:
35185 : return 0;
35186 : default:
35187 : return 1;
35188 : }
35189 : }
35190 :
35191 : static GF_Err FootPrintSetNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35192 : {
35193 1 : switch(IndexMode) {
35194 0 : case GF_SG_FIELD_CODING_IN:
35195 0 : *allField = FootPrintSetNode_In2All[inField];
35196 : return GF_OK;
35197 0 : case GF_SG_FIELD_CODING_DEF:
35198 0 : *allField = FootPrintSetNode_Def2All[inField];
35199 : return GF_OK;
35200 0 : case GF_SG_FIELD_CODING_OUT:
35201 0 : *allField = FootPrintSetNode_Out2All[inField];
35202 : return GF_OK;
35203 : default:
35204 : return GF_BAD_PARAM;
35205 : }
35206 : }
35207 : static GF_Err FootPrintSetNode_get_field(GF_Node *node, GF_FieldInfo *info)
35208 : {
35209 2 : switch (info->fieldIndex) {
35210 2 : case 0:
35211 2 : info->name = "children";
35212 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35213 2 : info->fieldType = GF_SG_VRML_MFNODE;
35214 2 : info->NDTtype = NDT_SFGeometryNode;
35215 2 : info->far_ptr = & ((M_FootPrintSetNode *)node)->children;
35216 : return GF_OK;
35217 : default:
35218 : return GF_BAD_PARAM;
35219 : }
35220 : }
35221 :
35222 :
35223 : static s32 FootPrintSetNode_get_field_index_by_name(char *name)
35224 : {
35225 1 : if (!strcmp("children", name)) return 0;
35226 : return -1;
35227 : }
35228 : static Bool FootPrintSetNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35229 : {
35230 : switch (FieldIndex) {
35231 : default:
35232 : return 0;
35233 : }
35234 : }
35235 :
35236 :
35237 :
35238 1 : GF_Node *FootPrintSetNode_Create()
35239 : {
35240 : M_FootPrintSetNode *p;
35241 1 : GF_SAFEALLOC(p, M_FootPrintSetNode);
35242 1 : if(!p) return NULL;
35243 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FootPrintSetNode);
35244 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
35245 :
35246 : /*default field values*/
35247 1 : return (GF_Node *)p;
35248 : }
35249 :
35250 :
35251 : /*
35252 : FootPrintNode Node deletion
35253 : */
35254 :
35255 : static void FootPrintNode_Del(GF_Node *node)
35256 : {
35257 : M_FootPrintNode *p = (M_FootPrintNode *) node;
35258 1 : gf_node_unregister((GF_Node *) p->footprint, (GF_Node *) p);
35259 1 : gf_node_free((GF_Node *) p);
35260 : }
35261 :
35262 : static const u16 FootPrintNode_Def2All[] = { 0, 1};
35263 : static const u16 FootPrintNode_In2All[] = { 0, 1};
35264 : static const u16 FootPrintNode_Out2All[] = { 0, 1};
35265 :
35266 : static u32 FootPrintNode_get_field_count(GF_Node *node, u8 IndexMode)
35267 : {
35268 6 : switch(IndexMode) {
35269 : case GF_SG_FIELD_CODING_IN:
35270 : return 2;
35271 : case GF_SG_FIELD_CODING_DEF:
35272 : return 2;
35273 : case GF_SG_FIELD_CODING_OUT:
35274 : return 2;
35275 1 : case GF_SG_FIELD_CODING_DYN:
35276 : return 0;
35277 : default:
35278 : return 2;
35279 : }
35280 : }
35281 :
35282 : static GF_Err FootPrintNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35283 : {
35284 2 : switch(IndexMode) {
35285 0 : case GF_SG_FIELD_CODING_IN:
35286 0 : *allField = FootPrintNode_In2All[inField];
35287 : return GF_OK;
35288 0 : case GF_SG_FIELD_CODING_DEF:
35289 0 : *allField = FootPrintNode_Def2All[inField];
35290 : return GF_OK;
35291 0 : case GF_SG_FIELD_CODING_OUT:
35292 0 : *allField = FootPrintNode_Out2All[inField];
35293 : return GF_OK;
35294 : default:
35295 : return GF_BAD_PARAM;
35296 : }
35297 : }
35298 : static GF_Err FootPrintNode_get_field(GF_Node *node, GF_FieldInfo *info)
35299 : {
35300 4 : switch (info->fieldIndex) {
35301 2 : case 0:
35302 2 : info->name = "index";
35303 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35304 2 : info->fieldType = GF_SG_VRML_SFINT32;
35305 2 : info->far_ptr = & ((M_FootPrintNode *) node)->index;
35306 : return GF_OK;
35307 2 : case 1:
35308 2 : info->name = "footprint";
35309 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35310 2 : info->fieldType = GF_SG_VRML_SFNODE;
35311 2 : info->NDTtype = NDT_SFGeometryNode;
35312 2 : info->far_ptr = & ((M_FootPrintNode *)node)->footprint;
35313 : return GF_OK;
35314 : default:
35315 : return GF_BAD_PARAM;
35316 : }
35317 : }
35318 :
35319 :
35320 2 : static s32 FootPrintNode_get_field_index_by_name(char *name)
35321 : {
35322 2 : if (!strcmp("index", name)) return 0;
35323 1 : if (!strcmp("footprint", name)) return 1;
35324 0 : return -1;
35325 : }
35326 : static Bool FootPrintNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35327 : {
35328 : switch (FieldIndex) {
35329 : default:
35330 : return 0;
35331 : }
35332 : }
35333 :
35334 :
35335 :
35336 1 : GF_Node *FootPrintNode_Create()
35337 : {
35338 : M_FootPrintNode *p;
35339 1 : GF_SAFEALLOC(p, M_FootPrintNode);
35340 1 : if(!p) return NULL;
35341 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FootPrintNode);
35342 :
35343 : /*default field values*/
35344 1 : p->index = -1;
35345 1 : return (GF_Node *)p;
35346 : }
35347 :
35348 :
35349 : /*
35350 : BuildingPartNode Node deletion
35351 : */
35352 :
35353 1 : static void BuildingPartNode_Del(GF_Node *node)
35354 : {
35355 : M_BuildingPartNode *p = (M_BuildingPartNode *) node;
35356 1 : gf_node_unregister((GF_Node *) p->footprint, (GF_Node *) p);
35357 1 : gf_node_unregister_children((GF_Node *) p, p->alternativeGeometry);
35358 1 : gf_node_unregister_children((GF_Node *) p, p->roofs);
35359 1 : gf_node_unregister_children((GF_Node *) p, p->facades);
35360 1 : gf_node_free((GF_Node *) p);
35361 1 : }
35362 :
35363 : static const u16 BuildingPartNode_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
35364 : static const u16 BuildingPartNode_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
35365 : static const u16 BuildingPartNode_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
35366 :
35367 : static u32 BuildingPartNode_get_field_count(GF_Node *node, u8 IndexMode)
35368 : {
35369 6 : switch(IndexMode) {
35370 : case GF_SG_FIELD_CODING_IN:
35371 : return 8;
35372 : case GF_SG_FIELD_CODING_DEF:
35373 : return 8;
35374 : case GF_SG_FIELD_CODING_OUT:
35375 : return 8;
35376 1 : case GF_SG_FIELD_CODING_DYN:
35377 : return 0;
35378 : default:
35379 : return 8;
35380 : }
35381 : }
35382 :
35383 : static GF_Err BuildingPartNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35384 : {
35385 8 : switch(IndexMode) {
35386 0 : case GF_SG_FIELD_CODING_IN:
35387 0 : *allField = BuildingPartNode_In2All[inField];
35388 : return GF_OK;
35389 0 : case GF_SG_FIELD_CODING_DEF:
35390 0 : *allField = BuildingPartNode_Def2All[inField];
35391 : return GF_OK;
35392 0 : case GF_SG_FIELD_CODING_OUT:
35393 0 : *allField = BuildingPartNode_Out2All[inField];
35394 : return GF_OK;
35395 : default:
35396 : return GF_BAD_PARAM;
35397 : }
35398 : }
35399 16 : static GF_Err BuildingPartNode_get_field(GF_Node *node, GF_FieldInfo *info)
35400 : {
35401 16 : switch (info->fieldIndex) {
35402 2 : case 0:
35403 2 : info->name = "index";
35404 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35405 2 : info->fieldType = GF_SG_VRML_SFINT32;
35406 2 : info->far_ptr = & ((M_BuildingPartNode *) node)->index;
35407 2 : return GF_OK;
35408 2 : case 1:
35409 2 : info->name = "footprint";
35410 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35411 2 : info->fieldType = GF_SG_VRML_SFNODE;
35412 2 : info->NDTtype = NDT_SFGeometryNode;
35413 2 : info->far_ptr = & ((M_BuildingPartNode *)node)->footprint;
35414 2 : return GF_OK;
35415 2 : case 2:
35416 2 : info->name = "buildingIndex";
35417 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35418 2 : info->fieldType = GF_SG_VRML_SFINT32;
35419 2 : info->far_ptr = & ((M_BuildingPartNode *) node)->buildingIndex;
35420 2 : return GF_OK;
35421 2 : case 3:
35422 2 : info->name = "height";
35423 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35424 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35425 2 : info->far_ptr = & ((M_BuildingPartNode *) node)->height;
35426 2 : return GF_OK;
35427 2 : case 4:
35428 2 : info->name = "altitude";
35429 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35430 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35431 2 : info->far_ptr = & ((M_BuildingPartNode *) node)->altitude;
35432 2 : return GF_OK;
35433 2 : case 5:
35434 2 : info->name = "alternativeGeometry";
35435 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35436 2 : info->fieldType = GF_SG_VRML_MFNODE;
35437 2 : info->NDTtype = NDT_SFGeometryNode;
35438 2 : info->far_ptr = & ((M_BuildingPartNode *)node)->alternativeGeometry;
35439 2 : return GF_OK;
35440 2 : case 6:
35441 2 : info->name = "roofs";
35442 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35443 2 : info->fieldType = GF_SG_VRML_MFNODE;
35444 2 : info->NDTtype = NDT_SFGeometryNode;
35445 2 : info->far_ptr = & ((M_BuildingPartNode *)node)->roofs;
35446 2 : return GF_OK;
35447 2 : case 7:
35448 2 : info->name = "facades";
35449 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35450 2 : info->fieldType = GF_SG_VRML_MFNODE;
35451 2 : info->NDTtype = NDT_SFGeometryNode;
35452 2 : info->far_ptr = & ((M_BuildingPartNode *)node)->facades;
35453 2 : return GF_OK;
35454 : default:
35455 : return GF_BAD_PARAM;
35456 : }
35457 : }
35458 :
35459 :
35460 8 : static s32 BuildingPartNode_get_field_index_by_name(char *name)
35461 : {
35462 8 : if (!strcmp("index", name)) return 0;
35463 7 : if (!strcmp("footprint", name)) return 1;
35464 6 : if (!strcmp("buildingIndex", name)) return 2;
35465 5 : if (!strcmp("height", name)) return 3;
35466 4 : if (!strcmp("altitude", name)) return 4;
35467 3 : if (!strcmp("alternativeGeometry", name)) return 5;
35468 2 : if (!strcmp("roofs", name)) return 6;
35469 1 : if (!strcmp("facades", name)) return 7;
35470 0 : return -1;
35471 : }
35472 : static Bool BuildingPartNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35473 : {
35474 : switch (FieldIndex) {
35475 : default:
35476 : return 0;
35477 : }
35478 : }
35479 :
35480 :
35481 :
35482 1 : GF_Node *BuildingPartNode_Create()
35483 : {
35484 : M_BuildingPartNode *p;
35485 1 : GF_SAFEALLOC(p, M_BuildingPartNode);
35486 1 : if(!p) return NULL;
35487 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_BuildingPartNode);
35488 :
35489 : /*default field values*/
35490 1 : p->index = -1;
35491 1 : p->buildingIndex = -1;
35492 1 : p->height = FLT2FIX(0);
35493 1 : p->altitude = FLT2FIX(0);
35494 1 : return (GF_Node *)p;
35495 : }
35496 :
35497 :
35498 : /*
35499 : RoofNode Node deletion
35500 : */
35501 :
35502 1 : static void RoofNode_Del(GF_Node *node)
35503 : {
35504 : M_RoofNode *p = (M_RoofNode *) node;
35505 1 : gf_sg_mffloat_del(p->SlopeAngle);
35506 1 : gf_sg_sfurl_del(p->RoofTextureURL);
35507 1 : gf_node_free((GF_Node *) p);
35508 1 : }
35509 :
35510 : static const u16 RoofNode_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
35511 : static const u16 RoofNode_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
35512 : static const u16 RoofNode_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
35513 :
35514 : static u32 RoofNode_get_field_count(GF_Node *node, u8 IndexMode)
35515 : {
35516 6 : switch(IndexMode) {
35517 : case GF_SG_FIELD_CODING_IN:
35518 : return 12;
35519 : case GF_SG_FIELD_CODING_DEF:
35520 : return 12;
35521 : case GF_SG_FIELD_CODING_OUT:
35522 : return 12;
35523 1 : case GF_SG_FIELD_CODING_DYN:
35524 : return 0;
35525 : default:
35526 : return 12;
35527 : }
35528 : }
35529 :
35530 : static GF_Err RoofNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35531 : {
35532 12 : switch(IndexMode) {
35533 0 : case GF_SG_FIELD_CODING_IN:
35534 0 : *allField = RoofNode_In2All[inField];
35535 : return GF_OK;
35536 0 : case GF_SG_FIELD_CODING_DEF:
35537 0 : *allField = RoofNode_Def2All[inField];
35538 : return GF_OK;
35539 0 : case GF_SG_FIELD_CODING_OUT:
35540 0 : *allField = RoofNode_Out2All[inField];
35541 : return GF_OK;
35542 : default:
35543 : return GF_BAD_PARAM;
35544 : }
35545 : }
35546 24 : static GF_Err RoofNode_get_field(GF_Node *node, GF_FieldInfo *info)
35547 : {
35548 24 : switch (info->fieldIndex) {
35549 2 : case 0:
35550 2 : info->name = "Type";
35551 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35552 2 : info->fieldType = GF_SG_VRML_SFINT32;
35553 2 : info->far_ptr = & ((M_RoofNode *) node)->Type;
35554 2 : return GF_OK;
35555 2 : case 1:
35556 2 : info->name = "Height";
35557 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35558 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35559 2 : info->far_ptr = & ((M_RoofNode *) node)->Height;
35560 2 : return GF_OK;
35561 2 : case 2:
35562 2 : info->name = "SlopeAngle";
35563 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35564 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
35565 2 : info->far_ptr = & ((M_RoofNode *) node)->SlopeAngle;
35566 2 : return GF_OK;
35567 2 : case 3:
35568 2 : info->name = "EaveProjection";
35569 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35570 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35571 2 : info->far_ptr = & ((M_RoofNode *) node)->EaveProjection;
35572 2 : return GF_OK;
35573 2 : case 4:
35574 2 : info->name = "EdgeSupportIndex";
35575 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35576 2 : info->fieldType = GF_SG_VRML_SFINT32;
35577 2 : info->far_ptr = & ((M_RoofNode *) node)->EdgeSupportIndex;
35578 2 : return GF_OK;
35579 2 : case 5:
35580 2 : info->name = "RoofTextureURL";
35581 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35582 2 : info->fieldType = GF_SG_VRML_SFURL;
35583 2 : info->far_ptr = & ((M_RoofNode *) node)->RoofTextureURL;
35584 2 : return GF_OK;
35585 2 : case 6:
35586 2 : info->name = "IsGenericTexture";
35587 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35588 2 : info->fieldType = GF_SG_VRML_SFBOOL;
35589 2 : info->far_ptr = & ((M_RoofNode *) node)->IsGenericTexture;
35590 2 : return GF_OK;
35591 2 : case 7:
35592 2 : info->name = "TextureXScale";
35593 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35594 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35595 2 : info->far_ptr = & ((M_RoofNode *) node)->TextureXScale;
35596 2 : return GF_OK;
35597 2 : case 8:
35598 2 : info->name = "TextureYScale";
35599 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35600 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35601 2 : info->far_ptr = & ((M_RoofNode *) node)->TextureYScale;
35602 2 : return GF_OK;
35603 2 : case 9:
35604 2 : info->name = "TextureXPosition";
35605 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35606 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35607 2 : info->far_ptr = & ((M_RoofNode *) node)->TextureXPosition;
35608 2 : return GF_OK;
35609 2 : case 10:
35610 2 : info->name = "TextureYPosition";
35611 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35612 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35613 2 : info->far_ptr = & ((M_RoofNode *) node)->TextureYPosition;
35614 2 : return GF_OK;
35615 2 : case 11:
35616 2 : info->name = "TextureRotation";
35617 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35618 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35619 2 : info->far_ptr = & ((M_RoofNode *) node)->TextureRotation;
35620 2 : return GF_OK;
35621 : default:
35622 : return GF_BAD_PARAM;
35623 : }
35624 : }
35625 :
35626 :
35627 12 : static s32 RoofNode_get_field_index_by_name(char *name)
35628 : {
35629 12 : if (!strcmp("Type", name)) return 0;
35630 11 : if (!strcmp("Height", name)) return 1;
35631 10 : if (!strcmp("SlopeAngle", name)) return 2;
35632 9 : if (!strcmp("EaveProjection", name)) return 3;
35633 8 : if (!strcmp("EdgeSupportIndex", name)) return 4;
35634 7 : if (!strcmp("RoofTextureURL", name)) return 5;
35635 6 : if (!strcmp("IsGenericTexture", name)) return 6;
35636 5 : if (!strcmp("TextureXScale", name)) return 7;
35637 4 : if (!strcmp("TextureYScale", name)) return 8;
35638 3 : if (!strcmp("TextureXPosition", name)) return 9;
35639 2 : if (!strcmp("TextureYPosition", name)) return 10;
35640 1 : if (!strcmp("TextureRotation", name)) return 11;
35641 0 : return -1;
35642 : }
35643 : static Bool RoofNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35644 : {
35645 : switch (FieldIndex) {
35646 : default:
35647 : return 0;
35648 : }
35649 : }
35650 :
35651 :
35652 :
35653 1 : GF_Node *RoofNode_Create()
35654 : {
35655 : M_RoofNode *p;
35656 1 : GF_SAFEALLOC(p, M_RoofNode);
35657 1 : if(!p) return NULL;
35658 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_RoofNode);
35659 :
35660 : /*default field values*/
35661 1 : p->Type = 0;
35662 1 : p->Height = FLT2FIX(0.0);
35663 1 : p->SlopeAngle.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
35664 1 : p->SlopeAngle.count = 1;
35665 1 : p->SlopeAngle.vals[0] = FLT2FIX(0.0);
35666 1 : p->EaveProjection = FLT2FIX(0.0);
35667 1 : p->EdgeSupportIndex = -1;
35668 1 : p->IsGenericTexture = 1;
35669 1 : p->TextureXScale = FLT2FIX(1.0);
35670 1 : p->TextureYScale = FLT2FIX(1.0);
35671 1 : p->TextureXPosition = FLT2FIX(0.0);
35672 1 : p->TextureYPosition = FLT2FIX(0.0);
35673 1 : p->TextureRotation = FLT2FIX(0.0);
35674 1 : return (GF_Node *)p;
35675 : }
35676 :
35677 :
35678 : /*
35679 : FacadeNode Node deletion
35680 : */
35681 :
35682 1 : static void FacadeNode_Del(GF_Node *node)
35683 : {
35684 : M_FacadeNode *p = (M_FacadeNode *) node;
35685 1 : gf_sg_sfurl_del(p->FacadePrimitive);
35686 1 : gf_sg_mfint32_del(p->NbFacadeCellsByStorey);
35687 1 : gf_sg_mffloat_del(p->StoreyHeight);
35688 1 : gf_node_unregister_children((GF_Node *) p, p->FacadeCellsArray);
35689 1 : gf_node_free((GF_Node *) p);
35690 1 : }
35691 :
35692 : static const u16 FacadeNode_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
35693 : static const u16 FacadeNode_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
35694 : static const u16 FacadeNode_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
35695 :
35696 : static u32 FacadeNode_get_field_count(GF_Node *node, u8 IndexMode)
35697 : {
35698 6 : switch(IndexMode) {
35699 : case GF_SG_FIELD_CODING_IN:
35700 : return 13;
35701 : case GF_SG_FIELD_CODING_DEF:
35702 : return 13;
35703 : case GF_SG_FIELD_CODING_OUT:
35704 : return 13;
35705 1 : case GF_SG_FIELD_CODING_DYN:
35706 : return 0;
35707 : default:
35708 : return 13;
35709 : }
35710 : }
35711 :
35712 : static GF_Err FacadeNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35713 : {
35714 13 : switch(IndexMode) {
35715 0 : case GF_SG_FIELD_CODING_IN:
35716 0 : *allField = FacadeNode_In2All[inField];
35717 : return GF_OK;
35718 0 : case GF_SG_FIELD_CODING_DEF:
35719 0 : *allField = FacadeNode_Def2All[inField];
35720 : return GF_OK;
35721 0 : case GF_SG_FIELD_CODING_OUT:
35722 0 : *allField = FacadeNode_Out2All[inField];
35723 : return GF_OK;
35724 : default:
35725 : return GF_BAD_PARAM;
35726 : }
35727 : }
35728 26 : static GF_Err FacadeNode_get_field(GF_Node *node, GF_FieldInfo *info)
35729 : {
35730 26 : switch (info->fieldIndex) {
35731 2 : case 0:
35732 2 : info->name = "WidthRatio";
35733 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35734 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35735 2 : info->far_ptr = & ((M_FacadeNode *) node)->WidthRatio;
35736 2 : return GF_OK;
35737 2 : case 1:
35738 2 : info->name = "XScale";
35739 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35740 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35741 2 : info->far_ptr = & ((M_FacadeNode *) node)->XScale;
35742 2 : return GF_OK;
35743 2 : case 2:
35744 2 : info->name = "YScale";
35745 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35746 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35747 2 : info->far_ptr = & ((M_FacadeNode *) node)->YScale;
35748 2 : return GF_OK;
35749 2 : case 3:
35750 2 : info->name = "XPosition";
35751 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35752 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35753 2 : info->far_ptr = & ((M_FacadeNode *) node)->XPosition;
35754 2 : return GF_OK;
35755 2 : case 4:
35756 2 : info->name = "YPosition";
35757 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35758 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35759 2 : info->far_ptr = & ((M_FacadeNode *) node)->YPosition;
35760 2 : return GF_OK;
35761 2 : case 5:
35762 2 : info->name = "XRepeatInterval";
35763 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35764 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35765 2 : info->far_ptr = & ((M_FacadeNode *) node)->XRepeatInterval;
35766 2 : return GF_OK;
35767 2 : case 6:
35768 2 : info->name = "YRepeatInterval";
35769 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35770 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
35771 2 : info->far_ptr = & ((M_FacadeNode *) node)->YRepeatInterval;
35772 2 : return GF_OK;
35773 2 : case 7:
35774 2 : info->name = "Repeat";
35775 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35776 2 : info->fieldType = GF_SG_VRML_SFBOOL;
35777 2 : info->far_ptr = & ((M_FacadeNode *) node)->Repeat;
35778 2 : return GF_OK;
35779 2 : case 8:
35780 2 : info->name = "FacadePrimitive";
35781 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35782 2 : info->fieldType = GF_SG_VRML_SFURL;
35783 2 : info->far_ptr = & ((M_FacadeNode *) node)->FacadePrimitive;
35784 2 : return GF_OK;
35785 2 : case 9:
35786 2 : info->name = "NbStories";
35787 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35788 2 : info->fieldType = GF_SG_VRML_SFINT32;
35789 2 : info->far_ptr = & ((M_FacadeNode *) node)->NbStories;
35790 2 : return GF_OK;
35791 2 : case 10:
35792 2 : info->name = "NbFacadeCellsByStorey";
35793 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35794 2 : info->fieldType = GF_SG_VRML_MFINT32;
35795 2 : info->far_ptr = & ((M_FacadeNode *) node)->NbFacadeCellsByStorey;
35796 2 : return GF_OK;
35797 2 : case 11:
35798 2 : info->name = "StoreyHeight";
35799 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35800 2 : info->fieldType = GF_SG_VRML_MFFLOAT;
35801 2 : info->far_ptr = & ((M_FacadeNode *) node)->StoreyHeight;
35802 2 : return GF_OK;
35803 2 : case 12:
35804 2 : info->name = "FacadeCellsArray";
35805 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35806 2 : info->fieldType = GF_SG_VRML_MFNODE;
35807 2 : info->NDTtype = NDT_SFGeometryNode;
35808 2 : info->far_ptr = & ((M_FacadeNode *)node)->FacadeCellsArray;
35809 2 : return GF_OK;
35810 : default:
35811 : return GF_BAD_PARAM;
35812 : }
35813 : }
35814 :
35815 :
35816 13 : static s32 FacadeNode_get_field_index_by_name(char *name)
35817 : {
35818 13 : if (!strcmp("WidthRatio", name)) return 0;
35819 12 : if (!strcmp("XScale", name)) return 1;
35820 11 : if (!strcmp("YScale", name)) return 2;
35821 10 : if (!strcmp("XPosition", name)) return 3;
35822 9 : if (!strcmp("YPosition", name)) return 4;
35823 8 : if (!strcmp("XRepeatInterval", name)) return 5;
35824 7 : if (!strcmp("YRepeatInterval", name)) return 6;
35825 6 : if (!strcmp("Repeat", name)) return 7;
35826 5 : if (!strcmp("FacadePrimitive", name)) return 8;
35827 4 : if (!strcmp("NbStories", name)) return 9;
35828 3 : if (!strcmp("NbFacadeCellsByStorey", name)) return 10;
35829 2 : if (!strcmp("StoreyHeight", name)) return 11;
35830 1 : if (!strcmp("FacadeCellsArray", name)) return 12;
35831 0 : return -1;
35832 : }
35833 : static Bool FacadeNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35834 : {
35835 : switch (FieldIndex) {
35836 : default:
35837 : return 0;
35838 : }
35839 : }
35840 :
35841 :
35842 :
35843 1 : GF_Node *FacadeNode_Create()
35844 : {
35845 : M_FacadeNode *p;
35846 1 : GF_SAFEALLOC(p, M_FacadeNode);
35847 1 : if(!p) return NULL;
35848 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_FacadeNode);
35849 :
35850 : /*default field values*/
35851 1 : p->WidthRatio = FLT2FIX(1.0);
35852 1 : p->XScale = FLT2FIX(1.0);
35853 1 : p->YScale = FLT2FIX(1.0);
35854 1 : p->XPosition = FLT2FIX(0.0);
35855 1 : p->YPosition = FLT2FIX(0.0);
35856 1 : p->XRepeatInterval = FLT2FIX(0.0);
35857 1 : p->YRepeatInterval = FLT2FIX(0.0);
35858 1 : p->NbStories = 0;
35859 1 : p->NbFacadeCellsByStorey.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
35860 1 : p->NbFacadeCellsByStorey.count = 1;
35861 1 : p->NbFacadeCellsByStorey.vals[0] = 0;
35862 1 : p->StoreyHeight.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
35863 1 : p->StoreyHeight.count = 1;
35864 1 : p->StoreyHeight.vals[0] = FLT2FIX(1.0);
35865 1 : return (GF_Node *)p;
35866 : }
35867 :
35868 :
35869 : /*
35870 : Shadow Node deletion
35871 : */
35872 :
35873 : static void Shadow_Del(GF_Node *node)
35874 : {
35875 : M_Shadow *p = (M_Shadow *) node;
35876 23 : gf_sg_vrml_parent_destroy((GF_Node *) p);
35877 23 : gf_node_free((GF_Node *) p);
35878 : }
35879 :
35880 : static const u16 Shadow_Def2All[] = { 2, 3, 4, 5, 6};
35881 : static const u16 Shadow_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
35882 : static const u16 Shadow_Out2All[] = { 2, 3, 4, 5, 6};
35883 :
35884 : static u32 Shadow_get_field_count(GF_Node *node, u8 IndexMode)
35885 : {
35886 : switch(IndexMode) {
35887 : case GF_SG_FIELD_CODING_IN:
35888 : return 7;
35889 : case GF_SG_FIELD_CODING_DEF:
35890 : return 5;
35891 : case GF_SG_FIELD_CODING_OUT:
35892 : return 5;
35893 : case GF_SG_FIELD_CODING_DYN:
35894 : return 0;
35895 : default:
35896 : return 7;
35897 : }
35898 : }
35899 :
35900 : static GF_Err Shadow_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
35901 : {
35902 42 : switch(IndexMode) {
35903 0 : case GF_SG_FIELD_CODING_IN:
35904 0 : *allField = Shadow_In2All[inField];
35905 : return GF_OK;
35906 35 : case GF_SG_FIELD_CODING_DEF:
35907 35 : *allField = Shadow_Def2All[inField];
35908 : return GF_OK;
35909 0 : case GF_SG_FIELD_CODING_OUT:
35910 0 : *allField = Shadow_Out2All[inField];
35911 : return GF_OK;
35912 : default:
35913 : return GF_BAD_PARAM;
35914 : }
35915 : }
35916 132 : static GF_Err Shadow_get_field(GF_Node *node, GF_FieldInfo *info)
35917 : {
35918 132 : switch (info->fieldIndex) {
35919 7 : case 0:
35920 7 : info->name = "addChildren";
35921 7 : info->eventType = GF_SG_EVENT_IN;
35922 7 : info->on_event_in = ((M_Shadow *)node)->on_addChildren;
35923 7 : info->fieldType = GF_SG_VRML_SFNODE;
35924 7 : info->NDTtype = NDT_SF3DNode;
35925 7 : info->far_ptr = & ((M_Shadow *)node)->addChildren;
35926 7 : return GF_OK;
35927 7 : case 1:
35928 7 : info->name = "removeChildren";
35929 7 : info->eventType = GF_SG_EVENT_IN;
35930 7 : info->on_event_in = ((M_Shadow *)node)->on_removeChildren;
35931 7 : info->fieldType = GF_SG_VRML_SFNODE;
35932 7 : info->NDTtype = NDT_SF3DNode;
35933 7 : info->far_ptr = & ((M_Shadow *)node)->removeChildren;
35934 7 : return GF_OK;
35935 14 : case 2:
35936 14 : info->name = "children";
35937 14 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35938 14 : info->fieldType = GF_SG_VRML_MFNODE;
35939 14 : info->NDTtype = NDT_SF3DNode;
35940 14 : info->far_ptr = & ((M_Shadow *)node)->children;
35941 14 : return GF_OK;
35942 26 : case 3:
35943 26 : info->name = "enabled";
35944 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35945 26 : info->fieldType = GF_SG_VRML_SFBOOL;
35946 26 : info->far_ptr = & ((M_Shadow *) node)->enabled;
35947 26 : return GF_OK;
35948 26 : case 4:
35949 26 : info->name = "cast";
35950 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35951 26 : info->fieldType = GF_SG_VRML_SFBOOL;
35952 26 : info->far_ptr = & ((M_Shadow *) node)->cast;
35953 26 : return GF_OK;
35954 26 : case 5:
35955 26 : info->name = "receive";
35956 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35957 26 : info->fieldType = GF_SG_VRML_SFBOOL;
35958 26 : info->far_ptr = & ((M_Shadow *) node)->receive;
35959 26 : return GF_OK;
35960 26 : case 6:
35961 26 : info->name = "penumbra";
35962 26 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
35963 26 : info->fieldType = GF_SG_VRML_SFFLOAT;
35964 26 : info->far_ptr = & ((M_Shadow *) node)->penumbra;
35965 26 : return GF_OK;
35966 : default:
35967 : return GF_BAD_PARAM;
35968 : }
35969 : }
35970 :
35971 :
35972 7 : static s32 Shadow_get_field_index_by_name(char *name)
35973 : {
35974 7 : if (!strcmp("addChildren", name)) return 0;
35975 6 : if (!strcmp("removeChildren", name)) return 1;
35976 5 : if (!strcmp("children", name)) return 2;
35977 4 : if (!strcmp("enabled", name)) return 3;
35978 3 : if (!strcmp("cast", name)) return 4;
35979 2 : if (!strcmp("receive", name)) return 5;
35980 1 : if (!strcmp("penumbra", name)) return 6;
35981 0 : return -1;
35982 : }
35983 : static Bool Shadow_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
35984 : {
35985 : switch (FieldIndex) {
35986 : default:
35987 : return 0;
35988 : }
35989 : }
35990 :
35991 :
35992 :
35993 23 : GF_Node *Shadow_Create()
35994 : {
35995 : M_Shadow *p;
35996 23 : GF_SAFEALLOC(p, M_Shadow);
35997 23 : if(!p) return NULL;
35998 23 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Shadow);
35999 23 : gf_sg_vrml_parent_setup((GF_Node *) p);
36000 :
36001 : /*default field values*/
36002 23 : p->enabled = 1;
36003 23 : p->cast = 1;
36004 23 : p->receive = 1;
36005 23 : p->penumbra = FLT2FIX(0);
36006 23 : return (GF_Node *)p;
36007 : }
36008 :
36009 :
36010 : /*
36011 : CacheTexture Node deletion
36012 : */
36013 :
36014 64 : static void CacheTexture_Del(GF_Node *node)
36015 : {
36016 : M_CacheTexture *p = (M_CacheTexture *) node;
36017 64 : gf_sg_sfstring_del(p->decoderSpecificInfo);
36018 64 : gf_sg_sfstring_del(p->image);
36019 64 : gf_sg_sfstring_del(p->cacheURL);
36020 64 : gf_sg_mfurl_del(p->cacheOD);
36021 64 : if (p->data) gf_free(p->data);
36022 64 : gf_node_free((GF_Node *) p);
36023 64 : }
36024 :
36025 : static const u16 CacheTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
36026 :
36027 : static u32 CacheTexture_get_field_count(GF_Node *node, u8 IndexMode)
36028 : {
36029 68 : switch(IndexMode) {
36030 : case GF_SG_FIELD_CODING_IN:
36031 : return 0;
36032 48 : case GF_SG_FIELD_CODING_DEF:
36033 : return 8;
36034 : case GF_SG_FIELD_CODING_OUT:
36035 : return 0;
36036 : case GF_SG_FIELD_CODING_DYN:
36037 : return 0;
36038 17 : default:
36039 : return 8;
36040 : }
36041 : }
36042 :
36043 : static GF_Err CacheTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
36044 : {
36045 181 : switch(IndexMode) {
36046 173 : case GF_SG_FIELD_CODING_DEF:
36047 173 : *allField = CacheTexture_Def2All[inField];
36048 : return GF_OK;
36049 : default:
36050 : return GF_BAD_PARAM;
36051 : }
36052 : }
36053 683 : static GF_Err CacheTexture_get_field(GF_Node *node, GF_FieldInfo *info)
36054 : {
36055 683 : switch (info->fieldIndex) {
36056 121 : case 0:
36057 121 : info->name = "objectTypeIndication";
36058 121 : info->eventType = GF_SG_EVENT_FIELD;
36059 121 : info->fieldType = GF_SG_VRML_SFINT32;
36060 121 : info->far_ptr = & ((M_CacheTexture *) node)->objectTypeIndication;
36061 121 : return GF_OK;
36062 64 : case 1:
36063 64 : info->name = "decoderSpecificInfo";
36064 64 : info->eventType = GF_SG_EVENT_FIELD;
36065 64 : info->fieldType = GF_SG_VRML_SFSTRING;
36066 64 : info->far_ptr = & ((M_CacheTexture *) node)->decoderSpecificInfo;
36067 64 : return GF_OK;
36068 66 : case 2:
36069 66 : info->name = "image";
36070 66 : info->eventType = GF_SG_EVENT_FIELD;
36071 66 : info->fieldType = GF_SG_VRML_SFSTRING;
36072 66 : info->far_ptr = & ((M_CacheTexture *) node)->image;
36073 66 : return GF_OK;
36074 120 : case 3:
36075 120 : info->name = "cacheURL";
36076 120 : info->eventType = GF_SG_EVENT_FIELD;
36077 120 : info->fieldType = GF_SG_VRML_SFSTRING;
36078 120 : info->far_ptr = & ((M_CacheTexture *) node)->cacheURL;
36079 120 : return GF_OK;
36080 64 : case 4:
36081 64 : info->name = "cacheOD";
36082 64 : info->eventType = GF_SG_EVENT_FIELD;
36083 64 : info->fieldType = GF_SG_VRML_MFURL;
36084 64 : info->far_ptr = & ((M_CacheTexture *) node)->cacheOD;
36085 64 : return GF_OK;
36086 120 : case 5:
36087 120 : info->name = "expirationDate";
36088 120 : info->eventType = GF_SG_EVENT_FIELD;
36089 120 : info->fieldType = GF_SG_VRML_SFINT32;
36090 120 : info->far_ptr = & ((M_CacheTexture *) node)->expirationDate;
36091 120 : return GF_OK;
36092 64 : case 6:
36093 64 : info->name = "repeatS";
36094 64 : info->eventType = GF_SG_EVENT_FIELD;
36095 64 : info->fieldType = GF_SG_VRML_SFBOOL;
36096 64 : info->far_ptr = & ((M_CacheTexture *) node)->repeatS;
36097 64 : return GF_OK;
36098 64 : case 7:
36099 64 : info->name = "repeatT";
36100 64 : info->eventType = GF_SG_EVENT_FIELD;
36101 64 : info->fieldType = GF_SG_VRML_SFBOOL;
36102 64 : info->far_ptr = & ((M_CacheTexture *) node)->repeatT;
36103 64 : return GF_OK;
36104 : default:
36105 : return GF_BAD_PARAM;
36106 : }
36107 : }
36108 :
36109 :
36110 59 : static s32 CacheTexture_get_field_index_by_name(char *name)
36111 : {
36112 59 : if (!strcmp("objectTypeIndication", name)) return 0;
36113 41 : if (!strcmp("decoderSpecificInfo", name)) return 1;
36114 40 : if (!strcmp("image", name)) return 2;
36115 37 : if (!strcmp("cacheURL", name)) return 3;
36116 20 : if (!strcmp("cacheOD", name)) return 4;
36117 19 : if (!strcmp("expirationDate", name)) return 5;
36118 2 : if (!strcmp("repeatS", name)) return 6;
36119 1 : if (!strcmp("repeatT", name)) return 7;
36120 0 : return -1;
36121 : }
36122 : static Bool CacheTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
36123 : {
36124 : switch (FieldIndex) {
36125 : default:
36126 : return 0;
36127 : }
36128 : }
36129 :
36130 :
36131 :
36132 64 : GF_Node *CacheTexture_Create()
36133 : {
36134 : M_CacheTexture *p;
36135 64 : GF_SAFEALLOC(p, M_CacheTexture);
36136 64 : if(!p) return NULL;
36137 64 : gf_node_setup((GF_Node *)p, TAG_MPEG4_CacheTexture);
36138 :
36139 : /*default field values*/
36140 64 : p->objectTypeIndication = 0;
36141 64 : p->expirationDate = 0;
36142 64 : p->repeatS = 1;
36143 64 : p->repeatT = 1;
36144 64 : return (GF_Node *)p;
36145 : }
36146 :
36147 :
36148 : /*
36149 : EnvironmentTest Node deletion
36150 : */
36151 :
36152 91 : static void EnvironmentTest_Del(GF_Node *node)
36153 : {
36154 : M_EnvironmentTest *p = (M_EnvironmentTest *) node;
36155 91 : gf_sg_sfstring_del(p->compareValue);
36156 91 : gf_sg_sfstring_del(p->parameterValue);
36157 91 : gf_node_free((GF_Node *) p);
36158 91 : }
36159 :
36160 : static const u16 EnvironmentTest_Def2All[] = { 1, 2, 3, 4};
36161 : static const u16 EnvironmentTest_In2All[] = { 0, 1, 2, 3, 4};
36162 : static const u16 EnvironmentTest_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8};
36163 :
36164 : static u32 EnvironmentTest_get_field_count(GF_Node *node, u8 IndexMode)
36165 : {
36166 : switch(IndexMode) {
36167 : case GF_SG_FIELD_CODING_IN:
36168 : return 5;
36169 : case GF_SG_FIELD_CODING_DEF:
36170 : return 4;
36171 : case GF_SG_FIELD_CODING_OUT:
36172 : return 8;
36173 : case GF_SG_FIELD_CODING_DYN:
36174 : return 0;
36175 : default:
36176 : return 9;
36177 : }
36178 : }
36179 :
36180 : static GF_Err EnvironmentTest_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
36181 : {
36182 104 : switch(IndexMode) {
36183 0 : case GF_SG_FIELD_CODING_IN:
36184 0 : *allField = EnvironmentTest_In2All[inField];
36185 : return GF_OK;
36186 95 : case GF_SG_FIELD_CODING_DEF:
36187 95 : *allField = EnvironmentTest_Def2All[inField];
36188 : return GF_OK;
36189 0 : case GF_SG_FIELD_CODING_OUT:
36190 0 : *allField = EnvironmentTest_Out2All[inField];
36191 : return GF_OK;
36192 : default:
36193 : return GF_BAD_PARAM;
36194 : }
36195 : }
36196 597 : static GF_Err EnvironmentTest_get_field(GF_Node *node, GF_FieldInfo *info)
36197 : {
36198 597 : switch (info->fieldIndex) {
36199 29 : case 0:
36200 29 : info->name = "evaluate";
36201 29 : info->eventType = GF_SG_EVENT_IN;
36202 29 : info->on_event_in = ((M_EnvironmentTest *)node)->on_evaluate;
36203 29 : info->fieldType = GF_SG_VRML_SFBOOL;
36204 29 : info->far_ptr = & ((M_EnvironmentTest *) node)->evaluate;
36205 29 : return GF_OK;
36206 96 : case 1:
36207 96 : info->name = "enabled";
36208 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36209 96 : info->fieldType = GF_SG_VRML_SFBOOL;
36210 96 : info->far_ptr = & ((M_EnvironmentTest *) node)->enabled;
36211 96 : return GF_OK;
36212 158 : case 2:
36213 158 : info->name = "parameter";
36214 158 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36215 158 : info->fieldType = GF_SG_VRML_SFINT32;
36216 158 : info->far_ptr = & ((M_EnvironmentTest *) node)->parameter;
36217 158 : return GF_OK;
36218 96 : case 3:
36219 96 : info->name = "compareValue";
36220 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36221 96 : info->fieldType = GF_SG_VRML_SFSTRING;
36222 96 : info->far_ptr = & ((M_EnvironmentTest *) node)->compareValue;
36223 96 : return GF_OK;
36224 96 : case 4:
36225 96 : info->name = "evaluateOnChange";
36226 96 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36227 96 : info->fieldType = GF_SG_VRML_SFBOOL;
36228 96 : info->far_ptr = & ((M_EnvironmentTest *) node)->evaluateOnChange;
36229 96 : return GF_OK;
36230 29 : case 5:
36231 29 : info->name = "valueLarger";
36232 29 : info->eventType = GF_SG_EVENT_OUT;
36233 29 : info->fieldType = GF_SG_VRML_SFBOOL;
36234 29 : info->far_ptr = & ((M_EnvironmentTest *) node)->valueLarger;
36235 29 : return GF_OK;
36236 31 : case 6:
36237 31 : info->name = "valueEqual";
36238 31 : info->eventType = GF_SG_EVENT_OUT;
36239 31 : info->fieldType = GF_SG_VRML_SFBOOL;
36240 31 : info->far_ptr = & ((M_EnvironmentTest *) node)->valueEqual;
36241 31 : return GF_OK;
36242 29 : case 7:
36243 29 : info->name = "valueSmaller";
36244 29 : info->eventType = GF_SG_EVENT_OUT;
36245 29 : info->fieldType = GF_SG_VRML_SFBOOL;
36246 29 : info->far_ptr = & ((M_EnvironmentTest *) node)->valueSmaller;
36247 29 : return GF_OK;
36248 33 : case 8:
36249 33 : info->name = "parameterValue";
36250 33 : info->eventType = GF_SG_EVENT_OUT;
36251 33 : info->fieldType = GF_SG_VRML_SFSTRING;
36252 33 : info->far_ptr = & ((M_EnvironmentTest *) node)->parameterValue;
36253 33 : return GF_OK;
36254 : default:
36255 : return GF_BAD_PARAM;
36256 : }
36257 : }
36258 :
36259 :
36260 30 : static s32 EnvironmentTest_get_field_index_by_name(char *name)
36261 : {
36262 30 : if (!strcmp("evaluate", name)) return 0;
36263 29 : if (!strcmp("enabled", name)) return 1;
36264 28 : if (!strcmp("parameter", name)) return 2;
36265 9 : if (!strcmp("compareValue", name)) return 3;
36266 8 : if (!strcmp("evaluateOnChange", name)) return 4;
36267 7 : if (!strcmp("valueLarger", name)) return 5;
36268 6 : if (!strcmp("valueEqual", name)) return 6;
36269 4 : if (!strcmp("valueSmaller", name)) return 7;
36270 3 : if (!strcmp("parameterValue", name)) return 8;
36271 0 : return -1;
36272 : }
36273 : static Bool EnvironmentTest_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
36274 : {
36275 : switch (FieldIndex) {
36276 : default:
36277 : return 0;
36278 : }
36279 : }
36280 :
36281 :
36282 :
36283 91 : GF_Node *EnvironmentTest_Create()
36284 : {
36285 : M_EnvironmentTest *p;
36286 91 : GF_SAFEALLOC(p, M_EnvironmentTest);
36287 91 : if(!p) return NULL;
36288 91 : gf_node_setup((GF_Node *)p, TAG_MPEG4_EnvironmentTest);
36289 :
36290 : /*default field values*/
36291 91 : p->enabled = 1;
36292 91 : p->parameter = 0;
36293 91 : p->evaluateOnChange = 1;
36294 91 : return (GF_Node *)p;
36295 : }
36296 :
36297 :
36298 : /*
36299 : KeyNavigator Node deletion
36300 : */
36301 :
36302 5 : static void KeyNavigator_Del(GF_Node *node)
36303 : {
36304 : M_KeyNavigator *p = (M_KeyNavigator *) node;
36305 5 : gf_node_unregister((GF_Node *) p->sensor, (GF_Node *) p);
36306 5 : gf_node_unregister((GF_Node *) p->left, (GF_Node *) p);
36307 5 : gf_node_unregister((GF_Node *) p->right, (GF_Node *) p);
36308 5 : gf_node_unregister((GF_Node *) p->up, (GF_Node *) p);
36309 5 : gf_node_unregister((GF_Node *) p->down, (GF_Node *) p);
36310 5 : gf_node_unregister((GF_Node *) p->select, (GF_Node *) p);
36311 5 : gf_node_unregister((GF_Node *) p->quit, (GF_Node *) p);
36312 5 : gf_node_free((GF_Node *) p);
36313 5 : }
36314 :
36315 : static const u16 KeyNavigator_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8};
36316 : static const u16 KeyNavigator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
36317 : static const u16 KeyNavigator_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
36318 :
36319 : static u32 KeyNavigator_get_field_count(GF_Node *node, u8 IndexMode)
36320 : {
36321 : switch(IndexMode) {
36322 : case GF_SG_FIELD_CODING_IN:
36323 : return 9;
36324 : case GF_SG_FIELD_CODING_DEF:
36325 : return 8;
36326 : case GF_SG_FIELD_CODING_OUT:
36327 : return 9;
36328 : case GF_SG_FIELD_CODING_DYN:
36329 : return 0;
36330 : default:
36331 : return 10;
36332 : }
36333 : }
36334 :
36335 : static GF_Err KeyNavigator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
36336 : {
36337 10 : switch(IndexMode) {
36338 0 : case GF_SG_FIELD_CODING_IN:
36339 0 : *allField = KeyNavigator_In2All[inField];
36340 : return GF_OK;
36341 0 : case GF_SG_FIELD_CODING_DEF:
36342 0 : *allField = KeyNavigator_Def2All[inField];
36343 : return GF_OK;
36344 0 : case GF_SG_FIELD_CODING_OUT:
36345 0 : *allField = KeyNavigator_Out2All[inField];
36346 : return GF_OK;
36347 : default:
36348 : return GF_BAD_PARAM;
36349 : }
36350 : }
36351 101 : static GF_Err KeyNavigator_get_field(GF_Node *node, GF_FieldInfo *info)
36352 : {
36353 101 : switch (info->fieldIndex) {
36354 16 : case 0:
36355 16 : info->name = "setFocus";
36356 16 : info->eventType = GF_SG_EVENT_IN;
36357 16 : info->on_event_in = ((M_KeyNavigator *)node)->on_setFocus;
36358 16 : info->fieldType = GF_SG_VRML_SFBOOL;
36359 16 : info->far_ptr = & ((M_KeyNavigator *) node)->setFocus;
36360 16 : return GF_OK;
36361 19 : case 1:
36362 19 : info->name = "sensor";
36363 19 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36364 19 : info->fieldType = GF_SG_VRML_SFNODE;
36365 19 : info->NDTtype = NDT_SF3DNode;
36366 19 : info->far_ptr = & ((M_KeyNavigator *)node)->sensor;
36367 19 : return GF_OK;
36368 13 : case 2:
36369 13 : info->name = "left";
36370 13 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36371 13 : info->fieldType = GF_SG_VRML_SFNODE;
36372 13 : info->NDTtype = NDT_SF2DNode;
36373 13 : info->far_ptr = & ((M_KeyNavigator *)node)->left;
36374 13 : return GF_OK;
36375 11 : case 3:
36376 11 : info->name = "right";
36377 11 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36378 11 : info->fieldType = GF_SG_VRML_SFNODE;
36379 11 : info->NDTtype = NDT_SF2DNode;
36380 11 : info->far_ptr = & ((M_KeyNavigator *)node)->right;
36381 11 : return GF_OK;
36382 9 : case 4:
36383 9 : info->name = "up";
36384 9 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36385 9 : info->fieldType = GF_SG_VRML_SFNODE;
36386 9 : info->NDTtype = NDT_SF2DNode;
36387 9 : info->far_ptr = & ((M_KeyNavigator *)node)->up;
36388 9 : return GF_OK;
36389 7 : case 5:
36390 7 : info->name = "down";
36391 7 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36392 7 : info->fieldType = GF_SG_VRML_SFNODE;
36393 7 : info->NDTtype = NDT_SF2DNode;
36394 7 : info->far_ptr = & ((M_KeyNavigator *)node)->down;
36395 7 : return GF_OK;
36396 4 : case 6:
36397 4 : info->name = "select";
36398 4 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36399 4 : info->fieldType = GF_SG_VRML_SFNODE;
36400 4 : info->NDTtype = NDT_SF2DNode;
36401 4 : info->far_ptr = & ((M_KeyNavigator *)node)->select;
36402 4 : return GF_OK;
36403 2 : case 7:
36404 2 : info->name = "quit";
36405 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36406 2 : info->fieldType = GF_SG_VRML_SFNODE;
36407 2 : info->NDTtype = NDT_SF2DNode;
36408 2 : info->far_ptr = & ((M_KeyNavigator *)node)->quit;
36409 2 : return GF_OK;
36410 2 : case 8:
36411 2 : info->name = "step";
36412 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36413 2 : info->fieldType = GF_SG_VRML_SFFLOAT;
36414 2 : info->far_ptr = & ((M_KeyNavigator *) node)->step;
36415 2 : return GF_OK;
36416 18 : case 9:
36417 18 : info->name = "focusSet";
36418 18 : info->eventType = GF_SG_EVENT_OUT;
36419 18 : info->fieldType = GF_SG_VRML_SFBOOL;
36420 18 : info->far_ptr = & ((M_KeyNavigator *) node)->focusSet;
36421 18 : return GF_OK;
36422 : default:
36423 : return GF_BAD_PARAM;
36424 : }
36425 : }
36426 :
36427 :
36428 32 : static s32 KeyNavigator_get_field_index_by_name(char *name)
36429 : {
36430 32 : if (!strcmp("setFocus", name)) return 0;
36431 30 : if (!strcmp("sensor", name)) return 1;
36432 25 : if (!strcmp("left", name)) return 2;
36433 22 : if (!strcmp("right", name)) return 3;
36434 19 : if (!strcmp("up", name)) return 4;
36435 16 : if (!strcmp("down", name)) return 5;
36436 13 : if (!strcmp("select", name)) return 6;
36437 11 : if (!strcmp("quit", name)) return 7;
36438 10 : if (!strcmp("step", name)) return 8;
36439 9 : if (!strcmp("focusSet", name)) return 9;
36440 0 : return -1;
36441 : }
36442 : static Bool KeyNavigator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
36443 : {
36444 : switch (FieldIndex) {
36445 : default:
36446 : return 0;
36447 : }
36448 : }
36449 :
36450 :
36451 :
36452 5 : GF_Node *KeyNavigator_Create()
36453 : {
36454 : M_KeyNavigator *p;
36455 5 : GF_SAFEALLOC(p, M_KeyNavigator);
36456 5 : if(!p) return NULL;
36457 5 : gf_node_setup((GF_Node *)p, TAG_MPEG4_KeyNavigator);
36458 :
36459 : /*default field values*/
36460 5 : p->step = FLT2FIX(0);
36461 5 : return (GF_Node *)p;
36462 : }
36463 :
36464 :
36465 : /*
36466 : SpacePartition Node deletion
36467 : */
36468 :
36469 1 : static void SpacePartition_Del(GF_Node *node)
36470 : {
36471 : M_SpacePartition *p = (M_SpacePartition *) node;
36472 1 : gf_sg_sfurl_del(p->SPStream);
36473 1 : gf_sg_vrml_parent_destroy((GF_Node *) p);
36474 1 : gf_node_free((GF_Node *) p);
36475 1 : }
36476 :
36477 : static const u16 SpacePartition_Def2All[] = { 2, 3};
36478 : static const u16 SpacePartition_In2All[] = { 0, 1, 2, 3};
36479 : static const u16 SpacePartition_Out2All[] = { 2, 3};
36480 :
36481 : static u32 SpacePartition_get_field_count(GF_Node *node, u8 IndexMode)
36482 : {
36483 : switch(IndexMode) {
36484 : case GF_SG_FIELD_CODING_IN:
36485 : return 4;
36486 : case GF_SG_FIELD_CODING_DEF:
36487 : return 2;
36488 : case GF_SG_FIELD_CODING_OUT:
36489 : return 2;
36490 : case GF_SG_FIELD_CODING_DYN:
36491 : return 0;
36492 : default:
36493 : return 4;
36494 : }
36495 : }
36496 :
36497 : static GF_Err SpacePartition_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
36498 : {
36499 4 : switch(IndexMode) {
36500 0 : case GF_SG_FIELD_CODING_IN:
36501 0 : *allField = SpacePartition_In2All[inField];
36502 : return GF_OK;
36503 0 : case GF_SG_FIELD_CODING_DEF:
36504 0 : *allField = SpacePartition_Def2All[inField];
36505 : return GF_OK;
36506 0 : case GF_SG_FIELD_CODING_OUT:
36507 0 : *allField = SpacePartition_Out2All[inField];
36508 : return GF_OK;
36509 : default:
36510 : return GF_BAD_PARAM;
36511 : }
36512 : }
36513 8 : static GF_Err SpacePartition_get_field(GF_Node *node, GF_FieldInfo *info)
36514 : {
36515 8 : switch (info->fieldIndex) {
36516 2 : case 0:
36517 2 : info->name = "addChildren";
36518 2 : info->eventType = GF_SG_EVENT_IN;
36519 2 : info->on_event_in = ((M_SpacePartition *)node)->on_addChildren;
36520 2 : info->fieldType = GF_SG_VRML_MFNODE;
36521 2 : info->NDTtype = NDT_SF3DNode;
36522 2 : info->far_ptr = & ((M_SpacePartition *)node)->addChildren;
36523 2 : return GF_OK;
36524 2 : case 1:
36525 2 : info->name = "removeChildren";
36526 2 : info->eventType = GF_SG_EVENT_IN;
36527 2 : info->on_event_in = ((M_SpacePartition *)node)->on_removeChildren;
36528 2 : info->fieldType = GF_SG_VRML_MFNODE;
36529 2 : info->NDTtype = NDT_SF3DNode;
36530 2 : info->far_ptr = & ((M_SpacePartition *)node)->removeChildren;
36531 2 : return GF_OK;
36532 2 : case 2:
36533 2 : info->name = "children";
36534 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36535 2 : info->fieldType = GF_SG_VRML_MFNODE;
36536 2 : info->NDTtype = NDT_SF3DNode;
36537 2 : info->far_ptr = & ((M_SpacePartition *)node)->children;
36538 2 : return GF_OK;
36539 2 : case 3:
36540 2 : info->name = "SPStream";
36541 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36542 2 : info->fieldType = GF_SG_VRML_SFURL;
36543 2 : info->far_ptr = & ((M_SpacePartition *) node)->SPStream;
36544 2 : return GF_OK;
36545 : default:
36546 : return GF_BAD_PARAM;
36547 : }
36548 : }
36549 :
36550 :
36551 4 : static s32 SpacePartition_get_field_index_by_name(char *name)
36552 : {
36553 4 : if (!strcmp("addChildren", name)) return 0;
36554 3 : if (!strcmp("removeChildren", name)) return 1;
36555 2 : if (!strcmp("children", name)) return 2;
36556 1 : if (!strcmp("SPStream", name)) return 3;
36557 0 : return -1;
36558 : }
36559 : static Bool SpacePartition_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
36560 : {
36561 : switch (FieldIndex) {
36562 : default:
36563 : return 0;
36564 : }
36565 : }
36566 :
36567 :
36568 :
36569 1 : GF_Node *SpacePartition_Create()
36570 : {
36571 : M_SpacePartition *p;
36572 1 : GF_SAFEALLOC(p, M_SpacePartition);
36573 1 : if(!p) return NULL;
36574 1 : gf_node_setup((GF_Node *)p, TAG_MPEG4_SpacePartition);
36575 1 : gf_sg_vrml_parent_setup((GF_Node *) p);
36576 :
36577 : /*default field values*/
36578 1 : return (GF_Node *)p;
36579 : }
36580 :
36581 :
36582 : /*
36583 : Storage Node deletion
36584 : */
36585 :
36586 2 : static void Storage_Del(GF_Node *node)
36587 : {
36588 : M_Storage *p = (M_Storage *) node;
36589 2 : gf_sg_sfstring_del(p->name);
36590 2 : gf_sg_mfattrref_del(p->storageList);
36591 2 : gf_node_free((GF_Node *) p);
36592 2 : }
36593 :
36594 : static const u16 Storage_Def2All[] = { 2, 3, 4, 5};
36595 : static const u16 Storage_In2All[] = { 0, 1, 2};
36596 : static const u16 Storage_Out2All[] = { 2};
36597 :
36598 : static u32 Storage_get_field_count(GF_Node *node, u8 IndexMode)
36599 : {
36600 : switch(IndexMode) {
36601 : case GF_SG_FIELD_CODING_IN:
36602 : return 3;
36603 : case GF_SG_FIELD_CODING_DEF:
36604 : return 4;
36605 : case GF_SG_FIELD_CODING_OUT:
36606 : return 1;
36607 : case GF_SG_FIELD_CODING_DYN:
36608 : return 0;
36609 : default:
36610 : return 6;
36611 : }
36612 : }
36613 :
36614 : static GF_Err Storage_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
36615 : {
36616 6 : switch(IndexMode) {
36617 0 : case GF_SG_FIELD_CODING_IN:
36618 0 : *allField = Storage_In2All[inField];
36619 : return GF_OK;
36620 0 : case GF_SG_FIELD_CODING_DEF:
36621 0 : *allField = Storage_Def2All[inField];
36622 : return GF_OK;
36623 0 : case GF_SG_FIELD_CODING_OUT:
36624 0 : *allField = Storage_Out2All[inField];
36625 : return GF_OK;
36626 : default:
36627 : return GF_BAD_PARAM;
36628 : }
36629 : }
36630 15 : static GF_Err Storage_get_field(GF_Node *node, GF_FieldInfo *info)
36631 : {
36632 15 : switch (info->fieldIndex) {
36633 2 : case 0:
36634 2 : info->name = "forceSave";
36635 2 : info->eventType = GF_SG_EVENT_IN;
36636 2 : info->on_event_in = ((M_Storage *)node)->on_forceSave;
36637 2 : info->fieldType = GF_SG_VRML_SFBOOL;
36638 2 : info->far_ptr = & ((M_Storage *) node)->forceSave;
36639 2 : return GF_OK;
36640 2 : case 1:
36641 2 : info->name = "forceRestore";
36642 2 : info->eventType = GF_SG_EVENT_IN;
36643 2 : info->on_event_in = ((M_Storage *)node)->on_forceRestore;
36644 2 : info->fieldType = GF_SG_VRML_SFBOOL;
36645 2 : info->far_ptr = & ((M_Storage *) node)->forceRestore;
36646 2 : return GF_OK;
36647 2 : case 2:
36648 2 : info->name = "auto";
36649 2 : info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
36650 2 : info->fieldType = GF_SG_VRML_SFBOOL;
36651 2 : info->far_ptr = & ((M_Storage *) node)->_auto;
36652 2 : return GF_OK;
36653 3 : case 3:
36654 3 : info->name = "expireAfter";
36655 3 : info->eventType = GF_SG_EVENT_FIELD;
36656 3 : info->fieldType = GF_SG_VRML_SFINT32;
36657 3 : info->far_ptr = & ((M_Storage *) node)->expireAfter;
36658 3 : return GF_OK;
36659 3 : case 4:
36660 3 : info->name = "name";
36661 3 : info->eventType = GF_SG_EVENT_FIELD;
36662 3 : info->fieldType = GF_SG_VRML_SFSTRING;
36663 3 : info->far_ptr = & ((M_Storage *) node)->name;
36664 3 : return GF_OK;
36665 3 : case 5:
36666 3 : info->name = "storageList";
36667 3 : info->eventType = GF_SG_EVENT_FIELD;
36668 3 : info->fieldType = GF_SG_VRML_MFATTRREF;
36669 3 : info->far_ptr = & ((M_Storage *) node)->storageList;
36670 3 : return GF_OK;
36671 : default:
36672 : return GF_BAD_PARAM;
36673 : }
36674 : }
36675 :
36676 :
36677 9 : static s32 Storage_get_field_index_by_name(char *name)
36678 : {
36679 9 : if (!strcmp("forceSave", name)) return 0;
36680 8 : if (!strcmp("forceRestore", name)) return 1;
36681 7 : if (!strcmp("auto", name)) return 2;
36682 6 : if (!strcmp("expireAfter", name)) return 3;
36683 4 : if (!strcmp("name", name)) return 4;
36684 2 : if (!strcmp("storageList", name)) return 5;
36685 0 : return -1;
36686 : }
36687 : static Bool Storage_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
36688 : {
36689 : switch (FieldIndex) {
36690 : default:
36691 : return 0;
36692 : }
36693 : }
36694 :
36695 :
36696 :
36697 2 : GF_Node *Storage_Create()
36698 : {
36699 : M_Storage *p;
36700 2 : GF_SAFEALLOC(p, M_Storage);
36701 2 : if(!p) return NULL;
36702 2 : gf_node_setup((GF_Node *)p, TAG_MPEG4_Storage);
36703 :
36704 : /*default field values*/
36705 2 : p->_auto = 1;
36706 2 : p->expireAfter = 0;
36707 2 : return (GF_Node *)p;
36708 : }
36709 :
36710 :
36711 :
36712 :
36713 70350 : GF_Node *gf_sg_mpeg4_node_new(u32 NodeTag)
36714 : {
36715 70350 : switch (NodeTag) {
36716 21 : case TAG_MPEG4_Anchor:
36717 21 : return Anchor_Create();
36718 292 : case TAG_MPEG4_AnimationStream:
36719 292 : return AnimationStream_Create();
36720 6273 : case TAG_MPEG4_Appearance:
36721 6273 : return Appearance_Create();
36722 45 : case TAG_MPEG4_AudioBuffer:
36723 45 : return AudioBuffer_Create();
36724 262 : case TAG_MPEG4_AudioClip:
36725 262 : return AudioClip_Create();
36726 1 : case TAG_MPEG4_AudioDelay:
36727 1 : return AudioDelay_Create();
36728 1 : case TAG_MPEG4_AudioFX:
36729 1 : return AudioFX_Create();
36730 1 : case TAG_MPEG4_AudioMix:
36731 1 : return AudioMix_Create();
36732 59 : case TAG_MPEG4_AudioSource:
36733 59 : return AudioSource_Create();
36734 1 : case TAG_MPEG4_AudioSwitch:
36735 1 : return AudioSwitch_Create();
36736 77 : case TAG_MPEG4_Background:
36737 77 : return Background_Create();
36738 885 : case TAG_MPEG4_Background2D:
36739 885 : return Background2D_Create();
36740 4 : case TAG_MPEG4_Billboard:
36741 4 : return Billboard_Create();
36742 346 : case TAG_MPEG4_Bitmap:
36743 346 : return Bitmap_Create();
36744 115 : case TAG_MPEG4_Box:
36745 115 : return Box_Create();
36746 1144 : case TAG_MPEG4_Circle:
36747 1144 : return Circle_Create();
36748 68 : case TAG_MPEG4_Collision:
36749 68 : return Collision_Create();
36750 139 : case TAG_MPEG4_Color:
36751 139 : return Color_Create();
36752 7 : case TAG_MPEG4_ColorInterpolator:
36753 7 : return ColorInterpolator_Create();
36754 31 : case TAG_MPEG4_CompositeTexture2D:
36755 31 : return CompositeTexture2D_Create();
36756 3 : case TAG_MPEG4_CompositeTexture3D:
36757 3 : return CompositeTexture3D_Create();
36758 953 : case TAG_MPEG4_Conditional:
36759 953 : return Conditional_Create();
36760 72 : case TAG_MPEG4_Cone:
36761 72 : return Cone_Create();
36762 200 : case TAG_MPEG4_Coordinate:
36763 200 : return Coordinate_Create();
36764 4435 : case TAG_MPEG4_Coordinate2D:
36765 4435 : return Coordinate2D_Create();
36766 2 : case TAG_MPEG4_CoordinateInterpolator:
36767 2 : return CoordinateInterpolator_Create();
36768 3 : case TAG_MPEG4_CoordinateInterpolator2D:
36769 3 : return CoordinateInterpolator2D_Create();
36770 2574 : case TAG_MPEG4_Curve2D:
36771 2574 : return Curve2D_Create();
36772 81 : case TAG_MPEG4_Cylinder:
36773 81 : return Cylinder_Create();
36774 67 : case TAG_MPEG4_CylinderSensor:
36775 67 : return CylinderSensor_Create();
36776 9 : case TAG_MPEG4_DirectionalLight:
36777 9 : return DirectionalLight_Create();
36778 69 : case TAG_MPEG4_DiscSensor:
36779 69 : return DiscSensor_Create();
36780 67 : case TAG_MPEG4_ElevationGrid:
36781 67 : return ElevationGrid_Create();
36782 1 : case TAG_MPEG4_Expression:
36783 1 : return Expression_Create();
36784 67 : case TAG_MPEG4_Extrusion:
36785 67 : return Extrusion_Create();
36786 1 : case TAG_MPEG4_Face:
36787 1 : return Face_Create();
36788 1 : case TAG_MPEG4_FaceDefMesh:
36789 1 : return FaceDefMesh_Create();
36790 1 : case TAG_MPEG4_FaceDefTables:
36791 1 : return FaceDefTables_Create();
36792 1 : case TAG_MPEG4_FaceDefTransform:
36793 1 : return FaceDefTransform_Create();
36794 1 : case TAG_MPEG4_FAP:
36795 1 : return FAP_Create();
36796 1 : case TAG_MPEG4_FDP:
36797 1 : return FDP_Create();
36798 1 : case TAG_MPEG4_FIT:
36799 1 : return FIT_Create();
36800 5 : case TAG_MPEG4_Fog:
36801 5 : return Fog_Create();
36802 573 : case TAG_MPEG4_FontStyle:
36803 573 : return FontStyle_Create();
36804 108 : case TAG_MPEG4_Form:
36805 108 : return Form_Create();
36806 113 : case TAG_MPEG4_Group:
36807 113 : return Group_Create();
36808 224 : case TAG_MPEG4_ImageTexture:
36809 224 : return ImageTexture_Create();
36810 199 : case TAG_MPEG4_IndexedFaceSet:
36811 199 : return IndexedFaceSet_Create();
36812 363 : case TAG_MPEG4_IndexedFaceSet2D:
36813 363 : return IndexedFaceSet2D_Create();
36814 68 : case TAG_MPEG4_IndexedLineSet:
36815 68 : return IndexedLineSet_Create();
36816 109 : case TAG_MPEG4_IndexedLineSet2D:
36817 109 : return IndexedLineSet2D_Create();
36818 729 : case TAG_MPEG4_Inline:
36819 729 : return Inline_Create();
36820 2 : case TAG_MPEG4_LOD:
36821 2 : return LOD_Create();
36822 444 : case TAG_MPEG4_Layer2D:
36823 444 : return Layer2D_Create();
36824 75 : case TAG_MPEG4_Layer3D:
36825 75 : return Layer3D_Create();
36826 230 : case TAG_MPEG4_Layout:
36827 230 : return Layout_Create();
36828 1140 : case TAG_MPEG4_LineProperties:
36829 1140 : return LineProperties_Create();
36830 1 : case TAG_MPEG4_ListeningPoint:
36831 1 : return ListeningPoint_Create();
36832 135 : case TAG_MPEG4_Material:
36833 135 : return Material_Create();
36834 5460 : case TAG_MPEG4_Material2D:
36835 5460 : return Material2D_Create();
36836 321 : case TAG_MPEG4_MovieTexture:
36837 321 : return MovieTexture_Create();
36838 93 : case TAG_MPEG4_NavigationInfo:
36839 93 : return NavigationInfo_Create();
36840 66 : case TAG_MPEG4_Normal:
36841 66 : return Normal_Create();
36842 2 : case TAG_MPEG4_NormalInterpolator:
36843 2 : return NormalInterpolator_Create();
36844 1525 : case TAG_MPEG4_OrderedGroup:
36845 1525 : return OrderedGroup_Create();
36846 19 : case TAG_MPEG4_OrientationInterpolator:
36847 19 : return OrientationInterpolator_Create();
36848 70 : case TAG_MPEG4_PixelTexture:
36849 70 : return PixelTexture_Create();
36850 67 : case TAG_MPEG4_PlaneSensor:
36851 67 : return PlaneSensor_Create();
36852 103 : case TAG_MPEG4_PlaneSensor2D:
36853 103 : return PlaneSensor2D_Create();
36854 2 : case TAG_MPEG4_PointLight:
36855 2 : return PointLight_Create();
36856 67 : case TAG_MPEG4_PointSet:
36857 67 : return PointSet_Create();
36858 78 : case TAG_MPEG4_PointSet2D:
36859 78 : return PointSet2D_Create();
36860 12 : case TAG_MPEG4_PositionInterpolator:
36861 12 : return PositionInterpolator_Create();
36862 410 : case TAG_MPEG4_PositionInterpolator2D:
36863 410 : return PositionInterpolator2D_Create();
36864 68 : case TAG_MPEG4_ProximitySensor2D:
36865 68 : return ProximitySensor2D_Create();
36866 2 : case TAG_MPEG4_ProximitySensor:
36867 2 : return ProximitySensor_Create();
36868 233 : case TAG_MPEG4_QuantizationParameter:
36869 233 : return QuantizationParameter_Create();
36870 601 : case TAG_MPEG4_Rectangle:
36871 601 : return Rectangle_Create();
36872 71 : case TAG_MPEG4_ScalarInterpolator:
36873 71 : return ScalarInterpolator_Create();
36874 456 : case TAG_MPEG4_Script:
36875 456 : return Script_Create();
36876 11668 : case TAG_MPEG4_Shape:
36877 11668 : return Shape_Create();
36878 3 : case TAG_MPEG4_Sound:
36879 3 : return Sound_Create();
36880 275 : case TAG_MPEG4_Sound2D:
36881 275 : return Sound2D_Create();
36882 79 : case TAG_MPEG4_Sphere:
36883 79 : return Sphere_Create();
36884 67 : case TAG_MPEG4_SphereSensor:
36885 67 : return SphereSensor_Create();
36886 2 : case TAG_MPEG4_SpotLight:
36887 2 : return SpotLight_Create();
36888 540 : case TAG_MPEG4_Switch:
36889 540 : return Switch_Create();
36890 2 : case TAG_MPEG4_TermCap:
36891 2 : return TermCap_Create();
36892 1103 : case TAG_MPEG4_Text:
36893 1103 : return Text_Create();
36894 1 : case TAG_MPEG4_TextureCoordinate:
36895 1 : return TextureCoordinate_Create();
36896 85 : case TAG_MPEG4_TextureTransform:
36897 85 : return TextureTransform_Create();
36898 583 : case TAG_MPEG4_TimeSensor:
36899 583 : return TimeSensor_Create();
36900 1513 : case TAG_MPEG4_TouchSensor:
36901 1513 : return TouchSensor_Create();
36902 333 : case TAG_MPEG4_Transform:
36903 333 : return Transform_Create();
36904 7625 : case TAG_MPEG4_Transform2D:
36905 7625 : return Transform2D_Create();
36906 2035 : case TAG_MPEG4_Valuator:
36907 2035 : return Valuator_Create();
36908 103 : case TAG_MPEG4_Viewpoint:
36909 103 : return Viewpoint_Create();
36910 78 : case TAG_MPEG4_VisibilitySensor:
36911 78 : return VisibilitySensor_Create();
36912 1 : case TAG_MPEG4_Viseme:
36913 1 : return Viseme_Create();
36914 511 : case TAG_MPEG4_WorldInfo:
36915 511 : return WorldInfo_Create();
36916 1 : case TAG_MPEG4_AcousticMaterial:
36917 1 : return AcousticMaterial_Create();
36918 1 : case TAG_MPEG4_AcousticScene:
36919 1 : return AcousticScene_Create();
36920 1 : case TAG_MPEG4_ApplicationWindow:
36921 1 : return ApplicationWindow_Create();
36922 1 : case TAG_MPEG4_BAP:
36923 1 : return BAP_Create();
36924 1 : case TAG_MPEG4_BDP:
36925 1 : return BDP_Create();
36926 1 : case TAG_MPEG4_Body:
36927 1 : return Body_Create();
36928 1 : case TAG_MPEG4_BodyDefTable:
36929 1 : return BodyDefTable_Create();
36930 1 : case TAG_MPEG4_BodySegmentConnectionHint:
36931 1 : return BodySegmentConnectionHint_Create();
36932 1 : case TAG_MPEG4_DirectiveSound:
36933 1 : return DirectiveSound_Create();
36934 1 : case TAG_MPEG4_Hierarchical3DMesh:
36935 1 : return Hierarchical3DMesh_Create();
36936 24 : case TAG_MPEG4_MaterialKey:
36937 24 : return MaterialKey_Create();
36938 1 : case TAG_MPEG4_PerceptualParameters:
36939 1 : return PerceptualParameters_Create();
36940 1 : case TAG_MPEG4_TemporalTransform:
36941 1 : return TemporalTransform_Create();
36942 1 : case TAG_MPEG4_TemporalGroup:
36943 1 : return TemporalGroup_Create();
36944 23 : case TAG_MPEG4_ServerCommand:
36945 23 : return ServerCommand_Create();
36946 134 : case TAG_MPEG4_InputSensor:
36947 134 : return InputSensor_Create();
36948 1 : case TAG_MPEG4_MatteTexture:
36949 1 : return MatteTexture_Create();
36950 1 : case TAG_MPEG4_MediaBuffer:
36951 1 : return MediaBuffer_Create();
36952 54 : case TAG_MPEG4_MediaControl:
36953 54 : return MediaControl_Create();
36954 17 : case TAG_MPEG4_MediaSensor:
36955 17 : return MediaSensor_Create();
36956 67 : case TAG_MPEG4_BitWrapper:
36957 67 : return BitWrapper_Create();
36958 2 : case TAG_MPEG4_CoordinateInterpolator4D:
36959 2 : return CoordinateInterpolator4D_Create();
36960 1 : case TAG_MPEG4_DepthImage:
36961 1 : return DepthImage_Create();
36962 1 : case TAG_MPEG4_FFD:
36963 1 : return FFD_Create();
36964 1 : case TAG_MPEG4_Implicit:
36965 1 : return Implicit_Create();
36966 1 : case TAG_MPEG4_XXLFM_Appearance:
36967 1 : return XXLFM_Appearance_Create();
36968 1 : case TAG_MPEG4_XXLFM_BlendList:
36969 1 : return XXLFM_BlendList_Create();
36970 1 : case TAG_MPEG4_XXLFM_FrameList:
36971 1 : return XXLFM_FrameList_Create();
36972 1 : case TAG_MPEG4_XXLFM_LightMap:
36973 1 : return XXLFM_LightMap_Create();
36974 1 : case TAG_MPEG4_XXLFM_SurfaceMapList:
36975 1 : return XXLFM_SurfaceMapList_Create();
36976 1 : case TAG_MPEG4_XXLFM_ViewMapList:
36977 1 : return XXLFM_ViewMapList_Create();
36978 1 : case TAG_MPEG4_MeshGrid:
36979 1 : return MeshGrid_Create();
36980 67 : case TAG_MPEG4_NonLinearDeformer:
36981 67 : return NonLinearDeformer_Create();
36982 1 : case TAG_MPEG4_NurbsCurve:
36983 1 : return NurbsCurve_Create();
36984 1 : case TAG_MPEG4_NurbsCurve2D:
36985 1 : return NurbsCurve2D_Create();
36986 1 : case TAG_MPEG4_NurbsSurface:
36987 1 : return NurbsSurface_Create();
36988 1 : case TAG_MPEG4_OctreeImage:
36989 1 : return OctreeImage_Create();
36990 1 : case TAG_MPEG4_XXParticles:
36991 1 : return XXParticles_Create();
36992 1 : case TAG_MPEG4_XXParticleInitBox:
36993 1 : return XXParticleInitBox_Create();
36994 1 : case TAG_MPEG4_XXPlanarObstacle:
36995 1 : return XXPlanarObstacle_Create();
36996 1 : case TAG_MPEG4_XXPointAttractor:
36997 1 : return XXPointAttractor_Create();
36998 1 : case TAG_MPEG4_PointTexture:
36999 1 : return PointTexture_Create();
37000 2 : case TAG_MPEG4_PositionAnimator:
37001 2 : return PositionAnimator_Create();
37002 3 : case TAG_MPEG4_PositionAnimator2D:
37003 3 : return PositionAnimator2D_Create();
37004 2 : case TAG_MPEG4_PositionInterpolator4D:
37005 2 : return PositionInterpolator4D_Create();
37006 1 : case TAG_MPEG4_ProceduralTexture:
37007 1 : return ProceduralTexture_Create();
37008 1 : case TAG_MPEG4_Quadric:
37009 1 : return Quadric_Create();
37010 1 : case TAG_MPEG4_SBBone:
37011 1 : return SBBone_Create();
37012 1 : case TAG_MPEG4_SBMuscle:
37013 1 : return SBMuscle_Create();
37014 1 : case TAG_MPEG4_SBSegment:
37015 1 : return SBSegment_Create();
37016 1 : case TAG_MPEG4_SBSite:
37017 1 : return SBSite_Create();
37018 1 : case TAG_MPEG4_SBSkinnedModel:
37019 1 : return SBSkinnedModel_Create();
37020 1 : case TAG_MPEG4_SBVCAnimation:
37021 1 : return SBVCAnimation_Create();
37022 2 : case TAG_MPEG4_ScalarAnimator:
37023 2 : return ScalarAnimator_Create();
37024 1 : case TAG_MPEG4_SimpleTexture:
37025 1 : return SimpleTexture_Create();
37026 1 : case TAG_MPEG4_SolidRep:
37027 1 : return SolidRep_Create();
37028 1 : case TAG_MPEG4_SubdivisionSurface:
37029 1 : return SubdivisionSurface_Create();
37030 1 : case TAG_MPEG4_SubdivSurfaceSector:
37031 1 : return SubdivSurfaceSector_Create();
37032 1 : case TAG_MPEG4_WaveletSubdivisionSurface:
37033 1 : return WaveletSubdivisionSurface_Create();
37034 68 : case TAG_MPEG4_Clipper2D:
37035 68 : return Clipper2D_Create();
37036 633 : case TAG_MPEG4_ColorTransform:
37037 633 : return ColorTransform_Create();
37038 5 : case TAG_MPEG4_Ellipse:
37039 5 : return Ellipse_Create();
37040 338 : case TAG_MPEG4_LinearGradient:
37041 338 : return LinearGradient_Create();
37042 68 : case TAG_MPEG4_PathLayout:
37043 68 : return PathLayout_Create();
37044 497 : case TAG_MPEG4_RadialGradient:
37045 497 : return RadialGradient_Create();
37046 1 : case TAG_MPEG4_SynthesizedTexture:
37047 1 : return SynthesizedTexture_Create();
37048 7370 : case TAG_MPEG4_TransformMatrix2D:
37049 7370 : return TransformMatrix2D_Create();
37050 106 : case TAG_MPEG4_Viewport:
37051 106 : return Viewport_Create();
37052 834 : case TAG_MPEG4_XCurve2D:
37053 834 : return XCurve2D_Create();
37054 1 : case TAG_MPEG4_XFontStyle:
37055 1 : return XFontStyle_Create();
37056 504 : case TAG_MPEG4_XLineProperties:
37057 504 : return XLineProperties_Create();
37058 1 : case TAG_MPEG4_AdvancedAudioBuffer:
37059 1 : return AdvancedAudioBuffer_Create();
37060 1 : case TAG_MPEG4_AudioChannelConfig:
37061 1 : return AudioChannelConfig_Create();
37062 1 : case TAG_MPEG4_DepthImageV2:
37063 1 : return DepthImageV2_Create();
37064 1 : case TAG_MPEG4_MorphShape:
37065 1 : return MorphShape_Create();
37066 1 : case TAG_MPEG4_MultiTexture:
37067 1 : return MultiTexture_Create();
37068 1 : case TAG_MPEG4_PointTextureV2:
37069 1 : return PointTextureV2_Create();
37070 1 : case TAG_MPEG4_SBVCAnimationV2:
37071 1 : return SBVCAnimationV2_Create();
37072 1 : case TAG_MPEG4_SimpleTextureV2:
37073 1 : return SimpleTextureV2_Create();
37074 1 : case TAG_MPEG4_SurroundingSound:
37075 1 : return SurroundingSound_Create();
37076 1 : case TAG_MPEG4_Transform3DAudio:
37077 1 : return Transform3DAudio_Create();
37078 23 : case TAG_MPEG4_WideSound:
37079 23 : return WideSound_Create();
37080 23 : case TAG_MPEG4_ScoreShape:
37081 23 : return ScoreShape_Create();
37082 1 : case TAG_MPEG4_MusicScore:
37083 1 : return MusicScore_Create();
37084 1 : case TAG_MPEG4_FootPrintSetNode:
37085 1 : return FootPrintSetNode_Create();
37086 1 : case TAG_MPEG4_FootPrintNode:
37087 1 : return FootPrintNode_Create();
37088 1 : case TAG_MPEG4_BuildingPartNode:
37089 1 : return BuildingPartNode_Create();
37090 1 : case TAG_MPEG4_RoofNode:
37091 1 : return RoofNode_Create();
37092 1 : case TAG_MPEG4_FacadeNode:
37093 1 : return FacadeNode_Create();
37094 23 : case TAG_MPEG4_Shadow:
37095 23 : return Shadow_Create();
37096 64 : case TAG_MPEG4_CacheTexture:
37097 64 : return CacheTexture_Create();
37098 91 : case TAG_MPEG4_EnvironmentTest:
37099 91 : return EnvironmentTest_Create();
37100 5 : case TAG_MPEG4_KeyNavigator:
37101 5 : return KeyNavigator_Create();
37102 1 : case TAG_MPEG4_SpacePartition:
37103 1 : return SpacePartition_Create();
37104 2 : case TAG_MPEG4_Storage:
37105 2 : return Storage_Create();
37106 : default:
37107 : return NULL;
37108 : }
37109 : }
37110 :
37111 3878 : const char *gf_sg_mpeg4_node_get_class_name(u32 NodeTag)
37112 : {
37113 3878 : switch (NodeTag) {
37114 : case TAG_MPEG4_Anchor:
37115 : return "Anchor";
37116 18 : case TAG_MPEG4_AnimationStream:
37117 18 : return "AnimationStream";
37118 295 : case TAG_MPEG4_Appearance:
37119 295 : return "Appearance";
37120 15 : case TAG_MPEG4_AudioBuffer:
37121 15 : return "AudioBuffer";
37122 15 : case TAG_MPEG4_AudioClip:
37123 15 : return "AudioClip";
37124 1 : case TAG_MPEG4_AudioDelay:
37125 1 : return "AudioDelay";
37126 1 : case TAG_MPEG4_AudioFX:
37127 1 : return "AudioFX";
37128 1 : case TAG_MPEG4_AudioMix:
37129 1 : return "AudioMix";
37130 15 : case TAG_MPEG4_AudioSource:
37131 15 : return "AudioSource";
37132 1 : case TAG_MPEG4_AudioSwitch:
37133 1 : return "AudioSwitch";
37134 22 : case TAG_MPEG4_Background:
37135 22 : return "Background";
37136 81 : case TAG_MPEG4_Background2D:
37137 81 : return "Background2D";
37138 1 : case TAG_MPEG4_Billboard:
37139 1 : return "Billboard";
37140 24 : case TAG_MPEG4_Bitmap:
37141 24 : return "Bitmap";
37142 23 : case TAG_MPEG4_Box:
37143 23 : return "Box";
37144 68 : case TAG_MPEG4_Circle:
37145 68 : return "Circle";
37146 22 : case TAG_MPEG4_Collision:
37147 22 : return "Collision";
37148 37 : case TAG_MPEG4_Color:
37149 37 : return "Color";
37150 1 : case TAG_MPEG4_ColorInterpolator:
37151 1 : return "ColorInterpolator";
37152 1 : case TAG_MPEG4_CompositeTexture2D:
37153 1 : return "CompositeTexture2D";
37154 1 : case TAG_MPEG4_CompositeTexture3D:
37155 1 : return "CompositeTexture3D";
37156 97 : case TAG_MPEG4_Conditional:
37157 97 : return "Conditional";
37158 22 : case TAG_MPEG4_Cone:
37159 22 : return "Cone";
37160 52 : case TAG_MPEG4_Coordinate:
37161 52 : return "Coordinate";
37162 154 : case TAG_MPEG4_Coordinate2D:
37163 154 : return "Coordinate2D";
37164 1 : case TAG_MPEG4_CoordinateInterpolator:
37165 1 : return "CoordinateInterpolator";
37166 1 : case TAG_MPEG4_CoordinateInterpolator2D:
37167 1 : return "CoordinateInterpolator2D";
37168 22 : case TAG_MPEG4_Curve2D:
37169 22 : return "Curve2D";
37170 22 : case TAG_MPEG4_Cylinder:
37171 22 : return "Cylinder";
37172 22 : case TAG_MPEG4_CylinderSensor:
37173 22 : return "CylinderSensor";
37174 1 : case TAG_MPEG4_DirectionalLight:
37175 1 : return "DirectionalLight";
37176 22 : case TAG_MPEG4_DiscSensor:
37177 22 : return "DiscSensor";
37178 22 : case TAG_MPEG4_ElevationGrid:
37179 22 : return "ElevationGrid";
37180 1 : case TAG_MPEG4_Expression:
37181 1 : return "Expression";
37182 22 : case TAG_MPEG4_Extrusion:
37183 22 : return "Extrusion";
37184 1 : case TAG_MPEG4_Face:
37185 1 : return "Face";
37186 1 : case TAG_MPEG4_FaceDefMesh:
37187 1 : return "FaceDefMesh";
37188 1 : case TAG_MPEG4_FaceDefTables:
37189 1 : return "FaceDefTables";
37190 1 : case TAG_MPEG4_FaceDefTransform:
37191 1 : return "FaceDefTransform";
37192 1 : case TAG_MPEG4_FAP:
37193 1 : return "FAP";
37194 1 : case TAG_MPEG4_FDP:
37195 1 : return "FDP";
37196 1 : case TAG_MPEG4_FIT:
37197 1 : return "FIT";
37198 1 : case TAG_MPEG4_Fog:
37199 1 : return "Fog";
37200 31 : case TAG_MPEG4_FontStyle:
37201 31 : return "FontStyle";
37202 22 : case TAG_MPEG4_Form:
37203 22 : return "Form";
37204 2 : case TAG_MPEG4_Group:
37205 2 : return "Group";
37206 37 : case TAG_MPEG4_ImageTexture:
37207 37 : return "ImageTexture";
37208 55 : case TAG_MPEG4_IndexedFaceSet:
37209 55 : return "IndexedFaceSet";
37210 94 : case TAG_MPEG4_IndexedFaceSet2D:
37211 94 : return "IndexedFaceSet2D";
37212 22 : case TAG_MPEG4_IndexedLineSet:
37213 22 : return "IndexedLineSet";
37214 22 : case TAG_MPEG4_IndexedLineSet2D:
37215 22 : return "IndexedLineSet2D";
37216 1 : case TAG_MPEG4_Inline:
37217 1 : return "Inline";
37218 1 : case TAG_MPEG4_LOD:
37219 1 : return "LOD";
37220 22 : case TAG_MPEG4_Layer2D:
37221 22 : return "Layer2D";
37222 22 : case TAG_MPEG4_Layer3D:
37223 22 : return "Layer3D";
37224 22 : case TAG_MPEG4_Layout:
37225 22 : return "Layout";
37226 55 : case TAG_MPEG4_LineProperties:
37227 55 : return "LineProperties";
37228 1 : case TAG_MPEG4_ListeningPoint:
37229 1 : return "ListeningPoint";
37230 23 : case TAG_MPEG4_Material:
37231 23 : return "Material";
37232 177 : case TAG_MPEG4_Material2D:
37233 177 : return "Material2D";
37234 24 : case TAG_MPEG4_MovieTexture:
37235 24 : return "MovieTexture";
37236 22 : case TAG_MPEG4_NavigationInfo:
37237 22 : return "NavigationInfo";
37238 22 : case TAG_MPEG4_Normal:
37239 22 : return "Normal";
37240 1 : case TAG_MPEG4_NormalInterpolator:
37241 1 : return "NormalInterpolator";
37242 49 : case TAG_MPEG4_OrderedGroup:
37243 49 : return "OrderedGroup";
37244 1 : case TAG_MPEG4_OrientationInterpolator:
37245 1 : return "OrientationInterpolator";
37246 22 : case TAG_MPEG4_PixelTexture:
37247 22 : return "PixelTexture";
37248 22 : case TAG_MPEG4_PlaneSensor:
37249 22 : return "PlaneSensor";
37250 22 : case TAG_MPEG4_PlaneSensor2D:
37251 22 : return "PlaneSensor2D";
37252 1 : case TAG_MPEG4_PointLight:
37253 1 : return "PointLight";
37254 22 : case TAG_MPEG4_PointSet:
37255 22 : return "PointSet";
37256 22 : case TAG_MPEG4_PointSet2D:
37257 22 : return "PointSet2D";
37258 1 : case TAG_MPEG4_PositionInterpolator:
37259 1 : return "PositionInterpolator";
37260 1 : case TAG_MPEG4_PositionInterpolator2D:
37261 1 : return "PositionInterpolator2D";
37262 22 : case TAG_MPEG4_ProximitySensor2D:
37263 22 : return "ProximitySensor2D";
37264 1 : case TAG_MPEG4_ProximitySensor:
37265 1 : return "ProximitySensor";
37266 70 : case TAG_MPEG4_QuantizationParameter:
37267 70 : return "QuantizationParameter";
37268 90 : case TAG_MPEG4_Rectangle:
37269 90 : return "Rectangle";
37270 1 : case TAG_MPEG4_ScalarInterpolator:
37271 1 : return "ScalarInterpolator";
37272 22 : case TAG_MPEG4_Script:
37273 22 : return "Script";
37274 475 : case TAG_MPEG4_Shape:
37275 475 : return "Shape";
37276 1 : case TAG_MPEG4_Sound:
37277 1 : return "Sound";
37278 15 : case TAG_MPEG4_Sound2D:
37279 15 : return "Sound2D";
37280 22 : case TAG_MPEG4_Sphere:
37281 22 : return "Sphere";
37282 22 : case TAG_MPEG4_SphereSensor:
37283 22 : return "SphereSensor";
37284 1 : case TAG_MPEG4_SpotLight:
37285 1 : return "SpotLight";
37286 22 : case TAG_MPEG4_Switch:
37287 22 : return "Switch";
37288 1 : case TAG_MPEG4_TermCap:
37289 1 : return "TermCap";
37290 31 : case TAG_MPEG4_Text:
37291 31 : return "Text";
37292 1 : case TAG_MPEG4_TextureCoordinate:
37293 1 : return "TextureCoordinate";
37294 22 : case TAG_MPEG4_TextureTransform:
37295 22 : return "TextureTransform";
37296 15 : case TAG_MPEG4_TimeSensor:
37297 15 : return "TimeSensor";
37298 37 : case TAG_MPEG4_TouchSensor:
37299 37 : return "TouchSensor";
37300 56 : case TAG_MPEG4_Transform:
37301 56 : return "Transform";
37302 272 : case TAG_MPEG4_Transform2D:
37303 272 : return "Transform2D";
37304 127 : case TAG_MPEG4_Valuator:
37305 127 : return "Valuator";
37306 22 : case TAG_MPEG4_Viewpoint:
37307 22 : return "Viewpoint";
37308 37 : case TAG_MPEG4_VisibilitySensor:
37309 37 : return "VisibilitySensor";
37310 1 : case TAG_MPEG4_Viseme:
37311 1 : return "Viseme";
37312 43 : case TAG_MPEG4_WorldInfo:
37313 43 : return "WorldInfo";
37314 1 : case TAG_MPEG4_AcousticMaterial:
37315 1 : return "AcousticMaterial";
37316 1 : case TAG_MPEG4_AcousticScene:
37317 1 : return "AcousticScene";
37318 1 : case TAG_MPEG4_ApplicationWindow:
37319 1 : return "ApplicationWindow";
37320 1 : case TAG_MPEG4_BAP:
37321 1 : return "BAP";
37322 1 : case TAG_MPEG4_BDP:
37323 1 : return "BDP";
37324 1 : case TAG_MPEG4_Body:
37325 1 : return "Body";
37326 1 : case TAG_MPEG4_BodyDefTable:
37327 1 : return "BodyDefTable";
37328 1 : case TAG_MPEG4_BodySegmentConnectionHint:
37329 1 : return "BodySegmentConnectionHint";
37330 1 : case TAG_MPEG4_DirectiveSound:
37331 1 : return "DirectiveSound";
37332 1 : case TAG_MPEG4_Hierarchical3DMesh:
37333 1 : return "Hierarchical3DMesh";
37334 8 : case TAG_MPEG4_MaterialKey:
37335 8 : return "MaterialKey";
37336 1 : case TAG_MPEG4_PerceptualParameters:
37337 1 : return "PerceptualParameters";
37338 1 : case TAG_MPEG4_TemporalTransform:
37339 1 : return "TemporalTransform";
37340 1 : case TAG_MPEG4_TemporalGroup:
37341 1 : return "TemporalGroup";
37342 8 : case TAG_MPEG4_ServerCommand:
37343 8 : return "ServerCommand";
37344 37 : case TAG_MPEG4_InputSensor:
37345 37 : return "InputSensor";
37346 1 : case TAG_MPEG4_MatteTexture:
37347 1 : return "MatteTexture";
37348 1 : case TAG_MPEG4_MediaBuffer:
37349 1 : return "MediaBuffer";
37350 1 : case TAG_MPEG4_MediaControl:
37351 1 : return "MediaControl";
37352 1 : case TAG_MPEG4_MediaSensor:
37353 1 : return "MediaSensor";
37354 24 : case TAG_MPEG4_BitWrapper:
37355 24 : return "BitWrapper";
37356 1 : case TAG_MPEG4_CoordinateInterpolator4D:
37357 1 : return "CoordinateInterpolator4D";
37358 1 : case TAG_MPEG4_DepthImage:
37359 1 : return "DepthImage";
37360 1 : case TAG_MPEG4_FFD:
37361 1 : return "FFD";
37362 1 : case TAG_MPEG4_Implicit:
37363 1 : return "Implicit";
37364 1 : case TAG_MPEG4_XXLFM_Appearance:
37365 1 : return "XXLFM_Appearance";
37366 1 : case TAG_MPEG4_XXLFM_BlendList:
37367 1 : return "XXLFM_BlendList";
37368 1 : case TAG_MPEG4_XXLFM_FrameList:
37369 1 : return "XXLFM_FrameList";
37370 1 : case TAG_MPEG4_XXLFM_LightMap:
37371 1 : return "XXLFM_LightMap";
37372 1 : case TAG_MPEG4_XXLFM_SurfaceMapList:
37373 1 : return "XXLFM_SurfaceMapList";
37374 1 : case TAG_MPEG4_XXLFM_ViewMapList:
37375 1 : return "XXLFM_ViewMapList";
37376 1 : case TAG_MPEG4_MeshGrid:
37377 1 : return "MeshGrid";
37378 22 : case TAG_MPEG4_NonLinearDeformer:
37379 22 : return "NonLinearDeformer";
37380 1 : case TAG_MPEG4_NurbsCurve:
37381 1 : return "NurbsCurve";
37382 1 : case TAG_MPEG4_NurbsCurve2D:
37383 1 : return "NurbsCurve2D";
37384 1 : case TAG_MPEG4_NurbsSurface:
37385 1 : return "NurbsSurface";
37386 1 : case TAG_MPEG4_OctreeImage:
37387 1 : return "OctreeImage";
37388 1 : case TAG_MPEG4_XXParticles:
37389 1 : return "XXParticles";
37390 1 : case TAG_MPEG4_XXParticleInitBox:
37391 1 : return "XXParticleInitBox";
37392 1 : case TAG_MPEG4_XXPlanarObstacle:
37393 1 : return "XXPlanarObstacle";
37394 1 : case TAG_MPEG4_XXPointAttractor:
37395 1 : return "XXPointAttractor";
37396 1 : case TAG_MPEG4_PointTexture:
37397 1 : return "PointTexture";
37398 1 : case TAG_MPEG4_PositionAnimator:
37399 1 : return "PositionAnimator";
37400 1 : case TAG_MPEG4_PositionAnimator2D:
37401 1 : return "PositionAnimator2D";
37402 1 : case TAG_MPEG4_PositionInterpolator4D:
37403 1 : return "PositionInterpolator4D";
37404 1 : case TAG_MPEG4_ProceduralTexture:
37405 1 : return "ProceduralTexture";
37406 1 : case TAG_MPEG4_Quadric:
37407 1 : return "Quadric";
37408 1 : case TAG_MPEG4_SBBone:
37409 1 : return "SBBone";
37410 1 : case TAG_MPEG4_SBMuscle:
37411 1 : return "SBMuscle";
37412 1 : case TAG_MPEG4_SBSegment:
37413 1 : return "SBSegment";
37414 1 : case TAG_MPEG4_SBSite:
37415 1 : return "SBSite";
37416 1 : case TAG_MPEG4_SBSkinnedModel:
37417 1 : return "SBSkinnedModel";
37418 1 : case TAG_MPEG4_SBVCAnimation:
37419 1 : return "SBVCAnimation";
37420 1 : case TAG_MPEG4_ScalarAnimator:
37421 1 : return "ScalarAnimator";
37422 1 : case TAG_MPEG4_SimpleTexture:
37423 1 : return "SimpleTexture";
37424 1 : case TAG_MPEG4_SolidRep:
37425 1 : return "SolidRep";
37426 1 : case TAG_MPEG4_SubdivisionSurface:
37427 1 : return "SubdivisionSurface";
37428 1 : case TAG_MPEG4_SubdivSurfaceSector:
37429 1 : return "SubdivSurfaceSector";
37430 1 : case TAG_MPEG4_WaveletSubdivisionSurface:
37431 1 : return "WaveletSubdivisionSurface";
37432 22 : case TAG_MPEG4_Clipper2D:
37433 22 : return "Clipper2D";
37434 22 : case TAG_MPEG4_ColorTransform:
37435 22 : return "ColorTransform";
37436 1 : case TAG_MPEG4_Ellipse:
37437 1 : return "Ellipse";
37438 22 : case TAG_MPEG4_LinearGradient:
37439 22 : return "LinearGradient";
37440 22 : case TAG_MPEG4_PathLayout:
37441 22 : return "PathLayout";
37442 22 : case TAG_MPEG4_RadialGradient:
37443 22 : return "RadialGradient";
37444 1 : case TAG_MPEG4_SynthesizedTexture:
37445 1 : return "SynthesizedTexture";
37446 37 : case TAG_MPEG4_TransformMatrix2D:
37447 37 : return "TransformMatrix2D";
37448 25 : case TAG_MPEG4_Viewport:
37449 25 : return "Viewport";
37450 22 : case TAG_MPEG4_XCurve2D:
37451 22 : return "XCurve2D";
37452 1 : case TAG_MPEG4_XFontStyle:
37453 1 : return "XFontStyle";
37454 22 : case TAG_MPEG4_XLineProperties:
37455 22 : return "XLineProperties";
37456 1 : case TAG_MPEG4_AdvancedAudioBuffer:
37457 1 : return "AdvancedAudioBuffer";
37458 1 : case TAG_MPEG4_AudioChannelConfig:
37459 1 : return "AudioChannelConfig";
37460 1 : case TAG_MPEG4_DepthImageV2:
37461 1 : return "DepthImageV2";
37462 1 : case TAG_MPEG4_MorphShape:
37463 1 : return "MorphShape";
37464 1 : case TAG_MPEG4_MultiTexture:
37465 1 : return "MultiTexture";
37466 1 : case TAG_MPEG4_PointTextureV2:
37467 1 : return "PointTextureV2";
37468 1 : case TAG_MPEG4_SBVCAnimationV2:
37469 1 : return "SBVCAnimationV2";
37470 1 : case TAG_MPEG4_SimpleTextureV2:
37471 1 : return "SimpleTextureV2";
37472 1 : case TAG_MPEG4_SurroundingSound:
37473 1 : return "SurroundingSound";
37474 1 : case TAG_MPEG4_Transform3DAudio:
37475 1 : return "Transform3DAudio";
37476 8 : case TAG_MPEG4_WideSound:
37477 8 : return "WideSound";
37478 8 : case TAG_MPEG4_ScoreShape:
37479 8 : return "ScoreShape";
37480 1 : case TAG_MPEG4_MusicScore:
37481 1 : return "MusicScore";
37482 1 : case TAG_MPEG4_FootPrintSetNode:
37483 1 : return "FootPrintSetNode";
37484 1 : case TAG_MPEG4_FootPrintNode:
37485 1 : return "FootPrintNode";
37486 1 : case TAG_MPEG4_BuildingPartNode:
37487 1 : return "BuildingPartNode";
37488 1 : case TAG_MPEG4_RoofNode:
37489 1 : return "RoofNode";
37490 1 : case TAG_MPEG4_FacadeNode:
37491 1 : return "FacadeNode";
37492 8 : case TAG_MPEG4_Shadow:
37493 8 : return "Shadow";
37494 22 : case TAG_MPEG4_CacheTexture:
37495 22 : return "CacheTexture";
37496 58 : case TAG_MPEG4_EnvironmentTest:
37497 58 : return "EnvironmentTest";
37498 1 : case TAG_MPEG4_KeyNavigator:
37499 1 : return "KeyNavigator";
37500 1 : case TAG_MPEG4_SpacePartition:
37501 1 : return "SpacePartition";
37502 1 : case TAG_MPEG4_Storage:
37503 1 : return "Storage";
37504 0 : default:
37505 0 : return "Unknown Node";
37506 : }
37507 : }
37508 :
37509 70350 : void gf_sg_mpeg4_node_del(GF_Node *node)
37510 : {
37511 70350 : switch (node->sgprivate->tag) {
37512 21 : case TAG_MPEG4_Anchor:
37513 21 : Anchor_Del(node);
37514 21 : return;
37515 : case TAG_MPEG4_AnimationStream:
37516 : AnimationStream_Del(node);
37517 : return;
37518 6273 : case TAG_MPEG4_Appearance:
37519 6273 : Appearance_Del(node);
37520 6273 : return;
37521 45 : case TAG_MPEG4_AudioBuffer:
37522 45 : AudioBuffer_Del(node);
37523 45 : return;
37524 262 : case TAG_MPEG4_AudioClip:
37525 262 : AudioClip_Del(node);
37526 262 : return;
37527 1 : case TAG_MPEG4_AudioDelay:
37528 1 : AudioDelay_Del(node);
37529 1 : return;
37530 1 : case TAG_MPEG4_AudioFX:
37531 1 : AudioFX_Del(node);
37532 1 : return;
37533 1 : case TAG_MPEG4_AudioMix:
37534 1 : AudioMix_Del(node);
37535 1 : return;
37536 59 : case TAG_MPEG4_AudioSource:
37537 59 : AudioSource_Del(node);
37538 59 : return;
37539 1 : case TAG_MPEG4_AudioSwitch:
37540 1 : AudioSwitch_Del(node);
37541 1 : return;
37542 77 : case TAG_MPEG4_Background:
37543 77 : Background_Del(node);
37544 77 : return;
37545 : case TAG_MPEG4_Background2D:
37546 : Background2D_Del(node);
37547 : return;
37548 : case TAG_MPEG4_Billboard:
37549 : Billboard_Del(node);
37550 : return;
37551 : case TAG_MPEG4_Bitmap:
37552 : Bitmap_Del(node);
37553 : return;
37554 : case TAG_MPEG4_Box:
37555 : Box_Del(node);
37556 : return;
37557 : case TAG_MPEG4_Circle:
37558 : Circle_Del(node);
37559 : return;
37560 68 : case TAG_MPEG4_Collision:
37561 68 : Collision_Del(node);
37562 68 : return;
37563 : case TAG_MPEG4_Color:
37564 : Color_Del(node);
37565 : return;
37566 7 : case TAG_MPEG4_ColorInterpolator:
37567 7 : ColorInterpolator_Del(node);
37568 7 : return;
37569 31 : case TAG_MPEG4_CompositeTexture2D:
37570 31 : CompositeTexture2D_Del(node);
37571 31 : return;
37572 3 : case TAG_MPEG4_CompositeTexture3D:
37573 3 : CompositeTexture3D_Del(node);
37574 3 : return;
37575 : case TAG_MPEG4_Conditional:
37576 : Conditional_Del(node);
37577 : return;
37578 : case TAG_MPEG4_Cone:
37579 : Cone_Del(node);
37580 : return;
37581 : case TAG_MPEG4_Coordinate:
37582 : Coordinate_Del(node);
37583 : return;
37584 : case TAG_MPEG4_Coordinate2D:
37585 : Coordinate2D_Del(node);
37586 : return;
37587 2 : case TAG_MPEG4_CoordinateInterpolator:
37588 2 : CoordinateInterpolator_Del(node);
37589 2 : return;
37590 3 : case TAG_MPEG4_CoordinateInterpolator2D:
37591 3 : CoordinateInterpolator2D_Del(node);
37592 3 : return;
37593 2574 : case TAG_MPEG4_Curve2D:
37594 2574 : Curve2D_Del(node);
37595 2574 : return;
37596 : case TAG_MPEG4_Cylinder:
37597 : Cylinder_Del(node);
37598 : return;
37599 : case TAG_MPEG4_CylinderSensor:
37600 : CylinderSensor_Del(node);
37601 : return;
37602 : case TAG_MPEG4_DirectionalLight:
37603 : DirectionalLight_Del(node);
37604 : return;
37605 : case TAG_MPEG4_DiscSensor:
37606 : DiscSensor_Del(node);
37607 : return;
37608 67 : case TAG_MPEG4_ElevationGrid:
37609 67 : ElevationGrid_Del(node);
37610 67 : return;
37611 : case TAG_MPEG4_Expression:
37612 : Expression_Del(node);
37613 : return;
37614 67 : case TAG_MPEG4_Extrusion:
37615 67 : Extrusion_Del(node);
37616 67 : return;
37617 1 : case TAG_MPEG4_Face:
37618 1 : Face_Del(node);
37619 1 : return;
37620 1 : case TAG_MPEG4_FaceDefMesh:
37621 1 : FaceDefMesh_Del(node);
37622 1 : return;
37623 1 : case TAG_MPEG4_FaceDefTables:
37624 1 : FaceDefTables_Del(node);
37625 1 : return;
37626 : case TAG_MPEG4_FaceDefTransform:
37627 : FaceDefTransform_Del(node);
37628 : return;
37629 1 : case TAG_MPEG4_FAP:
37630 1 : FAP_Del(node);
37631 1 : return;
37632 1 : case TAG_MPEG4_FDP:
37633 1 : FDP_Del(node);
37634 1 : return;
37635 1 : case TAG_MPEG4_FIT:
37636 1 : FIT_Del(node);
37637 1 : return;
37638 : case TAG_MPEG4_Fog:
37639 : Fog_Del(node);
37640 : return;
37641 573 : case TAG_MPEG4_FontStyle:
37642 573 : FontStyle_Del(node);
37643 573 : return;
37644 108 : case TAG_MPEG4_Form:
37645 108 : Form_Del(node);
37646 108 : return;
37647 : case TAG_MPEG4_Group:
37648 : Group_Del(node);
37649 : return;
37650 : case TAG_MPEG4_ImageTexture:
37651 : ImageTexture_Del(node);
37652 : return;
37653 199 : case TAG_MPEG4_IndexedFaceSet:
37654 199 : IndexedFaceSet_Del(node);
37655 199 : return;
37656 363 : case TAG_MPEG4_IndexedFaceSet2D:
37657 363 : IndexedFaceSet2D_Del(node);
37658 363 : return;
37659 68 : case TAG_MPEG4_IndexedLineSet:
37660 68 : IndexedLineSet_Del(node);
37661 68 : return;
37662 109 : case TAG_MPEG4_IndexedLineSet2D:
37663 109 : IndexedLineSet2D_Del(node);
37664 109 : return;
37665 : case TAG_MPEG4_Inline:
37666 : Inline_Del(node);
37667 : return;
37668 2 : case TAG_MPEG4_LOD:
37669 2 : LOD_Del(node);
37670 2 : return;
37671 444 : case TAG_MPEG4_Layer2D:
37672 444 : Layer2D_Del(node);
37673 444 : return;
37674 75 : case TAG_MPEG4_Layer3D:
37675 75 : Layer3D_Del(node);
37676 75 : return;
37677 230 : case TAG_MPEG4_Layout:
37678 230 : Layout_Del(node);
37679 230 : return;
37680 : case TAG_MPEG4_LineProperties:
37681 : LineProperties_Del(node);
37682 : return;
37683 : case TAG_MPEG4_ListeningPoint:
37684 : ListeningPoint_Del(node);
37685 : return;
37686 : case TAG_MPEG4_Material:
37687 : Material_Del(node);
37688 : return;
37689 : case TAG_MPEG4_Material2D:
37690 : Material2D_Del(node);
37691 : return;
37692 : case TAG_MPEG4_MovieTexture:
37693 : MovieTexture_Del(node);
37694 : return;
37695 93 : case TAG_MPEG4_NavigationInfo:
37696 93 : NavigationInfo_Del(node);
37697 93 : return;
37698 : case TAG_MPEG4_Normal:
37699 : Normal_Del(node);
37700 : return;
37701 2 : case TAG_MPEG4_NormalInterpolator:
37702 2 : NormalInterpolator_Del(node);
37703 2 : return;
37704 1525 : case TAG_MPEG4_OrderedGroup:
37705 1525 : OrderedGroup_Del(node);
37706 1525 : return;
37707 19 : case TAG_MPEG4_OrientationInterpolator:
37708 19 : OrientationInterpolator_Del(node);
37709 19 : return;
37710 : case TAG_MPEG4_PixelTexture:
37711 : PixelTexture_Del(node);
37712 : return;
37713 : case TAG_MPEG4_PlaneSensor:
37714 : PlaneSensor_Del(node);
37715 : return;
37716 : case TAG_MPEG4_PlaneSensor2D:
37717 : PlaneSensor2D_Del(node);
37718 : return;
37719 : case TAG_MPEG4_PointLight:
37720 : PointLight_Del(node);
37721 : return;
37722 67 : case TAG_MPEG4_PointSet:
37723 67 : PointSet_Del(node);
37724 67 : return;
37725 78 : case TAG_MPEG4_PointSet2D:
37726 78 : PointSet2D_Del(node);
37727 78 : return;
37728 12 : case TAG_MPEG4_PositionInterpolator:
37729 12 : PositionInterpolator_Del(node);
37730 12 : return;
37731 410 : case TAG_MPEG4_PositionInterpolator2D:
37732 410 : PositionInterpolator2D_Del(node);
37733 410 : return;
37734 : case TAG_MPEG4_ProximitySensor2D:
37735 : ProximitySensor2D_Del(node);
37736 : return;
37737 : case TAG_MPEG4_ProximitySensor:
37738 : ProximitySensor_Del(node);
37739 : return;
37740 : case TAG_MPEG4_QuantizationParameter:
37741 : QuantizationParameter_Del(node);
37742 : return;
37743 : case TAG_MPEG4_Rectangle:
37744 : Rectangle_Del(node);
37745 : return;
37746 71 : case TAG_MPEG4_ScalarInterpolator:
37747 71 : ScalarInterpolator_Del(node);
37748 71 : return;
37749 : case TAG_MPEG4_Script:
37750 : Script_Del(node);
37751 : return;
37752 11668 : case TAG_MPEG4_Shape:
37753 11668 : Shape_Del(node);
37754 11668 : return;
37755 : case TAG_MPEG4_Sound:
37756 : Sound_Del(node);
37757 : return;
37758 : case TAG_MPEG4_Sound2D:
37759 : Sound2D_Del(node);
37760 : return;
37761 : case TAG_MPEG4_Sphere:
37762 : Sphere_Del(node);
37763 : return;
37764 : case TAG_MPEG4_SphereSensor:
37765 : SphereSensor_Del(node);
37766 : return;
37767 : case TAG_MPEG4_SpotLight:
37768 : SpotLight_Del(node);
37769 : return;
37770 : case TAG_MPEG4_Switch:
37771 : Switch_Del(node);
37772 : return;
37773 : case TAG_MPEG4_TermCap:
37774 : TermCap_Del(node);
37775 : return;
37776 1103 : case TAG_MPEG4_Text:
37777 1103 : Text_Del(node);
37778 1103 : return;
37779 : case TAG_MPEG4_TextureCoordinate:
37780 : TextureCoordinate_Del(node);
37781 : return;
37782 : case TAG_MPEG4_TextureTransform:
37783 : TextureTransform_Del(node);
37784 : return;
37785 : case TAG_MPEG4_TimeSensor:
37786 : TimeSensor_Del(node);
37787 : return;
37788 : case TAG_MPEG4_TouchSensor:
37789 : TouchSensor_Del(node);
37790 : return;
37791 : case TAG_MPEG4_Transform:
37792 : Transform_Del(node);
37793 : return;
37794 : case TAG_MPEG4_Transform2D:
37795 : Transform2D_Del(node);
37796 : return;
37797 2035 : case TAG_MPEG4_Valuator:
37798 2035 : Valuator_Del(node);
37799 2035 : return;
37800 : case TAG_MPEG4_Viewpoint:
37801 : Viewpoint_Del(node);
37802 : return;
37803 : case TAG_MPEG4_VisibilitySensor:
37804 : VisibilitySensor_Del(node);
37805 : return;
37806 : case TAG_MPEG4_Viseme:
37807 : Viseme_Del(node);
37808 : return;
37809 511 : case TAG_MPEG4_WorldInfo:
37810 511 : WorldInfo_Del(node);
37811 511 : return;
37812 1 : case TAG_MPEG4_AcousticMaterial:
37813 1 : AcousticMaterial_Del(node);
37814 1 : return;
37815 1 : case TAG_MPEG4_AcousticScene:
37816 1 : AcousticScene_Del(node);
37817 1 : return;
37818 1 : case TAG_MPEG4_ApplicationWindow:
37819 1 : ApplicationWindow_Del(node);
37820 1 : return;
37821 : case TAG_MPEG4_BAP:
37822 : BAP_Del(node);
37823 : return;
37824 1 : case TAG_MPEG4_BDP:
37825 1 : BDP_Del(node);
37826 1 : return;
37827 1 : case TAG_MPEG4_Body:
37828 1 : Body_Del(node);
37829 1 : return;
37830 1 : case TAG_MPEG4_BodyDefTable:
37831 1 : BodyDefTable_Del(node);
37832 1 : return;
37833 1 : case TAG_MPEG4_BodySegmentConnectionHint:
37834 1 : BodySegmentConnectionHint_Del(node);
37835 1 : return;
37836 1 : case TAG_MPEG4_DirectiveSound:
37837 1 : DirectiveSound_Del(node);
37838 1 : return;
37839 : case TAG_MPEG4_Hierarchical3DMesh:
37840 : Hierarchical3DMesh_Del(node);
37841 : return;
37842 : case TAG_MPEG4_MaterialKey:
37843 : MaterialKey_Del(node);
37844 : return;
37845 1 : case TAG_MPEG4_PerceptualParameters:
37846 1 : PerceptualParameters_Del(node);
37847 1 : return;
37848 1 : case TAG_MPEG4_TemporalTransform:
37849 1 : TemporalTransform_Del(node);
37850 1 : return;
37851 1 : case TAG_MPEG4_TemporalGroup:
37852 1 : TemporalGroup_Del(node);
37853 1 : return;
37854 23 : case TAG_MPEG4_ServerCommand:
37855 23 : ServerCommand_Del(node);
37856 23 : return;
37857 134 : case TAG_MPEG4_InputSensor:
37858 134 : InputSensor_Del(node);
37859 134 : return;
37860 1 : case TAG_MPEG4_MatteTexture:
37861 1 : MatteTexture_Del(node);
37862 1 : return;
37863 : case TAG_MPEG4_MediaBuffer:
37864 : MediaBuffer_Del(node);
37865 : return;
37866 : case TAG_MPEG4_MediaControl:
37867 : MediaControl_Del(node);
37868 : return;
37869 17 : case TAG_MPEG4_MediaSensor:
37870 17 : MediaSensor_Del(node);
37871 17 : return;
37872 67 : case TAG_MPEG4_BitWrapper:
37873 67 : BitWrapper_Del(node);
37874 67 : return;
37875 2 : case TAG_MPEG4_CoordinateInterpolator4D:
37876 2 : CoordinateInterpolator4D_Del(node);
37877 2 : return;
37878 : case TAG_MPEG4_DepthImage:
37879 : DepthImage_Del(node);
37880 : return;
37881 1 : case TAG_MPEG4_FFD:
37882 1 : FFD_Del(node);
37883 1 : return;
37884 1 : case TAG_MPEG4_Implicit:
37885 1 : Implicit_Del(node);
37886 1 : return;
37887 1 : case TAG_MPEG4_XXLFM_Appearance:
37888 1 : XXLFM_Appearance_Del(node);
37889 1 : return;
37890 1 : case TAG_MPEG4_XXLFM_BlendList:
37891 1 : XXLFM_BlendList_Del(node);
37892 1 : return;
37893 1 : case TAG_MPEG4_XXLFM_FrameList:
37894 1 : XXLFM_FrameList_Del(node);
37895 1 : return;
37896 1 : case TAG_MPEG4_XXLFM_LightMap:
37897 1 : XXLFM_LightMap_Del(node);
37898 1 : return;
37899 1 : case TAG_MPEG4_XXLFM_SurfaceMapList:
37900 1 : XXLFM_SurfaceMapList_Del(node);
37901 1 : return;
37902 1 : case TAG_MPEG4_XXLFM_ViewMapList:
37903 1 : XXLFM_ViewMapList_Del(node);
37904 1 : return;
37905 1 : case TAG_MPEG4_MeshGrid:
37906 1 : MeshGrid_Del(node);
37907 1 : return;
37908 67 : case TAG_MPEG4_NonLinearDeformer:
37909 67 : NonLinearDeformer_Del(node);
37910 67 : return;
37911 1 : case TAG_MPEG4_NurbsCurve:
37912 1 : NurbsCurve_Del(node);
37913 1 : return;
37914 1 : case TAG_MPEG4_NurbsCurve2D:
37915 1 : NurbsCurve2D_Del(node);
37916 1 : return;
37917 1 : case TAG_MPEG4_NurbsSurface:
37918 1 : NurbsSurface_Del(node);
37919 1 : return;
37920 1 : case TAG_MPEG4_OctreeImage:
37921 1 : OctreeImage_Del(node);
37922 1 : return;
37923 1 : case TAG_MPEG4_XXParticles:
37924 1 : XXParticles_Del(node);
37925 1 : return;
37926 : case TAG_MPEG4_XXParticleInitBox:
37927 : XXParticleInitBox_Del(node);
37928 : return;
37929 : case TAG_MPEG4_XXPlanarObstacle:
37930 : XXPlanarObstacle_Del(node);
37931 : return;
37932 : case TAG_MPEG4_XXPointAttractor:
37933 : XXPointAttractor_Del(node);
37934 : return;
37935 1 : case TAG_MPEG4_PointTexture:
37936 1 : PointTexture_Del(node);
37937 1 : return;
37938 2 : case TAG_MPEG4_PositionAnimator:
37939 2 : PositionAnimator_Del(node);
37940 2 : return;
37941 3 : case TAG_MPEG4_PositionAnimator2D:
37942 3 : PositionAnimator2D_Del(node);
37943 3 : return;
37944 2 : case TAG_MPEG4_PositionInterpolator4D:
37945 2 : PositionInterpolator4D_Del(node);
37946 2 : return;
37947 1 : case TAG_MPEG4_ProceduralTexture:
37948 1 : ProceduralTexture_Del(node);
37949 1 : return;
37950 : case TAG_MPEG4_Quadric:
37951 : Quadric_Del(node);
37952 : return;
37953 1 : case TAG_MPEG4_SBBone:
37954 1 : SBBone_Del(node);
37955 1 : return;
37956 1 : case TAG_MPEG4_SBMuscle:
37957 1 : SBMuscle_Del(node);
37958 1 : return;
37959 1 : case TAG_MPEG4_SBSegment:
37960 1 : SBSegment_Del(node);
37961 1 : return;
37962 1 : case TAG_MPEG4_SBSite:
37963 1 : SBSite_Del(node);
37964 1 : return;
37965 1 : case TAG_MPEG4_SBSkinnedModel:
37966 1 : SBSkinnedModel_Del(node);
37967 1 : return;
37968 1 : case TAG_MPEG4_SBVCAnimation:
37969 1 : SBVCAnimation_Del(node);
37970 1 : return;
37971 2 : case TAG_MPEG4_ScalarAnimator:
37972 2 : ScalarAnimator_Del(node);
37973 2 : return;
37974 1 : case TAG_MPEG4_SimpleTexture:
37975 1 : SimpleTexture_Del(node);
37976 1 : return;
37977 1 : case TAG_MPEG4_SolidRep:
37978 1 : SolidRep_Del(node);
37979 1 : return;
37980 1 : case TAG_MPEG4_SubdivisionSurface:
37981 1 : SubdivisionSurface_Del(node);
37982 1 : return;
37983 : case TAG_MPEG4_SubdivSurfaceSector:
37984 : SubdivSurfaceSector_Del(node);
37985 : return;
37986 : case TAG_MPEG4_WaveletSubdivisionSurface:
37987 : WaveletSubdivisionSurface_Del(node);
37988 : return;
37989 68 : case TAG_MPEG4_Clipper2D:
37990 68 : Clipper2D_Del(node);
37991 68 : return;
37992 : case TAG_MPEG4_ColorTransform:
37993 : ColorTransform_Del(node);
37994 : return;
37995 : case TAG_MPEG4_Ellipse:
37996 : Ellipse_Del(node);
37997 : return;
37998 338 : case TAG_MPEG4_LinearGradient:
37999 338 : LinearGradient_Del(node);
38000 338 : return;
38001 68 : case TAG_MPEG4_PathLayout:
38002 68 : PathLayout_Del(node);
38003 68 : return;
38004 497 : case TAG_MPEG4_RadialGradient:
38005 497 : RadialGradient_Del(node);
38006 497 : return;
38007 1 : case TAG_MPEG4_SynthesizedTexture:
38008 1 : SynthesizedTexture_Del(node);
38009 1 : return;
38010 : case TAG_MPEG4_TransformMatrix2D:
38011 : TransformMatrix2D_Del(node);
38012 : return;
38013 106 : case TAG_MPEG4_Viewport:
38014 106 : Viewport_Del(node);
38015 106 : return;
38016 834 : case TAG_MPEG4_XCurve2D:
38017 834 : XCurve2D_Del(node);
38018 834 : return;
38019 1 : case TAG_MPEG4_XFontStyle:
38020 1 : XFontStyle_Del(node);
38021 1 : return;
38022 504 : case TAG_MPEG4_XLineProperties:
38023 504 : XLineProperties_Del(node);
38024 504 : return;
38025 1 : case TAG_MPEG4_AdvancedAudioBuffer:
38026 1 : AdvancedAudioBuffer_Del(node);
38027 1 : return;
38028 1 : case TAG_MPEG4_AudioChannelConfig:
38029 1 : AudioChannelConfig_Del(node);
38030 1 : return;
38031 : case TAG_MPEG4_DepthImageV2:
38032 : DepthImageV2_Del(node);
38033 : return;
38034 1 : case TAG_MPEG4_MorphShape:
38035 1 : MorphShape_Del(node);
38036 1 : return;
38037 1 : case TAG_MPEG4_MultiTexture:
38038 1 : MultiTexture_Del(node);
38039 1 : return;
38040 1 : case TAG_MPEG4_PointTextureV2:
38041 1 : PointTextureV2_Del(node);
38042 1 : return;
38043 1 : case TAG_MPEG4_SBVCAnimationV2:
38044 1 : SBVCAnimationV2_Del(node);
38045 1 : return;
38046 1 : case TAG_MPEG4_SimpleTextureV2:
38047 1 : SimpleTextureV2_Del(node);
38048 1 : return;
38049 : case TAG_MPEG4_SurroundingSound:
38050 : SurroundingSound_Del(node);
38051 : return;
38052 : case TAG_MPEG4_Transform3DAudio:
38053 : Transform3DAudio_Del(node);
38054 : return;
38055 23 : case TAG_MPEG4_WideSound:
38056 23 : WideSound_Del(node);
38057 23 : return;
38058 23 : case TAG_MPEG4_ScoreShape:
38059 23 : ScoreShape_Del(node);
38060 23 : return;
38061 1 : case TAG_MPEG4_MusicScore:
38062 1 : MusicScore_Del(node);
38063 1 : return;
38064 : case TAG_MPEG4_FootPrintSetNode:
38065 : FootPrintSetNode_Del(node);
38066 : return;
38067 : case TAG_MPEG4_FootPrintNode:
38068 : FootPrintNode_Del(node);
38069 : return;
38070 1 : case TAG_MPEG4_BuildingPartNode:
38071 1 : BuildingPartNode_Del(node);
38072 1 : return;
38073 1 : case TAG_MPEG4_RoofNode:
38074 1 : RoofNode_Del(node);
38075 1 : return;
38076 1 : case TAG_MPEG4_FacadeNode:
38077 1 : FacadeNode_Del(node);
38078 1 : return;
38079 : case TAG_MPEG4_Shadow:
38080 : Shadow_Del(node);
38081 : return;
38082 64 : case TAG_MPEG4_CacheTexture:
38083 64 : CacheTexture_Del(node);
38084 64 : return;
38085 91 : case TAG_MPEG4_EnvironmentTest:
38086 91 : EnvironmentTest_Del(node);
38087 91 : return;
38088 5 : case TAG_MPEG4_KeyNavigator:
38089 5 : KeyNavigator_Del(node);
38090 5 : return;
38091 1 : case TAG_MPEG4_SpacePartition:
38092 1 : SpacePartition_Del(node);
38093 1 : return;
38094 2 : case TAG_MPEG4_Storage:
38095 2 : Storage_Del(node);
38096 2 : return;
38097 : default:
38098 : return;
38099 : }
38100 : }
38101 :
38102 78440 : u32 gf_sg_mpeg4_node_get_field_count(GF_Node *node, u8 code_mode)
38103 : {
38104 78440 : switch (node->sgprivate->tag) {
38105 25 : case TAG_MPEG4_Anchor:
38106 : return Anchor_get_field_count(node, code_mode);
38107 86 : case TAG_MPEG4_AnimationStream:
38108 : return AnimationStream_get_field_count(node, code_mode);
38109 5508 : case TAG_MPEG4_Appearance:
38110 : return Appearance_get_field_count(node, code_mode);
38111 52 : case TAG_MPEG4_AudioBuffer:
38112 : return AudioBuffer_get_field_count(node, code_mode);
38113 58 : case TAG_MPEG4_AudioClip:
38114 : return AudioClip_get_field_count(node, code_mode);
38115 6 : case TAG_MPEG4_AudioDelay:
38116 : return AudioDelay_get_field_count(node, code_mode);
38117 6 : case TAG_MPEG4_AudioFX:
38118 : return AudioFX_get_field_count(node, code_mode);
38119 6 : case TAG_MPEG4_AudioMix:
38120 : return AudioMix_get_field_count(node, code_mode);
38121 60 : case TAG_MPEG4_AudioSource:
38122 : return AudioSource_get_field_count(node, code_mode);
38123 6 : case TAG_MPEG4_AudioSwitch:
38124 : return AudioSwitch_get_field_count(node, code_mode);
38125 82 : case TAG_MPEG4_Background:
38126 : return Background_get_field_count(node, code_mode);
38127 424 : case TAG_MPEG4_Background2D:
38128 : return Background2D_get_field_count(node, code_mode);
38129 6 : case TAG_MPEG4_Billboard:
38130 : return Billboard_get_field_count(node, code_mode);
38131 96 : case TAG_MPEG4_Bitmap:
38132 96 : return Bitmap_get_field_count(node, code_mode);
38133 77 : case TAG_MPEG4_Box:
38134 : return Box_get_field_count(node, code_mode);
38135 1635 : case TAG_MPEG4_Circle:
38136 1635 : return Circle_get_field_count(node, code_mode);
38137 76 : case TAG_MPEG4_Collision:
38138 : return Collision_get_field_count(node, code_mode);
38139 146 : case TAG_MPEG4_Color:
38140 146 : return Color_get_field_count(node, code_mode);
38141 6 : case TAG_MPEG4_ColorInterpolator:
38142 : return ColorInterpolator_get_field_count(node, code_mode);
38143 594 : case TAG_MPEG4_CompositeTexture2D:
38144 : return CompositeTexture2D_get_field_count(node, code_mode);
38145 6 : case TAG_MPEG4_CompositeTexture3D:
38146 : return CompositeTexture3D_get_field_count(node, code_mode);
38147 803 : case TAG_MPEG4_Conditional:
38148 : return Conditional_get_field_count(node, code_mode);
38149 76 : case TAG_MPEG4_Cone:
38150 : return Cone_get_field_count(node, code_mode);
38151 216 : case TAG_MPEG4_Coordinate:
38152 216 : return Coordinate_get_field_count(node, code_mode);
38153 4276 : case TAG_MPEG4_Coordinate2D:
38154 4276 : return Coordinate2D_get_field_count(node, code_mode);
38155 6 : case TAG_MPEG4_CoordinateInterpolator:
38156 : return CoordinateInterpolator_get_field_count(node, code_mode);
38157 6 : case TAG_MPEG4_CoordinateInterpolator2D:
38158 : return CoordinateInterpolator2D_get_field_count(node, code_mode);
38159 2420 : case TAG_MPEG4_Curve2D:
38160 : return Curve2D_get_field_count(node, code_mode);
38161 76 : case TAG_MPEG4_Cylinder:
38162 : return Cylinder_get_field_count(node, code_mode);
38163 76 : case TAG_MPEG4_CylinderSensor:
38164 : return CylinderSensor_get_field_count(node, code_mode);
38165 6 : case TAG_MPEG4_DirectionalLight:
38166 : return DirectionalLight_get_field_count(node, code_mode);
38167 76 : case TAG_MPEG4_DiscSensor:
38168 : return DiscSensor_get_field_count(node, code_mode);
38169 76 : case TAG_MPEG4_ElevationGrid:
38170 : return ElevationGrid_get_field_count(node, code_mode);
38171 6 : case TAG_MPEG4_Expression:
38172 : return Expression_get_field_count(node, code_mode);
38173 76 : case TAG_MPEG4_Extrusion:
38174 : return Extrusion_get_field_count(node, code_mode);
38175 6 : case TAG_MPEG4_Face:
38176 : return Face_get_field_count(node, code_mode);
38177 6 : case TAG_MPEG4_FaceDefMesh:
38178 : return FaceDefMesh_get_field_count(node, code_mode);
38179 6 : case TAG_MPEG4_FaceDefTables:
38180 : return FaceDefTables_get_field_count(node, code_mode);
38181 6 : case TAG_MPEG4_FaceDefTransform:
38182 : return FaceDefTransform_get_field_count(node, code_mode);
38183 6 : case TAG_MPEG4_FAP:
38184 : return FAP_get_field_count(node, code_mode);
38185 6 : case TAG_MPEG4_FDP:
38186 : return FDP_get_field_count(node, code_mode);
38187 6 : case TAG_MPEG4_FIT:
38188 : return FIT_get_field_count(node, code_mode);
38189 6 : case TAG_MPEG4_Fog:
38190 : return Fog_get_field_count(node, code_mode);
38191 160 : case TAG_MPEG4_FontStyle:
38192 : return FontStyle_get_field_count(node, code_mode);
38193 76 : case TAG_MPEG4_Form:
38194 : return Form_get_field_count(node, code_mode);
38195 162 : case TAG_MPEG4_Group:
38196 : return Group_get_field_count(node, code_mode);
38197 752 : case TAG_MPEG4_ImageTexture:
38198 : return ImageTexture_get_field_count(node, code_mode);
38199 216 : case TAG_MPEG4_IndexedFaceSet:
38200 : return IndexedFaceSet_get_field_count(node, code_mode);
38201 305 : case TAG_MPEG4_IndexedFaceSet2D:
38202 : return IndexedFaceSet2D_get_field_count(node, code_mode);
38203 76 : case TAG_MPEG4_IndexedLineSet:
38204 : return IndexedLineSet_get_field_count(node, code_mode);
38205 76 : case TAG_MPEG4_IndexedLineSet2D:
38206 : return IndexedLineSet2D_get_field_count(node, code_mode);
38207 6 : case TAG_MPEG4_Inline:
38208 : return Inline_get_field_count(node, code_mode);
38209 6 : case TAG_MPEG4_LOD:
38210 : return LOD_get_field_count(node, code_mode);
38211 76 : case TAG_MPEG4_Layer2D:
38212 : return Layer2D_get_field_count(node, code_mode);
38213 76 : case TAG_MPEG4_Layer3D:
38214 : return Layer3D_get_field_count(node, code_mode);
38215 76 : case TAG_MPEG4_Layout:
38216 : return Layout_get_field_count(node, code_mode);
38217 1562 : case TAG_MPEG4_LineProperties:
38218 : return LineProperties_get_field_count(node, code_mode);
38219 6 : case TAG_MPEG4_ListeningPoint:
38220 : return ListeningPoint_get_field_count(node, code_mode);
38221 1163 : case TAG_MPEG4_Material:
38222 1163 : return Material_get_field_count(node, code_mode);
38223 9991 : case TAG_MPEG4_Material2D:
38224 : return Material2D_get_field_count(node, code_mode);
38225 89 : case TAG_MPEG4_MovieTexture:
38226 : return MovieTexture_get_field_count(node, code_mode);
38227 82 : case TAG_MPEG4_NavigationInfo:
38228 : return NavigationInfo_get_field_count(node, code_mode);
38229 76 : case TAG_MPEG4_Normal:
38230 76 : return Normal_get_field_count(node, code_mode);
38231 6 : case TAG_MPEG4_NormalInterpolator:
38232 : return NormalInterpolator_get_field_count(node, code_mode);
38233 1078 : case TAG_MPEG4_OrderedGroup:
38234 : return OrderedGroup_get_field_count(node, code_mode);
38235 6 : case TAG_MPEG4_OrientationInterpolator:
38236 : return OrientationInterpolator_get_field_count(node, code_mode);
38237 76 : case TAG_MPEG4_PixelTexture:
38238 : return PixelTexture_get_field_count(node, code_mode);
38239 76 : case TAG_MPEG4_PlaneSensor:
38240 : return PlaneSensor_get_field_count(node, code_mode);
38241 86 : case TAG_MPEG4_PlaneSensor2D:
38242 : return PlaneSensor2D_get_field_count(node, code_mode);
38243 6 : case TAG_MPEG4_PointLight:
38244 : return PointLight_get_field_count(node, code_mode);
38245 76 : case TAG_MPEG4_PointSet:
38246 : return PointSet_get_field_count(node, code_mode);
38247 76 : case TAG_MPEG4_PointSet2D:
38248 : return PointSet2D_get_field_count(node, code_mode);
38249 6 : case TAG_MPEG4_PositionInterpolator:
38250 : return PositionInterpolator_get_field_count(node, code_mode);
38251 367 : case TAG_MPEG4_PositionInterpolator2D:
38252 : return PositionInterpolator2D_get_field_count(node, code_mode);
38253 76 : case TAG_MPEG4_ProximitySensor2D:
38254 : return ProximitySensor2D_get_field_count(node, code_mode);
38255 6 : case TAG_MPEG4_ProximitySensor:
38256 : return ProximitySensor_get_field_count(node, code_mode);
38257 236 : case TAG_MPEG4_QuantizationParameter:
38258 : return QuantizationParameter_get_field_count(node, code_mode);
38259 239 : case TAG_MPEG4_Rectangle:
38260 239 : return Rectangle_get_field_count(node, code_mode);
38261 10 : case TAG_MPEG4_ScalarInterpolator:
38262 : return ScalarInterpolator_get_field_count(node, code_mode);
38263 0 : case TAG_MPEG4_Script:
38264 : return Script_get_field_count(node, code_mode);
38265 9897 : case TAG_MPEG4_Shape:
38266 : return Shape_get_field_count(node, code_mode);
38267 6 : case TAG_MPEG4_Sound:
38268 : return Sound_get_field_count(node, code_mode);
38269 64 : case TAG_MPEG4_Sound2D:
38270 : return Sound2D_get_field_count(node, code_mode);
38271 76 : case TAG_MPEG4_Sphere:
38272 : return Sphere_get_field_count(node, code_mode);
38273 76 : case TAG_MPEG4_SphereSensor:
38274 : return SphereSensor_get_field_count(node, code_mode);
38275 6 : case TAG_MPEG4_SpotLight:
38276 : return SpotLight_get_field_count(node, code_mode);
38277 1495 : case TAG_MPEG4_Switch:
38278 : return Switch_get_field_count(node, code_mode);
38279 6 : case TAG_MPEG4_TermCap:
38280 : return TermCap_get_field_count(node, code_mode);
38281 170 : case TAG_MPEG4_Text:
38282 : return Text_get_field_count(node, code_mode);
38283 6 : case TAG_MPEG4_TextureCoordinate:
38284 6 : return TextureCoordinate_get_field_count(node, code_mode);
38285 370 : case TAG_MPEG4_TextureTransform:
38286 370 : return TextureTransform_get_field_count(node, code_mode);
38287 434 : case TAG_MPEG4_TimeSensor:
38288 : return TimeSensor_get_field_count(node, code_mode);
38289 1232 : case TAG_MPEG4_TouchSensor:
38290 : return TouchSensor_get_field_count(node, code_mode);
38291 217 : case TAG_MPEG4_Transform:
38292 : return Transform_get_field_count(node, code_mode);
38293 12889 : case TAG_MPEG4_Transform2D:
38294 : return Transform2D_get_field_count(node, code_mode);
38295 2148 : case TAG_MPEG4_Valuator:
38296 : return Valuator_get_field_count(node, code_mode);
38297 76 : case TAG_MPEG4_Viewpoint:
38298 : return Viewpoint_get_field_count(node, code_mode);
38299 82 : case TAG_MPEG4_VisibilitySensor:
38300 : return VisibilitySensor_get_field_count(node, code_mode);
38301 6 : case TAG_MPEG4_Viseme:
38302 : return Viseme_get_field_count(node, code_mode);
38303 173 : case TAG_MPEG4_WorldInfo:
38304 : return WorldInfo_get_field_count(node, code_mode);
38305 6 : case TAG_MPEG4_AcousticMaterial:
38306 : return AcousticMaterial_get_field_count(node, code_mode);
38307 6 : case TAG_MPEG4_AcousticScene:
38308 : return AcousticScene_get_field_count(node, code_mode);
38309 6 : case TAG_MPEG4_ApplicationWindow:
38310 : return ApplicationWindow_get_field_count(node, code_mode);
38311 6 : case TAG_MPEG4_BAP:
38312 : return BAP_get_field_count(node, code_mode);
38313 6 : case TAG_MPEG4_BDP:
38314 : return BDP_get_field_count(node, code_mode);
38315 6 : case TAG_MPEG4_Body:
38316 : return Body_get_field_count(node, code_mode);
38317 6 : case TAG_MPEG4_BodyDefTable:
38318 : return BodyDefTable_get_field_count(node, code_mode);
38319 6 : case TAG_MPEG4_BodySegmentConnectionHint:
38320 : return BodySegmentConnectionHint_get_field_count(node, code_mode);
38321 6 : case TAG_MPEG4_DirectiveSound:
38322 : return DirectiveSound_get_field_count(node, code_mode);
38323 6 : case TAG_MPEG4_Hierarchical3DMesh:
38324 : return Hierarchical3DMesh_get_field_count(node, code_mode);
38325 31 : case TAG_MPEG4_MaterialKey:
38326 : return MaterialKey_get_field_count(node, code_mode);
38327 6 : case TAG_MPEG4_PerceptualParameters:
38328 : return PerceptualParameters_get_field_count(node, code_mode);
38329 6 : case TAG_MPEG4_TemporalTransform:
38330 : return TemporalTransform_get_field_count(node, code_mode);
38331 6 : case TAG_MPEG4_TemporalGroup:
38332 : return TemporalGroup_get_field_count(node, code_mode);
38333 30 : case TAG_MPEG4_ServerCommand:
38334 : return ServerCommand_get_field_count(node, code_mode);
38335 146 : case TAG_MPEG4_InputSensor:
38336 : return InputSensor_get_field_count(node, code_mode);
38337 6 : case TAG_MPEG4_MatteTexture:
38338 : return MatteTexture_get_field_count(node, code_mode);
38339 6 : case TAG_MPEG4_MediaBuffer:
38340 : return MediaBuffer_get_field_count(node, code_mode);
38341 188 : case TAG_MPEG4_MediaControl:
38342 : return MediaControl_get_field_count(node, code_mode);
38343 6 : case TAG_MPEG4_MediaSensor:
38344 : return MediaSensor_get_field_count(node, code_mode);
38345 78 : case TAG_MPEG4_BitWrapper:
38346 : return BitWrapper_get_field_count(node, code_mode);
38347 6 : case TAG_MPEG4_CoordinateInterpolator4D:
38348 : return CoordinateInterpolator4D_get_field_count(node, code_mode);
38349 6 : case TAG_MPEG4_DepthImage:
38350 : return DepthImage_get_field_count(node, code_mode);
38351 6 : case TAG_MPEG4_FFD:
38352 : return FFD_get_field_count(node, code_mode);
38353 6 : case TAG_MPEG4_Implicit:
38354 : return Implicit_get_field_count(node, code_mode);
38355 6 : case TAG_MPEG4_XXLFM_Appearance:
38356 : return XXLFM_Appearance_get_field_count(node, code_mode);
38357 6 : case TAG_MPEG4_XXLFM_BlendList:
38358 : return XXLFM_BlendList_get_field_count(node, code_mode);
38359 6 : case TAG_MPEG4_XXLFM_FrameList:
38360 : return XXLFM_FrameList_get_field_count(node, code_mode);
38361 6 : case TAG_MPEG4_XXLFM_LightMap:
38362 : return XXLFM_LightMap_get_field_count(node, code_mode);
38363 6 : case TAG_MPEG4_XXLFM_SurfaceMapList:
38364 : return XXLFM_SurfaceMapList_get_field_count(node, code_mode);
38365 6 : case TAG_MPEG4_XXLFM_ViewMapList:
38366 : return XXLFM_ViewMapList_get_field_count(node, code_mode);
38367 6 : case TAG_MPEG4_MeshGrid:
38368 : return MeshGrid_get_field_count(node, code_mode);
38369 76 : case TAG_MPEG4_NonLinearDeformer:
38370 : return NonLinearDeformer_get_field_count(node, code_mode);
38371 6 : case TAG_MPEG4_NurbsCurve:
38372 : return NurbsCurve_get_field_count(node, code_mode);
38373 6 : case TAG_MPEG4_NurbsCurve2D:
38374 : return NurbsCurve2D_get_field_count(node, code_mode);
38375 6 : case TAG_MPEG4_NurbsSurface:
38376 : return NurbsSurface_get_field_count(node, code_mode);
38377 6 : case TAG_MPEG4_OctreeImage:
38378 : return OctreeImage_get_field_count(node, code_mode);
38379 6 : case TAG_MPEG4_XXParticles:
38380 : return XXParticles_get_field_count(node, code_mode);
38381 6 : case TAG_MPEG4_XXParticleInitBox:
38382 : return XXParticleInitBox_get_field_count(node, code_mode);
38383 6 : case TAG_MPEG4_XXPlanarObstacle:
38384 : return XXPlanarObstacle_get_field_count(node, code_mode);
38385 6 : case TAG_MPEG4_XXPointAttractor:
38386 : return XXPointAttractor_get_field_count(node, code_mode);
38387 6 : case TAG_MPEG4_PointTexture:
38388 : return PointTexture_get_field_count(node, code_mode);
38389 6 : case TAG_MPEG4_PositionAnimator:
38390 : return PositionAnimator_get_field_count(node, code_mode);
38391 6 : case TAG_MPEG4_PositionAnimator2D:
38392 : return PositionAnimator2D_get_field_count(node, code_mode);
38393 6 : case TAG_MPEG4_PositionInterpolator4D:
38394 : return PositionInterpolator4D_get_field_count(node, code_mode);
38395 6 : case TAG_MPEG4_ProceduralTexture:
38396 : return ProceduralTexture_get_field_count(node, code_mode);
38397 6 : case TAG_MPEG4_Quadric:
38398 : return Quadric_get_field_count(node, code_mode);
38399 6 : case TAG_MPEG4_SBBone:
38400 : return SBBone_get_field_count(node, code_mode);
38401 6 : case TAG_MPEG4_SBMuscle:
38402 : return SBMuscle_get_field_count(node, code_mode);
38403 6 : case TAG_MPEG4_SBSegment:
38404 : return SBSegment_get_field_count(node, code_mode);
38405 6 : case TAG_MPEG4_SBSite:
38406 : return SBSite_get_field_count(node, code_mode);
38407 6 : case TAG_MPEG4_SBSkinnedModel:
38408 : return SBSkinnedModel_get_field_count(node, code_mode);
38409 6 : case TAG_MPEG4_SBVCAnimation:
38410 : return SBVCAnimation_get_field_count(node, code_mode);
38411 6 : case TAG_MPEG4_ScalarAnimator:
38412 : return ScalarAnimator_get_field_count(node, code_mode);
38413 6 : case TAG_MPEG4_SimpleTexture:
38414 : return SimpleTexture_get_field_count(node, code_mode);
38415 6 : case TAG_MPEG4_SolidRep:
38416 : return SolidRep_get_field_count(node, code_mode);
38417 6 : case TAG_MPEG4_SubdivisionSurface:
38418 : return SubdivisionSurface_get_field_count(node, code_mode);
38419 6 : case TAG_MPEG4_SubdivSurfaceSector:
38420 : return SubdivSurfaceSector_get_field_count(node, code_mode);
38421 6 : case TAG_MPEG4_WaveletSubdivisionSurface:
38422 : return WaveletSubdivisionSurface_get_field_count(node, code_mode);
38423 76 : case TAG_MPEG4_Clipper2D:
38424 : return Clipper2D_get_field_count(node, code_mode);
38425 609 : case TAG_MPEG4_ColorTransform:
38426 : return ColorTransform_get_field_count(node, code_mode);
38427 6 : case TAG_MPEG4_Ellipse:
38428 6 : return Ellipse_get_field_count(node, code_mode);
38429 580 : case TAG_MPEG4_LinearGradient:
38430 : return LinearGradient_get_field_count(node, code_mode);
38431 76 : case TAG_MPEG4_PathLayout:
38432 : return PathLayout_get_field_count(node, code_mode);
38433 618 : case TAG_MPEG4_RadialGradient:
38434 : return RadialGradient_get_field_count(node, code_mode);
38435 6 : case TAG_MPEG4_SynthesizedTexture:
38436 : return SynthesizedTexture_get_field_count(node, code_mode);
38437 7367 : case TAG_MPEG4_TransformMatrix2D:
38438 : return TransformMatrix2D_get_field_count(node, code_mode);
38439 66 : case TAG_MPEG4_Viewport:
38440 : return Viewport_get_field_count(node, code_mode);
38441 790 : case TAG_MPEG4_XCurve2D:
38442 : return XCurve2D_get_field_count(node, code_mode);
38443 6 : case TAG_MPEG4_XFontStyle:
38444 : return XFontStyle_get_field_count(node, code_mode);
38445 2909 : case TAG_MPEG4_XLineProperties:
38446 : return XLineProperties_get_field_count(node, code_mode);
38447 6 : case TAG_MPEG4_AdvancedAudioBuffer:
38448 : return AdvancedAudioBuffer_get_field_count(node, code_mode);
38449 6 : case TAG_MPEG4_AudioChannelConfig:
38450 : return AudioChannelConfig_get_field_count(node, code_mode);
38451 6 : case TAG_MPEG4_DepthImageV2:
38452 : return DepthImageV2_get_field_count(node, code_mode);
38453 6 : case TAG_MPEG4_MorphShape:
38454 : return MorphShape_get_field_count(node, code_mode);
38455 6 : case TAG_MPEG4_MultiTexture:
38456 : return MultiTexture_get_field_count(node, code_mode);
38457 6 : case TAG_MPEG4_PointTextureV2:
38458 : return PointTextureV2_get_field_count(node, code_mode);
38459 6 : case TAG_MPEG4_SBVCAnimationV2:
38460 : return SBVCAnimationV2_get_field_count(node, code_mode);
38461 6 : case TAG_MPEG4_SimpleTextureV2:
38462 : return SimpleTextureV2_get_field_count(node, code_mode);
38463 6 : case TAG_MPEG4_SurroundingSound:
38464 : return SurroundingSound_get_field_count(node, code_mode);
38465 6 : case TAG_MPEG4_Transform3DAudio:
38466 : return Transform3DAudio_get_field_count(node, code_mode);
38467 30 : case TAG_MPEG4_WideSound:
38468 : return WideSound_get_field_count(node, code_mode);
38469 30 : case TAG_MPEG4_ScoreShape:
38470 : return ScoreShape_get_field_count(node, code_mode);
38471 6 : case TAG_MPEG4_MusicScore:
38472 : return MusicScore_get_field_count(node, code_mode);
38473 6 : case TAG_MPEG4_FootPrintSetNode:
38474 : return FootPrintSetNode_get_field_count(node, code_mode);
38475 6 : case TAG_MPEG4_FootPrintNode:
38476 : return FootPrintNode_get_field_count(node, code_mode);
38477 6 : case TAG_MPEG4_BuildingPartNode:
38478 : return BuildingPartNode_get_field_count(node, code_mode);
38479 6 : case TAG_MPEG4_RoofNode:
38480 : return RoofNode_get_field_count(node, code_mode);
38481 6 : case TAG_MPEG4_FacadeNode:
38482 : return FacadeNode_get_field_count(node, code_mode);
38483 30 : case TAG_MPEG4_Shadow:
38484 : return Shadow_get_field_count(node, code_mode);
38485 68 : case TAG_MPEG4_CacheTexture:
38486 : return CacheTexture_get_field_count(node, code_mode);
38487 88 : case TAG_MPEG4_EnvironmentTest:
38488 : return EnvironmentTest_get_field_count(node, code_mode);
38489 19 : case TAG_MPEG4_KeyNavigator:
38490 : return KeyNavigator_get_field_count(node, code_mode);
38491 6 : case TAG_MPEG4_SpacePartition:
38492 : return SpacePartition_get_field_count(node, code_mode);
38493 6 : case TAG_MPEG4_Storage:
38494 : return Storage_get_field_count(node, code_mode);
38495 : default:
38496 : return 0;
38497 : }
38498 : }
38499 :
38500 587604 : GF_Err gf_sg_mpeg4_node_get_field(GF_Node *node, GF_FieldInfo *field)
38501 : {
38502 587604 : switch (node->sgprivate->tag) {
38503 77 : case TAG_MPEG4_Anchor:
38504 77 : return Anchor_get_field(node, field);
38505 503 : case TAG_MPEG4_AnimationStream:
38506 503 : return AnimationStream_get_field(node, field);
38507 : case TAG_MPEG4_Appearance:
38508 : return Appearance_get_field(node, field);
38509 395 : case TAG_MPEG4_AudioBuffer:
38510 395 : return AudioBuffer_get_field(node, field);
38511 362 : case TAG_MPEG4_AudioClip:
38512 362 : return AudioClip_get_field(node, field);
38513 12 : case TAG_MPEG4_AudioDelay:
38514 12 : return AudioDelay_get_field(node, field);
38515 16 : case TAG_MPEG4_AudioFX:
38516 16 : return AudioFX_get_field(node, field);
38517 14 : case TAG_MPEG4_AudioMix:
38518 14 : return AudioMix_get_field(node, field);
38519 566 : case TAG_MPEG4_AudioSource:
38520 566 : return AudioSource_get_field(node, field);
38521 12 : case TAG_MPEG4_AudioSwitch:
38522 12 : return AudioSwitch_get_field(node, field);
38523 1093 : case TAG_MPEG4_Background:
38524 1093 : return Background_get_field(node, field);
38525 1691 : case TAG_MPEG4_Background2D:
38526 1691 : return Background2D_get_field(node, field);
38527 14 : case TAG_MPEG4_Billboard:
38528 14 : return Billboard_get_field(node, field);
38529 : case TAG_MPEG4_Bitmap:
38530 : return Bitmap_get_field(node, field);
38531 : case TAG_MPEG4_Box:
38532 : return Box_get_field(node, field);
38533 : case TAG_MPEG4_Circle:
38534 : return Circle_get_field(node, field);
38535 261 : case TAG_MPEG4_Collision:
38536 261 : return Collision_get_field(node, field);
38537 : case TAG_MPEG4_Color:
38538 : return Color_get_field(node, field);
38539 44 : case TAG_MPEG4_ColorInterpolator:
38540 44 : return ColorInterpolator_get_field(node, field);
38541 5156 : case TAG_MPEG4_CompositeTexture2D:
38542 5156 : return CompositeTexture2D_get_field(node, field);
38543 28 : case TAG_MPEG4_CompositeTexture3D:
38544 28 : return CompositeTexture3D_get_field(node, field);
38545 2621 : case TAG_MPEG4_Conditional:
38546 2621 : return Conditional_get_field(node, field);
38547 421 : case TAG_MPEG4_Cone:
38548 421 : return Cone_get_field(node, field);
38549 : case TAG_MPEG4_Coordinate:
38550 : return Coordinate_get_field(node, field);
38551 : case TAG_MPEG4_Coordinate2D:
38552 : return Coordinate2D_get_field(node, field);
38553 12 : case TAG_MPEG4_CoordinateInterpolator:
38554 12 : return CoordinateInterpolator_get_field(node, field);
38555 20 : case TAG_MPEG4_CoordinateInterpolator2D:
38556 20 : return CoordinateInterpolator2D_get_field(node, field);
38557 : case TAG_MPEG4_Curve2D:
38558 : return Curve2D_get_field(node, field);
38559 523 : case TAG_MPEG4_Cylinder:
38560 523 : return Cylinder_get_field(node, field);
38561 491 : case TAG_MPEG4_CylinderSensor:
38562 491 : return CylinderSensor_get_field(node, field);
38563 26 : case TAG_MPEG4_DirectionalLight:
38564 26 : return DirectionalLight_get_field(node, field);
38565 476 : case TAG_MPEG4_DiscSensor:
38566 476 : return DiscSensor_get_field(node, field);
38567 1208 : case TAG_MPEG4_ElevationGrid:
38568 1208 : return ElevationGrid_get_field(node, field);
38569 12 : case TAG_MPEG4_Expression:
38570 12 : return Expression_get_field(node, field);
38571 1149 : case TAG_MPEG4_Extrusion:
38572 1149 : return Extrusion_get_field(node, field);
38573 10 : case TAG_MPEG4_Face:
38574 10 : return Face_get_field(node, field);
38575 8 : case TAG_MPEG4_FaceDefMesh:
38576 8 : return FaceDefMesh_get_field(node, field);
38577 8 : case TAG_MPEG4_FaceDefTables:
38578 8 : return FaceDefTables_get_field(node, field);
38579 10 : case TAG_MPEG4_FaceDefTransform:
38580 10 : return FaceDefTransform_get_field(node, field);
38581 136 : case TAG_MPEG4_FAP:
38582 136 : return FAP_get_field(node, field);
38583 10 : case TAG_MPEG4_FDP:
38584 10 : return FDP_get_field(node, field);
38585 18 : case TAG_MPEG4_FIT:
38586 18 : return FIT_get_field(node, field);
38587 31 : case TAG_MPEG4_Fog:
38588 31 : return Fog_get_field(node, field);
38589 3419 : case TAG_MPEG4_FontStyle:
38590 3419 : return FontStyle_get_field(node, field);
38591 1026 : case TAG_MPEG4_Form:
38592 1026 : return Form_get_field(node, field);
38593 : case TAG_MPEG4_Group:
38594 : return Group_get_field(node, field);
38595 : case TAG_MPEG4_ImageTexture:
38596 : return ImageTexture_get_field(node, field);
38597 3104 : case TAG_MPEG4_IndexedFaceSet:
38598 3104 : return IndexedFaceSet_get_field(node, field);
38599 2727 : case TAG_MPEG4_IndexedFaceSet2D:
38600 2727 : return IndexedFaceSet2D_get_field(node, field);
38601 570 : case TAG_MPEG4_IndexedLineSet:
38602 570 : return IndexedLineSet_get_field(node, field);
38603 445 : case TAG_MPEG4_IndexedLineSet2D:
38604 445 : return IndexedLineSet2D_get_field(node, field);
38605 : case TAG_MPEG4_Inline:
38606 : return Inline_get_field(node, field);
38607 : case TAG_MPEG4_LOD:
38608 : return LOD_get_field(node, field);
38609 2585 : case TAG_MPEG4_Layer2D:
38610 2585 : return Layer2D_get_field(node, field);
38611 442 : case TAG_MPEG4_Layer3D:
38612 442 : return Layer3D_get_field(node, field);
38613 1831 : case TAG_MPEG4_Layout:
38614 1831 : return Layout_get_field(node, field);
38615 : case TAG_MPEG4_LineProperties:
38616 : return LineProperties_get_field(node, field);
38617 14 : case TAG_MPEG4_ListeningPoint:
38618 14 : return ListeningPoint_get_field(node, field);
38619 7128 : case TAG_MPEG4_Material:
38620 7128 : return Material_get_field(node, field);
38621 48726 : case TAG_MPEG4_Material2D:
38622 48726 : return Material2D_get_field(node, field);
38623 786 : case TAG_MPEG4_MovieTexture:
38624 786 : return MovieTexture_get_field(node, field);
38625 509 : case TAG_MPEG4_NavigationInfo:
38626 509 : return NavigationInfo_get_field(node, field);
38627 : case TAG_MPEG4_Normal:
38628 : return Normal_get_field(node, field);
38629 12 : case TAG_MPEG4_NormalInterpolator:
38630 12 : return NormalInterpolator_get_field(node, field);
38631 2685 : case TAG_MPEG4_OrderedGroup:
38632 2685 : return OrderedGroup_get_field(node, field);
38633 116 : case TAG_MPEG4_OrientationInterpolator:
38634 116 : return OrientationInterpolator_get_field(node, field);
38635 : case TAG_MPEG4_PixelTexture:
38636 : return PixelTexture_get_field(node, field);
38637 422 : case TAG_MPEG4_PlaneSensor:
38638 422 : return PlaneSensor_get_field(node, field);
38639 591 : case TAG_MPEG4_PlaneSensor2D:
38640 591 : return PlaneSensor2D_get_field(node, field);
38641 19 : case TAG_MPEG4_PointLight:
38642 19 : return PointLight_get_field(node, field);
38643 : case TAG_MPEG4_PointSet:
38644 : return PointSet_get_field(node, field);
38645 : case TAG_MPEG4_PointSet2D:
38646 : return PointSet2D_get_field(node, field);
38647 74 : case TAG_MPEG4_PositionInterpolator:
38648 74 : return PositionInterpolator_get_field(node, field);
38649 3236 : case TAG_MPEG4_PositionInterpolator2D:
38650 3236 : return PositionInterpolator2D_get_field(node, field);
38651 311 : case TAG_MPEG4_ProximitySensor2D:
38652 311 : return ProximitySensor2D_get_field(node, field);
38653 20 : case TAG_MPEG4_ProximitySensor:
38654 20 : return ProximitySensor_get_field(node, field);
38655 10092 : case TAG_MPEG4_QuantizationParameter:
38656 10092 : return QuantizationParameter_get_field(node, field);
38657 : case TAG_MPEG4_Rectangle:
38658 : return Rectangle_get_field(node, field);
38659 372 : case TAG_MPEG4_ScalarInterpolator:
38660 372 : return ScalarInterpolator_get_field(node, field);
38661 : case TAG_MPEG4_Script:
38662 : return Script_get_field(node, field);
38663 : case TAG_MPEG4_Shape:
38664 : return Shape_get_field(node, field);
38665 26 : case TAG_MPEG4_Sound:
38666 26 : return Sound_get_field(node, field);
38667 330 : case TAG_MPEG4_Sound2D:
38668 330 : return Sound2D_get_field(node, field);
38669 : case TAG_MPEG4_Sphere:
38670 : return Sphere_get_field(node, field);
38671 275 : case TAG_MPEG4_SphereSensor:
38672 275 : return SphereSensor_get_field(node, field);
38673 25 : case TAG_MPEG4_SpotLight:
38674 25 : return SpotLight_get_field(node, field);
38675 : case TAG_MPEG4_Switch:
38676 : return Switch_get_field(node, field);
38677 : case TAG_MPEG4_TermCap:
38678 : return TermCap_get_field(node, field);
38679 4698 : case TAG_MPEG4_Text:
38680 4698 : return Text_get_field(node, field);
38681 : case TAG_MPEG4_TextureCoordinate:
38682 : return TextureCoordinate_get_field(node, field);
38683 1553 : case TAG_MPEG4_TextureTransform:
38684 1553 : return TextureTransform_get_field(node, field);
38685 8238 : case TAG_MPEG4_TimeSensor:
38686 8238 : return TimeSensor_get_field(node, field);
38687 12483 : case TAG_MPEG4_TouchSensor:
38688 12483 : return TouchSensor_get_field(node, field);
38689 1897 : case TAG_MPEG4_Transform:
38690 1897 : return Transform_get_field(node, field);
38691 69411 : case TAG_MPEG4_Transform2D:
38692 69411 : return Transform2D_get_field(node, field);
38693 111132 : case TAG_MPEG4_Valuator:
38694 111132 : return Valuator_get_field(node, field);
38695 599 : case TAG_MPEG4_Viewpoint:
38696 599 : return Viewpoint_get_field(node, field);
38697 326 : case TAG_MPEG4_VisibilitySensor:
38698 326 : return VisibilitySensor_get_field(node, field);
38699 8 : case TAG_MPEG4_Viseme:
38700 8 : return Viseme_get_field(node, field);
38701 : case TAG_MPEG4_WorldInfo:
38702 : return WorldInfo_get_field(node, field);
38703 20 : case TAG_MPEG4_AcousticMaterial:
38704 20 : return AcousticMaterial_get_field(node, field);
38705 12 : case TAG_MPEG4_AcousticScene:
38706 12 : return AcousticScene_get_field(node, field);
38707 14 : case TAG_MPEG4_ApplicationWindow:
38708 14 : return ApplicationWindow_get_field(node, field);
38709 592 : case TAG_MPEG4_BAP:
38710 592 : return BAP_get_field(node, field);
38711 : case TAG_MPEG4_BDP:
38712 : return BDP_get_field(node, field);
38713 : case TAG_MPEG4_Body:
38714 : return Body_get_field(node, field);
38715 12 : case TAG_MPEG4_BodyDefTable:
38716 12 : return BodyDefTable_get_field(node, field);
38717 8 : case TAG_MPEG4_BodySegmentConnectionHint:
38718 8 : return BodySegmentConnectionHint_get_field(node, field);
38719 26 : case TAG_MPEG4_DirectiveSound:
38720 26 : return DirectiveSound_get_field(node, field);
38721 8 : case TAG_MPEG4_Hierarchical3DMesh:
38722 8 : return Hierarchical3DMesh_get_field(node, field);
38723 167 : case TAG_MPEG4_MaterialKey:
38724 167 : return MaterialKey_get_field(node, field);
38725 38 : case TAG_MPEG4_PerceptualParameters:
38726 38 : return PerceptualParameters_get_field(node, field);
38727 26 : case TAG_MPEG4_TemporalTransform:
38728 26 : return TemporalTransform_get_field(node, field);
38729 18 : case TAG_MPEG4_TemporalGroup:
38730 18 : return TemporalGroup_get_field(node, field);
38731 85 : case TAG_MPEG4_ServerCommand:
38732 85 : return ServerCommand_get_field(node, field);
38733 642 : case TAG_MPEG4_InputSensor:
38734 642 : return InputSensor_get_field(node, field);
38735 14 : case TAG_MPEG4_MatteTexture:
38736 14 : return MatteTexture_get_field(node, field);
38737 12 : case TAG_MPEG4_MediaBuffer:
38738 12 : return MediaBuffer_get_field(node, field);
38739 1236 : case TAG_MPEG4_MediaControl:
38740 1236 : return MediaControl_get_field(node, field);
38741 94 : case TAG_MPEG4_MediaSensor:
38742 94 : return MediaSensor_get_field(node, field);
38743 320 : case TAG_MPEG4_BitWrapper:
38744 320 : return BitWrapper_get_field(node, field);
38745 12 : case TAG_MPEG4_CoordinateInterpolator4D:
38746 12 : return CoordinateInterpolator4D_get_field(node, field);
38747 14 : case TAG_MPEG4_DepthImage:
38748 14 : return DepthImage_get_field(node, field);
38749 26 : case TAG_MPEG4_FFD:
38750 26 : return FFD_get_field(node, field);
38751 10 : case TAG_MPEG4_Implicit:
38752 10 : return Implicit_get_field(node, field);
38753 8 : case TAG_MPEG4_XXLFM_Appearance:
38754 8 : return XXLFM_Appearance_get_field(node, field);
38755 : case TAG_MPEG4_XXLFM_BlendList:
38756 : return XXLFM_BlendList_get_field(node, field);
38757 : case TAG_MPEG4_XXLFM_FrameList:
38758 : return XXLFM_FrameList_get_field(node, field);
38759 10 : case TAG_MPEG4_XXLFM_LightMap:
38760 10 : return XXLFM_LightMap_get_field(node, field);
38761 8 : case TAG_MPEG4_XXLFM_SurfaceMapList:
38762 8 : return XXLFM_SurfaceMapList_get_field(node, field);
38763 8 : case TAG_MPEG4_XXLFM_ViewMapList:
38764 8 : return XXLFM_ViewMapList_get_field(node, field);
38765 46 : case TAG_MPEG4_MeshGrid:
38766 46 : return MeshGrid_get_field(node, field);
38767 568 : case TAG_MPEG4_NonLinearDeformer:
38768 568 : return NonLinearDeformer_get_field(node, field);
38769 16 : case TAG_MPEG4_NurbsCurve:
38770 16 : return NurbsCurve_get_field(node, field);
38771 16 : case TAG_MPEG4_NurbsCurve2D:
38772 16 : return NurbsCurve2D_get_field(node, field);
38773 36 : case TAG_MPEG4_NurbsSurface:
38774 36 : return NurbsSurface_get_field(node, field);
38775 8 : case TAG_MPEG4_OctreeImage:
38776 8 : return OctreeImage_get_field(node, field);
38777 50 : case TAG_MPEG4_XXParticles:
38778 50 : return XXParticles_get_field(node, field);
38779 : case TAG_MPEG4_XXParticleInitBox:
38780 : return XXParticleInitBox_get_field(node, field);
38781 8 : case TAG_MPEG4_XXPlanarObstacle:
38782 8 : return XXPlanarObstacle_get_field(node, field);
38783 8 : case TAG_MPEG4_XXPointAttractor:
38784 8 : return XXPointAttractor_get_field(node, field);
38785 10 : case TAG_MPEG4_PointTexture:
38786 10 : return PointTexture_get_field(node, field);
38787 35 : case TAG_MPEG4_PositionAnimator:
38788 35 : return PositionAnimator_get_field(node, field);
38789 44 : case TAG_MPEG4_PositionAnimator2D:
38790 44 : return PositionAnimator2D_get_field(node, field);
38791 12 : case TAG_MPEG4_PositionInterpolator4D:
38792 12 : return PositionInterpolator4D_get_field(node, field);
38793 40 : case TAG_MPEG4_ProceduralTexture:
38794 40 : return ProceduralTexture_get_field(node, field);
38795 20 : case TAG_MPEG4_Quadric:
38796 20 : return Quadric_get_field(node, field);
38797 48 : case TAG_MPEG4_SBBone:
38798 48 : return SBBone_get_field(node, field);
38799 12 : case TAG_MPEG4_SBMuscle:
38800 12 : return SBMuscle_get_field(node, field);
38801 14 : case TAG_MPEG4_SBSegment:
38802 14 : return SBSegment_get_field(node, field);
38803 18 : case TAG_MPEG4_SBSite:
38804 18 : return SBSite_get_field(node, field);
38805 30 : case TAG_MPEG4_SBSkinnedModel:
38806 30 : return SBSkinnedModel_get_field(node, field);
38807 : case TAG_MPEG4_SBVCAnimation:
38808 : return SBVCAnimation_get_field(node, field);
38809 30 : case TAG_MPEG4_ScalarAnimator:
38810 30 : return ScalarAnimator_get_field(node, field);
38811 : case TAG_MPEG4_SimpleTexture:
38812 : return SimpleTexture_get_field(node, field);
38813 : case TAG_MPEG4_SolidRep:
38814 : return SolidRep_get_field(node, field);
38815 52 : case TAG_MPEG4_SubdivisionSurface:
38816 52 : return SubdivisionSurface_get_field(node, field);
38817 14 : case TAG_MPEG4_SubdivSurfaceSector:
38818 14 : return SubdivSurfaceSector_get_field(node, field);
38819 8 : case TAG_MPEG4_WaveletSubdivisionSurface:
38820 8 : return WaveletSubdivisionSurface_get_field(node, field);
38821 362 : case TAG_MPEG4_Clipper2D:
38822 362 : return Clipper2D_get_field(node, field);
38823 25453 : case TAG_MPEG4_ColorTransform:
38824 25453 : return ColorTransform_get_field(node, field);
38825 : case TAG_MPEG4_Ellipse:
38826 : return Ellipse_get_field(node, field);
38827 5675 : case TAG_MPEG4_LinearGradient:
38828 5675 : return LinearGradient_get_field(node, field);
38829 627 : case TAG_MPEG4_PathLayout:
38830 627 : return PathLayout_get_field(node, field);
38831 8364 : case TAG_MPEG4_RadialGradient:
38832 8364 : return RadialGradient_get_field(node, field);
38833 22 : case TAG_MPEG4_SynthesizedTexture:
38834 22 : return SynthesizedTexture_get_field(node, field);
38835 64458 : case TAG_MPEG4_TransformMatrix2D:
38836 64458 : return TransformMatrix2D_get_field(node, field);
38837 863 : case TAG_MPEG4_Viewport:
38838 863 : return Viewport_get_field(node, field);
38839 : case TAG_MPEG4_XCurve2D:
38840 : return XCurve2D_get_field(node, field);
38841 34 : case TAG_MPEG4_XFontStyle:
38842 34 : return XFontStyle_get_field(node, field);
38843 44624 : case TAG_MPEG4_XLineProperties:
38844 44624 : return XLineProperties_get_field(node, field);
38845 36 : case TAG_MPEG4_AdvancedAudioBuffer:
38846 36 : return AdvancedAudioBuffer_get_field(node, field);
38847 44 : case TAG_MPEG4_AudioChannelConfig:
38848 44 : return AudioChannelConfig_get_field(node, field);
38849 16 : case TAG_MPEG4_DepthImageV2:
38850 16 : return DepthImageV2_get_field(node, field);
38851 8 : case TAG_MPEG4_MorphShape:
38852 8 : return MorphShape_get_field(node, field);
38853 16 : case TAG_MPEG4_MultiTexture:
38854 16 : return MultiTexture_get_field(node, field);
38855 16 : case TAG_MPEG4_PointTextureV2:
38856 16 : return PointTextureV2_get_field(node, field);
38857 20 : case TAG_MPEG4_SBVCAnimationV2:
38858 20 : return SBVCAnimationV2_get_field(node, field);
38859 10 : case TAG_MPEG4_SimpleTextureV2:
38860 10 : return SimpleTextureV2_get_field(node, field);
38861 14 : case TAG_MPEG4_SurroundingSound:
38862 14 : return SurroundingSound_get_field(node, field);
38863 18 : case TAG_MPEG4_Transform3DAudio:
38864 18 : return Transform3DAudio_get_field(node, field);
38865 366 : case TAG_MPEG4_WideSound:
38866 366 : return WideSound_get_field(node, field);
38867 : case TAG_MPEG4_ScoreShape:
38868 : return ScoreShape_get_field(node, field);
38869 62 : case TAG_MPEG4_MusicScore:
38870 62 : return MusicScore_get_field(node, field);
38871 : case TAG_MPEG4_FootPrintSetNode:
38872 : return FootPrintSetNode_get_field(node, field);
38873 : case TAG_MPEG4_FootPrintNode:
38874 : return FootPrintNode_get_field(node, field);
38875 16 : case TAG_MPEG4_BuildingPartNode:
38876 16 : return BuildingPartNode_get_field(node, field);
38877 24 : case TAG_MPEG4_RoofNode:
38878 24 : return RoofNode_get_field(node, field);
38879 26 : case TAG_MPEG4_FacadeNode:
38880 26 : return FacadeNode_get_field(node, field);
38881 132 : case TAG_MPEG4_Shadow:
38882 132 : return Shadow_get_field(node, field);
38883 683 : case TAG_MPEG4_CacheTexture:
38884 683 : return CacheTexture_get_field(node, field);
38885 597 : case TAG_MPEG4_EnvironmentTest:
38886 597 : return EnvironmentTest_get_field(node, field);
38887 101 : case TAG_MPEG4_KeyNavigator:
38888 101 : return KeyNavigator_get_field(node, field);
38889 8 : case TAG_MPEG4_SpacePartition:
38890 8 : return SpacePartition_get_field(node, field);
38891 15 : case TAG_MPEG4_Storage:
38892 15 : return Storage_get_field(node, field);
38893 : default:
38894 : return GF_BAD_PARAM;
38895 : }
38896 : }
38897 :
38898 96016 : GF_Err gf_sg_mpeg4_node_get_field_index(GF_Node *node, u32 inField, u8 code_mode, u32 *fieldIndex)
38899 : {
38900 96016 : switch (node->sgprivate->tag) {
38901 48 : case TAG_MPEG4_Anchor:
38902 : return Anchor_get_field_index(node, inField, code_mode, fieldIndex);
38903 148 : case TAG_MPEG4_AnimationStream:
38904 : return AnimationStream_get_field_index(node, inField, code_mode, fieldIndex);
38905 4830 : case TAG_MPEG4_Appearance:
38906 : return Appearance_get_field_index(node, inField, code_mode, fieldIndex);
38907 114 : case TAG_MPEG4_AudioBuffer:
38908 : return AudioBuffer_get_field_index(node, inField, code_mode, fieldIndex);
38909 102 : case TAG_MPEG4_AudioClip:
38910 : return AudioClip_get_field_index(node, inField, code_mode, fieldIndex);
38911 6 : case TAG_MPEG4_AudioDelay:
38912 : return AudioDelay_get_field_index(node, inField, code_mode, fieldIndex);
38913 8 : case TAG_MPEG4_AudioFX:
38914 : return AudioFX_get_field_index(node, inField, code_mode, fieldIndex);
38915 7 : case TAG_MPEG4_AudioMix:
38916 : return AudioMix_get_field_index(node, inField, code_mode, fieldIndex);
38917 136 : case TAG_MPEG4_AudioSource:
38918 : return AudioSource_get_field_index(node, inField, code_mode, fieldIndex);
38919 6 : case TAG_MPEG4_AudioSwitch:
38920 : return AudioSwitch_get_field_index(node, inField, code_mode, fieldIndex);
38921 302 : case TAG_MPEG4_Background:
38922 : return Background_get_field_index(node, inField, code_mode, fieldIndex);
38923 340 : case TAG_MPEG4_Background2D:
38924 : return Background2D_get_field_index(node, inField, code_mode, fieldIndex);
38925 4 : case TAG_MPEG4_Billboard:
38926 : return Billboard_get_field_index(node, inField, code_mode, fieldIndex);
38927 24 : case TAG_MPEG4_Bitmap:
38928 : return Bitmap_get_field_index(node, inField, code_mode, fieldIndex);
38929 36 : case TAG_MPEG4_Box:
38930 : return Box_get_field_index(node, inField, code_mode, fieldIndex);
38931 110 : case TAG_MPEG4_Circle:
38932 : return Circle_get_field_index(node, inField, code_mode, fieldIndex);
38933 81 : case TAG_MPEG4_Collision:
38934 : return Collision_get_field_index(node, inField, code_mode, fieldIndex);
38935 71 : case TAG_MPEG4_Color:
38936 : return Color_get_field_index(node, inField, code_mode, fieldIndex);
38937 4 : case TAG_MPEG4_ColorInterpolator:
38938 : return ColorInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
38939 8 : case TAG_MPEG4_CompositeTexture2D:
38940 : return CompositeTexture2D_get_field_index(node, inField, code_mode, fieldIndex);
38941 11 : case TAG_MPEG4_CompositeTexture3D:
38942 : return CompositeTexture3D_get_field_index(node, inField, code_mode, fieldIndex);
38943 372 : case TAG_MPEG4_Conditional:
38944 : return Conditional_get_field_index(node, inField, code_mode, fieldIndex);
38945 114 : case TAG_MPEG4_Cone:
38946 : return Cone_get_field_index(node, inField, code_mode, fieldIndex);
38947 106 : case TAG_MPEG4_Coordinate:
38948 : return Coordinate_get_field_index(node, inField, code_mode, fieldIndex);
38949 2126 : case TAG_MPEG4_Coordinate2D:
38950 : return Coordinate2D_get_field_index(node, inField, code_mode, fieldIndex);
38951 4 : case TAG_MPEG4_CoordinateInterpolator:
38952 : return CoordinateInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
38953 4 : case TAG_MPEG4_CoordinateInterpolator2D:
38954 : return CoordinateInterpolator2D_get_field_index(node, inField, code_mode, fieldIndex);
38955 3231 : case TAG_MPEG4_Curve2D:
38956 : return Curve2D_get_field_index(node, inField, code_mode, fieldIndex);
38957 135 : case TAG_MPEG4_Cylinder:
38958 : return Cylinder_get_field_index(node, inField, code_mode, fieldIndex);
38959 129 : case TAG_MPEG4_CylinderSensor:
38960 : return CylinderSensor_get_field_index(node, inField, code_mode, fieldIndex);
38961 5 : case TAG_MPEG4_DirectionalLight:
38962 : return DirectionalLight_get_field_index(node, inField, code_mode, fieldIndex);
38963 123 : case TAG_MPEG4_DiscSensor:
38964 : return DiscSensor_get_field_index(node, inField, code_mode, fieldIndex);
38965 364 : case TAG_MPEG4_ElevationGrid:
38966 : return ElevationGrid_get_field_index(node, inField, code_mode, fieldIndex);
38967 6 : case TAG_MPEG4_Expression:
38968 : return Expression_get_field_index(node, inField, code_mode, fieldIndex);
38969 304 : case TAG_MPEG4_Extrusion:
38970 : return Extrusion_get_field_index(node, inField, code_mode, fieldIndex);
38971 5 : case TAG_MPEG4_Face:
38972 : return Face_get_field_index(node, inField, code_mode, fieldIndex);
38973 4 : case TAG_MPEG4_FaceDefMesh:
38974 : return FaceDefMesh_get_field_index(node, inField, code_mode, fieldIndex);
38975 4 : case TAG_MPEG4_FaceDefTables:
38976 : return FaceDefTables_get_field_index(node, inField, code_mode, fieldIndex);
38977 5 : case TAG_MPEG4_FaceDefTransform:
38978 : return FaceDefTransform_get_field_index(node, inField, code_mode, fieldIndex);
38979 68 : case TAG_MPEG4_FAP:
38980 : return FAP_get_field_index(node, inField, code_mode, fieldIndex);
38981 5 : case TAG_MPEG4_FDP:
38982 : return FDP_get_field_index(node, inField, code_mode, fieldIndex);
38983 9 : case TAG_MPEG4_FIT:
38984 : return FIT_get_field_index(node, inField, code_mode, fieldIndex);
38985 5 : case TAG_MPEG4_Fog:
38986 : return Fog_get_field_index(node, inField, code_mode, fieldIndex);
38987 352 : case TAG_MPEG4_FontStyle:
38988 : return FontStyle_get_field_index(node, inField, code_mode, fieldIndex);
38989 167 : case TAG_MPEG4_Form:
38990 : return Form_get_field_index(node, inField, code_mode, fieldIndex);
38991 207 : case TAG_MPEG4_Group:
38992 : return Group_get_field_index(node, inField, code_mode, fieldIndex);
38993 171 : case TAG_MPEG4_ImageTexture:
38994 : return ImageTexture_get_field_index(node, inField, code_mode, fieldIndex);
38995 948 : case TAG_MPEG4_IndexedFaceSet:
38996 : return IndexedFaceSet_get_field_index(node, inField, code_mode, fieldIndex);
38997 667 : case TAG_MPEG4_IndexedFaceSet2D:
38998 : return IndexedFaceSet2D_get_field_index(node, inField, code_mode, fieldIndex);
38999 167 : case TAG_MPEG4_IndexedLineSet:
39000 : return IndexedLineSet_get_field_index(node, inField, code_mode, fieldIndex);
39001 122 : case TAG_MPEG4_IndexedLineSet2D:
39002 : return IndexedLineSet2D_get_field_index(node, inField, code_mode, fieldIndex);
39003 1 : case TAG_MPEG4_Inline:
39004 : return Inline_get_field_index(node, inField, code_mode, fieldIndex);
39005 3 : case TAG_MPEG4_LOD:
39006 : return LOD_get_field_index(node, inField, code_mode, fieldIndex);
39007 101 : case TAG_MPEG4_Layer2D:
39008 : return Layer2D_get_field_index(node, inField, code_mode, fieldIndex);
39009 158 : case TAG_MPEG4_Layer3D:
39010 : return Layer3D_get_field_index(node, inField, code_mode, fieldIndex);
39011 275 : case TAG_MPEG4_Layout:
39012 : return Layout_get_field_index(node, inField, code_mode, fieldIndex);
39013 749 : case TAG_MPEG4_LineProperties:
39014 : return LineProperties_get_field_index(node, inField, code_mode, fieldIndex);
39015 7 : case TAG_MPEG4_ListeningPoint:
39016 : return ListeningPoint_get_field_index(node, inField, code_mode, fieldIndex);
39017 117 : case TAG_MPEG4_Material:
39018 : return Material_get_field_index(node, inField, code_mode, fieldIndex);
39019 6011 : case TAG_MPEG4_Material2D:
39020 : return Material2D_get_field_index(node, inField, code_mode, fieldIndex);
39021 194 : case TAG_MPEG4_MovieTexture:
39022 : return MovieTexture_get_field_index(node, inField, code_mode, fieldIndex);
39023 137 : case TAG_MPEG4_NavigationInfo:
39024 : return NavigationInfo_get_field_index(node, inField, code_mode, fieldIndex);
39025 36 : case TAG_MPEG4_Normal:
39026 : return Normal_get_field_index(node, inField, code_mode, fieldIndex);
39027 4 : case TAG_MPEG4_NormalInterpolator:
39028 : return NormalInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
39029 948 : case TAG_MPEG4_OrderedGroup:
39030 : return OrderedGroup_get_field_index(node, inField, code_mode, fieldIndex);
39031 4 : case TAG_MPEG4_OrientationInterpolator:
39032 : return OrientationInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
39033 78 : case TAG_MPEG4_PixelTexture:
39034 : return PixelTexture_get_field_index(node, inField, code_mode, fieldIndex);
39035 108 : case TAG_MPEG4_PlaneSensor:
39036 : return PlaneSensor_get_field_index(node, inField, code_mode, fieldIndex);
39037 137 : case TAG_MPEG4_PlaneSensor2D:
39038 : return PlaneSensor2D_get_field_index(node, inField, code_mode, fieldIndex);
39039 7 : case TAG_MPEG4_PointLight:
39040 : return PointLight_get_field_index(node, inField, code_mode, fieldIndex);
39041 57 : case TAG_MPEG4_PointSet:
39042 : return PointSet_get_field_index(node, inField, code_mode, fieldIndex);
39043 57 : case TAG_MPEG4_PointSet2D:
39044 : return PointSet2D_get_field_index(node, inField, code_mode, fieldIndex);
39045 4 : case TAG_MPEG4_PositionInterpolator:
39046 : return PositionInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
39047 4 : case TAG_MPEG4_PositionInterpolator2D:
39048 : return PositionInterpolator2D_get_field_index(node, inField, code_mode, fieldIndex);
39049 68 : case TAG_MPEG4_ProximitySensor2D:
39050 : return ProximitySensor2D_get_field_index(node, inField, code_mode, fieldIndex);
39051 8 : case TAG_MPEG4_ProximitySensor:
39052 : return ProximitySensor_get_field_index(node, inField, code_mode, fieldIndex);
39053 2645 : case TAG_MPEG4_QuantizationParameter:
39054 : return QuantizationParameter_get_field_index(node, inField, code_mode, fieldIndex);
39055 106 : case TAG_MPEG4_Rectangle:
39056 : return Rectangle_get_field_index(node, inField, code_mode, fieldIndex);
39057 4 : case TAG_MPEG4_ScalarInterpolator:
39058 : return ScalarInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
39059 78 : case TAG_MPEG4_Script:
39060 : return Script_get_field_index(node, inField, code_mode, fieldIndex);
39061 7923 : case TAG_MPEG4_Shape:
39062 : return Shape_get_field_index(node, inField, code_mode, fieldIndex);
39063 10 : case TAG_MPEG4_Sound:
39064 : return Sound_get_field_index(node, inField, code_mode, fieldIndex);
39065 80 : case TAG_MPEG4_Sound2D:
39066 : return Sound2D_get_field_index(node, inField, code_mode, fieldIndex);
39067 36 : case TAG_MPEG4_Sphere:
39068 : return Sphere_get_field_index(node, inField, code_mode, fieldIndex);
39069 66 : case TAG_MPEG4_SphereSensor:
39070 : return SphereSensor_get_field_index(node, inField, code_mode, fieldIndex);
39071 10 : case TAG_MPEG4_SpotLight:
39072 : return SpotLight_get_field_index(node, inField, code_mode, fieldIndex);
39073 666 : case TAG_MPEG4_Switch:
39074 : return Switch_get_field_index(node, inField, code_mode, fieldIndex);
39075 3 : case TAG_MPEG4_TermCap:
39076 : return TermCap_get_field_index(node, inField, code_mode, fieldIndex);
39077 185 : case TAG_MPEG4_Text:
39078 : return Text_get_field_index(node, inField, code_mode, fieldIndex);
39079 1 : case TAG_MPEG4_TextureCoordinate:
39080 : return TextureCoordinate_get_field_index(node, inField, code_mode, fieldIndex);
39081 99 : case TAG_MPEG4_TextureTransform:
39082 : return TextureTransform_get_field_index(node, inField, code_mode, fieldIndex);
39083 82 : case TAG_MPEG4_TimeSensor:
39084 : return TimeSensor_get_field_index(node, inField, code_mode, fieldIndex);
39085 771 : case TAG_MPEG4_TouchSensor:
39086 : return TouchSensor_get_field_index(node, inField, code_mode, fieldIndex);
39087 443 : case TAG_MPEG4_Transform:
39088 : return Transform_get_field_index(node, inField, code_mode, fieldIndex);
39089 19738 : case TAG_MPEG4_Transform2D:
39090 : return Transform2D_get_field_index(node, inField, code_mode, fieldIndex);
39091 2155 : case TAG_MPEG4_Valuator:
39092 : return Valuator_get_field_index(node, inField, code_mode, fieldIndex);
39093 138 : case TAG_MPEG4_Viewpoint:
39094 : return Viewpoint_get_field_index(node, inField, code_mode, fieldIndex);
39095 66 : case TAG_MPEG4_VisibilitySensor:
39096 : return VisibilitySensor_get_field_index(node, inField, code_mode, fieldIndex);
39097 4 : case TAG_MPEG4_Viseme:
39098 : return Viseme_get_field_index(node, inField, code_mode, fieldIndex);
39099 174 : case TAG_MPEG4_WorldInfo:
39100 : return WorldInfo_get_field_index(node, inField, code_mode, fieldIndex);
39101 10 : case TAG_MPEG4_AcousticMaterial:
39102 : return AcousticMaterial_get_field_index(node, inField, code_mode, fieldIndex);
39103 6 : case TAG_MPEG4_AcousticScene:
39104 : return AcousticScene_get_field_index(node, inField, code_mode, fieldIndex);
39105 7 : case TAG_MPEG4_ApplicationWindow:
39106 : return ApplicationWindow_get_field_index(node, inField, code_mode, fieldIndex);
39107 296 : case TAG_MPEG4_BAP:
39108 : return BAP_get_field_index(node, inField, code_mode, fieldIndex);
39109 2 : case TAG_MPEG4_BDP:
39110 : return BDP_get_field_index(node, inField, code_mode, fieldIndex);
39111 3 : case TAG_MPEG4_Body:
39112 : return Body_get_field_index(node, inField, code_mode, fieldIndex);
39113 6 : case TAG_MPEG4_BodyDefTable:
39114 : return BodyDefTable_get_field_index(node, inField, code_mode, fieldIndex);
39115 4 : case TAG_MPEG4_BodySegmentConnectionHint:
39116 : return BodySegmentConnectionHint_get_field_index(node, inField, code_mode, fieldIndex);
39117 13 : case TAG_MPEG4_DirectiveSound:
39118 : return DirectiveSound_get_field_index(node, inField, code_mode, fieldIndex);
39119 4 : case TAG_MPEG4_Hierarchical3DMesh:
39120 : return Hierarchical3DMesh_get_field_index(node, inField, code_mode, fieldIndex);
39121 48 : case TAG_MPEG4_MaterialKey:
39122 : return MaterialKey_get_field_index(node, inField, code_mode, fieldIndex);
39123 19 : case TAG_MPEG4_PerceptualParameters:
39124 : return PerceptualParameters_get_field_index(node, inField, code_mode, fieldIndex);
39125 13 : case TAG_MPEG4_TemporalTransform:
39126 : return TemporalTransform_get_field_index(node, inField, code_mode, fieldIndex);
39127 9 : case TAG_MPEG4_TemporalGroup:
39128 : return TemporalGroup_get_field_index(node, inField, code_mode, fieldIndex);
39129 25 : case TAG_MPEG4_ServerCommand:
39130 : return ServerCommand_get_field_index(node, inField, code_mode, fieldIndex);
39131 184 : case TAG_MPEG4_InputSensor:
39132 : return InputSensor_get_field_index(node, inField, code_mode, fieldIndex);
39133 7 : case TAG_MPEG4_MatteTexture:
39134 : return MatteTexture_get_field_index(node, inField, code_mode, fieldIndex);
39135 6 : case TAG_MPEG4_MediaBuffer:
39136 : return MediaBuffer_get_field_index(node, inField, code_mode, fieldIndex);
39137 371 : case TAG_MPEG4_MediaControl:
39138 : return MediaControl_get_field_index(node, inField, code_mode, fieldIndex);
39139 6 : case TAG_MPEG4_MediaSensor:
39140 : return MediaSensor_get_field_index(node, inField, code_mode, fieldIndex);
39141 103 : case TAG_MPEG4_BitWrapper:
39142 : return BitWrapper_get_field_index(node, inField, code_mode, fieldIndex);
39143 4 : case TAG_MPEG4_CoordinateInterpolator4D:
39144 : return CoordinateInterpolator4D_get_field_index(node, inField, code_mode, fieldIndex);
39145 7 : case TAG_MPEG4_DepthImage:
39146 : return DepthImage_get_field_index(node, inField, code_mode, fieldIndex);
39147 13 : case TAG_MPEG4_FFD:
39148 : return FFD_get_field_index(node, inField, code_mode, fieldIndex);
39149 5 : case TAG_MPEG4_Implicit:
39150 : return Implicit_get_field_index(node, inField, code_mode, fieldIndex);
39151 4 : case TAG_MPEG4_XXLFM_Appearance:
39152 : return XXLFM_Appearance_get_field_index(node, inField, code_mode, fieldIndex);
39153 2 : case TAG_MPEG4_XXLFM_BlendList:
39154 : return XXLFM_BlendList_get_field_index(node, inField, code_mode, fieldIndex);
39155 2 : case TAG_MPEG4_XXLFM_FrameList:
39156 : return XXLFM_FrameList_get_field_index(node, inField, code_mode, fieldIndex);
39157 5 : case TAG_MPEG4_XXLFM_LightMap:
39158 : return XXLFM_LightMap_get_field_index(node, inField, code_mode, fieldIndex);
39159 4 : case TAG_MPEG4_XXLFM_SurfaceMapList:
39160 : return XXLFM_SurfaceMapList_get_field_index(node, inField, code_mode, fieldIndex);
39161 4 : case TAG_MPEG4_XXLFM_ViewMapList:
39162 : return XXLFM_ViewMapList_get_field_index(node, inField, code_mode, fieldIndex);
39163 23 : case TAG_MPEG4_MeshGrid:
39164 : return MeshGrid_get_field_index(node, inField, code_mode, fieldIndex);
39165 165 : case TAG_MPEG4_NonLinearDeformer:
39166 : return NonLinearDeformer_get_field_index(node, inField, code_mode, fieldIndex);
39167 8 : case TAG_MPEG4_NurbsCurve:
39168 : return NurbsCurve_get_field_index(node, inField, code_mode, fieldIndex);
39169 8 : case TAG_MPEG4_NurbsCurve2D:
39170 : return NurbsCurve2D_get_field_index(node, inField, code_mode, fieldIndex);
39171 18 : case TAG_MPEG4_NurbsSurface:
39172 : return NurbsSurface_get_field_index(node, inField, code_mode, fieldIndex);
39173 4 : case TAG_MPEG4_OctreeImage:
39174 : return OctreeImage_get_field_index(node, inField, code_mode, fieldIndex);
39175 25 : case TAG_MPEG4_XXParticles:
39176 : return XXParticles_get_field_index(node, inField, code_mode, fieldIndex);
39177 2 : case TAG_MPEG4_XXParticleInitBox:
39178 : return XXParticleInitBox_get_field_index(node, inField, code_mode, fieldIndex);
39179 4 : case TAG_MPEG4_XXPlanarObstacle:
39180 : return XXPlanarObstacle_get_field_index(node, inField, code_mode, fieldIndex);
39181 4 : case TAG_MPEG4_XXPointAttractor:
39182 : return XXPointAttractor_get_field_index(node, inField, code_mode, fieldIndex);
39183 5 : case TAG_MPEG4_PointTexture:
39184 : return PointTexture_get_field_index(node, inField, code_mode, fieldIndex);
39185 13 : case TAG_MPEG4_PositionAnimator:
39186 : return PositionAnimator_get_field_index(node, inField, code_mode, fieldIndex);
39187 13 : case TAG_MPEG4_PositionAnimator2D:
39188 : return PositionAnimator2D_get_field_index(node, inField, code_mode, fieldIndex);
39189 4 : case TAG_MPEG4_PositionInterpolator4D:
39190 : return PositionInterpolator4D_get_field_index(node, inField, code_mode, fieldIndex);
39191 20 : case TAG_MPEG4_ProceduralTexture:
39192 : return ProceduralTexture_get_field_index(node, inField, code_mode, fieldIndex);
39193 10 : case TAG_MPEG4_Quadric:
39194 : return Quadric_get_field_index(node, inField, code_mode, fieldIndex);
39195 24 : case TAG_MPEG4_SBBone:
39196 : return SBBone_get_field_index(node, inField, code_mode, fieldIndex);
39197 6 : case TAG_MPEG4_SBMuscle:
39198 : return SBMuscle_get_field_index(node, inField, code_mode, fieldIndex);
39199 7 : case TAG_MPEG4_SBSegment:
39200 : return SBSegment_get_field_index(node, inField, code_mode, fieldIndex);
39201 9 : case TAG_MPEG4_SBSite:
39202 : return SBSite_get_field_index(node, inField, code_mode, fieldIndex);
39203 15 : case TAG_MPEG4_SBSkinnedModel:
39204 : return SBSkinnedModel_get_field_index(node, inField, code_mode, fieldIndex);
39205 2 : case TAG_MPEG4_SBVCAnimation:
39206 : return SBVCAnimation_get_field_index(node, inField, code_mode, fieldIndex);
39207 11 : case TAG_MPEG4_ScalarAnimator:
39208 : return ScalarAnimator_get_field_index(node, inField, code_mode, fieldIndex);
39209 2 : case TAG_MPEG4_SimpleTexture:
39210 : return SimpleTexture_get_field_index(node, inField, code_mode, fieldIndex);
39211 3 : case TAG_MPEG4_SolidRep:
39212 : return SolidRep_get_field_index(node, inField, code_mode, fieldIndex);
39213 26 : case TAG_MPEG4_SubdivisionSurface:
39214 : return SubdivisionSurface_get_field_index(node, inField, code_mode, fieldIndex);
39215 7 : case TAG_MPEG4_SubdivSurfaceSector:
39216 : return SubdivSurfaceSector_get_field_index(node, inField, code_mode, fieldIndex);
39217 4 : case TAG_MPEG4_WaveletSubdivisionSurface:
39218 : return WaveletSubdivisionSurface_get_field_index(node, inField, code_mode, fieldIndex);
39219 122 : case TAG_MPEG4_Clipper2D:
39220 : return Clipper2D_get_field_index(node, inField, code_mode, fieldIndex);
39221 2024 : case TAG_MPEG4_ColorTransform:
39222 : return ColorTransform_get_field_index(node, inField, code_mode, fieldIndex);
39223 1 : case TAG_MPEG4_Ellipse:
39224 : return Ellipse_get_field_index(node, inField, code_mode, fieldIndex);
39225 906 : case TAG_MPEG4_LinearGradient:
39226 : return LinearGradient_get_field_index(node, inField, code_mode, fieldIndex);
39227 185 : case TAG_MPEG4_PathLayout:
39228 : return PathLayout_get_field_index(node, inField, code_mode, fieldIndex);
39229 221 : case TAG_MPEG4_RadialGradient:
39230 : return RadialGradient_get_field_index(node, inField, code_mode, fieldIndex);
39231 11 : case TAG_MPEG4_SynthesizedTexture:
39232 : return SynthesizedTexture_get_field_index(node, inField, code_mode, fieldIndex);
39233 27524 : case TAG_MPEG4_TransformMatrix2D:
39234 : return TransformMatrix2D_get_field_index(node, inField, code_mode, fieldIndex);
39235 174 : case TAG_MPEG4_Viewport:
39236 : return Viewport_get_field_index(node, inField, code_mode, fieldIndex);
39237 1164 : case TAG_MPEG4_XCurve2D:
39238 : return XCurve2D_get_field_index(node, inField, code_mode, fieldIndex);
39239 17 : case TAG_MPEG4_XFontStyle:
39240 : return XFontStyle_get_field_index(node, inField, code_mode, fieldIndex);
39241 303 : case TAG_MPEG4_XLineProperties:
39242 : return XLineProperties_get_field_index(node, inField, code_mode, fieldIndex);
39243 18 : case TAG_MPEG4_AdvancedAudioBuffer:
39244 : return AdvancedAudioBuffer_get_field_index(node, inField, code_mode, fieldIndex);
39245 22 : case TAG_MPEG4_AudioChannelConfig:
39246 : return AudioChannelConfig_get_field_index(node, inField, code_mode, fieldIndex);
39247 8 : case TAG_MPEG4_DepthImageV2:
39248 : return DepthImageV2_get_field_index(node, inField, code_mode, fieldIndex);
39249 4 : case TAG_MPEG4_MorphShape:
39250 : return MorphShape_get_field_index(node, inField, code_mode, fieldIndex);
39251 8 : case TAG_MPEG4_MultiTexture:
39252 : return MultiTexture_get_field_index(node, inField, code_mode, fieldIndex);
39253 8 : case TAG_MPEG4_PointTextureV2:
39254 : return PointTextureV2_get_field_index(node, inField, code_mode, fieldIndex);
39255 10 : case TAG_MPEG4_SBVCAnimationV2:
39256 : return SBVCAnimationV2_get_field_index(node, inField, code_mode, fieldIndex);
39257 5 : case TAG_MPEG4_SimpleTextureV2:
39258 : return SimpleTextureV2_get_field_index(node, inField, code_mode, fieldIndex);
39259 7 : case TAG_MPEG4_SurroundingSound:
39260 : return SurroundingSound_get_field_index(node, inField, code_mode, fieldIndex);
39261 9 : case TAG_MPEG4_Transform3DAudio:
39262 : return Transform3DAudio_get_field_index(node, inField, code_mode, fieldIndex);
39263 120 : case TAG_MPEG4_WideSound:
39264 : return WideSound_get_field_index(node, inField, code_mode, fieldIndex);
39265 16 : case TAG_MPEG4_ScoreShape:
39266 : return ScoreShape_get_field_index(node, inField, code_mode, fieldIndex);
39267 31 : case TAG_MPEG4_MusicScore:
39268 : return MusicScore_get_field_index(node, inField, code_mode, fieldIndex);
39269 1 : case TAG_MPEG4_FootPrintSetNode:
39270 : return FootPrintSetNode_get_field_index(node, inField, code_mode, fieldIndex);
39271 2 : case TAG_MPEG4_FootPrintNode:
39272 : return FootPrintNode_get_field_index(node, inField, code_mode, fieldIndex);
39273 8 : case TAG_MPEG4_BuildingPartNode:
39274 : return BuildingPartNode_get_field_index(node, inField, code_mode, fieldIndex);
39275 12 : case TAG_MPEG4_RoofNode:
39276 : return RoofNode_get_field_index(node, inField, code_mode, fieldIndex);
39277 13 : case TAG_MPEG4_FacadeNode:
39278 : return FacadeNode_get_field_index(node, inField, code_mode, fieldIndex);
39279 42 : case TAG_MPEG4_Shadow:
39280 : return Shadow_get_field_index(node, inField, code_mode, fieldIndex);
39281 181 : case TAG_MPEG4_CacheTexture:
39282 : return CacheTexture_get_field_index(node, inField, code_mode, fieldIndex);
39283 104 : case TAG_MPEG4_EnvironmentTest:
39284 : return EnvironmentTest_get_field_index(node, inField, code_mode, fieldIndex);
39285 10 : case TAG_MPEG4_KeyNavigator:
39286 : return KeyNavigator_get_field_index(node, inField, code_mode, fieldIndex);
39287 4 : case TAG_MPEG4_SpacePartition:
39288 : return SpacePartition_get_field_index(node, inField, code_mode, fieldIndex);
39289 6 : case TAG_MPEG4_Storage:
39290 : return Storage_get_field_index(node, inField, code_mode, fieldIndex);
39291 : default:
39292 : return GF_BAD_PARAM;
39293 : }
39294 : }
39295 :
39296 7531 : Bool gf_sg_mpeg4_node_get_aq_info(GF_Node *node, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
39297 : {
39298 7531 : switch (node->sgprivate->tag) {
39299 : case TAG_MPEG4_Anchor:
39300 : return Anchor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39301 : case TAG_MPEG4_AnimationStream:
39302 : return AnimationStream_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39303 : case TAG_MPEG4_Appearance:
39304 : return Appearance_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39305 10 : case TAG_MPEG4_AudioBuffer:
39306 10 : return AudioBuffer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39307 : case TAG_MPEG4_AudioClip:
39308 : return AudioClip_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39309 : case TAG_MPEG4_AudioDelay:
39310 : return AudioDelay_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39311 : case TAG_MPEG4_AudioFX:
39312 : return AudioFX_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39313 : case TAG_MPEG4_AudioMix:
39314 : return AudioMix_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39315 : case TAG_MPEG4_AudioSource:
39316 : return AudioSource_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39317 : case TAG_MPEG4_AudioSwitch:
39318 : return AudioSwitch_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39319 : case TAG_MPEG4_Background:
39320 : return Background_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39321 : case TAG_MPEG4_Background2D:
39322 : return Background2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39323 : case TAG_MPEG4_Billboard:
39324 : return Billboard_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39325 : case TAG_MPEG4_Bitmap:
39326 : return Bitmap_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39327 : case TAG_MPEG4_Box:
39328 : return Box_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39329 : case TAG_MPEG4_Circle:
39330 : return Circle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39331 : case TAG_MPEG4_Collision:
39332 : return Collision_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39333 : case TAG_MPEG4_Color:
39334 : return Color_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39335 : case TAG_MPEG4_ColorInterpolator:
39336 : return ColorInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39337 : case TAG_MPEG4_CompositeTexture2D:
39338 : return CompositeTexture2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39339 : case TAG_MPEG4_CompositeTexture3D:
39340 : return CompositeTexture3D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39341 : case TAG_MPEG4_Conditional:
39342 : return Conditional_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39343 : case TAG_MPEG4_Cone:
39344 : return Cone_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39345 : case TAG_MPEG4_Coordinate:
39346 : return Coordinate_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39347 : case TAG_MPEG4_Coordinate2D:
39348 : return Coordinate2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39349 : case TAG_MPEG4_CoordinateInterpolator:
39350 : return CoordinateInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39351 : case TAG_MPEG4_CoordinateInterpolator2D:
39352 : return CoordinateInterpolator2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39353 : case TAG_MPEG4_Curve2D:
39354 : return Curve2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39355 : case TAG_MPEG4_Cylinder:
39356 : return Cylinder_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39357 : case TAG_MPEG4_CylinderSensor:
39358 : return CylinderSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39359 : case TAG_MPEG4_DirectionalLight:
39360 : return DirectionalLight_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39361 : case TAG_MPEG4_DiscSensor:
39362 : return DiscSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39363 1110 : case TAG_MPEG4_ElevationGrid:
39364 1110 : return ElevationGrid_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39365 : case TAG_MPEG4_Expression:
39366 : return Expression_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39367 334 : case TAG_MPEG4_Extrusion:
39368 334 : return Extrusion_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39369 : case TAG_MPEG4_Face:
39370 : return Face_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39371 : case TAG_MPEG4_FaceDefMesh:
39372 : return FaceDefMesh_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39373 : case TAG_MPEG4_FaceDefTables:
39374 : return FaceDefTables_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39375 : case TAG_MPEG4_FaceDefTransform:
39376 : return FaceDefTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39377 68 : case TAG_MPEG4_FAP:
39378 68 : return FAP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39379 : case TAG_MPEG4_FDP:
39380 : return FDP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39381 9 : case TAG_MPEG4_FIT:
39382 9 : return FIT_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39383 : case TAG_MPEG4_Fog:
39384 : return Fog_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39385 : case TAG_MPEG4_FontStyle:
39386 : return FontStyle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39387 : case TAG_MPEG4_Form:
39388 : return Form_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39389 : case TAG_MPEG4_Group:
39390 : return Group_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39391 : case TAG_MPEG4_ImageTexture:
39392 : return ImageTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39393 266 : case TAG_MPEG4_IndexedFaceSet:
39394 266 : return IndexedFaceSet_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39395 : case TAG_MPEG4_IndexedFaceSet2D:
39396 : return IndexedFaceSet2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39397 : case TAG_MPEG4_IndexedLineSet:
39398 : return IndexedLineSet_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39399 : case TAG_MPEG4_IndexedLineSet2D:
39400 : return IndexedLineSet2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39401 : case TAG_MPEG4_Inline:
39402 : return Inline_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39403 : case TAG_MPEG4_LOD:
39404 : return LOD_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39405 : case TAG_MPEG4_Layer2D:
39406 : return Layer2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39407 : case TAG_MPEG4_Layer3D:
39408 : return Layer3D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39409 : case TAG_MPEG4_Layout:
39410 : return Layout_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39411 : case TAG_MPEG4_LineProperties:
39412 : return LineProperties_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39413 : case TAG_MPEG4_ListeningPoint:
39414 : return ListeningPoint_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39415 10 : case TAG_MPEG4_Material:
39416 10 : return Material_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39417 : case TAG_MPEG4_Material2D:
39418 : return Material2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39419 : case TAG_MPEG4_MovieTexture:
39420 : return MovieTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39421 : case TAG_MPEG4_NavigationInfo:
39422 : return NavigationInfo_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39423 : case TAG_MPEG4_Normal:
39424 : return Normal_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39425 : case TAG_MPEG4_NormalInterpolator:
39426 : return NormalInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39427 : case TAG_MPEG4_OrderedGroup:
39428 : return OrderedGroup_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39429 : case TAG_MPEG4_OrientationInterpolator:
39430 : return OrientationInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39431 : case TAG_MPEG4_PixelTexture:
39432 : return PixelTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39433 : case TAG_MPEG4_PlaneSensor:
39434 : return PlaneSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39435 : case TAG_MPEG4_PlaneSensor2D:
39436 : return PlaneSensor2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39437 7 : case TAG_MPEG4_PointLight:
39438 7 : return PointLight_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39439 : case TAG_MPEG4_PointSet:
39440 : return PointSet_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39441 : case TAG_MPEG4_PointSet2D:
39442 : return PointSet2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39443 : case TAG_MPEG4_PositionInterpolator:
39444 : return PositionInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39445 : case TAG_MPEG4_PositionInterpolator2D:
39446 : return PositionInterpolator2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39447 : case TAG_MPEG4_ProximitySensor2D:
39448 : return ProximitySensor2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39449 : case TAG_MPEG4_ProximitySensor:
39450 : return ProximitySensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39451 169 : case TAG_MPEG4_QuantizationParameter:
39452 169 : return QuantizationParameter_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39453 : case TAG_MPEG4_Rectangle:
39454 : return Rectangle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39455 : case TAG_MPEG4_ScalarInterpolator:
39456 : return ScalarInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39457 : case TAG_MPEG4_Script:
39458 : return Script_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39459 : case TAG_MPEG4_Shape:
39460 : return Shape_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39461 10 : case TAG_MPEG4_Sound:
39462 10 : return Sound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39463 : case TAG_MPEG4_Sound2D:
39464 : return Sound2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39465 : case TAG_MPEG4_Sphere:
39466 : return Sphere_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39467 : case TAG_MPEG4_SphereSensor:
39468 : return SphereSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39469 10 : case TAG_MPEG4_SpotLight:
39470 10 : return SpotLight_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39471 : case TAG_MPEG4_Switch:
39472 : return Switch_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39473 : case TAG_MPEG4_TermCap:
39474 : return TermCap_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39475 : case TAG_MPEG4_Text:
39476 : return Text_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39477 : case TAG_MPEG4_TextureCoordinate:
39478 : return TextureCoordinate_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39479 : case TAG_MPEG4_TextureTransform:
39480 : return TextureTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39481 : case TAG_MPEG4_TimeSensor:
39482 : return TimeSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39483 : case TAG_MPEG4_TouchSensor:
39484 : return TouchSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39485 : case TAG_MPEG4_Transform:
39486 : return Transform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39487 133 : case TAG_MPEG4_Transform2D:
39488 133 : return Transform2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39489 81 : case TAG_MPEG4_Valuator:
39490 81 : return Valuator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39491 : case TAG_MPEG4_Viewpoint:
39492 : return Viewpoint_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39493 : case TAG_MPEG4_VisibilitySensor:
39494 : return VisibilitySensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39495 : case TAG_MPEG4_Viseme:
39496 : return Viseme_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39497 : case TAG_MPEG4_WorldInfo:
39498 : return WorldInfo_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39499 10 : case TAG_MPEG4_AcousticMaterial:
39500 10 : return AcousticMaterial_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39501 6 : case TAG_MPEG4_AcousticScene:
39502 6 : return AcousticScene_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39503 : case TAG_MPEG4_ApplicationWindow:
39504 : return ApplicationWindow_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39505 296 : case TAG_MPEG4_BAP:
39506 296 : return BAP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39507 : case TAG_MPEG4_BDP:
39508 : return BDP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39509 : case TAG_MPEG4_Body:
39510 : return Body_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39511 : case TAG_MPEG4_BodyDefTable:
39512 : return BodyDefTable_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39513 : case TAG_MPEG4_BodySegmentConnectionHint:
39514 : return BodySegmentConnectionHint_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39515 13 : case TAG_MPEG4_DirectiveSound:
39516 13 : return DirectiveSound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39517 : case TAG_MPEG4_Hierarchical3DMesh:
39518 : return Hierarchical3DMesh_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39519 : case TAG_MPEG4_MaterialKey:
39520 : return MaterialKey_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39521 19 : case TAG_MPEG4_PerceptualParameters:
39522 19 : return PerceptualParameters_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39523 : case TAG_MPEG4_TemporalTransform:
39524 : return TemporalTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39525 : case TAG_MPEG4_TemporalGroup:
39526 : return TemporalGroup_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39527 : case TAG_MPEG4_ServerCommand:
39528 : return ServerCommand_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39529 : case TAG_MPEG4_InputSensor:
39530 : return InputSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39531 : case TAG_MPEG4_MatteTexture:
39532 : return MatteTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39533 : case TAG_MPEG4_MediaBuffer:
39534 : return MediaBuffer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39535 : case TAG_MPEG4_MediaControl:
39536 : return MediaControl_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39537 : case TAG_MPEG4_MediaSensor:
39538 : return MediaSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39539 : case TAG_MPEG4_BitWrapper:
39540 : return BitWrapper_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39541 : case TAG_MPEG4_CoordinateInterpolator4D:
39542 : return CoordinateInterpolator4D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39543 : case TAG_MPEG4_DepthImage:
39544 : return DepthImage_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39545 13 : case TAG_MPEG4_FFD:
39546 13 : return FFD_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39547 : case TAG_MPEG4_Implicit:
39548 : return Implicit_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39549 : case TAG_MPEG4_XXLFM_Appearance:
39550 : return XXLFM_Appearance_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39551 : case TAG_MPEG4_XXLFM_BlendList:
39552 : return XXLFM_BlendList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39553 : case TAG_MPEG4_XXLFM_FrameList:
39554 : return XXLFM_FrameList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39555 : case TAG_MPEG4_XXLFM_LightMap:
39556 : return XXLFM_LightMap_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39557 : case TAG_MPEG4_XXLFM_SurfaceMapList:
39558 : return XXLFM_SurfaceMapList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39559 : case TAG_MPEG4_XXLFM_ViewMapList:
39560 : return XXLFM_ViewMapList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39561 23 : case TAG_MPEG4_MeshGrid:
39562 23 : return MeshGrid_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39563 : case TAG_MPEG4_NonLinearDeformer:
39564 : return NonLinearDeformer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39565 : case TAG_MPEG4_NurbsCurve:
39566 : return NurbsCurve_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39567 : case TAG_MPEG4_NurbsCurve2D:
39568 : return NurbsCurve2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39569 18 : case TAG_MPEG4_NurbsSurface:
39570 18 : return NurbsSurface_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39571 : case TAG_MPEG4_OctreeImage:
39572 : return OctreeImage_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39573 : case TAG_MPEG4_XXParticles:
39574 : return XXParticles_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39575 : case TAG_MPEG4_XXParticleInitBox:
39576 : return XXParticleInitBox_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39577 : case TAG_MPEG4_XXPlanarObstacle:
39578 : return XXPlanarObstacle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39579 : case TAG_MPEG4_XXPointAttractor:
39580 : return XXPointAttractor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39581 : case TAG_MPEG4_PointTexture:
39582 : return PointTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39583 : case TAG_MPEG4_PositionAnimator:
39584 : return PositionAnimator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39585 : case TAG_MPEG4_PositionAnimator2D:
39586 : return PositionAnimator2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39587 : case TAG_MPEG4_PositionInterpolator4D:
39588 : return PositionInterpolator4D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39589 20 : case TAG_MPEG4_ProceduralTexture:
39590 20 : return ProceduralTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39591 10 : case TAG_MPEG4_Quadric:
39592 10 : return Quadric_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39593 24 : case TAG_MPEG4_SBBone:
39594 24 : return SBBone_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39595 : case TAG_MPEG4_SBMuscle:
39596 : return SBMuscle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39597 : case TAG_MPEG4_SBSegment:
39598 : return SBSegment_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39599 : case TAG_MPEG4_SBSite:
39600 : return SBSite_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39601 : case TAG_MPEG4_SBSkinnedModel:
39602 : return SBSkinnedModel_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39603 : case TAG_MPEG4_SBVCAnimation:
39604 : return SBVCAnimation_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39605 : case TAG_MPEG4_ScalarAnimator:
39606 : return ScalarAnimator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39607 : case TAG_MPEG4_SimpleTexture:
39608 : return SimpleTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39609 : case TAG_MPEG4_SolidRep:
39610 : return SolidRep_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39611 : case TAG_MPEG4_SubdivisionSurface:
39612 : return SubdivisionSurface_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39613 7 : case TAG_MPEG4_SubdivSurfaceSector:
39614 7 : return SubdivSurfaceSector_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39615 : case TAG_MPEG4_WaveletSubdivisionSurface:
39616 : return WaveletSubdivisionSurface_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39617 : case TAG_MPEG4_Clipper2D:
39618 : return Clipper2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39619 63 : case TAG_MPEG4_ColorTransform:
39620 63 : return ColorTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39621 : case TAG_MPEG4_Ellipse:
39622 : return Ellipse_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39623 95 : case TAG_MPEG4_LinearGradient:
39624 95 : return LinearGradient_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39625 : case TAG_MPEG4_PathLayout:
39626 : return PathLayout_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39627 64 : case TAG_MPEG4_RadialGradient:
39628 64 : return RadialGradient_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39629 11 : case TAG_MPEG4_SynthesizedTexture:
39630 11 : return SynthesizedTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39631 9 : case TAG_MPEG4_TransformMatrix2D:
39632 9 : return TransformMatrix2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39633 24 : case TAG_MPEG4_Viewport:
39634 24 : return Viewport_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39635 : case TAG_MPEG4_XCurve2D:
39636 : return XCurve2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39637 : case TAG_MPEG4_XFontStyle:
39638 : return XFontStyle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39639 21 : case TAG_MPEG4_XLineProperties:
39640 21 : return XLineProperties_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39641 18 : case TAG_MPEG4_AdvancedAudioBuffer:
39642 18 : return AdvancedAudioBuffer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39643 22 : case TAG_MPEG4_AudioChannelConfig:
39644 22 : return AudioChannelConfig_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39645 : case TAG_MPEG4_DepthImageV2:
39646 : return DepthImageV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39647 : case TAG_MPEG4_MorphShape:
39648 : return MorphShape_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39649 : case TAG_MPEG4_MultiTexture:
39650 : return MultiTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39651 : case TAG_MPEG4_PointTextureV2:
39652 : return PointTextureV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39653 : case TAG_MPEG4_SBVCAnimationV2:
39654 : return SBVCAnimationV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39655 : case TAG_MPEG4_SimpleTextureV2:
39656 : return SimpleTextureV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39657 : case TAG_MPEG4_SurroundingSound:
39658 : return SurroundingSound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39659 9 : case TAG_MPEG4_Transform3DAudio:
39660 9 : return Transform3DAudio_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39661 15 : case TAG_MPEG4_WideSound:
39662 15 : return WideSound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39663 : case TAG_MPEG4_ScoreShape:
39664 : return ScoreShape_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39665 : case TAG_MPEG4_MusicScore:
39666 : return MusicScore_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39667 : case TAG_MPEG4_FootPrintSetNode:
39668 : return FootPrintSetNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39669 : case TAG_MPEG4_FootPrintNode:
39670 : return FootPrintNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39671 : case TAG_MPEG4_BuildingPartNode:
39672 : return BuildingPartNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39673 : case TAG_MPEG4_RoofNode:
39674 : return RoofNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39675 : case TAG_MPEG4_FacadeNode:
39676 : return FacadeNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39677 : case TAG_MPEG4_Shadow:
39678 : return Shadow_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39679 : case TAG_MPEG4_CacheTexture:
39680 : return CacheTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39681 : case TAG_MPEG4_EnvironmentTest:
39682 : return EnvironmentTest_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39683 : case TAG_MPEG4_KeyNavigator:
39684 : return KeyNavigator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39685 : case TAG_MPEG4_SpacePartition:
39686 : return SpacePartition_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39687 : case TAG_MPEG4_Storage:
39688 : return Storage_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
39689 : default:
39690 : return 0;
39691 : }
39692 : }
39693 :
39694 316 : u32 gf_sg_mpeg4_node_get_child_ndt(GF_Node *node)
39695 : {
39696 316 : switch (node->sgprivate->tag) {
39697 : case TAG_MPEG4_Anchor:
39698 : return NDT_SF3DNode;
39699 : case TAG_MPEG4_AudioBuffer:
39700 : return NDT_SFAudioNode;
39701 : case TAG_MPEG4_AudioDelay:
39702 : return NDT_SFAudioNode;
39703 : case TAG_MPEG4_AudioFX:
39704 : return NDT_SFAudioNode;
39705 : case TAG_MPEG4_AudioMix:
39706 : return NDT_SFAudioNode;
39707 : case TAG_MPEG4_AudioSource:
39708 : return NDT_SFAudioNode;
39709 : case TAG_MPEG4_AudioSwitch:
39710 : return NDT_SFAudioNode;
39711 : case TAG_MPEG4_Billboard:
39712 : return NDT_SF3DNode;
39713 : case TAG_MPEG4_Collision:
39714 : return NDT_SF3DNode;
39715 : case TAG_MPEG4_CompositeTexture2D:
39716 : return NDT_SF2DNode;
39717 : case TAG_MPEG4_CompositeTexture3D:
39718 : return NDT_SF3DNode;
39719 : case TAG_MPEG4_Face:
39720 : return NDT_SF3DNode;
39721 : case TAG_MPEG4_FaceDefTables:
39722 : return NDT_SFFaceDefMeshNode;
39723 : case TAG_MPEG4_FDP:
39724 : return NDT_SFFaceDefTablesNode;
39725 : case TAG_MPEG4_Form:
39726 : return NDT_SF2DNode;
39727 : case TAG_MPEG4_Group:
39728 : return NDT_SF3DNode;
39729 : case TAG_MPEG4_LOD:
39730 : return NDT_SF3DNode;
39731 : case TAG_MPEG4_Layer2D:
39732 : return NDT_SF2DNode;
39733 : case TAG_MPEG4_Layer3D:
39734 : return NDT_SF3DNode;
39735 : case TAG_MPEG4_Layout:
39736 : return NDT_SF2DNode;
39737 : case TAG_MPEG4_OrderedGroup:
39738 : return NDT_SF3DNode;
39739 : case TAG_MPEG4_Switch:
39740 : return NDT_SF3DNode;
39741 : case TAG_MPEG4_Transform:
39742 : return NDT_SF3DNode;
39743 : case TAG_MPEG4_Transform2D:
39744 : return NDT_SF2DNode;
39745 : case TAG_MPEG4_BDP:
39746 : return NDT_SFBodyDefTableNode;
39747 : case TAG_MPEG4_Body:
39748 : return NDT_SF3DNode;
39749 : case TAG_MPEG4_TemporalTransform:
39750 : return NDT_SF3DNode;
39751 : case TAG_MPEG4_TemporalGroup:
39752 : return NDT_SFTemporalNode;
39753 : case TAG_MPEG4_FFD:
39754 : return NDT_SF3DNode;
39755 : case TAG_MPEG4_XXLFM_Appearance:
39756 : return NDT_SFLightMapNode;
39757 : case TAG_MPEG4_OctreeImage:
39758 : return NDT_SFDepthImageNode;
39759 : case TAG_MPEG4_XXParticles:
39760 : return NDT_SFInfluenceNode;
39761 : case TAG_MPEG4_SBBone:
39762 : return NDT_SF3DNode;
39763 : case TAG_MPEG4_SBSegment:
39764 : return NDT_SF3DNode;
39765 : case TAG_MPEG4_SBSite:
39766 : return NDT_SF3DNode;
39767 : case TAG_MPEG4_SBSkinnedModel:
39768 : return NDT_SFSBBoneNode;
39769 : case TAG_MPEG4_SBVCAnimation:
39770 : return NDT_SF3DNode;
39771 : case TAG_MPEG4_SubdivisionSurface:
39772 : return NDT_SFSubdivSurfaceSectorNode;
39773 : case TAG_MPEG4_Clipper2D:
39774 : return NDT_SF2DNode;
39775 : case TAG_MPEG4_ColorTransform:
39776 : return NDT_SF3DNode;
39777 : case TAG_MPEG4_PathLayout:
39778 : return NDT_SF2DNode;
39779 : case TAG_MPEG4_TransformMatrix2D:
39780 : return NDT_SF2DNode;
39781 : case TAG_MPEG4_AdvancedAudioBuffer:
39782 : return NDT_SFAudioNode;
39783 : case TAG_MPEG4_AudioChannelConfig:
39784 : return NDT_SFAudioNode;
39785 : case TAG_MPEG4_MorphShape:
39786 : return NDT_SF3DNode;
39787 : case TAG_MPEG4_MultiTexture:
39788 : return NDT_SFTextureNode;
39789 : case TAG_MPEG4_SBVCAnimationV2:
39790 : return NDT_SF3DNode;
39791 : case TAG_MPEG4_Transform3DAudio:
39792 : return NDT_SF3DNode;
39793 : case TAG_MPEG4_FootPrintSetNode:
39794 : return NDT_SFGeometryNode;
39795 : case TAG_MPEG4_BuildingPartNode:
39796 : return NDT_SFGeometryNode;
39797 : case TAG_MPEG4_FacadeNode:
39798 : return NDT_SFGeometryNode;
39799 : case TAG_MPEG4_Shadow:
39800 : return NDT_SF3DNode;
39801 : case TAG_MPEG4_SpacePartition:
39802 : return NDT_SF3DNode;
39803 : default:
39804 : return 0;
39805 : }
39806 : }
39807 :
39808 :
39809 : GF_EXPORT
39810 19770 : u32 gf_node_mpeg4_type_by_class_name(const char *node_name)
39811 : {
39812 19770 : if(!node_name) return 0;
39813 19770 : if (!strcmp(node_name, "Anchor")) return TAG_MPEG4_Anchor;
39814 19764 : if (!strcmp(node_name, "AnimationStream")) return TAG_MPEG4_AnimationStream;
39815 19739 : if (!strcmp(node_name, "Appearance")) return TAG_MPEG4_Appearance;
39816 18191 : if (!strcmp(node_name, "AudioBuffer")) return TAG_MPEG4_AudioBuffer;
39817 18174 : if (!strcmp(node_name, "AudioClip")) return TAG_MPEG4_AudioClip;
39818 18153 : if (!strcmp(node_name, "AudioDelay")) return TAG_MPEG4_AudioDelay;
39819 18152 : if (!strcmp(node_name, "AudioFX")) return TAG_MPEG4_AudioFX;
39820 18151 : if (!strcmp(node_name, "AudioMix")) return TAG_MPEG4_AudioMix;
39821 18150 : if (!strcmp(node_name, "AudioSource")) return TAG_MPEG4_AudioSource;
39822 18126 : if (!strcmp(node_name, "AudioSwitch")) return TAG_MPEG4_AudioSwitch;
39823 18125 : if (!strcmp(node_name, "Background")) return TAG_MPEG4_Background;
39824 18099 : if (!strcmp(node_name, "Background2D")) return TAG_MPEG4_Background2D;
39825 17619 : if (!strcmp(node_name, "Billboard")) return TAG_MPEG4_Billboard;
39826 17615 : if (!strcmp(node_name, "Bitmap")) return TAG_MPEG4_Bitmap;
39827 17535 : if (!strcmp(node_name, "Box")) return TAG_MPEG4_Box;
39828 17466 : if (!strcmp(node_name, "Circle")) return TAG_MPEG4_Circle;
39829 17252 : if (!strcmp(node_name, "Collision")) return TAG_MPEG4_Collision;
39830 17229 : if (!strcmp(node_name, "Color")) return TAG_MPEG4_Color;
39831 17180 : if (!strcmp(node_name, "ColorInterpolator")) return TAG_MPEG4_ColorInterpolator;
39832 17173 : if (!strcmp(node_name, "CompositeTexture2D")) return TAG_MPEG4_CompositeTexture2D;
39833 17142 : if (!strcmp(node_name, "CompositeTexture3D")) return TAG_MPEG4_CompositeTexture3D;
39834 17139 : if (!strcmp(node_name, "Conditional")) return TAG_MPEG4_Conditional;
39835 16511 : if (!strcmp(node_name, "Cone")) return TAG_MPEG4_Cone;
39836 16484 : if (!strcmp(node_name, "Coordinate")) return TAG_MPEG4_Coordinate;
39837 16419 : if (!strcmp(node_name, "Coordinate2D")) return TAG_MPEG4_Coordinate2D;
39838 15909 : if (!strcmp(node_name, "CoordinateInterpolator")) return TAG_MPEG4_CoordinateInterpolator;
39839 15907 : if (!strcmp(node_name, "CoordinateInterpolator2D")) return TAG_MPEG4_CoordinateInterpolator2D;
39840 15904 : if (!strcmp(node_name, "Curve2D")) return TAG_MPEG4_Curve2D;
39841 15656 : if (!strcmp(node_name, "Cylinder")) return TAG_MPEG4_Cylinder;
39842 15620 : if (!strcmp(node_name, "CylinderSensor")) return TAG_MPEG4_CylinderSensor;
39843 15598 : if (!strcmp(node_name, "DirectionalLight")) return TAG_MPEG4_DirectionalLight;
39844 15589 : if (!strcmp(node_name, "DiscSensor")) return TAG_MPEG4_DiscSensor;
39845 15565 : if (!strcmp(node_name, "ElevationGrid")) return TAG_MPEG4_ElevationGrid;
39846 15543 : if (!strcmp(node_name, "Expression")) return TAG_MPEG4_Expression;
39847 15542 : if (!strcmp(node_name, "Extrusion")) return TAG_MPEG4_Extrusion;
39848 15520 : if (!strcmp(node_name, "Face")) return TAG_MPEG4_Face;
39849 15519 : if (!strcmp(node_name, "FaceDefMesh")) return TAG_MPEG4_FaceDefMesh;
39850 15518 : if (!strcmp(node_name, "FaceDefTables")) return TAG_MPEG4_FaceDefTables;
39851 15517 : if (!strcmp(node_name, "FaceDefTransform")) return TAG_MPEG4_FaceDefTransform;
39852 15516 : if (!strcmp(node_name, "FAP")) return TAG_MPEG4_FAP;
39853 15515 : if (!strcmp(node_name, "FDP")) return TAG_MPEG4_FDP;
39854 15514 : if (!strcmp(node_name, "FIT")) return TAG_MPEG4_FIT;
39855 15513 : if (!strcmp(node_name, "Fog")) return TAG_MPEG4_Fog;
39856 15508 : if (!strcmp(node_name, "FontStyle")) return TAG_MPEG4_FontStyle;
39857 15071 : if (!strcmp(node_name, "Form")) return TAG_MPEG4_Form;
39858 15031 : if (!strcmp(node_name, "Group")) return TAG_MPEG4_Group;
39859 14945 : if (!strcmp(node_name, "ImageTexture")) return TAG_MPEG4_ImageTexture;
39860 14817 : if (!strcmp(node_name, "IndexedFaceSet")) return TAG_MPEG4_IndexedFaceSet;
39861 14753 : if (!strcmp(node_name, "IndexedFaceSet2D")) return TAG_MPEG4_IndexedFaceSet2D;
39862 14592 : if (!strcmp(node_name, "IndexedLineSet")) return TAG_MPEG4_IndexedLineSet;
39863 14569 : if (!strcmp(node_name, "IndexedLineSet2D")) return TAG_MPEG4_IndexedLineSet2D;
39864 14505 : if (!strcmp(node_name, "Inline")) return TAG_MPEG4_Inline;
39865 14397 : if (!strcmp(node_name, "LOD")) return TAG_MPEG4_LOD;
39866 14395 : if (!strcmp(node_name, "Layer2D")) return TAG_MPEG4_Layer2D;
39867 14211 : if (!strcmp(node_name, "Layer3D")) return TAG_MPEG4_Layer3D;
39868 14181 : if (!strcmp(node_name, "Layout")) return TAG_MPEG4_Layout;
39869 13996 : if (!strcmp(node_name, "LineProperties")) return TAG_MPEG4_LineProperties;
39870 13790 : if (!strcmp(node_name, "ListeningPoint")) return TAG_MPEG4_ListeningPoint;
39871 13789 : if (!strcmp(node_name, "Material")) return TAG_MPEG4_Material;
39872 13696 : if (!strcmp(node_name, "Material2D")) return TAG_MPEG4_Material2D;
39873 12456 : if (!strcmp(node_name, "MovieTexture")) return TAG_MPEG4_MovieTexture;
39874 12399 : if (!strcmp(node_name, "NavigationInfo")) return TAG_MPEG4_NavigationInfo;
39875 12359 : if (!strcmp(node_name, "Normal")) return TAG_MPEG4_Normal;
39876 12338 : if (!strcmp(node_name, "NormalInterpolator")) return TAG_MPEG4_NormalInterpolator;
39877 12336 : if (!strcmp(node_name, "OrderedGroup")) return TAG_MPEG4_OrderedGroup;
39878 11950 : if (!strcmp(node_name, "OrientationInterpolator")) return TAG_MPEG4_OrientationInterpolator;
39879 11931 : if (!strcmp(node_name, "PixelTexture")) return TAG_MPEG4_PixelTexture;
39880 11906 : if (!strcmp(node_name, "PlaneSensor")) return TAG_MPEG4_PlaneSensor;
39881 11884 : if (!strcmp(node_name, "PlaneSensor2D")) return TAG_MPEG4_PlaneSensor2D;
39882 11829 : if (!strcmp(node_name, "PointLight")) return TAG_MPEG4_PointLight;
39883 11827 : if (!strcmp(node_name, "PointSet")) return TAG_MPEG4_PointSet;
39884 11805 : if (!strcmp(node_name, "PointSet2D")) return TAG_MPEG4_PointSet2D;
39885 11772 : if (!strcmp(node_name, "PositionInterpolator")) return TAG_MPEG4_PositionInterpolator;
39886 11760 : if (!strcmp(node_name, "PositionInterpolator2D")) return TAG_MPEG4_PositionInterpolator2D;
39887 11711 : if (!strcmp(node_name, "ProximitySensor2D")) return TAG_MPEG4_ProximitySensor2D;
39888 11688 : if (!strcmp(node_name, "ProximitySensor")) return TAG_MPEG4_ProximitySensor;
39889 11686 : if (!strcmp(node_name, "QuantizationParameter")) return TAG_MPEG4_QuantizationParameter;
39890 11605 : if (!strcmp(node_name, "Rectangle")) return TAG_MPEG4_Rectangle;
39891 11164 : if (!strcmp(node_name, "ScalarInterpolator")) return TAG_MPEG4_ScalarInterpolator;
39892 11113 : if (!strcmp(node_name, "Script")) return TAG_MPEG4_Script;
39893 11058 : if (!strcmp(node_name, "Shape")) return TAG_MPEG4_Shape;
39894 8285 : if (!strcmp(node_name, "Sound")) return TAG_MPEG4_Sound;
39895 8282 : if (!strcmp(node_name, "Sound2D")) return TAG_MPEG4_Sound2D;
39896 8255 : if (!strcmp(node_name, "Sphere")) return TAG_MPEG4_Sphere;
39897 8223 : if (!strcmp(node_name, "SphereSensor")) return TAG_MPEG4_SphereSensor;
39898 8201 : if (!strcmp(node_name, "SpotLight")) return TAG_MPEG4_SpotLight;
39899 8199 : if (!strcmp(node_name, "Switch")) return TAG_MPEG4_Switch;
39900 8149 : if (!strcmp(node_name, "TermCap")) return TAG_MPEG4_TermCap;
39901 8147 : if (!strcmp(node_name, "Text")) return TAG_MPEG4_Text;
39902 7188 : if (!strcmp(node_name, "TextureCoordinate")) return TAG_MPEG4_TextureCoordinate;
39903 7187 : if (!strcmp(node_name, "TextureTransform")) return TAG_MPEG4_TextureTransform;
39904 7147 : if (!strcmp(node_name, "TimeSensor")) return TAG_MPEG4_TimeSensor;
39905 6984 : if (!strcmp(node_name, "TouchSensor")) return TAG_MPEG4_TouchSensor;
39906 6537 : if (!strcmp(node_name, "Transform")) return TAG_MPEG4_Transform;
39907 6340 : if (!strcmp(node_name, "Transform2D")) return TAG_MPEG4_Transform2D;
39908 3466 : if (!strcmp(node_name, "Valuator")) return TAG_MPEG4_Valuator;
39909 2978 : if (!strcmp(node_name, "Viewpoint")) return TAG_MPEG4_Viewpoint;
39910 2922 : if (!strcmp(node_name, "VisibilitySensor")) return TAG_MPEG4_VisibilitySensor;
39911 2890 : if (!strcmp(node_name, "Viseme")) return TAG_MPEG4_Viseme;
39912 2889 : if (!strcmp(node_name, "WorldInfo")) return TAG_MPEG4_WorldInfo;
39913 2494 : if (!strcmp(node_name, "AcousticMaterial")) return TAG_MPEG4_AcousticMaterial;
39914 2493 : if (!strcmp(node_name, "AcousticScene")) return TAG_MPEG4_AcousticScene;
39915 2492 : if (!strcmp(node_name, "ApplicationWindow")) return TAG_MPEG4_ApplicationWindow;
39916 2491 : if (!strcmp(node_name, "BAP")) return TAG_MPEG4_BAP;
39917 2490 : if (!strcmp(node_name, "BDP")) return TAG_MPEG4_BDP;
39918 2489 : if (!strcmp(node_name, "Body")) return TAG_MPEG4_Body;
39919 2488 : if (!strcmp(node_name, "BodyDefTable")) return TAG_MPEG4_BodyDefTable;
39920 2487 : if (!strcmp(node_name, "BodySegmentConnectionHint")) return TAG_MPEG4_BodySegmentConnectionHint;
39921 2486 : if (!strcmp(node_name, "DirectiveSound")) return TAG_MPEG4_DirectiveSound;
39922 2485 : if (!strcmp(node_name, "Hierarchical3DMesh")) return TAG_MPEG4_Hierarchical3DMesh;
39923 2484 : if (!strcmp(node_name, "MaterialKey")) return TAG_MPEG4_MaterialKey;
39924 2477 : if (!strcmp(node_name, "PerceptualParameters")) return TAG_MPEG4_PerceptualParameters;
39925 2476 : if (!strcmp(node_name, "TemporalTransform")) return TAG_MPEG4_TemporalTransform;
39926 2475 : if (!strcmp(node_name, "TemporalGroup")) return TAG_MPEG4_TemporalGroup;
39927 2474 : if (!strcmp(node_name, "ServerCommand")) return TAG_MPEG4_ServerCommand;
39928 2468 : if (!strcmp(node_name, "InputSensor")) return TAG_MPEG4_InputSensor;
39929 2424 : if (!strcmp(node_name, "MatteTexture")) return TAG_MPEG4_MatteTexture;
39930 2423 : if (!strcmp(node_name, "MediaBuffer")) return TAG_MPEG4_MediaBuffer;
39931 2422 : if (!strcmp(node_name, "MediaControl")) return TAG_MPEG4_MediaControl;
39932 2403 : if (!strcmp(node_name, "MediaSensor")) return TAG_MPEG4_MediaSensor;
39933 2386 : if (!strcmp(node_name, "BitWrapper")) return TAG_MPEG4_BitWrapper;
39934 2370 : if (!strcmp(node_name, "CoordinateInterpolator4D")) return TAG_MPEG4_CoordinateInterpolator4D;
39935 2368 : if (!strcmp(node_name, "DepthImage")) return TAG_MPEG4_DepthImage;
39936 2367 : if (!strcmp(node_name, "FFD")) return TAG_MPEG4_FFD;
39937 2366 : if (!strcmp(node_name, "Implicit")) return TAG_MPEG4_Implicit;
39938 2365 : if (!strcmp(node_name, "XXLFM_Appearance")) return TAG_MPEG4_XXLFM_Appearance;
39939 2364 : if (!strcmp(node_name, "XXLFM_BlendList")) return TAG_MPEG4_XXLFM_BlendList;
39940 2363 : if (!strcmp(node_name, "XXLFM_FrameList")) return TAG_MPEG4_XXLFM_FrameList;
39941 2362 : if (!strcmp(node_name, "XXLFM_LightMap")) return TAG_MPEG4_XXLFM_LightMap;
39942 2361 : if (!strcmp(node_name, "XXLFM_SurfaceMapList")) return TAG_MPEG4_XXLFM_SurfaceMapList;
39943 2360 : if (!strcmp(node_name, "XXLFM_ViewMapList")) return TAG_MPEG4_XXLFM_ViewMapList;
39944 2359 : if (!strcmp(node_name, "MeshGrid")) return TAG_MPEG4_MeshGrid;
39945 2358 : if (!strcmp(node_name, "NonLinearDeformer")) return TAG_MPEG4_NonLinearDeformer;
39946 2336 : if (!strcmp(node_name, "NurbsCurve")) return TAG_MPEG4_NurbsCurve;
39947 2335 : if (!strcmp(node_name, "NurbsCurve2D")) return TAG_MPEG4_NurbsCurve2D;
39948 2334 : if (!strcmp(node_name, "NurbsSurface")) return TAG_MPEG4_NurbsSurface;
39949 2333 : if (!strcmp(node_name, "OctreeImage")) return TAG_MPEG4_OctreeImage;
39950 2332 : if (!strcmp(node_name, "XXParticles")) return TAG_MPEG4_XXParticles;
39951 2331 : if (!strcmp(node_name, "XXParticleInitBox")) return TAG_MPEG4_XXParticleInitBox;
39952 2330 : if (!strcmp(node_name, "XXPlanarObstacle")) return TAG_MPEG4_XXPlanarObstacle;
39953 2329 : if (!strcmp(node_name, "XXPointAttractor")) return TAG_MPEG4_XXPointAttractor;
39954 2328 : if (!strcmp(node_name, "PointTexture")) return TAG_MPEG4_PointTexture;
39955 2327 : if (!strcmp(node_name, "PositionAnimator")) return TAG_MPEG4_PositionAnimator;
39956 2325 : if (!strcmp(node_name, "PositionAnimator2D")) return TAG_MPEG4_PositionAnimator2D;
39957 2322 : if (!strcmp(node_name, "PositionInterpolator4D")) return TAG_MPEG4_PositionInterpolator4D;
39958 2320 : if (!strcmp(node_name, "ProceduralTexture")) return TAG_MPEG4_ProceduralTexture;
39959 2319 : if (!strcmp(node_name, "Quadric")) return TAG_MPEG4_Quadric;
39960 2318 : if (!strcmp(node_name, "SBBone")) return TAG_MPEG4_SBBone;
39961 2317 : if (!strcmp(node_name, "SBMuscle")) return TAG_MPEG4_SBMuscle;
39962 2316 : if (!strcmp(node_name, "SBSegment")) return TAG_MPEG4_SBSegment;
39963 2315 : if (!strcmp(node_name, "SBSite")) return TAG_MPEG4_SBSite;
39964 2314 : if (!strcmp(node_name, "SBSkinnedModel")) return TAG_MPEG4_SBSkinnedModel;
39965 2313 : if (!strcmp(node_name, "SBVCAnimation")) return TAG_MPEG4_SBVCAnimation;
39966 2312 : if (!strcmp(node_name, "ScalarAnimator")) return TAG_MPEG4_ScalarAnimator;
39967 2310 : if (!strcmp(node_name, "SimpleTexture")) return TAG_MPEG4_SimpleTexture;
39968 2309 : if (!strcmp(node_name, "SolidRep")) return TAG_MPEG4_SolidRep;
39969 2308 : if (!strcmp(node_name, "SubdivisionSurface")) return TAG_MPEG4_SubdivisionSurface;
39970 2307 : if (!strcmp(node_name, "SubdivSurfaceSector")) return TAG_MPEG4_SubdivSurfaceSector;
39971 2306 : if (!strcmp(node_name, "WaveletSubdivisionSurface")) return TAG_MPEG4_WaveletSubdivisionSurface;
39972 2305 : if (!strcmp(node_name, "Clipper2D")) return TAG_MPEG4_Clipper2D;
39973 2282 : if (!strcmp(node_name, "ColorTransform")) return TAG_MPEG4_ColorTransform;
39974 2226 : if (!strcmp(node_name, "Ellipse")) return TAG_MPEG4_Ellipse;
39975 2221 : if (!strcmp(node_name, "LinearGradient")) return TAG_MPEG4_LinearGradient;
39976 2132 : if (!strcmp(node_name, "PathLayout")) return TAG_MPEG4_PathLayout;
39977 2109 : if (!strcmp(node_name, "RadialGradient")) return TAG_MPEG4_RadialGradient;
39978 2049 : if (!strcmp(node_name, "SynthesizedTexture")) return TAG_MPEG4_SynthesizedTexture;
39979 2048 : if (!strcmp(node_name, "TransformMatrix2D")) return TAG_MPEG4_TransformMatrix2D;
39980 1989 : if (!strcmp(node_name, "Viewport")) return TAG_MPEG4_Viewport;
39981 1923 : if (!strcmp(node_name, "XCurve2D")) return TAG_MPEG4_XCurve2D;
39982 1896 : if (!strcmp(node_name, "XFontStyle")) return TAG_MPEG4_XFontStyle;
39983 1895 : if (!strcmp(node_name, "XLineProperties")) return TAG_MPEG4_XLineProperties;
39984 1826 : if (!strcmp(node_name, "AdvancedAudioBuffer")) return TAG_MPEG4_AdvancedAudioBuffer;
39985 1825 : if (!strcmp(node_name, "AudioChannelConfig")) return TAG_MPEG4_AudioChannelConfig;
39986 1824 : if (!strcmp(node_name, "DepthImageV2")) return TAG_MPEG4_DepthImageV2;
39987 1823 : if (!strcmp(node_name, "MorphShape")) return TAG_MPEG4_MorphShape;
39988 1822 : if (!strcmp(node_name, "MultiTexture")) return TAG_MPEG4_MultiTexture;
39989 1821 : if (!strcmp(node_name, "PointTextureV2")) return TAG_MPEG4_PointTextureV2;
39990 1820 : if (!strcmp(node_name, "SBVCAnimationV2")) return TAG_MPEG4_SBVCAnimationV2;
39991 1819 : if (!strcmp(node_name, "SimpleTextureV2")) return TAG_MPEG4_SimpleTextureV2;
39992 1818 : if (!strcmp(node_name, "SurroundingSound")) return TAG_MPEG4_SurroundingSound;
39993 1817 : if (!strcmp(node_name, "Transform3DAudio")) return TAG_MPEG4_Transform3DAudio;
39994 1816 : if (!strcmp(node_name, "WideSound")) return TAG_MPEG4_WideSound;
39995 1810 : if (!strcmp(node_name, "ScoreShape")) return TAG_MPEG4_ScoreShape;
39996 1804 : if (!strcmp(node_name, "MusicScore")) return TAG_MPEG4_MusicScore;
39997 1803 : if (!strcmp(node_name, "FootPrintSetNode")) return TAG_MPEG4_FootPrintSetNode;
39998 1802 : if (!strcmp(node_name, "FootPrintNode")) return TAG_MPEG4_FootPrintNode;
39999 1801 : if (!strcmp(node_name, "BuildingPartNode")) return TAG_MPEG4_BuildingPartNode;
40000 1800 : if (!strcmp(node_name, "RoofNode")) return TAG_MPEG4_RoofNode;
40001 1799 : if (!strcmp(node_name, "FacadeNode")) return TAG_MPEG4_FacadeNode;
40002 1798 : if (!strcmp(node_name, "Shadow")) return TAG_MPEG4_Shadow;
40003 1792 : if (!strcmp(node_name, "CacheTexture")) return TAG_MPEG4_CacheTexture;
40004 1769 : if (!strcmp(node_name, "EnvironmentTest")) return TAG_MPEG4_EnvironmentTest;
40005 1725 : if (!strcmp(node_name, "KeyNavigator")) return TAG_MPEG4_KeyNavigator;
40006 1720 : if (!strcmp(node_name, "SpacePartition")) return TAG_MPEG4_SpacePartition;
40007 1719 : if (!strcmp(node_name, "Storage")) return TAG_MPEG4_Storage;
40008 1717 : return 0;
40009 : }
40010 :
40011 85536 : s32 gf_sg_mpeg4_node_get_field_index_by_name(GF_Node *node, char *name)
40012 : {
40013 85536 : switch (node->sgprivate->tag) {
40014 19 : case TAG_MPEG4_Anchor:
40015 19 : return Anchor_get_field_index_by_name(name);
40016 43 : case TAG_MPEG4_AnimationStream:
40017 43 : return AnimationStream_get_field_index_by_name(name);
40018 2533 : case TAG_MPEG4_Appearance:
40019 2533 : return Appearance_get_field_index_by_name(name);
40020 19 : case TAG_MPEG4_AudioBuffer:
40021 19 : return AudioBuffer_get_field_index_by_name(name);
40022 25 : case TAG_MPEG4_AudioClip:
40023 25 : return AudioClip_get_field_index_by_name(name);
40024 6 : case TAG_MPEG4_AudioDelay:
40025 6 : return AudioDelay_get_field_index_by_name(name);
40026 8 : case TAG_MPEG4_AudioFX:
40027 8 : return AudioFX_get_field_index_by_name(name);
40028 7 : case TAG_MPEG4_AudioMix:
40029 7 : return AudioMix_get_field_index_by_name(name);
40030 43 : case TAG_MPEG4_AudioSource:
40031 43 : return AudioSource_get_field_index_by_name(name);
40032 6 : case TAG_MPEG4_AudioSwitch:
40033 6 : return AudioSwitch_get_field_index_by_name(name);
40034 94 : case TAG_MPEG4_Background:
40035 94 : return Background_get_field_index_by_name(name);
40036 586 : case TAG_MPEG4_Background2D:
40037 586 : return Background2D_get_field_index_by_name(name);
40038 10 : case TAG_MPEG4_Billboard:
40039 10 : return Billboard_get_field_index_by_name(name);
40040 : case TAG_MPEG4_Bitmap:
40041 : return Bitmap_get_field_index_by_name(name);
40042 : case TAG_MPEG4_Box:
40043 : return Box_get_field_index_by_name(name);
40044 : case TAG_MPEG4_Circle:
40045 : return Circle_get_field_index_by_name(name);
40046 26 : case TAG_MPEG4_Collision:
40047 26 : return Collision_get_field_index_by_name(name);
40048 : case TAG_MPEG4_Color:
40049 : return Color_get_field_index_by_name(name);
40050 28 : case TAG_MPEG4_ColorInterpolator:
40051 28 : return ColorInterpolator_get_field_index_by_name(name);
40052 405 : case TAG_MPEG4_CompositeTexture2D:
40053 405 : return CompositeTexture2D_get_field_index_by_name(name);
40054 17 : case TAG_MPEG4_CompositeTexture3D:
40055 17 : return CompositeTexture3D_get_field_index_by_name(name);
40056 1162 : case TAG_MPEG4_Conditional:
40057 1162 : return Conditional_get_field_index_by_name(name);
40058 49 : case TAG_MPEG4_Cone:
40059 49 : return Cone_get_field_index_by_name(name);
40060 : case TAG_MPEG4_Coordinate:
40061 : return Coordinate_get_field_index_by_name(name);
40062 : case TAG_MPEG4_Coordinate2D:
40063 : return Coordinate2D_get_field_index_by_name(name);
40064 7 : case TAG_MPEG4_CoordinateInterpolator:
40065 7 : return CoordinateInterpolator_get_field_index_by_name(name);
40066 12 : case TAG_MPEG4_CoordinateInterpolator2D:
40067 12 : return CoordinateInterpolator2D_get_field_index_by_name(name);
40068 5717 : case TAG_MPEG4_Curve2D:
40069 5717 : return Curve2D_get_field_index_by_name(name);
40070 80 : case TAG_MPEG4_Cylinder:
40071 80 : return Cylinder_get_field_index_by_name(name);
40072 13 : case TAG_MPEG4_CylinderSensor:
40073 13 : return CylinderSensor_get_field_index_by_name(name);
40074 20 : case TAG_MPEG4_DirectionalLight:
40075 20 : return DirectionalLight_get_field_index_by_name(name);
40076 27 : case TAG_MPEG4_DiscSensor:
40077 27 : return DiscSensor_get_field_index_by_name(name);
40078 110 : case TAG_MPEG4_ElevationGrid:
40079 110 : return ElevationGrid_get_field_index_by_name(name);
40080 6 : case TAG_MPEG4_Expression:
40081 6 : return Expression_get_field_index_by_name(name);
40082 111 : case TAG_MPEG4_Extrusion:
40083 111 : return Extrusion_get_field_index_by_name(name);
40084 5 : case TAG_MPEG4_Face:
40085 5 : return Face_get_field_index_by_name(name);
40086 4 : case TAG_MPEG4_FaceDefMesh:
40087 4 : return FaceDefMesh_get_field_index_by_name(name);
40088 4 : case TAG_MPEG4_FaceDefTables:
40089 4 : return FaceDefTables_get_field_index_by_name(name);
40090 5 : case TAG_MPEG4_FaceDefTransform:
40091 5 : return FaceDefTransform_get_field_index_by_name(name);
40092 68 : case TAG_MPEG4_FAP:
40093 68 : return FAP_get_field_index_by_name(name);
40094 5 : case TAG_MPEG4_FDP:
40095 5 : return FDP_get_field_index_by_name(name);
40096 9 : case TAG_MPEG4_FIT:
40097 9 : return FIT_get_field_index_by_name(name);
40098 21 : case TAG_MPEG4_Fog:
40099 21 : return Fog_get_field_index_by_name(name);
40100 1454 : case TAG_MPEG4_FontStyle:
40101 1454 : return FontStyle_get_field_index_by_name(name);
40102 495 : case TAG_MPEG4_Form:
40103 495 : return Form_get_field_index_by_name(name);
40104 88 : case TAG_MPEG4_Group:
40105 88 : return Group_get_field_index_by_name(name);
40106 169 : case TAG_MPEG4_ImageTexture:
40107 169 : return ImageTexture_get_field_index_by_name(name);
40108 122 : case TAG_MPEG4_IndexedFaceSet:
40109 122 : return IndexedFaceSet_get_field_index_by_name(name);
40110 262 : case TAG_MPEG4_IndexedFaceSet2D:
40111 262 : return IndexedFaceSet2D_get_field_index_by_name(name);
40112 77 : case TAG_MPEG4_IndexedLineSet:
40113 77 : return IndexedLineSet_get_field_index_by_name(name);
40114 84 : case TAG_MPEG4_IndexedLineSet2D:
40115 84 : return IndexedLineSet2D_get_field_index_by_name(name);
40116 : case TAG_MPEG4_Inline:
40117 : return Inline_get_field_index_by_name(name);
40118 6 : case TAG_MPEG4_LOD:
40119 6 : return LOD_get_field_index_by_name(name);
40120 2090 : case TAG_MPEG4_Layer2D:
40121 2090 : return Layer2D_get_field_index_by_name(name);
40122 71 : case TAG_MPEG4_Layer3D:
40123 71 : return Layer3D_get_field_index_by_name(name);
40124 903 : case TAG_MPEG4_Layout:
40125 903 : return Layout_get_field_index_by_name(name);
40126 389 : case TAG_MPEG4_LineProperties:
40127 389 : return LineProperties_get_field_index_by_name(name);
40128 7 : case TAG_MPEG4_ListeningPoint:
40129 7 : return ListeningPoint_get_field_index_by_name(name);
40130 119 : case TAG_MPEG4_Material:
40131 119 : return Material_get_field_index_by_name(name);
40132 2727 : case TAG_MPEG4_Material2D:
40133 2727 : return Material2D_get_field_index_by_name(name);
40134 119 : case TAG_MPEG4_MovieTexture:
40135 119 : return MovieTexture_get_field_index_by_name(name);
40136 45 : case TAG_MPEG4_NavigationInfo:
40137 45 : return NavigationInfo_get_field_index_by_name(name);
40138 : case TAG_MPEG4_Normal:
40139 : return Normal_get_field_index_by_name(name);
40140 7 : case TAG_MPEG4_NormalInterpolator:
40141 7 : return NormalInterpolator_get_field_index_by_name(name);
40142 449 : case TAG_MPEG4_OrderedGroup:
40143 449 : return OrderedGroup_get_field_index_by_name(name);
40144 77 : case TAG_MPEG4_OrientationInterpolator:
40145 77 : return OrientationInterpolator_get_field_index_by_name(name);
40146 22 : case TAG_MPEG4_PixelTexture:
40147 22 : return PixelTexture_get_field_index_by_name(name);
40148 15 : case TAG_MPEG4_PlaneSensor:
40149 15 : return PlaneSensor_get_field_index_by_name(name);
40150 126 : case TAG_MPEG4_PlaneSensor2D:
40151 126 : return PlaneSensor2D_get_field_index_by_name(name);
40152 11 : case TAG_MPEG4_PointLight:
40153 11 : return PointLight_get_field_index_by_name(name);
40154 18 : case TAG_MPEG4_PointSet:
40155 18 : return PointSet_get_field_index_by_name(name);
40156 29 : case TAG_MPEG4_PointSet2D:
40157 29 : return PointSet2D_get_field_index_by_name(name);
40158 48 : case TAG_MPEG4_PositionInterpolator:
40159 48 : return PositionInterpolator_get_field_index_by_name(name);
40160 193 : case TAG_MPEG4_PositionInterpolator2D:
40161 193 : return PositionInterpolator2D_get_field_index_by_name(name);
40162 14 : case TAG_MPEG4_ProximitySensor2D:
40163 14 : return ProximitySensor2D_get_field_index_by_name(name);
40164 12 : case TAG_MPEG4_ProximitySensor:
40165 12 : return ProximitySensor_get_field_index_by_name(name);
40166 355 : case TAG_MPEG4_QuantizationParameter:
40167 355 : return QuantizationParameter_get_field_index_by_name(name);
40168 : case TAG_MPEG4_Rectangle:
40169 : return Rectangle_get_field_index_by_name(name);
40170 215 : case TAG_MPEG4_ScalarInterpolator:
40171 215 : return ScalarInterpolator_get_field_index_by_name(name);
40172 0 : case TAG_MPEG4_Script:
40173 0 : return Script_get_field_index_by_name(name);
40174 12594 : case TAG_MPEG4_Shape:
40175 12594 : return Shape_get_field_index_by_name(name);
40176 16 : case TAG_MPEG4_Sound:
40177 16 : return Sound_get_field_index_by_name(name);
40178 69 : case TAG_MPEG4_Sound2D:
40179 69 : return Sound2D_get_field_index_by_name(name);
40180 : case TAG_MPEG4_Sphere:
40181 : return Sphere_get_field_index_by_name(name);
40182 10 : case TAG_MPEG4_SphereSensor:
40183 10 : return SphereSensor_get_field_index_by_name(name);
40184 14 : case TAG_MPEG4_SpotLight:
40185 14 : return SpotLight_get_field_index_by_name(name);
40186 260 : case TAG_MPEG4_Switch:
40187 260 : return Switch_get_field_index_by_name(name);
40188 3 : case TAG_MPEG4_TermCap:
40189 3 : return TermCap_get_field_index_by_name(name);
40190 3601 : case TAG_MPEG4_Text:
40191 3601 : return Text_get_field_index_by_name(name);
40192 : case TAG_MPEG4_TextureCoordinate:
40193 : return TextureCoordinate_get_field_index_by_name(name);
40194 45 : case TAG_MPEG4_TextureTransform:
40195 45 : return TextureTransform_get_field_index_by_name(name);
40196 1080 : case TAG_MPEG4_TimeSensor:
40197 1080 : return TimeSensor_get_field_index_by_name(name);
40198 828 : case TAG_MPEG4_TouchSensor:
40199 828 : return TouchSensor_get_field_index_by_name(name);
40200 383 : case TAG_MPEG4_Transform:
40201 383 : return Transform_get_field_index_by_name(name);
40202 31783 : case TAG_MPEG4_Transform2D:
40203 31783 : return Transform2D_get_field_index_by_name(name);
40204 1650 : case TAG_MPEG4_Valuator:
40205 1650 : return Valuator_get_field_index_by_name(name);
40206 99 : case TAG_MPEG4_Viewpoint:
40207 99 : return Viewpoint_get_field_index_by_name(name);
40208 10 : case TAG_MPEG4_VisibilitySensor:
40209 10 : return VisibilitySensor_get_field_index_by_name(name);
40210 4 : case TAG_MPEG4_Viseme:
40211 4 : return Viseme_get_field_index_by_name(name);
40212 770 : case TAG_MPEG4_WorldInfo:
40213 770 : return WorldInfo_get_field_index_by_name(name);
40214 10 : case TAG_MPEG4_AcousticMaterial:
40215 10 : return AcousticMaterial_get_field_index_by_name(name);
40216 6 : case TAG_MPEG4_AcousticScene:
40217 6 : return AcousticScene_get_field_index_by_name(name);
40218 7 : case TAG_MPEG4_ApplicationWindow:
40219 7 : return ApplicationWindow_get_field_index_by_name(name);
40220 296 : case TAG_MPEG4_BAP:
40221 296 : return BAP_get_field_index_by_name(name);
40222 2 : case TAG_MPEG4_BDP:
40223 2 : return BDP_get_field_index_by_name(name);
40224 3 : case TAG_MPEG4_Body:
40225 3 : return Body_get_field_index_by_name(name);
40226 6 : case TAG_MPEG4_BodyDefTable:
40227 6 : return BodyDefTable_get_field_index_by_name(name);
40228 4 : case TAG_MPEG4_BodySegmentConnectionHint:
40229 4 : return BodySegmentConnectionHint_get_field_index_by_name(name);
40230 13 : case TAG_MPEG4_DirectiveSound:
40231 13 : return DirectiveSound_get_field_index_by_name(name);
40232 4 : case TAG_MPEG4_Hierarchical3DMesh:
40233 4 : return Hierarchical3DMesh_get_field_index_by_name(name);
40234 11 : case TAG_MPEG4_MaterialKey:
40235 11 : return MaterialKey_get_field_index_by_name(name);
40236 19 : case TAG_MPEG4_PerceptualParameters:
40237 19 : return PerceptualParameters_get_field_index_by_name(name);
40238 13 : case TAG_MPEG4_TemporalTransform:
40239 13 : return TemporalTransform_get_field_index_by_name(name);
40240 9 : case TAG_MPEG4_TemporalGroup:
40241 9 : return TemporalGroup_get_field_index_by_name(name);
40242 4 : case TAG_MPEG4_ServerCommand:
40243 4 : return ServerCommand_get_field_index_by_name(name);
40244 70 : case TAG_MPEG4_InputSensor:
40245 70 : return InputSensor_get_field_index_by_name(name);
40246 7 : case TAG_MPEG4_MatteTexture:
40247 7 : return MatteTexture_get_field_index_by_name(name);
40248 6 : case TAG_MPEG4_MediaBuffer:
40249 6 : return MediaBuffer_get_field_index_by_name(name);
40250 769 : case TAG_MPEG4_MediaControl:
40251 769 : return MediaControl_get_field_index_by_name(name);
40252 56 : case TAG_MPEG4_MediaSensor:
40253 56 : return MediaSensor_get_field_index_by_name(name);
40254 19 : case TAG_MPEG4_BitWrapper:
40255 19 : return BitWrapper_get_field_index_by_name(name);
40256 7 : case TAG_MPEG4_CoordinateInterpolator4D:
40257 7 : return CoordinateInterpolator4D_get_field_index_by_name(name);
40258 7 : case TAG_MPEG4_DepthImage:
40259 7 : return DepthImage_get_field_index_by_name(name);
40260 13 : case TAG_MPEG4_FFD:
40261 13 : return FFD_get_field_index_by_name(name);
40262 5 : case TAG_MPEG4_Implicit:
40263 5 : return Implicit_get_field_index_by_name(name);
40264 4 : case TAG_MPEG4_XXLFM_Appearance:
40265 4 : return XXLFM_Appearance_get_field_index_by_name(name);
40266 2 : case TAG_MPEG4_XXLFM_BlendList:
40267 2 : return XXLFM_BlendList_get_field_index_by_name(name);
40268 2 : case TAG_MPEG4_XXLFM_FrameList:
40269 2 : return XXLFM_FrameList_get_field_index_by_name(name);
40270 5 : case TAG_MPEG4_XXLFM_LightMap:
40271 5 : return XXLFM_LightMap_get_field_index_by_name(name);
40272 4 : case TAG_MPEG4_XXLFM_SurfaceMapList:
40273 4 : return XXLFM_SurfaceMapList_get_field_index_by_name(name);
40274 4 : case TAG_MPEG4_XXLFM_ViewMapList:
40275 4 : return XXLFM_ViewMapList_get_field_index_by_name(name);
40276 23 : case TAG_MPEG4_MeshGrid:
40277 23 : return MeshGrid_get_field_index_by_name(name);
40278 71 : case TAG_MPEG4_NonLinearDeformer:
40279 71 : return NonLinearDeformer_get_field_index_by_name(name);
40280 8 : case TAG_MPEG4_NurbsCurve:
40281 8 : return NurbsCurve_get_field_index_by_name(name);
40282 8 : case TAG_MPEG4_NurbsCurve2D:
40283 8 : return NurbsCurve2D_get_field_index_by_name(name);
40284 18 : case TAG_MPEG4_NurbsSurface:
40285 18 : return NurbsSurface_get_field_index_by_name(name);
40286 4 : case TAG_MPEG4_OctreeImage:
40287 4 : return OctreeImage_get_field_index_by_name(name);
40288 25 : case TAG_MPEG4_XXParticles:
40289 25 : return XXParticles_get_field_index_by_name(name);
40290 2 : case TAG_MPEG4_XXParticleInitBox:
40291 2 : return XXParticleInitBox_get_field_index_by_name(name);
40292 4 : case TAG_MPEG4_XXPlanarObstacle:
40293 4 : return XXPlanarObstacle_get_field_index_by_name(name);
40294 4 : case TAG_MPEG4_XXPointAttractor:
40295 4 : return XXPointAttractor_get_field_index_by_name(name);
40296 5 : case TAG_MPEG4_PointTexture:
40297 5 : return PointTexture_get_field_index_by_name(name);
40298 20 : case TAG_MPEG4_PositionAnimator:
40299 20 : return PositionAnimator_get_field_index_by_name(name);
40300 27 : case TAG_MPEG4_PositionAnimator2D:
40301 27 : return PositionAnimator2D_get_field_index_by_name(name);
40302 7 : case TAG_MPEG4_PositionInterpolator4D:
40303 7 : return PositionInterpolator4D_get_field_index_by_name(name);
40304 20 : case TAG_MPEG4_ProceduralTexture:
40305 20 : return ProceduralTexture_get_field_index_by_name(name);
40306 10 : case TAG_MPEG4_Quadric:
40307 10 : return Quadric_get_field_index_by_name(name);
40308 24 : case TAG_MPEG4_SBBone:
40309 24 : return SBBone_get_field_index_by_name(name);
40310 6 : case TAG_MPEG4_SBMuscle:
40311 6 : return SBMuscle_get_field_index_by_name(name);
40312 7 : case TAG_MPEG4_SBSegment:
40313 7 : return SBSegment_get_field_index_by_name(name);
40314 9 : case TAG_MPEG4_SBSite:
40315 9 : return SBSite_get_field_index_by_name(name);
40316 15 : case TAG_MPEG4_SBSkinnedModel:
40317 15 : return SBSkinnedModel_get_field_index_by_name(name);
40318 2 : case TAG_MPEG4_SBVCAnimation:
40319 2 : return SBVCAnimation_get_field_index_by_name(name);
40320 17 : case TAG_MPEG4_ScalarAnimator:
40321 17 : return ScalarAnimator_get_field_index_by_name(name);
40322 2 : case TAG_MPEG4_SimpleTexture:
40323 2 : return SimpleTexture_get_field_index_by_name(name);
40324 3 : case TAG_MPEG4_SolidRep:
40325 3 : return SolidRep_get_field_index_by_name(name);
40326 26 : case TAG_MPEG4_SubdivisionSurface:
40327 26 : return SubdivisionSurface_get_field_index_by_name(name);
40328 7 : case TAG_MPEG4_SubdivSurfaceSector:
40329 7 : return SubdivSurfaceSector_get_field_index_by_name(name);
40330 4 : case TAG_MPEG4_WaveletSubdivisionSurface:
40331 4 : return WaveletSubdivisionSurface_get_field_index_by_name(name);
40332 36 : case TAG_MPEG4_Clipper2D:
40333 36 : return Clipper2D_get_field_index_by_name(name);
40334 355 : case TAG_MPEG4_ColorTransform:
40335 355 : return ColorTransform_get_field_index_by_name(name);
40336 : case TAG_MPEG4_Ellipse:
40337 : return Ellipse_get_field_index_by_name(name);
40338 1035 : case TAG_MPEG4_LinearGradient:
40339 1035 : return LinearGradient_get_field_index_by_name(name);
40340 43 : case TAG_MPEG4_PathLayout:
40341 43 : return PathLayout_get_field_index_by_name(name);
40342 226 : case TAG_MPEG4_RadialGradient:
40343 226 : return RadialGradient_get_field_index_by_name(name);
40344 11 : case TAG_MPEG4_SynthesizedTexture:
40345 11 : return SynthesizedTexture_get_field_index_by_name(name);
40346 81 : case TAG_MPEG4_TransformMatrix2D:
40347 81 : return TransformMatrix2D_get_field_index_by_name(name);
40348 252 : case TAG_MPEG4_Viewport:
40349 252 : return Viewport_get_field_index_by_name(name);
40350 45 : case TAG_MPEG4_XCurve2D:
40351 45 : return XCurve2D_get_field_index_by_name(name);
40352 17 : case TAG_MPEG4_XFontStyle:
40353 17 : return XFontStyle_get_field_index_by_name(name);
40354 202 : case TAG_MPEG4_XLineProperties:
40355 202 : return XLineProperties_get_field_index_by_name(name);
40356 18 : case TAG_MPEG4_AdvancedAudioBuffer:
40357 18 : return AdvancedAudioBuffer_get_field_index_by_name(name);
40358 22 : case TAG_MPEG4_AudioChannelConfig:
40359 22 : return AudioChannelConfig_get_field_index_by_name(name);
40360 8 : case TAG_MPEG4_DepthImageV2:
40361 8 : return DepthImageV2_get_field_index_by_name(name);
40362 4 : case TAG_MPEG4_MorphShape:
40363 4 : return MorphShape_get_field_index_by_name(name);
40364 8 : case TAG_MPEG4_MultiTexture:
40365 8 : return MultiTexture_get_field_index_by_name(name);
40366 8 : case TAG_MPEG4_PointTextureV2:
40367 8 : return PointTextureV2_get_field_index_by_name(name);
40368 10 : case TAG_MPEG4_SBVCAnimationV2:
40369 10 : return SBVCAnimationV2_get_field_index_by_name(name);
40370 5 : case TAG_MPEG4_SimpleTextureV2:
40371 5 : return SimpleTextureV2_get_field_index_by_name(name);
40372 7 : case TAG_MPEG4_SurroundingSound:
40373 7 : return SurroundingSound_get_field_index_by_name(name);
40374 9 : case TAG_MPEG4_Transform3DAudio:
40375 9 : return Transform3DAudio_get_field_index_by_name(name);
40376 15 : case TAG_MPEG4_WideSound:
40377 15 : return WideSound_get_field_index_by_name(name);
40378 2 : case TAG_MPEG4_ScoreShape:
40379 2 : return ScoreShape_get_field_index_by_name(name);
40380 31 : case TAG_MPEG4_MusicScore:
40381 31 : return MusicScore_get_field_index_by_name(name);
40382 : case TAG_MPEG4_FootPrintSetNode:
40383 : return FootPrintSetNode_get_field_index_by_name(name);
40384 2 : case TAG_MPEG4_FootPrintNode:
40385 2 : return FootPrintNode_get_field_index_by_name(name);
40386 8 : case TAG_MPEG4_BuildingPartNode:
40387 8 : return BuildingPartNode_get_field_index_by_name(name);
40388 12 : case TAG_MPEG4_RoofNode:
40389 12 : return RoofNode_get_field_index_by_name(name);
40390 13 : case TAG_MPEG4_FacadeNode:
40391 13 : return FacadeNode_get_field_index_by_name(name);
40392 7 : case TAG_MPEG4_Shadow:
40393 7 : return Shadow_get_field_index_by_name(name);
40394 59 : case TAG_MPEG4_CacheTexture:
40395 59 : return CacheTexture_get_field_index_by_name(name);
40396 30 : case TAG_MPEG4_EnvironmentTest:
40397 30 : return EnvironmentTest_get_field_index_by_name(name);
40398 32 : case TAG_MPEG4_KeyNavigator:
40399 32 : return KeyNavigator_get_field_index_by_name(name);
40400 4 : case TAG_MPEG4_SpacePartition:
40401 4 : return SpacePartition_get_field_index_by_name(name);
40402 9 : case TAG_MPEG4_Storage:
40403 9 : return Storage_get_field_index_by_name(name);
40404 : default:
40405 : return -1;
40406 : }
40407 : }
40408 :
40409 :
40410 : #endif /*GPAC_DISABLE_VRML*/
|