This source file includes following definitions.
- Anchor_Del
- Anchor_get_field_count
- Anchor_get_field_index
- Anchor_get_field
- Anchor_get_field_index_by_name
- Anchor_get_aq_info
- Anchor_Create
- AnimationStream_Del
- AnimationStream_get_field_count
- AnimationStream_get_field_index
- AnimationStream_get_field
- AnimationStream_get_field_index_by_name
- AnimationStream_get_aq_info
- AnimationStream_Create
- Appearance_Del
- Appearance_get_field_count
- Appearance_get_field_index
- Appearance_get_field
- Appearance_get_field_index_by_name
- Appearance_get_aq_info
- Appearance_Create
- AudioBuffer_Del
- AudioBuffer_get_field_count
- AudioBuffer_get_field_index
- AudioBuffer_get_field
- AudioBuffer_get_field_index_by_name
- AudioBuffer_get_aq_info
- AudioBuffer_Create
- AudioClip_Del
- AudioClip_get_field_count
- AudioClip_get_field_index
- AudioClip_get_field
- AudioClip_get_field_index_by_name
- AudioClip_get_aq_info
- AudioClip_Create
- AudioDelay_Del
- AudioDelay_get_field_count
- AudioDelay_get_field_index
- AudioDelay_get_field
- AudioDelay_get_field_index_by_name
- AudioDelay_get_aq_info
- AudioDelay_Create
- AudioFX_Del
- AudioFX_get_field_count
- AudioFX_get_field_index
- AudioFX_get_field
- AudioFX_get_field_index_by_name
- AudioFX_get_aq_info
- AudioFX_Create
- AudioMix_Del
- AudioMix_get_field_count
- AudioMix_get_field_index
- AudioMix_get_field
- AudioMix_get_field_index_by_name
- AudioMix_get_aq_info
- AudioMix_Create
- AudioSource_Del
- AudioSource_get_field_count
- AudioSource_get_field_index
- AudioSource_get_field
- AudioSource_get_field_index_by_name
- AudioSource_get_aq_info
- AudioSource_Create
- AudioSwitch_Del
- AudioSwitch_get_field_count
- AudioSwitch_get_field_index
- AudioSwitch_get_field
- AudioSwitch_get_field_index_by_name
- AudioSwitch_get_aq_info
- AudioSwitch_Create
- Background_Del
- Background_get_field_count
- Background_get_field_index
- Background_get_field
- Background_get_field_index_by_name
- Background_get_aq_info
- Background_Create
- Background2D_Del
- Background2D_get_field_count
- Background2D_get_field_index
- Background2D_get_field
- Background2D_get_field_index_by_name
- Background2D_get_aq_info
- Background2D_Create
- Billboard_Del
- Billboard_get_field_count
- Billboard_get_field_index
- Billboard_get_field
- Billboard_get_field_index_by_name
- Billboard_get_aq_info
- Billboard_Create
- Bitmap_Del
- Bitmap_get_field_count
- Bitmap_get_field_index
- Bitmap_get_field
- Bitmap_get_field_index_by_name
- Bitmap_get_aq_info
- Bitmap_Create
- Box_Del
- Box_get_field_count
- Box_get_field_index
- Box_get_field
- Box_get_field_index_by_name
- Box_get_aq_info
- Box_Create
- Circle_Del
- Circle_get_field_count
- Circle_get_field_index
- Circle_get_field
- Circle_get_field_index_by_name
- Circle_get_aq_info
- Circle_Create
- Collision_Del
- Collision_get_field_count
- Collision_get_field_index
- Collision_get_field
- Collision_get_field_index_by_name
- Collision_get_aq_info
- Collision_Create
- Color_Del
- Color_get_field_count
- Color_get_field_index
- Color_get_field
- Color_get_field_index_by_name
- Color_get_aq_info
- Color_Create
- ColorInterpolator_Del
- ColorInterpolator_get_field_count
- ColorInterpolator_get_field_index
- ColorInterpolator_get_field
- ColorInterpolator_get_field_index_by_name
- ColorInterpolator_get_aq_info
- ColorInterpolator_Create
- CompositeTexture2D_Del
- CompositeTexture2D_get_field_count
- CompositeTexture2D_get_field_index
- CompositeTexture2D_get_field
- CompositeTexture2D_get_field_index_by_name
- CompositeTexture2D_get_aq_info
- CompositeTexture2D_Create
- CompositeTexture3D_Del
- CompositeTexture3D_get_field_count
- CompositeTexture3D_get_field_index
- CompositeTexture3D_get_field
- CompositeTexture3D_get_field_index_by_name
- CompositeTexture3D_get_aq_info
- CompositeTexture3D_Create
- Conditional_Del
- Conditional_get_field_count
- Conditional_get_field_index
- Conditional_get_field
- Conditional_get_field_index_by_name
- Conditional_get_aq_info
- Conditional_Create
- Cone_Del
- Cone_get_field_count
- Cone_get_field_index
- Cone_get_field
- Cone_get_field_index_by_name
- Cone_get_aq_info
- Cone_Create
- Coordinate_Del
- Coordinate_get_field_count
- Coordinate_get_field_index
- Coordinate_get_field
- Coordinate_get_field_index_by_name
- Coordinate_get_aq_info
- Coordinate_Create
- Coordinate2D_Del
- Coordinate2D_get_field_count
- Coordinate2D_get_field_index
- Coordinate2D_get_field
- Coordinate2D_get_field_index_by_name
- Coordinate2D_get_aq_info
- Coordinate2D_Create
- CoordinateInterpolator_Del
- CoordinateInterpolator_get_field_count
- CoordinateInterpolator_get_field_index
- CoordinateInterpolator_get_field
- CoordinateInterpolator_get_field_index_by_name
- CoordinateInterpolator_get_aq_info
- CoordinateInterpolator_Create
- CoordinateInterpolator2D_Del
- CoordinateInterpolator2D_get_field_count
- CoordinateInterpolator2D_get_field_index
- CoordinateInterpolator2D_get_field
- CoordinateInterpolator2D_get_field_index_by_name
- CoordinateInterpolator2D_get_aq_info
- CoordinateInterpolator2D_Create
- Curve2D_Del
- Curve2D_get_field_count
- Curve2D_get_field_index
- Curve2D_get_field
- Curve2D_get_field_index_by_name
- Curve2D_get_aq_info
- Curve2D_Create
- Cylinder_Del
- Cylinder_get_field_count
- Cylinder_get_field_index
- Cylinder_get_field
- Cylinder_get_field_index_by_name
- Cylinder_get_aq_info
- Cylinder_Create
- CylinderSensor_Del
- CylinderSensor_get_field_count
- CylinderSensor_get_field_index
- CylinderSensor_get_field
- CylinderSensor_get_field_index_by_name
- CylinderSensor_get_aq_info
- CylinderSensor_Create
- DirectionalLight_Del
- DirectionalLight_get_field_count
- DirectionalLight_get_field_index
- DirectionalLight_get_field
- DirectionalLight_get_field_index_by_name
- DirectionalLight_get_aq_info
- DirectionalLight_Create
- DiscSensor_Del
- DiscSensor_get_field_count
- DiscSensor_get_field_index
- DiscSensor_get_field
- DiscSensor_get_field_index_by_name
- DiscSensor_get_aq_info
- DiscSensor_Create
- ElevationGrid_Del
- ElevationGrid_get_field_count
- ElevationGrid_get_field_index
- ElevationGrid_get_field
- ElevationGrid_get_field_index_by_name
- ElevationGrid_get_aq_info
- ElevationGrid_Create
- Expression_Del
- Expression_get_field_count
- Expression_get_field_index
- Expression_get_field
- Expression_get_field_index_by_name
- Expression_get_aq_info
- Expression_Create
- Extrusion_Del
- Extrusion_get_field_count
- Extrusion_get_field_index
- Extrusion_get_field
- Extrusion_get_field_index_by_name
- Extrusion_get_aq_info
- Extrusion_Create
- Face_Del
- Face_get_field_count
- Face_get_field_index
- Face_get_field
- Face_get_field_index_by_name
- Face_get_aq_info
- Face_Create
- FaceDefMesh_Del
- FaceDefMesh_get_field_count
- FaceDefMesh_get_field_index
- FaceDefMesh_get_field
- FaceDefMesh_get_field_index_by_name
- FaceDefMesh_get_aq_info
- FaceDefMesh_Create
- FaceDefTables_Del
- FaceDefTables_get_field_count
- FaceDefTables_get_field_index
- FaceDefTables_get_field
- FaceDefTables_get_field_index_by_name
- FaceDefTables_get_aq_info
- FaceDefTables_Create
- FaceDefTransform_Del
- FaceDefTransform_get_field_count
- FaceDefTransform_get_field_index
- FaceDefTransform_get_field
- FaceDefTransform_get_field_index_by_name
- FaceDefTransform_get_aq_info
- FaceDefTransform_Create
- FAP_Del
- FAP_get_field_count
- FAP_get_field_index
- FAP_get_field
- FAP_get_field_index_by_name
- FAP_get_aq_info
- FAP_Create
- FDP_Del
- FDP_get_field_count
- FDP_get_field_index
- FDP_get_field
- FDP_get_field_index_by_name
- FDP_get_aq_info
- FDP_Create
- FIT_Del
- FIT_get_field_count
- FIT_get_field_index
- FIT_get_field
- FIT_get_field_index_by_name
- FIT_get_aq_info
- FIT_Create
- Fog_Del
- Fog_get_field_count
- Fog_get_field_index
- Fog_get_field
- Fog_get_field_index_by_name
- Fog_get_aq_info
- Fog_Create
- FontStyle_Del
- FontStyle_get_field_count
- FontStyle_get_field_index
- FontStyle_get_field
- FontStyle_get_field_index_by_name
- FontStyle_get_aq_info
- FontStyle_Create
- Form_Del
- Form_get_field_count
- Form_get_field_index
- Form_get_field
- Form_get_field_index_by_name
- Form_get_aq_info
- Form_Create
- Group_Del
- Group_get_field_count
- Group_get_field_index
- Group_get_field
- Group_get_field_index_by_name
- Group_get_aq_info
- Group_Create
- ImageTexture_Del
- ImageTexture_get_field_count
- ImageTexture_get_field_index
- ImageTexture_get_field
- ImageTexture_get_field_index_by_name
- ImageTexture_get_aq_info
- ImageTexture_Create
- IndexedFaceSet_Del
- IndexedFaceSet_get_field_count
- IndexedFaceSet_get_field_index
- IndexedFaceSet_get_field
- IndexedFaceSet_get_field_index_by_name
- IndexedFaceSet_get_aq_info
- IndexedFaceSet_Create
- IndexedFaceSet2D_Del
- IndexedFaceSet2D_get_field_count
- IndexedFaceSet2D_get_field_index
- IndexedFaceSet2D_get_field
- IndexedFaceSet2D_get_field_index_by_name
- IndexedFaceSet2D_get_aq_info
- IndexedFaceSet2D_Create
- IndexedLineSet_Del
- IndexedLineSet_get_field_count
- IndexedLineSet_get_field_index
- IndexedLineSet_get_field
- IndexedLineSet_get_field_index_by_name
- IndexedLineSet_get_aq_info
- IndexedLineSet_Create
- IndexedLineSet2D_Del
- IndexedLineSet2D_get_field_count
- IndexedLineSet2D_get_field_index
- IndexedLineSet2D_get_field
- IndexedLineSet2D_get_field_index_by_name
- IndexedLineSet2D_get_aq_info
- IndexedLineSet2D_Create
- Inline_Del
- Inline_get_field_count
- Inline_get_field_index
- Inline_get_field
- Inline_get_field_index_by_name
- Inline_get_aq_info
- Inline_Create
- LOD_Del
- LOD_get_field_count
- LOD_get_field_index
- LOD_get_field
- LOD_get_field_index_by_name
- LOD_get_aq_info
- LOD_Create
- Layer2D_Del
- Layer2D_get_field_count
- Layer2D_get_field_index
- Layer2D_get_field
- Layer2D_get_field_index_by_name
- Layer2D_get_aq_info
- Layer2D_Create
- Layer3D_Del
- Layer3D_get_field_count
- Layer3D_get_field_index
- Layer3D_get_field
- Layer3D_get_field_index_by_name
- Layer3D_get_aq_info
- Layer3D_Create
- Layout_Del
- Layout_get_field_count
- Layout_get_field_index
- Layout_get_field
- Layout_get_field_index_by_name
- Layout_get_aq_info
- Layout_Create
- LineProperties_Del
- LineProperties_get_field_count
- LineProperties_get_field_index
- LineProperties_get_field
- LineProperties_get_field_index_by_name
- LineProperties_get_aq_info
- LineProperties_Create
- ListeningPoint_Del
- ListeningPoint_get_field_count
- ListeningPoint_get_field_index
- ListeningPoint_get_field
- ListeningPoint_get_field_index_by_name
- ListeningPoint_get_aq_info
- ListeningPoint_Create
- Material_Del
- Material_get_field_count
- Material_get_field_index
- Material_get_field
- Material_get_field_index_by_name
- Material_get_aq_info
- Material_Create
- Material2D_Del
- Material2D_get_field_count
- Material2D_get_field_index
- Material2D_get_field
- Material2D_get_field_index_by_name
- Material2D_get_aq_info
- Material2D_Create
- MovieTexture_Del
- MovieTexture_get_field_count
- MovieTexture_get_field_index
- MovieTexture_get_field
- MovieTexture_get_field_index_by_name
- MovieTexture_get_aq_info
- MovieTexture_Create
- NavigationInfo_Del
- NavigationInfo_get_field_count
- NavigationInfo_get_field_index
- NavigationInfo_get_field
- NavigationInfo_get_field_index_by_name
- NavigationInfo_get_aq_info
- NavigationInfo_Create
- Normal_Del
- Normal_get_field_count
- Normal_get_field_index
- Normal_get_field
- Normal_get_field_index_by_name
- Normal_get_aq_info
- Normal_Create
- NormalInterpolator_Del
- NormalInterpolator_get_field_count
- NormalInterpolator_get_field_index
- NormalInterpolator_get_field
- NormalInterpolator_get_field_index_by_name
- NormalInterpolator_get_aq_info
- NormalInterpolator_Create
- OrderedGroup_Del
- OrderedGroup_get_field_count
- OrderedGroup_get_field_index
- OrderedGroup_get_field
- OrderedGroup_get_field_index_by_name
- OrderedGroup_get_aq_info
- OrderedGroup_Create
- OrientationInterpolator_Del
- OrientationInterpolator_get_field_count
- OrientationInterpolator_get_field_index
- OrientationInterpolator_get_field
- OrientationInterpolator_get_field_index_by_name
- OrientationInterpolator_get_aq_info
- OrientationInterpolator_Create
- PixelTexture_Del
- PixelTexture_get_field_count
- PixelTexture_get_field_index
- PixelTexture_get_field
- PixelTexture_get_field_index_by_name
- PixelTexture_get_aq_info
- PixelTexture_Create
- PlaneSensor_Del
- PlaneSensor_get_field_count
- PlaneSensor_get_field_index
- PlaneSensor_get_field
- PlaneSensor_get_field_index_by_name
- PlaneSensor_get_aq_info
- PlaneSensor_Create
- PlaneSensor2D_Del
- PlaneSensor2D_get_field_count
- PlaneSensor2D_get_field_index
- PlaneSensor2D_get_field
- PlaneSensor2D_get_field_index_by_name
- PlaneSensor2D_get_aq_info
- PlaneSensor2D_Create
- PointLight_Del
- PointLight_get_field_count
- PointLight_get_field_index
- PointLight_get_field
- PointLight_get_field_index_by_name
- PointLight_get_aq_info
- PointLight_Create
- PointSet_Del
- PointSet_get_field_count
- PointSet_get_field_index
- PointSet_get_field
- PointSet_get_field_index_by_name
- PointSet_get_aq_info
- PointSet_Create
- PointSet2D_Del
- PointSet2D_get_field_count
- PointSet2D_get_field_index
- PointSet2D_get_field
- PointSet2D_get_field_index_by_name
- PointSet2D_get_aq_info
- PointSet2D_Create
- PositionInterpolator_Del
- PositionInterpolator_get_field_count
- PositionInterpolator_get_field_index
- PositionInterpolator_get_field
- PositionInterpolator_get_field_index_by_name
- PositionInterpolator_get_aq_info
- PositionInterpolator_Create
- PositionInterpolator2D_Del
- PositionInterpolator2D_get_field_count
- PositionInterpolator2D_get_field_index
- PositionInterpolator2D_get_field
- PositionInterpolator2D_get_field_index_by_name
- PositionInterpolator2D_get_aq_info
- PositionInterpolator2D_Create
- ProximitySensor2D_Del
- ProximitySensor2D_get_field_count
- ProximitySensor2D_get_field_index
- ProximitySensor2D_get_field
- ProximitySensor2D_get_field_index_by_name
- ProximitySensor2D_get_aq_info
- ProximitySensor2D_Create
- ProximitySensor_Del
- ProximitySensor_get_field_count
- ProximitySensor_get_field_index
- ProximitySensor_get_field
- ProximitySensor_get_field_index_by_name
- ProximitySensor_get_aq_info
- ProximitySensor_Create
- QuantizationParameter_Del
- QuantizationParameter_get_field_count
- QuantizationParameter_get_field_index
- QuantizationParameter_get_field
- QuantizationParameter_get_field_index_by_name
- QuantizationParameter_get_aq_info
- QuantizationParameter_Create
- Rectangle_Del
- Rectangle_get_field_count
- Rectangle_get_field_index
- Rectangle_get_field
- Rectangle_get_field_index_by_name
- Rectangle_get_aq_info
- Rectangle_Create
- ScalarInterpolator_Del
- ScalarInterpolator_get_field_count
- ScalarInterpolator_get_field_index
- ScalarInterpolator_get_field
- ScalarInterpolator_get_field_index_by_name
- ScalarInterpolator_get_aq_info
- ScalarInterpolator_Create
- Script_Del
- Script_get_field_count
- Script_get_field_index
- Script_get_field
- Script_get_field_index_by_name
- Script_get_aq_info
- Script_Create
- Shape_Del
- Shape_get_field_count
- Shape_get_field_index
- Shape_get_field
- Shape_get_field_index_by_name
- Shape_get_aq_info
- Shape_Create
- Sound_Del
- Sound_get_field_count
- Sound_get_field_index
- Sound_get_field
- Sound_get_field_index_by_name
- Sound_get_aq_info
- Sound_Create
- Sound2D_Del
- Sound2D_get_field_count
- Sound2D_get_field_index
- Sound2D_get_field
- Sound2D_get_field_index_by_name
- Sound2D_get_aq_info
- Sound2D_Create
- Sphere_Del
- Sphere_get_field_count
- Sphere_get_field_index
- Sphere_get_field
- Sphere_get_field_index_by_name
- Sphere_get_aq_info
- Sphere_Create
- SphereSensor_Del
- SphereSensor_get_field_count
- SphereSensor_get_field_index
- SphereSensor_get_field
- SphereSensor_get_field_index_by_name
- SphereSensor_get_aq_info
- SphereSensor_Create
- SpotLight_Del
- SpotLight_get_field_count
- SpotLight_get_field_index
- SpotLight_get_field
- SpotLight_get_field_index_by_name
- SpotLight_get_aq_info
- SpotLight_Create
- Switch_Del
- Switch_get_field_count
- Switch_get_field_index
- Switch_get_field
- Switch_get_field_index_by_name
- Switch_get_aq_info
- Switch_Create
- TermCap_Del
- TermCap_get_field_count
- TermCap_get_field_index
- TermCap_get_field
- TermCap_get_field_index_by_name
- TermCap_get_aq_info
- TermCap_Create
- Text_Del
- Text_get_field_count
- Text_get_field_index
- Text_get_field
- Text_get_field_index_by_name
- Text_get_aq_info
- Text_Create
- TextureCoordinate_Del
- TextureCoordinate_get_field_count
- TextureCoordinate_get_field_index
- TextureCoordinate_get_field
- TextureCoordinate_get_field_index_by_name
- TextureCoordinate_get_aq_info
- TextureCoordinate_Create
- TextureTransform_Del
- TextureTransform_get_field_count
- TextureTransform_get_field_index
- TextureTransform_get_field
- TextureTransform_get_field_index_by_name
- TextureTransform_get_aq_info
- TextureTransform_Create
- TimeSensor_Del
- TimeSensor_get_field_count
- TimeSensor_get_field_index
- TimeSensor_get_field
- TimeSensor_get_field_index_by_name
- TimeSensor_get_aq_info
- TimeSensor_Create
- TouchSensor_Del
- TouchSensor_get_field_count
- TouchSensor_get_field_index
- TouchSensor_get_field
- TouchSensor_get_field_index_by_name
- TouchSensor_get_aq_info
- TouchSensor_Create
- Transform_Del
- Transform_get_field_count
- Transform_get_field_index
- Transform_get_field
- Transform_get_field_index_by_name
- Transform_get_aq_info
- Transform_Create
- Transform2D_Del
- Transform2D_get_field_count
- Transform2D_get_field_index
- Transform2D_get_field
- Transform2D_get_field_index_by_name
- Transform2D_get_aq_info
- Transform2D_Create
- Valuator_Del
- Valuator_get_field_count
- Valuator_get_field_index
- Valuator_get_field
- Valuator_get_field_index_by_name
- Valuator_get_aq_info
- Valuator_Create
- Viewpoint_Del
- Viewpoint_get_field_count
- Viewpoint_get_field_index
- Viewpoint_get_field
- Viewpoint_get_field_index_by_name
- Viewpoint_get_aq_info
- Viewpoint_Create
- VisibilitySensor_Del
- VisibilitySensor_get_field_count
- VisibilitySensor_get_field_index
- VisibilitySensor_get_field
- VisibilitySensor_get_field_index_by_name
- VisibilitySensor_get_aq_info
- VisibilitySensor_Create
- Viseme_Del
- Viseme_get_field_count
- Viseme_get_field_index
- Viseme_get_field
- Viseme_get_field_index_by_name
- Viseme_get_aq_info
- Viseme_Create
- WorldInfo_Del
- WorldInfo_get_field_count
- WorldInfo_get_field_index
- WorldInfo_get_field
- WorldInfo_get_field_index_by_name
- WorldInfo_get_aq_info
- WorldInfo_Create
- AcousticMaterial_Del
- AcousticMaterial_get_field_count
- AcousticMaterial_get_field_index
- AcousticMaterial_get_field
- AcousticMaterial_get_field_index_by_name
- AcousticMaterial_get_aq_info
- AcousticMaterial_Create
- AcousticScene_Del
- AcousticScene_get_field_count
- AcousticScene_get_field_index
- AcousticScene_get_field
- AcousticScene_get_field_index_by_name
- AcousticScene_get_aq_info
- AcousticScene_Create
- ApplicationWindow_Del
- ApplicationWindow_get_field_count
- ApplicationWindow_get_field_index
- ApplicationWindow_get_field
- ApplicationWindow_get_field_index_by_name
- ApplicationWindow_get_aq_info
- ApplicationWindow_Create
- BAP_Del
- BAP_get_field_count
- BAP_get_field_index
- BAP_get_field
- BAP_get_field_index_by_name
- BAP_get_aq_info
- BAP_Create
- BDP_Del
- BDP_get_field_count
- BDP_get_field_index
- BDP_get_field
- BDP_get_field_index_by_name
- BDP_get_aq_info
- BDP_Create
- Body_Del
- Body_get_field_count
- Body_get_field_index
- Body_get_field
- Body_get_field_index_by_name
- Body_get_aq_info
- Body_Create
- BodyDefTable_Del
- BodyDefTable_get_field_count
- BodyDefTable_get_field_index
- BodyDefTable_get_field
- BodyDefTable_get_field_index_by_name
- BodyDefTable_get_aq_info
- BodyDefTable_Create
- BodySegmentConnectionHint_Del
- BodySegmentConnectionHint_get_field_count
- BodySegmentConnectionHint_get_field_index
- BodySegmentConnectionHint_get_field
- BodySegmentConnectionHint_get_field_index_by_name
- BodySegmentConnectionHint_get_aq_info
- BodySegmentConnectionHint_Create
- DirectiveSound_Del
- DirectiveSound_get_field_count
- DirectiveSound_get_field_index
- DirectiveSound_get_field
- DirectiveSound_get_field_index_by_name
- DirectiveSound_get_aq_info
- DirectiveSound_Create
- Hierarchical3DMesh_Del
- Hierarchical3DMesh_get_field_count
- Hierarchical3DMesh_get_field_index
- Hierarchical3DMesh_get_field
- Hierarchical3DMesh_get_field_index_by_name
- Hierarchical3DMesh_get_aq_info
- Hierarchical3DMesh_Create
- MaterialKey_Del
- MaterialKey_get_field_count
- MaterialKey_get_field_index
- MaterialKey_get_field
- MaterialKey_get_field_index_by_name
- MaterialKey_get_aq_info
- MaterialKey_Create
- PerceptualParameters_Del
- PerceptualParameters_get_field_count
- PerceptualParameters_get_field_index
- PerceptualParameters_get_field
- PerceptualParameters_get_field_index_by_name
- PerceptualParameters_get_aq_info
- PerceptualParameters_Create
- TemporalTransform_Del
- TemporalTransform_get_field_count
- TemporalTransform_get_field_index
- TemporalTransform_get_field
- TemporalTransform_get_field_index_by_name
- TemporalTransform_get_aq_info
- TemporalTransform_Create
- TemporalGroup_Del
- TemporalGroup_get_field_count
- TemporalGroup_get_field_index
- TemporalGroup_get_field
- TemporalGroup_get_field_index_by_name
- TemporalGroup_get_aq_info
- TemporalGroup_Create
- ServerCommand_Del
- ServerCommand_get_field_count
- ServerCommand_get_field_index
- ServerCommand_get_field
- ServerCommand_get_field_index_by_name
- ServerCommand_get_aq_info
- ServerCommand_Create
- InputSensor_Del
- InputSensor_get_field_count
- InputSensor_get_field_index
- InputSensor_get_field
- InputSensor_get_field_index_by_name
- InputSensor_get_aq_info
- InputSensor_Create
- MatteTexture_Del
- MatteTexture_get_field_count
- MatteTexture_get_field_index
- MatteTexture_get_field
- MatteTexture_get_field_index_by_name
- MatteTexture_get_aq_info
- MatteTexture_Create
- MediaBuffer_Del
- MediaBuffer_get_field_count
- MediaBuffer_get_field_index
- MediaBuffer_get_field
- MediaBuffer_get_field_index_by_name
- MediaBuffer_get_aq_info
- MediaBuffer_Create
- MediaControl_Del
- MediaControl_get_field_count
- MediaControl_get_field_index
- MediaControl_get_field
- MediaControl_get_field_index_by_name
- MediaControl_get_aq_info
- MediaControl_Create
- MediaSensor_Del
- MediaSensor_get_field_count
- MediaSensor_get_field_index
- MediaSensor_get_field
- MediaSensor_get_field_index_by_name
- MediaSensor_get_aq_info
- MediaSensor_Create
- BitWrapper_Del
- BitWrapper_get_field_count
- BitWrapper_get_field_index
- BitWrapper_get_field
- BitWrapper_get_field_index_by_name
- BitWrapper_get_aq_info
- BitWrapper_Create
- CoordinateInterpolator4D_Del
- CoordinateInterpolator4D_get_field_count
- CoordinateInterpolator4D_get_field_index
- CoordinateInterpolator4D_get_field
- CoordinateInterpolator4D_get_field_index_by_name
- CoordinateInterpolator4D_get_aq_info
- CoordinateInterpolator4D_Create
- DepthImage_Del
- DepthImage_get_field_count
- DepthImage_get_field_index
- DepthImage_get_field
- DepthImage_get_field_index_by_name
- DepthImage_get_aq_info
- DepthImage_Create
- FFD_Del
- FFD_get_field_count
- FFD_get_field_index
- FFD_get_field
- FFD_get_field_index_by_name
- FFD_get_aq_info
- FFD_Create
- Implicit_Del
- Implicit_get_field_count
- Implicit_get_field_index
- Implicit_get_field
- Implicit_get_field_index_by_name
- Implicit_get_aq_info
- Implicit_Create
- XXLFM_Appearance_Del
- XXLFM_Appearance_get_field_count
- XXLFM_Appearance_get_field_index
- XXLFM_Appearance_get_field
- XXLFM_Appearance_get_field_index_by_name
- XXLFM_Appearance_get_aq_info
- XXLFM_Appearance_Create
- XXLFM_BlendList_Del
- XXLFM_BlendList_get_field_count
- XXLFM_BlendList_get_field_index
- XXLFM_BlendList_get_field
- XXLFM_BlendList_get_field_index_by_name
- XXLFM_BlendList_get_aq_info
- XXLFM_BlendList_Create
- XXLFM_FrameList_Del
- XXLFM_FrameList_get_field_count
- XXLFM_FrameList_get_field_index
- XXLFM_FrameList_get_field
- XXLFM_FrameList_get_field_index_by_name
- XXLFM_FrameList_get_aq_info
- XXLFM_FrameList_Create
- XXLFM_LightMap_Del
- XXLFM_LightMap_get_field_count
- XXLFM_LightMap_get_field_index
- XXLFM_LightMap_get_field
- XXLFM_LightMap_get_field_index_by_name
- XXLFM_LightMap_get_aq_info
- XXLFM_LightMap_Create
- XXLFM_SurfaceMapList_Del
- XXLFM_SurfaceMapList_get_field_count
- XXLFM_SurfaceMapList_get_field_index
- XXLFM_SurfaceMapList_get_field
- XXLFM_SurfaceMapList_get_field_index_by_name
- XXLFM_SurfaceMapList_get_aq_info
- XXLFM_SurfaceMapList_Create
- XXLFM_ViewMapList_Del
- XXLFM_ViewMapList_get_field_count
- XXLFM_ViewMapList_get_field_index
- XXLFM_ViewMapList_get_field
- XXLFM_ViewMapList_get_field_index_by_name
- XXLFM_ViewMapList_get_aq_info
- XXLFM_ViewMapList_Create
- MeshGrid_Del
- MeshGrid_get_field_count
- MeshGrid_get_field_index
- MeshGrid_get_field
- MeshGrid_get_field_index_by_name
- MeshGrid_get_aq_info
- MeshGrid_Create
- NonLinearDeformer_Del
- NonLinearDeformer_get_field_count
- NonLinearDeformer_get_field_index
- NonLinearDeformer_get_field
- NonLinearDeformer_get_field_index_by_name
- NonLinearDeformer_get_aq_info
- NonLinearDeformer_Create
- NurbsCurve_Del
- NurbsCurve_get_field_count
- NurbsCurve_get_field_index
- NurbsCurve_get_field
- NurbsCurve_get_field_index_by_name
- NurbsCurve_get_aq_info
- NurbsCurve_Create
- NurbsCurve2D_Del
- NurbsCurve2D_get_field_count
- NurbsCurve2D_get_field_index
- NurbsCurve2D_get_field
- NurbsCurve2D_get_field_index_by_name
- NurbsCurve2D_get_aq_info
- NurbsCurve2D_Create
- NurbsSurface_Del
- NurbsSurface_get_field_count
- NurbsSurface_get_field_index
- NurbsSurface_get_field
- NurbsSurface_get_field_index_by_name
- NurbsSurface_get_aq_info
- NurbsSurface_Create
- OctreeImage_Del
- OctreeImage_get_field_count
- OctreeImage_get_field_index
- OctreeImage_get_field
- OctreeImage_get_field_index_by_name
- OctreeImage_get_aq_info
- OctreeImage_Create
- XXParticles_Del
- XXParticles_get_field_count
- XXParticles_get_field_index
- XXParticles_get_field
- XXParticles_get_field_index_by_name
- XXParticles_get_aq_info
- XXParticles_Create
- XXParticleInitBox_Del
- XXParticleInitBox_get_field_count
- XXParticleInitBox_get_field_index
- XXParticleInitBox_get_field
- XXParticleInitBox_get_field_index_by_name
- XXParticleInitBox_get_aq_info
- XXParticleInitBox_Create
- XXPlanarObstacle_Del
- XXPlanarObstacle_get_field_count
- XXPlanarObstacle_get_field_index
- XXPlanarObstacle_get_field
- XXPlanarObstacle_get_field_index_by_name
- XXPlanarObstacle_get_aq_info
- XXPlanarObstacle_Create
- XXPointAttractor_Del
- XXPointAttractor_get_field_count
- XXPointAttractor_get_field_index
- XXPointAttractor_get_field
- XXPointAttractor_get_field_index_by_name
- XXPointAttractor_get_aq_info
- XXPointAttractor_Create
- PointTexture_Del
- PointTexture_get_field_count
- PointTexture_get_field_index
- PointTexture_get_field
- PointTexture_get_field_index_by_name
- PointTexture_get_aq_info
- PointTexture_Create
- PositionAnimator_Del
- PositionAnimator_get_field_count
- PositionAnimator_get_field_index
- PositionAnimator_get_field
- PositionAnimator_get_field_index_by_name
- PositionAnimator_get_aq_info
- PositionAnimator_Create
- PositionAnimator2D_Del
- PositionAnimator2D_get_field_count
- PositionAnimator2D_get_field_index
- PositionAnimator2D_get_field
- PositionAnimator2D_get_field_index_by_name
- PositionAnimator2D_get_aq_info
- PositionAnimator2D_Create
- PositionInterpolator4D_Del
- PositionInterpolator4D_get_field_count
- PositionInterpolator4D_get_field_index
- PositionInterpolator4D_get_field
- PositionInterpolator4D_get_field_index_by_name
- PositionInterpolator4D_get_aq_info
- PositionInterpolator4D_Create
- ProceduralTexture_Del
- ProceduralTexture_get_field_count
- ProceduralTexture_get_field_index
- ProceduralTexture_get_field
- ProceduralTexture_get_field_index_by_name
- ProceduralTexture_get_aq_info
- ProceduralTexture_Create
- Quadric_Del
- Quadric_get_field_count
- Quadric_get_field_index
- Quadric_get_field
- Quadric_get_field_index_by_name
- Quadric_get_aq_info
- Quadric_Create
- SBBone_Del
- SBBone_get_field_count
- SBBone_get_field_index
- SBBone_get_field
- SBBone_get_field_index_by_name
- SBBone_get_aq_info
- SBBone_Create
- SBMuscle_Del
- SBMuscle_get_field_count
- SBMuscle_get_field_index
- SBMuscle_get_field
- SBMuscle_get_field_index_by_name
- SBMuscle_get_aq_info
- SBMuscle_Create
- SBSegment_Del
- SBSegment_get_field_count
- SBSegment_get_field_index
- SBSegment_get_field
- SBSegment_get_field_index_by_name
- SBSegment_get_aq_info
- SBSegment_Create
- SBSite_Del
- SBSite_get_field_count
- SBSite_get_field_index
- SBSite_get_field
- SBSite_get_field_index_by_name
- SBSite_get_aq_info
- SBSite_Create
- SBSkinnedModel_Del
- SBSkinnedModel_get_field_count
- SBSkinnedModel_get_field_index
- SBSkinnedModel_get_field
- SBSkinnedModel_get_field_index_by_name
- SBSkinnedModel_get_aq_info
- SBSkinnedModel_Create
- SBVCAnimation_Del
- SBVCAnimation_get_field_count
- SBVCAnimation_get_field_index
- SBVCAnimation_get_field
- SBVCAnimation_get_field_index_by_name
- SBVCAnimation_get_aq_info
- SBVCAnimation_Create
- ScalarAnimator_Del
- ScalarAnimator_get_field_count
- ScalarAnimator_get_field_index
- ScalarAnimator_get_field
- ScalarAnimator_get_field_index_by_name
- ScalarAnimator_get_aq_info
- ScalarAnimator_Create
- SimpleTexture_Del
- SimpleTexture_get_field_count
- SimpleTexture_get_field_index
- SimpleTexture_get_field
- SimpleTexture_get_field_index_by_name
- SimpleTexture_get_aq_info
- SimpleTexture_Create
- SolidRep_Del
- SolidRep_get_field_count
- SolidRep_get_field_index
- SolidRep_get_field
- SolidRep_get_field_index_by_name
- SolidRep_get_aq_info
- SolidRep_Create
- SubdivisionSurface_Del
- SubdivisionSurface_get_field_count
- SubdivisionSurface_get_field_index
- SubdivisionSurface_get_field
- SubdivisionSurface_get_field_index_by_name
- SubdivisionSurface_get_aq_info
- SubdivisionSurface_Create
- SubdivSurfaceSector_Del
- SubdivSurfaceSector_get_field_count
- SubdivSurfaceSector_get_field_index
- SubdivSurfaceSector_get_field
- SubdivSurfaceSector_get_field_index_by_name
- SubdivSurfaceSector_get_aq_info
- SubdivSurfaceSector_Create
- WaveletSubdivisionSurface_Del
- WaveletSubdivisionSurface_get_field_count
- WaveletSubdivisionSurface_get_field_index
- WaveletSubdivisionSurface_get_field
- WaveletSubdivisionSurface_get_field_index_by_name
- WaveletSubdivisionSurface_get_aq_info
- WaveletSubdivisionSurface_Create
- Clipper2D_Del
- Clipper2D_get_field_count
- Clipper2D_get_field_index
- Clipper2D_get_field
- Clipper2D_get_field_index_by_name
- Clipper2D_get_aq_info
- Clipper2D_Create
- ColorTransform_Del
- ColorTransform_get_field_count
- ColorTransform_get_field_index
- ColorTransform_get_field
- ColorTransform_get_field_index_by_name
- ColorTransform_get_aq_info
- ColorTransform_Create
- Ellipse_Del
- Ellipse_get_field_count
- Ellipse_get_field_index
- Ellipse_get_field
- Ellipse_get_field_index_by_name
- Ellipse_get_aq_info
- Ellipse_Create
- LinearGradient_Del
- LinearGradient_get_field_count
- LinearGradient_get_field_index
- LinearGradient_get_field
- LinearGradient_get_field_index_by_name
- LinearGradient_get_aq_info
- LinearGradient_Create
- PathLayout_Del
- PathLayout_get_field_count
- PathLayout_get_field_index
- PathLayout_get_field
- PathLayout_get_field_index_by_name
- PathLayout_get_aq_info
- PathLayout_Create
- RadialGradient_Del
- RadialGradient_get_field_count
- RadialGradient_get_field_index
- RadialGradient_get_field
- RadialGradient_get_field_index_by_name
- RadialGradient_get_aq_info
- RadialGradient_Create
- SynthesizedTexture_Del
- SynthesizedTexture_get_field_count
- SynthesizedTexture_get_field_index
- SynthesizedTexture_get_field
- SynthesizedTexture_get_field_index_by_name
- SynthesizedTexture_get_aq_info
- SynthesizedTexture_Create
- TransformMatrix2D_Del
- TransformMatrix2D_get_field_count
- TransformMatrix2D_get_field_index
- TransformMatrix2D_get_field
- TransformMatrix2D_get_field_index_by_name
- TransformMatrix2D_get_aq_info
- TransformMatrix2D_Create
- Viewport_Del
- Viewport_get_field_count
- Viewport_get_field_index
- Viewport_get_field
- Viewport_get_field_index_by_name
- Viewport_get_aq_info
- Viewport_Create
- XCurve2D_Del
- XCurve2D_get_field_count
- XCurve2D_get_field_index
- XCurve2D_get_field
- XCurve2D_get_field_index_by_name
- XCurve2D_get_aq_info
- XCurve2D_Create
- XFontStyle_Del
- XFontStyle_get_field_count
- XFontStyle_get_field_index
- XFontStyle_get_field
- XFontStyle_get_field_index_by_name
- XFontStyle_get_aq_info
- XFontStyle_Create
- XLineProperties_Del
- XLineProperties_get_field_count
- XLineProperties_get_field_index
- XLineProperties_get_field
- XLineProperties_get_field_index_by_name
- XLineProperties_get_aq_info
- XLineProperties_Create
- AdvancedAudioBuffer_Del
- AdvancedAudioBuffer_get_field_count
- AdvancedAudioBuffer_get_field_index
- AdvancedAudioBuffer_get_field
- AdvancedAudioBuffer_get_field_index_by_name
- AdvancedAudioBuffer_get_aq_info
- AdvancedAudioBuffer_Create
- AudioChannelConfig_Del
- AudioChannelConfig_get_field_count
- AudioChannelConfig_get_field_index
- AudioChannelConfig_get_field
- AudioChannelConfig_get_field_index_by_name
- AudioChannelConfig_get_aq_info
- AudioChannelConfig_Create
- DepthImageV2_Del
- DepthImageV2_get_field_count
- DepthImageV2_get_field_index
- DepthImageV2_get_field
- DepthImageV2_get_field_index_by_name
- DepthImageV2_get_aq_info
- DepthImageV2_Create
- MorphShape_Del
- MorphShape_get_field_count
- MorphShape_get_field_index
- MorphShape_get_field
- MorphShape_get_field_index_by_name
- MorphShape_get_aq_info
- MorphShape_Create
- MultiTexture_Del
- MultiTexture_get_field_count
- MultiTexture_get_field_index
- MultiTexture_get_field
- MultiTexture_get_field_index_by_name
- MultiTexture_get_aq_info
- MultiTexture_Create
- PointTextureV2_Del
- PointTextureV2_get_field_count
- PointTextureV2_get_field_index
- PointTextureV2_get_field
- PointTextureV2_get_field_index_by_name
- PointTextureV2_get_aq_info
- PointTextureV2_Create
- SBVCAnimationV2_Del
- SBVCAnimationV2_get_field_count
- SBVCAnimationV2_get_field_index
- SBVCAnimationV2_get_field
- SBVCAnimationV2_get_field_index_by_name
- SBVCAnimationV2_get_aq_info
- SBVCAnimationV2_Create
- SimpleTextureV2_Del
- SimpleTextureV2_get_field_count
- SimpleTextureV2_get_field_index
- SimpleTextureV2_get_field
- SimpleTextureV2_get_field_index_by_name
- SimpleTextureV2_get_aq_info
- SimpleTextureV2_Create
- SurroundingSound_Del
- SurroundingSound_get_field_count
- SurroundingSound_get_field_index
- SurroundingSound_get_field
- SurroundingSound_get_field_index_by_name
- SurroundingSound_get_aq_info
- SurroundingSound_Create
- Transform3DAudio_Del
- Transform3DAudio_get_field_count
- Transform3DAudio_get_field_index
- Transform3DAudio_get_field
- Transform3DAudio_get_field_index_by_name
- Transform3DAudio_get_aq_info
- Transform3DAudio_Create
- WideSound_Del
- WideSound_get_field_count
- WideSound_get_field_index
- WideSound_get_field
- WideSound_get_field_index_by_name
- WideSound_get_aq_info
- WideSound_Create
- ScoreShape_Del
- ScoreShape_get_field_count
- ScoreShape_get_field_index
- ScoreShape_get_field
- ScoreShape_get_field_index_by_name
- ScoreShape_get_aq_info
- ScoreShape_Create
- MusicScore_Del
- MusicScore_get_field_count
- MusicScore_get_field_index
- MusicScore_get_field
- MusicScore_get_field_index_by_name
- MusicScore_get_aq_info
- MusicScore_Create
- FootPrintSetNode_Del
- FootPrintSetNode_get_field_count
- FootPrintSetNode_get_field_index
- FootPrintSetNode_get_field
- FootPrintSetNode_get_field_index_by_name
- FootPrintSetNode_get_aq_info
- FootPrintSetNode_Create
- FootPrintNode_Del
- FootPrintNode_get_field_count
- FootPrintNode_get_field_index
- FootPrintNode_get_field
- FootPrintNode_get_field_index_by_name
- FootPrintNode_get_aq_info
- FootPrintNode_Create
- BuildingPartNode_Del
- BuildingPartNode_get_field_count
- BuildingPartNode_get_field_index
- BuildingPartNode_get_field
- BuildingPartNode_get_field_index_by_name
- BuildingPartNode_get_aq_info
- BuildingPartNode_Create
- RoofNode_Del
- RoofNode_get_field_count
- RoofNode_get_field_index
- RoofNode_get_field
- RoofNode_get_field_index_by_name
- RoofNode_get_aq_info
- RoofNode_Create
- FacadeNode_Del
- FacadeNode_get_field_count
- FacadeNode_get_field_index
- FacadeNode_get_field
- FacadeNode_get_field_index_by_name
- FacadeNode_get_aq_info
- FacadeNode_Create
- Shadow_Del
- Shadow_get_field_count
- Shadow_get_field_index
- Shadow_get_field
- Shadow_get_field_index_by_name
- Shadow_get_aq_info
- Shadow_Create
- CacheTexture_Del
- CacheTexture_get_field_count
- CacheTexture_get_field_index
- CacheTexture_get_field
- CacheTexture_get_field_index_by_name
- CacheTexture_get_aq_info
- CacheTexture_Create
- EnvironmentTest_Del
- EnvironmentTest_get_field_count
- EnvironmentTest_get_field_index
- EnvironmentTest_get_field
- EnvironmentTest_get_field_index_by_name
- EnvironmentTest_get_aq_info
- EnvironmentTest_Create
- KeyNavigator_Del
- KeyNavigator_get_field_count
- KeyNavigator_get_field_index
- KeyNavigator_get_field
- KeyNavigator_get_field_index_by_name
- KeyNavigator_get_aq_info
- KeyNavigator_Create
- SpacePartition_Del
- SpacePartition_get_field_count
- SpacePartition_get_field_index
- SpacePartition_get_field
- SpacePartition_get_field_index_by_name
- SpacePartition_get_aq_info
- SpacePartition_Create
- Storage_Del
- Storage_get_field_count
- Storage_get_field_index
- Storage_get_field
- Storage_get_field_index_by_name
- Storage_get_aq_info
- Storage_Create
- gf_sg_mpeg4_node_new
- gf_sg_mpeg4_node_get_class_name
- gf_sg_mpeg4_node_del
- gf_sg_mpeg4_node_get_field_count
- gf_sg_mpeg4_node_get_field
- gf_sg_mpeg4_node_get_field_index
- gf_sg_mpeg4_node_get_aq_info
- gf_sg_mpeg4_node_get_child_ndt
- gf_node_mpeg4_type_by_class_name
- gf_sg_mpeg4_node_get_field_index_by_name
#include <gpac/nodes_mpeg4.h>
#include <gpac/internal/scenegraph_dev.h>
#ifndef GPAC_DISABLE_VRML
static void Anchor_Del(GF_Node *node)
{
M_Anchor *p = (M_Anchor *) node;
gf_sg_sfstring_del(p->description);
gf_sg_mfstring_del(p->parameter);
gf_sg_mfurl_del(p->url);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Anchor_Def2All[] = { 2, 3, 4, 5};
static const u16 Anchor_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 Anchor_Out2All[] = { 2, 3, 4, 5};
static u32 Anchor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 7;
}
}
static GF_Err Anchor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Anchor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Anchor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Anchor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Anchor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Anchor *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Anchor *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Anchor *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Anchor *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Anchor *)node)->children;
return GF_OK;
case 3:
info->name = "description";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_Anchor *) node)->description;
return GF_OK;
case 4:
info->name = "parameter";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_Anchor *) node)->parameter;
return GF_OK;
case 5:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_Anchor *) node)->url;
return GF_OK;
case 6:
info->name = "activate";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Anchor *)node)->on_activate;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Anchor *) node)->activate;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Anchor_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("description", name)) return 3;
if (!strcmp("parameter", name)) return 4;
if (!strcmp("url", name)) return 5;
if (!strcmp("activate", name)) return 6;
return -1;
}
static Bool Anchor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Anchor_Create()
{
M_Anchor *p;
GF_SAFEALLOC(p, M_Anchor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Anchor);
gf_sg_vrml_parent_setup((GF_Node *) p);
return (GF_Node *)p;
}
static void AnimationStream_Del(GF_Node *node)
{
M_AnimationStream *p = (M_AnimationStream *) node;
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 AnimationStream_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 AnimationStream_In2All[] = { 0, 1, 2, 3, 4};
static const u16 AnimationStream_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 AnimationStream_Dyn2All[] = { 1};
static u32 AnimationStream_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 7;
}
}
static GF_Err AnimationStream_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AnimationStream_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AnimationStream_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AnimationStream_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = AnimationStream_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AnimationStream_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_AnimationStream *) node)->loop;
return GF_OK;
case 1:
info->name = "speed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AnimationStream *) node)->speed;
return GF_OK;
case 2:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AnimationStream *) node)->startTime;
return GF_OK;
case 3:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AnimationStream *) node)->stopTime;
return GF_OK;
case 4:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_AnimationStream *) node)->url;
return GF_OK;
case 5:
info->name = "duration_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AnimationStream *) node)->duration_changed;
return GF_OK;
case 6:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_AnimationStream *) node)->isActive;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AnimationStream_get_field_index_by_name(char *name)
{
if (!strcmp("loop", name)) return 0;
if (!strcmp("speed", name)) return 1;
if (!strcmp("startTime", name)) return 2;
if (!strcmp("stopTime", name)) return 3;
if (!strcmp("url", name)) return 4;
if (!strcmp("duration_changed", name)) return 5;
if (!strcmp("isActive", name)) return 6;
return -1;
}
static Bool AnimationStream_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *AnimationStream_Create()
{
M_AnimationStream *p;
GF_SAFEALLOC(p, M_AnimationStream);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AnimationStream);
p->speed = FLT2FIX(1.0);
p->startTime = 0;
p->stopTime = 0;
return (GF_Node *)p;
}
static void Appearance_Del(GF_Node *node)
{
M_Appearance *p = (M_Appearance *) node;
gf_node_unregister((GF_Node *) p->material, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->textureTransform, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Appearance_Def2All[] = { 0, 1, 2};
static const u16 Appearance_In2All[] = { 0, 1, 2};
static const u16 Appearance_Out2All[] = { 0, 1, 2};
static u32 Appearance_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 3;
}
}
static GF_Err Appearance_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Appearance_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Appearance_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Appearance_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Appearance_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "material";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFMaterialNode;
info->far_ptr = & ((M_Appearance *)node)->material;
return GF_OK;
case 1:
info->name = "texture";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_Appearance *)node)->texture;
return GF_OK;
case 2:
info->name = "textureTransform";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureTransformNode;
info->far_ptr = & ((M_Appearance *)node)->textureTransform;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Appearance_get_field_index_by_name(char *name)
{
if (!strcmp("material", name)) return 0;
if (!strcmp("texture", name)) return 1;
if (!strcmp("textureTransform", name)) return 2;
return -1;
}
static Bool Appearance_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Appearance_Create()
{
M_Appearance *p;
GF_SAFEALLOC(p, M_Appearance);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Appearance);
return (GF_Node *)p;
}
static void AudioBuffer_Del(GF_Node *node)
{
M_AudioBuffer *p = (M_AudioBuffer *) node;
gf_node_unregister_children((GF_Node *) p, p->children);
gf_sg_mfint32_del(p->phaseGroup);
gf_node_free((GF_Node *) p);
}
static const u16 AudioBuffer_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 AudioBuffer_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 AudioBuffer_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 AudioBuffer_Dyn2All[] = { 1};
static u32 AudioBuffer_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 10;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 10;
}
}
static GF_Err AudioBuffer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AudioBuffer_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AudioBuffer_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AudioBuffer_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = AudioBuffer_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AudioBuffer_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_AudioBuffer *) node)->loop;
return GF_OK;
case 1:
info->name = "pitch";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AudioBuffer *) node)->pitch;
return GF_OK;
case 2:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AudioBuffer *) node)->startTime;
return GF_OK;
case 3:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AudioBuffer *) node)->stopTime;
return GF_OK;
case 4:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioBuffer *)node)->children;
return GF_OK;
case 5:
info->name = "numChan";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioBuffer *) node)->numChan;
return GF_OK;
case 6:
info->name = "phaseGroup";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioBuffer *) node)->phaseGroup;
return GF_OK;
case 7:
info->name = "length";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AudioBuffer *) node)->length;
return GF_OK;
case 8:
info->name = "duration_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AudioBuffer *) node)->duration_changed;
return GF_OK;
case 9:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_AudioBuffer *) node)->isActive;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AudioBuffer_get_field_index_by_name(char *name)
{
if (!strcmp("loop", name)) return 0;
if (!strcmp("pitch", name)) return 1;
if (!strcmp("startTime", name)) return 2;
if (!strcmp("stopTime", name)) return 3;
if (!strcmp("children", name)) return 4;
if (!strcmp("numChan", name)) return 5;
if (!strcmp("phaseGroup", name)) return 6;
if (!strcmp("length", name)) return 7;
if (!strcmp("duration_changed", name)) return 8;
if (!strcmp("isActive", name)) return 9;
return -1;
}
static Bool AudioBuffer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
case 7:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *AudioBuffer_Create()
{
M_AudioBuffer *p;
GF_SAFEALLOC(p, M_AudioBuffer);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioBuffer);
p->pitch = FLT2FIX(1);
p->startTime = 0;
p->stopTime = 0;
p->numChan = 1;
p->phaseGroup.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
p->phaseGroup.count = 1;
p->phaseGroup.vals[0] = 1;
p->length = FLT2FIX(0.0);
return (GF_Node *)p;
}
static void AudioClip_Del(GF_Node *node)
{
M_AudioClip *p = (M_AudioClip *) node;
gf_sg_sfstring_del(p->description);
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 AudioClip_Def2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 AudioClip_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 AudioClip_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 AudioClip_Dyn2All[] = { 2};
static u32 AudioClip_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 8;
}
}
static GF_Err AudioClip_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AudioClip_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AudioClip_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AudioClip_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = AudioClip_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AudioClip_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "description";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_AudioClip *) node)->description;
return GF_OK;
case 1:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_AudioClip *) node)->loop;
return GF_OK;
case 2:
info->name = "pitch";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AudioClip *) node)->pitch;
return GF_OK;
case 3:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AudioClip *) node)->startTime;
return GF_OK;
case 4:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AudioClip *) node)->stopTime;
return GF_OK;
case 5:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_AudioClip *) node)->url;
return GF_OK;
case 6:
info->name = "duration_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AudioClip *) node)->duration_changed;
return GF_OK;
case 7:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_AudioClip *) node)->isActive;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AudioClip_get_field_index_by_name(char *name)
{
if (!strcmp("description", name)) return 0;
if (!strcmp("loop", name)) return 1;
if (!strcmp("pitch", name)) return 2;
if (!strcmp("startTime", name)) return 3;
if (!strcmp("stopTime", name)) return 4;
if (!strcmp("url", name)) return 5;
if (!strcmp("duration_changed", name)) return 6;
if (!strcmp("isActive", name)) return 7;
return -1;
}
static Bool AudioClip_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *AudioClip_Create()
{
M_AudioClip *p;
GF_SAFEALLOC(p, M_AudioClip);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioClip);
p->pitch = FLT2FIX(1.0);
p->startTime = 0;
p->stopTime = 0;
return (GF_Node *)p;
}
static void AudioDelay_Del(GF_Node *node)
{
M_AudioDelay *p = (M_AudioDelay *) node;
gf_sg_mfint32_del(p->phaseGroup);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 AudioDelay_Def2All[] = { 2, 3, 4, 5};
static const u16 AudioDelay_In2All[] = { 0, 1, 2, 3};
static const u16 AudioDelay_Out2All[] = { 2, 3};
static u32 AudioDelay_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 6;
}
}
static GF_Err AudioDelay_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AudioDelay_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AudioDelay_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AudioDelay_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AudioDelay_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioDelay *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioDelay *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioDelay *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioDelay *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioDelay *)node)->children;
return GF_OK;
case 3:
info->name = "delay";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AudioDelay *) node)->delay;
return GF_OK;
case 4:
info->name = "numChan";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioDelay *) node)->numChan;
return GF_OK;
case 5:
info->name = "phaseGroup";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioDelay *) node)->phaseGroup;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AudioDelay_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("delay", name)) return 3;
if (!strcmp("numChan", name)) return 4;
if (!strcmp("phaseGroup", name)) return 5;
return -1;
}
static Bool AudioDelay_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
case 5:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
default:
return 0;
}
}
GF_Node *AudioDelay_Create()
{
M_AudioDelay *p;
GF_SAFEALLOC(p, M_AudioDelay);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioDelay);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->delay = 0;
p->numChan = 1;
return (GF_Node *)p;
}
static void AudioFX_Del(GF_Node *node)
{
M_AudioFX *p = (M_AudioFX *) node;
gf_sg_sfstring_del(p->orch);
gf_sg_sfstring_del(p->score);
gf_sg_mffloat_del(p->params);
gf_sg_mfint32_del(p->phaseGroup);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 AudioFX_Def2All[] = { 2, 3, 4, 5, 6, 7};
static const u16 AudioFX_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 AudioFX_Out2All[] = { 2, 3, 4, 5};
static const u16 AudioFX_Dyn2All[] = { 5};
static u32 AudioFX_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 8;
}
}
static GF_Err AudioFX_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AudioFX_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AudioFX_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AudioFX_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = AudioFX_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AudioFX_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioFX *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioFX *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioFX *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioFX *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioFX *)node)->children;
return GF_OK;
case 3:
info->name = "orch";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_AudioFX *) node)->orch;
return GF_OK;
case 4:
info->name = "score";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_AudioFX *) node)->score;
return GF_OK;
case 5:
info->name = "params";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_AudioFX *) node)->params;
return GF_OK;
case 6:
info->name = "numChan";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioFX *) node)->numChan;
return GF_OK;
case 7:
info->name = "phaseGroup";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioFX *) node)->phaseGroup;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AudioFX_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("orch", name)) return 3;
if (!strcmp("score", name)) return 4;
if (!strcmp("params", name)) return 5;
if (!strcmp("numChan", name)) return 6;
if (!strcmp("phaseGroup", name)) return 7;
return -1;
}
static Bool AudioFX_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 5:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
case 7:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
default:
return 0;
}
}
GF_Node *AudioFX_Create()
{
M_AudioFX *p;
GF_SAFEALLOC(p, M_AudioFX);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioFX);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->numChan = 1;
return (GF_Node *)p;
}
static void AudioMix_Del(GF_Node *node)
{
M_AudioMix *p = (M_AudioMix *) node;
gf_sg_mffloat_del(p->matrix);
gf_sg_mfint32_del(p->phaseGroup);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 AudioMix_Def2All[] = { 2, 3, 4, 5, 6};
static const u16 AudioMix_In2All[] = { 0, 1, 2, 3, 4};
static const u16 AudioMix_Out2All[] = { 2, 3, 4};
static const u16 AudioMix_Dyn2All[] = { 4};
static u32 AudioMix_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 7;
}
}
static GF_Err AudioMix_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AudioMix_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AudioMix_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AudioMix_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = AudioMix_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AudioMix_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioMix *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioMix *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioMix *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioMix *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioMix *)node)->children;
return GF_OK;
case 3:
info->name = "numInputs";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioMix *) node)->numInputs;
return GF_OK;
case 4:
info->name = "matrix";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_AudioMix *) node)->matrix;
return GF_OK;
case 5:
info->name = "numChan";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioMix *) node)->numChan;
return GF_OK;
case 6:
info->name = "phaseGroup";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioMix *) node)->phaseGroup;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AudioMix_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("numInputs", name)) return 3;
if (!strcmp("matrix", name)) return 4;
if (!strcmp("numChan", name)) return 5;
if (!strcmp("phaseGroup", name)) return 6;
return -1;
}
static Bool AudioMix_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(1);
*b_max = FLT2FIX(255);
return 1;
case 4:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 5:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
case 6:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
default:
return 0;
}
}
GF_Node *AudioMix_Create()
{
M_AudioMix *p;
GF_SAFEALLOC(p, M_AudioMix);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioMix);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->numInputs = 1;
p->numChan = 1;
return (GF_Node *)p;
}
static void AudioSource_Del(GF_Node *node)
{
M_AudioSource *p = (M_AudioSource *) node;
gf_sg_mfurl_del(p->url);
gf_sg_mfint32_del(p->phaseGroup);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 AudioSource_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 AudioSource_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 AudioSource_Out2All[] = { 2, 3, 4, 5, 6, 7};
static const u16 AudioSource_Dyn2All[] = { 4, 5};
static u32 AudioSource_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 10;
}
}
static GF_Err AudioSource_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AudioSource_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AudioSource_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AudioSource_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = AudioSource_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AudioSource_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioSource *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioSource *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioSource *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioSource *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioSource *)node)->children;
return GF_OK;
case 3:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_AudioSource *) node)->url;
return GF_OK;
case 4:
info->name = "pitch";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AudioSource *) node)->pitch;
return GF_OK;
case 5:
info->name = "speed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AudioSource *) node)->speed;
return GF_OK;
case 6:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AudioSource *) node)->startTime;
return GF_OK;
case 7:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AudioSource *) node)->stopTime;
return GF_OK;
case 8:
info->name = "numChan";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioSource *) node)->numChan;
return GF_OK;
case 9:
info->name = "phaseGroup";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioSource *) node)->phaseGroup;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AudioSource_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("url", name)) return 3;
if (!strcmp("pitch", name)) return 4;
if (!strcmp("speed", name)) return 5;
if (!strcmp("startTime", name)) return 6;
if (!strcmp("stopTime", name)) return 7;
if (!strcmp("numChan", name)) return 8;
if (!strcmp("phaseGroup", name)) return 9;
return -1;
}
static Bool AudioSource_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 4:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
case 9:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
default:
return 0;
}
}
GF_Node *AudioSource_Create()
{
M_AudioSource *p;
GF_SAFEALLOC(p, M_AudioSource);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioSource);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->pitch = FLT2FIX(1);
p->speed = FLT2FIX(1);
p->startTime = 0;
p->stopTime = 0;
p->numChan = 1;
return (GF_Node *)p;
}
static void AudioSwitch_Del(GF_Node *node)
{
M_AudioSwitch *p = (M_AudioSwitch *) node;
gf_sg_mfint32_del(p->whichChoice);
gf_sg_mfint32_del(p->phaseGroup);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 AudioSwitch_Def2All[] = { 2, 3, 4, 5};
static const u16 AudioSwitch_In2All[] = { 0, 1, 2, 3};
static const u16 AudioSwitch_Out2All[] = { 2, 3};
static u32 AudioSwitch_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 6;
}
}
static GF_Err AudioSwitch_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AudioSwitch_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AudioSwitch_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AudioSwitch_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AudioSwitch_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioSwitch *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioSwitch *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioSwitch *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioSwitch *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioSwitch *)node)->children;
return GF_OK;
case 3:
info->name = "whichChoice";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioSwitch *) node)->whichChoice;
return GF_OK;
case 4:
info->name = "numChan";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioSwitch *) node)->numChan;
return GF_OK;
case 5:
info->name = "phaseGroup";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioSwitch *) node)->phaseGroup;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AudioSwitch_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("whichChoice", name)) return 3;
if (!strcmp("numChan", name)) return 4;
if (!strcmp("phaseGroup", name)) return 5;
return -1;
}
static Bool AudioSwitch_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 0;
*QType = 13;
*QT13_bits = 1;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
case 5:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
default:
return 0;
}
}
GF_Node *AudioSwitch_Create()
{
M_AudioSwitch *p;
GF_SAFEALLOC(p, M_AudioSwitch);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioSwitch);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->numChan = 1;
return (GF_Node *)p;
}
static void Background_Del(GF_Node *node)
{
M_Background *p = (M_Background *) node;
gf_sg_mffloat_del(p->groundAngle);
gf_sg_mfcolor_del(p->groundColor);
gf_sg_mfurl_del(p->backUrl);
gf_sg_mfurl_del(p->bottomUrl);
gf_sg_mfurl_del(p->frontUrl);
gf_sg_mfurl_del(p->leftUrl);
gf_sg_mfurl_del(p->rightUrl);
gf_sg_mfurl_del(p->topUrl);
gf_sg_mffloat_del(p->skyAngle);
gf_sg_mfcolor_del(p->skyColor);
gf_node_free((GF_Node *) p);
}
static const u16 Background_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
static const u16 Background_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
static const u16 Background_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
static const u16 Background_Dyn2All[] = { 1, 2, 9, 10};
static u32 Background_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 11;
case GF_SG_FIELD_CODING_DEF:
return 10;
case GF_SG_FIELD_CODING_OUT:
return 11;
case GF_SG_FIELD_CODING_DYN:
return 4;
default:
return 12;
}
}
static GF_Err Background_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Background_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Background_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Background_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Background_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Background_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_bind";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Background *)node)->on_set_bind;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Background *) node)->set_bind;
return GF_OK;
case 1:
info->name = "groundAngle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_Background *) node)->groundAngle;
return GF_OK;
case 2:
info->name = "groundColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_Background *) node)->groundColor;
return GF_OK;
case 3:
info->name = "backUrl";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_Background *) node)->backUrl;
return GF_OK;
case 4:
info->name = "bottomUrl";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_Background *) node)->bottomUrl;
return GF_OK;
case 5:
info->name = "frontUrl";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_Background *) node)->frontUrl;
return GF_OK;
case 6:
info->name = "leftUrl";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_Background *) node)->leftUrl;
return GF_OK;
case 7:
info->name = "rightUrl";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_Background *) node)->rightUrl;
return GF_OK;
case 8:
info->name = "topUrl";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_Background *) node)->topUrl;
return GF_OK;
case 9:
info->name = "skyAngle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_Background *) node)->skyAngle;
return GF_OK;
case 10:
info->name = "skyColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_Background *) node)->skyColor;
return GF_OK;
case 11:
info->name = "isBound";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Background *) node)->isBound;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Background_get_field_index_by_name(char *name)
{
if (!strcmp("set_bind", name)) return 0;
if (!strcmp("groundAngle", name)) return 1;
if (!strcmp("groundColor", name)) return 2;
if (!strcmp("backUrl", name)) return 3;
if (!strcmp("bottomUrl", name)) return 4;
if (!strcmp("frontUrl", name)) return 5;
if (!strcmp("leftUrl", name)) return 6;
if (!strcmp("rightUrl", name)) return 7;
if (!strcmp("topUrl", name)) return 8;
if (!strcmp("skyAngle", name)) return 9;
if (!strcmp("skyColor", name)) return 10;
if (!strcmp("isBound", name)) return 11;
return -1;
}
static Bool Background_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 8;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1.5707963);
return 1;
case 2:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 9:
*AType = 8;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(3.14159265);
return 1;
case 10:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *Background_Create()
{
M_Background *p;
GF_SAFEALLOC(p, M_Background);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Background);
p->skyColor.vals = (SFColor*)gf_malloc(sizeof(SFColor)*1);
p->skyColor.count = 1;
p->skyColor.vals[0].red = FLT2FIX(0);
p->skyColor.vals[0].green = FLT2FIX(0);
p->skyColor.vals[0].blue = FLT2FIX(0);
return (GF_Node *)p;
}
static void Background2D_Del(GF_Node *node)
{
M_Background2D *p = (M_Background2D *) node;
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 Background2D_Def2All[] = { 1, 2};
static const u16 Background2D_In2All[] = { 0, 1, 2};
static const u16 Background2D_Out2All[] = { 1, 2, 3};
static const u16 Background2D_Dyn2All[] = { 1};
static u32 Background2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 4;
}
}
static GF_Err Background2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Background2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Background2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Background2D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Background2D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Background2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_bind";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Background2D *)node)->on_set_bind;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Background2D *) node)->set_bind;
return GF_OK;
case 1:
info->name = "backColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_Background2D *) node)->backColor;
return GF_OK;
case 2:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_Background2D *) node)->url;
return GF_OK;
case 3:
info->name = "isBound";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Background2D *) node)->isBound;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Background2D_get_field_index_by_name(char *name)
{
if (!strcmp("set_bind", name)) return 0;
if (!strcmp("backColor", name)) return 1;
if (!strcmp("url", name)) return 2;
if (!strcmp("isBound", name)) return 3;
return -1;
}
static Bool Background2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *Background2D_Create()
{
M_Background2D *p;
GF_SAFEALLOC(p, M_Background2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Background2D);
p->backColor.red = FLT2FIX(0);
p->backColor.green = FLT2FIX(0);
p->backColor.blue = FLT2FIX(0);
return (GF_Node *)p;
}
static void Billboard_Del(GF_Node *node)
{
M_Billboard *p = (M_Billboard *) node;
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Billboard_Def2All[] = { 2, 3};
static const u16 Billboard_In2All[] = { 0, 1, 2, 3};
static const u16 Billboard_Out2All[] = { 2, 3};
static const u16 Billboard_Dyn2All[] = { 3};
static u32 Billboard_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 4;
}
}
static GF_Err Billboard_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Billboard_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Billboard_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Billboard_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Billboard_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Billboard_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Billboard *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Billboard *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Billboard *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Billboard *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Billboard *)node)->children;
return GF_OK;
case 3:
info->name = "axisOfRotation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Billboard *) node)->axisOfRotation;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Billboard_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("axisOfRotation", name)) return 3;
return -1;
}
static Bool Billboard_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 9;
*QType = 9;
return 1;
default:
return 0;
}
}
GF_Node *Billboard_Create()
{
M_Billboard *p;
GF_SAFEALLOC(p, M_Billboard);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Billboard);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->axisOfRotation.x = FLT2FIX(0);
p->axisOfRotation.y = FLT2FIX(1);
p->axisOfRotation.z = FLT2FIX(0);
return (GF_Node *)p;
}
static void Bitmap_Del(GF_Node *node)
{
M_Bitmap *p = (M_Bitmap *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Bitmap_Def2All[] = { 0};
static const u16 Bitmap_In2All[] = { 0};
static const u16 Bitmap_Out2All[] = { 0};
static const u16 Bitmap_Dyn2All[] = { 0};
static u32 Bitmap_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 1;
}
}
static GF_Err Bitmap_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Bitmap_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Bitmap_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Bitmap_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Bitmap_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Bitmap_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "scale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Bitmap *) node)->scale;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Bitmap_get_field_index_by_name(char *name)
{
if (!strcmp("scale", name)) return 0;
return -1;
}
static Bool Bitmap_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 12;
*QType = 12;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Bitmap_Create()
{
M_Bitmap *p;
GF_SAFEALLOC(p, M_Bitmap);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Bitmap);
p->scale.x = FLT2FIX(-1);
p->scale.y = FLT2FIX(-1);
return (GF_Node *)p;
}
static void Box_Del(GF_Node *node)
{
M_Box *p = (M_Box *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Box_Def2All[] = { 0};
static u32 Box_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 1;
}
}
static GF_Err Box_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = Box_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Box_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "size";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Box *) node)->size;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Box_get_field_index_by_name(char *name)
{
if (!strcmp("size", name)) return 0;
return -1;
}
static Bool Box_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Box_Create()
{
M_Box *p;
GF_SAFEALLOC(p, M_Box);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Box);
p->size.x = FLT2FIX(2);
p->size.y = FLT2FIX(2);
p->size.z = FLT2FIX(2);
return (GF_Node *)p;
}
static void Circle_Del(GF_Node *node)
{
M_Circle *p = (M_Circle *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Circle_Def2All[] = { 0};
static const u16 Circle_In2All[] = { 0};
static const u16 Circle_Out2All[] = { 0};
static const u16 Circle_Dyn2All[] = { 0};
static u32 Circle_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 1;
}
}
static GF_Err Circle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Circle_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Circle_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Circle_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Circle_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Circle_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "radius";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Circle *) node)->radius;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Circle_get_field_index_by_name(char *name)
{
if (!strcmp("radius", name)) return 0;
return -1;
}
static Bool Circle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 7;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Circle_Create()
{
M_Circle *p;
GF_SAFEALLOC(p, M_Circle);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Circle);
p->radius = FLT2FIX(1);
return (GF_Node *)p;
}
static void Collision_Del(GF_Node *node)
{
M_Collision *p = (M_Collision *) node;
gf_node_unregister((GF_Node *) p->proxy, (GF_Node *) p);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Collision_Def2All[] = { 2, 3, 4};
static const u16 Collision_In2All[] = { 0, 1, 2, 3};
static const u16 Collision_Out2All[] = { 2, 3, 5};
static u32 Collision_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 6;
}
}
static GF_Err Collision_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Collision_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Collision_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Collision_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Collision_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Collision *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Collision *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Collision *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Collision *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Collision *)node)->children;
return GF_OK;
case 3:
info->name = "collide";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Collision *) node)->collide;
return GF_OK;
case 4:
info->name = "proxy";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Collision *)node)->proxy;
return GF_OK;
case 5:
info->name = "collideTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_Collision *) node)->collideTime;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Collision_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("collide", name)) return 3;
if (!strcmp("proxy", name)) return 4;
if (!strcmp("collideTime", name)) return 5;
return -1;
}
static Bool Collision_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Collision_Create()
{
M_Collision *p;
GF_SAFEALLOC(p, M_Collision);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Collision);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->collide = 1;
return (GF_Node *)p;
}
static void Color_Del(GF_Node *node)
{
M_Color *p = (M_Color *) node;
gf_sg_mfcolor_del(p->color);
gf_node_free((GF_Node *) p);
}
static const u16 Color_Def2All[] = { 0};
static const u16 Color_In2All[] = { 0};
static const u16 Color_Out2All[] = { 0};
static const u16 Color_Dyn2All[] = { 0};
static u32 Color_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 1;
}
}
static GF_Err Color_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Color_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Color_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Color_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Color_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Color_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_Color *) node)->color;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Color_get_field_index_by_name(char *name)
{
if (!strcmp("color", name)) return 0;
return -1;
}
static Bool Color_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *Color_Create()
{
M_Color *p;
GF_SAFEALLOC(p, M_Color);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Color);
return (GF_Node *)p;
}
static void ColorInterpolator_Del(GF_Node *node)
{
M_ColorInterpolator *p = (M_ColorInterpolator *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfcolor_del(p->keyValue);
gf_node_free((GF_Node *) p);
}
static const u16 ColorInterpolator_Def2All[] = { 1, 2};
static const u16 ColorInterpolator_In2All[] = { 0, 1, 2};
static const u16 ColorInterpolator_Out2All[] = { 1, 2, 3};
static u32 ColorInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err ColorInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ColorInterpolator_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ColorInterpolator_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ColorInterpolator_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ColorInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_ColorInterpolator *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorInterpolator *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_ColorInterpolator *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_ColorInterpolator *) node)->keyValue;
return GF_OK;
case 3:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_ColorInterpolator *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ColorInterpolator_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("value_changed", name)) return 3;
return -1;
}
static Bool ColorInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *ColorInterpolator_Create()
{
M_ColorInterpolator *p;
GF_SAFEALLOC(p, M_ColorInterpolator);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ColorInterpolator);
return (GF_Node *)p;
}
static void CompositeTexture2D_Del(GF_Node *node)
{
M_CompositeTexture2D *p = (M_CompositeTexture2D *) node;
gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->viewport, (GF_Node *) p);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 CompositeTexture2D_Def2All[] = { 2, 3, 4, 5, 6, 7};
static const u16 CompositeTexture2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 CompositeTexture2D_Out2All[] = { 2, 3, 4, 5, 6};
static u32 CompositeTexture2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err CompositeTexture2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = CompositeTexture2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = CompositeTexture2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = CompositeTexture2D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err CompositeTexture2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_CompositeTexture2D *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_CompositeTexture2D *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_CompositeTexture2D *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_CompositeTexture2D *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_CompositeTexture2D *)node)->children;
return GF_OK;
case 3:
info->name = "pixelWidth";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_CompositeTexture2D *) node)->pixelWidth;
return GF_OK;
case 4:
info->name = "pixelHeight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_CompositeTexture2D *) node)->pixelHeight;
return GF_OK;
case 5:
info->name = "background";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFBackground2DNode;
info->far_ptr = & ((M_CompositeTexture2D *)node)->background;
return GF_OK;
case 6:
info->name = "viewport";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFViewportNode;
info->far_ptr = & ((M_CompositeTexture2D *)node)->viewport;
return GF_OK;
case 7:
info->name = "repeatSandT";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_CompositeTexture2D *) node)->repeatSandT;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 CompositeTexture2D_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("pixelWidth", name)) return 3;
if (!strcmp("pixelHeight", name)) return 4;
if (!strcmp("background", name)) return 5;
if (!strcmp("viewport", name)) return 6;
if (!strcmp("repeatSandT", name)) return 7;
return -1;
}
static Bool CompositeTexture2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 0;
*QType = 13;
*QT13_bits = 16;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 16;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(3);
return 1;
default:
return 0;
}
}
GF_Node *CompositeTexture2D_Create()
{
M_CompositeTexture2D *p;
GF_SAFEALLOC(p, M_CompositeTexture2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_CompositeTexture2D);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->pixelWidth = -1;
p->pixelHeight = -1;
p->repeatSandT = 3;
return (GF_Node *)p;
}
static void CompositeTexture3D_Del(GF_Node *node)
{
M_CompositeTexture3D *p = (M_CompositeTexture3D *) node;
gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->fog, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->navigationInfo, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->viewpoint, (GF_Node *) p);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 CompositeTexture3D_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10};
static const u16 CompositeTexture3D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 CompositeTexture3D_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
static u32 CompositeTexture3D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 9;
case GF_SG_FIELD_CODING_DEF:
return 9;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 11;
}
}
static GF_Err CompositeTexture3D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = CompositeTexture3D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = CompositeTexture3D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = CompositeTexture3D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err CompositeTexture3D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_CompositeTexture3D *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_CompositeTexture3D *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_CompositeTexture3D *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_CompositeTexture3D *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_CompositeTexture3D *)node)->children;
return GF_OK;
case 3:
info->name = "pixelWidth";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_CompositeTexture3D *) node)->pixelWidth;
return GF_OK;
case 4:
info->name = "pixelHeight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_CompositeTexture3D *) node)->pixelHeight;
return GF_OK;
case 5:
info->name = "background";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFBackground3DNode;
info->far_ptr = & ((M_CompositeTexture3D *)node)->background;
return GF_OK;
case 6:
info->name = "fog";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFFogNode;
info->far_ptr = & ((M_CompositeTexture3D *)node)->fog;
return GF_OK;
case 7:
info->name = "navigationInfo";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFNavigationInfoNode;
info->far_ptr = & ((M_CompositeTexture3D *)node)->navigationInfo;
return GF_OK;
case 8:
info->name = "viewpoint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFViewpointNode;
info->far_ptr = & ((M_CompositeTexture3D *)node)->viewpoint;
return GF_OK;
case 9:
info->name = "repeatS";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_CompositeTexture3D *) node)->repeatS;
return GF_OK;
case 10:
info->name = "repeatT";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_CompositeTexture3D *) node)->repeatT;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 CompositeTexture3D_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("pixelWidth", name)) return 3;
if (!strcmp("pixelHeight", name)) return 4;
if (!strcmp("background", name)) return 5;
if (!strcmp("fog", name)) return 6;
if (!strcmp("navigationInfo", name)) return 7;
if (!strcmp("viewpoint", name)) return 8;
if (!strcmp("repeatS", name)) return 9;
if (!strcmp("repeatT", name)) return 10;
return -1;
}
static Bool CompositeTexture3D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 0;
*QType = 13;
*QT13_bits = 16;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 16;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *CompositeTexture3D_Create()
{
M_CompositeTexture3D *p;
GF_SAFEALLOC(p, M_CompositeTexture3D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_CompositeTexture3D);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->pixelWidth = -1;
p->pixelHeight = -1;
p->repeatS = 1;
p->repeatT = 1;
return (GF_Node *)p;
}
static void Conditional_Del(GF_Node *node)
{
M_Conditional *p = (M_Conditional *) node;
gf_sg_sfcommand_del(p->buffer);
gf_node_free((GF_Node *) p);
}
static const u16 Conditional_Def2All[] = { 2};
static const u16 Conditional_In2All[] = { 0, 1, 2};
static const u16 Conditional_Out2All[] = { 2, 3};
static u32 Conditional_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err Conditional_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Conditional_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Conditional_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Conditional_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Conditional_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "activate";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Conditional *)node)->on_activate;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Conditional *) node)->activate;
return GF_OK;
case 1:
info->name = "reverseActivate";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Conditional *)node)->on_reverseActivate;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Conditional *) node)->reverseActivate;
return GF_OK;
case 2:
info->name = "buffer";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOMMANDBUFFER;
info->far_ptr = & ((M_Conditional *) node)->buffer;
return GF_OK;
case 3:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Conditional *) node)->isActive;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Conditional_get_field_index_by_name(char *name)
{
if (!strcmp("activate", name)) return 0;
if (!strcmp("reverseActivate", name)) return 1;
if (!strcmp("buffer", name)) return 2;
if (!strcmp("isActive", name)) return 3;
return -1;
}
static Bool Conditional_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Conditional_Create()
{
M_Conditional *p;
GF_SAFEALLOC(p, M_Conditional);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Conditional);
p->buffer.commandList = gf_list_new();
return (GF_Node *)p;
}
static void Cone_Del(GF_Node *node)
{
M_Cone *p = (M_Cone *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Cone_Def2All[] = { 0, 1, 2, 3};
static u32 Cone_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err Cone_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = Cone_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Cone_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "bottomRadius";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Cone *) node)->bottomRadius;
return GF_OK;
case 1:
info->name = "height";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Cone *) node)->height;
return GF_OK;
case 2:
info->name = "side";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Cone *) node)->side;
return GF_OK;
case 3:
info->name = "bottom";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Cone *) node)->bottom;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Cone_get_field_index_by_name(char *name)
{
if (!strcmp("bottomRadius", name)) return 0;
if (!strcmp("height", name)) return 1;
if (!strcmp("side", name)) return 2;
if (!strcmp("bottom", name)) return 3;
return -1;
}
static Bool Cone_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Cone_Create()
{
M_Cone *p;
GF_SAFEALLOC(p, M_Cone);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Cone);
p->bottomRadius = FLT2FIX(1);
p->height = FLT2FIX(2);
p->side = 1;
p->bottom = 1;
return (GF_Node *)p;
}
static void Coordinate_Del(GF_Node *node)
{
M_Coordinate *p = (M_Coordinate *) node;
gf_sg_mfvec3f_del(p->point);
gf_node_free((GF_Node *) p);
}
static const u16 Coordinate_Def2All[] = { 0};
static const u16 Coordinate_In2All[] = { 0};
static const u16 Coordinate_Out2All[] = { 0};
static const u16 Coordinate_Dyn2All[] = { 0};
static u32 Coordinate_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 1;
}
}
static GF_Err Coordinate_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Coordinate_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Coordinate_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Coordinate_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Coordinate_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Coordinate_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "point";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_Coordinate *) node)->point;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Coordinate_get_field_index_by_name(char *name)
{
if (!strcmp("point", name)) return 0;
return -1;
}
static Bool Coordinate_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Coordinate_Create()
{
M_Coordinate *p;
GF_SAFEALLOC(p, M_Coordinate);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Coordinate);
return (GF_Node *)p;
}
static void Coordinate2D_Del(GF_Node *node)
{
M_Coordinate2D *p = (M_Coordinate2D *) node;
gf_sg_mfvec2f_del(p->point);
gf_node_free((GF_Node *) p);
}
static const u16 Coordinate2D_Def2All[] = { 0};
static const u16 Coordinate2D_In2All[] = { 0};
static const u16 Coordinate2D_Out2All[] = { 0};
static const u16 Coordinate2D_Dyn2All[] = { 0};
static u32 Coordinate2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 1;
}
}
static GF_Err Coordinate2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Coordinate2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Coordinate2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Coordinate2D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Coordinate2D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Coordinate2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "point";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_Coordinate2D *) node)->point;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Coordinate2D_get_field_index_by_name(char *name)
{
if (!strcmp("point", name)) return 0;
return -1;
}
static Bool Coordinate2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 2;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Coordinate2D_Create()
{
M_Coordinate2D *p;
GF_SAFEALLOC(p, M_Coordinate2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Coordinate2D);
return (GF_Node *)p;
}
static void CoordinateInterpolator_Del(GF_Node *node)
{
M_CoordinateInterpolator *p = (M_CoordinateInterpolator *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfvec3f_del(p->keyValue);
gf_sg_mfvec3f_del(p->value_changed);
gf_node_free((GF_Node *) p);
}
static const u16 CoordinateInterpolator_Def2All[] = { 1, 2};
static const u16 CoordinateInterpolator_In2All[] = { 0, 1, 2};
static const u16 CoordinateInterpolator_Out2All[] = { 1, 2, 3};
static u32 CoordinateInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err CoordinateInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = CoordinateInterpolator_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = CoordinateInterpolator_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = CoordinateInterpolator_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err CoordinateInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_CoordinateInterpolator *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_CoordinateInterpolator *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_CoordinateInterpolator *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_CoordinateInterpolator *) node)->keyValue;
return GF_OK;
case 3:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_CoordinateInterpolator *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 CoordinateInterpolator_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("value_changed", name)) return 3;
return -1;
}
static Bool CoordinateInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *CoordinateInterpolator_Create()
{
M_CoordinateInterpolator *p;
GF_SAFEALLOC(p, M_CoordinateInterpolator);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_CoordinateInterpolator);
return (GF_Node *)p;
}
static void CoordinateInterpolator2D_Del(GF_Node *node)
{
M_CoordinateInterpolator2D *p = (M_CoordinateInterpolator2D *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfvec2f_del(p->keyValue);
gf_sg_mfvec2f_del(p->value_changed);
gf_node_free((GF_Node *) p);
}
static const u16 CoordinateInterpolator2D_Def2All[] = { 1, 2};
static const u16 CoordinateInterpolator2D_In2All[] = { 0, 1, 2};
static const u16 CoordinateInterpolator2D_Out2All[] = { 1, 2, 3};
static u32 CoordinateInterpolator2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err CoordinateInterpolator2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = CoordinateInterpolator2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = CoordinateInterpolator2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = CoordinateInterpolator2D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err CoordinateInterpolator2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_CoordinateInterpolator2D *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->keyValue;
return GF_OK;
case 3:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_CoordinateInterpolator2D *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 CoordinateInterpolator2D_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("value_changed", name)) return 3;
return -1;
}
static Bool CoordinateInterpolator2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *CoordinateInterpolator2D_Create()
{
M_CoordinateInterpolator2D *p;
GF_SAFEALLOC(p, M_CoordinateInterpolator2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_CoordinateInterpolator2D);
return (GF_Node *)p;
}
static void Curve2D_Del(GF_Node *node)
{
M_Curve2D *p = (M_Curve2D *) node;
gf_node_unregister((GF_Node *) p->point, (GF_Node *) p);
gf_sg_mfint32_del(p->type);
gf_node_free((GF_Node *) p);
}
static const u16 Curve2D_Def2All[] = { 0, 1, 2};
static const u16 Curve2D_In2All[] = { 0, 1, 2};
static const u16 Curve2D_Out2All[] = { 0, 1, 2};
static const u16 Curve2D_Dyn2All[] = { 1};
static u32 Curve2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 3;
}
}
static GF_Err Curve2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Curve2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Curve2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Curve2D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Curve2D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Curve2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "point";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinate2DNode;
info->far_ptr = & ((M_Curve2D *)node)->point;
return GF_OK;
case 1:
info->name = "fineness";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Curve2D *) node)->fineness;
return GF_OK;
case 2:
info->name = "type";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_Curve2D *) node)->type;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Curve2D_get_field_index_by_name(char *name)
{
if (!strcmp("point", name)) return 0;
if (!strcmp("fineness", name)) return 1;
if (!strcmp("type", name)) return 2;
return -1;
}
static Bool Curve2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(3);
return 1;
default:
return 0;
}
}
GF_Node *Curve2D_Create()
{
M_Curve2D *p;
GF_SAFEALLOC(p, M_Curve2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Curve2D);
p->fineness = FLT2FIX(0.5);
return (GF_Node *)p;
}
static void Cylinder_Del(GF_Node *node)
{
M_Cylinder *p = (M_Cylinder *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Cylinder_Def2All[] = { 0, 1, 2, 3, 4};
static u32 Cylinder_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 5;
}
}
static GF_Err Cylinder_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = Cylinder_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Cylinder_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "bottom";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Cylinder *) node)->bottom;
return GF_OK;
case 1:
info->name = "height";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Cylinder *) node)->height;
return GF_OK;
case 2:
info->name = "radius";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Cylinder *) node)->radius;
return GF_OK;
case 3:
info->name = "side";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Cylinder *) node)->side;
return GF_OK;
case 4:
info->name = "top";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Cylinder *) node)->top;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Cylinder_get_field_index_by_name(char *name)
{
if (!strcmp("bottom", name)) return 0;
if (!strcmp("height", name)) return 1;
if (!strcmp("radius", name)) return 2;
if (!strcmp("side", name)) return 3;
if (!strcmp("top", name)) return 4;
return -1;
}
static Bool Cylinder_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Cylinder_Create()
{
M_Cylinder *p;
GF_SAFEALLOC(p, M_Cylinder);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Cylinder);
p->bottom = 1;
p->height = FLT2FIX(2);
p->radius = FLT2FIX(1);
p->side = 1;
p->top = 1;
return (GF_Node *)p;
}
static void CylinderSensor_Del(GF_Node *node)
{
M_CylinderSensor *p = (M_CylinderSensor *) node;
gf_node_free((GF_Node *) p);
}
static const u16 CylinderSensor_Def2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 CylinderSensor_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 CylinderSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static u32 CylinderSensor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 9;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 9;
}
}
static GF_Err CylinderSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = CylinderSensor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = CylinderSensor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = CylinderSensor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err CylinderSensor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "autoOffset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_CylinderSensor *) node)->autoOffset;
return GF_OK;
case 1:
info->name = "diskAngle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_CylinderSensor *) node)->diskAngle;
return GF_OK;
case 2:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_CylinderSensor *) node)->enabled;
return GF_OK;
case 3:
info->name = "maxAngle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_CylinderSensor *) node)->maxAngle;
return GF_OK;
case 4:
info->name = "minAngle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_CylinderSensor *) node)->minAngle;
return GF_OK;
case 5:
info->name = "offset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_CylinderSensor *) node)->offset;
return GF_OK;
case 6:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_CylinderSensor *) node)->isActive;
return GF_OK;
case 7:
info->name = "rotation_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_CylinderSensor *) node)->rotation_changed;
return GF_OK;
case 8:
info->name = "trackPoint_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_CylinderSensor *) node)->trackPoint_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 CylinderSensor_get_field_index_by_name(char *name)
{
if (!strcmp("autoOffset", name)) return 0;
if (!strcmp("diskAngle", name)) return 1;
if (!strcmp("enabled", name)) return 2;
if (!strcmp("maxAngle", name)) return 3;
if (!strcmp("minAngle", name)) return 4;
if (!strcmp("offset", name)) return 5;
if (!strcmp("isActive", name)) return 6;
if (!strcmp("rotation_changed", name)) return 7;
if (!strcmp("trackPoint_changed", name)) return 8;
return -1;
}
static Bool CylinderSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1.5707963);
return 1;
case 3:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(-6.2831853);
*b_max = FLT2FIX(6.2831853);
return 1;
case 4:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(-6.2831853);
*b_max = FLT2FIX(6.2831853);
return 1;
case 5:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
default:
return 0;
}
}
GF_Node *CylinderSensor_Create()
{
M_CylinderSensor *p;
GF_SAFEALLOC(p, M_CylinderSensor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_CylinderSensor);
p->autoOffset = 1;
p->diskAngle = FLT2FIX(0.262);
p->enabled = 1;
p->maxAngle = FLT2FIX(-1);
p->minAngle = FLT2FIX(0);
p->offset = FLT2FIX(0);
return (GF_Node *)p;
}
static void DirectionalLight_Del(GF_Node *node)
{
M_DirectionalLight *p = (M_DirectionalLight *) node;
gf_node_free((GF_Node *) p);
}
static const u16 DirectionalLight_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 DirectionalLight_In2All[] = { 0, 1, 2, 3, 4};
static const u16 DirectionalLight_Out2All[] = { 0, 1, 2, 3, 4};
static const u16 DirectionalLight_Dyn2All[] = { 0, 1, 2, 3};
static u32 DirectionalLight_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 4;
default:
return 5;
}
}
static GF_Err DirectionalLight_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = DirectionalLight_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = DirectionalLight_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = DirectionalLight_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = DirectionalLight_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err DirectionalLight_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "ambientIntensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DirectionalLight *) node)->ambientIntensity;
return GF_OK;
case 1:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_DirectionalLight *) node)->color;
return GF_OK;
case 2:
info->name = "direction";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_DirectionalLight *) node)->direction;
return GF_OK;
case 3:
info->name = "intensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DirectionalLight *) node)->intensity;
return GF_OK;
case 4:
info->name = "on";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_DirectionalLight *) node)->on;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 DirectionalLight_get_field_index_by_name(char *name)
{
if (!strcmp("ambientIntensity", name)) return 0;
if (!strcmp("color", name)) return 1;
if (!strcmp("direction", name)) return 2;
if (!strcmp("intensity", name)) return 3;
if (!strcmp("on", name)) return 4;
return -1;
}
static Bool DirectionalLight_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 9;
*QType = 9;
return 1;
case 3:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *DirectionalLight_Create()
{
M_DirectionalLight *p;
GF_SAFEALLOC(p, M_DirectionalLight);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_DirectionalLight);
p->ambientIntensity = FLT2FIX(0);
p->color.red = FLT2FIX(1);
p->color.green = FLT2FIX(1);
p->color.blue = FLT2FIX(1);
p->direction.x = FLT2FIX(0);
p->direction.y = FLT2FIX(0);
p->direction.z = FLT2FIX(-1);
p->intensity = FLT2FIX(1);
p->on = 1;
return (GF_Node *)p;
}
static void DiscSensor_Del(GF_Node *node)
{
M_DiscSensor *p = (M_DiscSensor *) node;
gf_node_free((GF_Node *) p);
}
static const u16 DiscSensor_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 DiscSensor_In2All[] = { 0, 1, 2, 3, 4};
static const u16 DiscSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static u32 DiscSensor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err DiscSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = DiscSensor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = DiscSensor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = DiscSensor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err DiscSensor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "autoOffset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_DiscSensor *) node)->autoOffset;
return GF_OK;
case 1:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_DiscSensor *) node)->enabled;
return GF_OK;
case 2:
info->name = "maxAngle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DiscSensor *) node)->maxAngle;
return GF_OK;
case 3:
info->name = "minAngle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DiscSensor *) node)->minAngle;
return GF_OK;
case 4:
info->name = "offset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DiscSensor *) node)->offset;
return GF_OK;
case 5:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_DiscSensor *) node)->isActive;
return GF_OK;
case 6:
info->name = "rotation_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DiscSensor *) node)->rotation_changed;
return GF_OK;
case 7:
info->name = "trackPoint_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_DiscSensor *) node)->trackPoint_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 DiscSensor_get_field_index_by_name(char *name)
{
if (!strcmp("autoOffset", name)) return 0;
if (!strcmp("enabled", name)) return 1;
if (!strcmp("maxAngle", name)) return 2;
if (!strcmp("minAngle", name)) return 3;
if (!strcmp("offset", name)) return 4;
if (!strcmp("isActive", name)) return 5;
if (!strcmp("rotation_changed", name)) return 6;
if (!strcmp("trackPoint_changed", name)) return 7;
return -1;
}
static Bool DiscSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(-6.2831853);
*b_max = FLT2FIX(6.2831853);
return 1;
case 3:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(-6.2831853);
*b_max = FLT2FIX(6.2831853);
return 1;
case 4:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
default:
return 0;
}
}
GF_Node *DiscSensor_Create()
{
M_DiscSensor *p;
GF_SAFEALLOC(p, M_DiscSensor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_DiscSensor);
p->autoOffset = 1;
p->enabled = 1;
p->maxAngle = FLT2FIX(-1);
p->minAngle = FLT2FIX(0);
p->offset = FLT2FIX(0);
return (GF_Node *)p;
}
static void ElevationGrid_Del(GF_Node *node)
{
M_ElevationGrid *p = (M_ElevationGrid *) node;
gf_sg_mffloat_del(p->set_height);
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
gf_sg_mffloat_del(p->height);
gf_node_free((GF_Node *) p);
}
static const u16 ElevationGrid_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
static const u16 ElevationGrid_In2All[] = { 0, 1, 2, 3};
static const u16 ElevationGrid_Out2All[] = { 1, 2, 3};
static u32 ElevationGrid_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 13;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 14;
}
}
static GF_Err ElevationGrid_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ElevationGrid_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ElevationGrid_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ElevationGrid_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ElevationGrid_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_height";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_ElevationGrid *)node)->on_set_height;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_ElevationGrid *) node)->set_height;
return GF_OK;
case 1:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_ElevationGrid *)node)->color;
return GF_OK;
case 2:
info->name = "normal";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFNormalNode;
info->far_ptr = & ((M_ElevationGrid *)node)->normal;
return GF_OK;
case 3:
info->name = "texCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureCoordinateNode;
info->far_ptr = & ((M_ElevationGrid *)node)->texCoord;
return GF_OK;
case 4:
info->name = "height";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_ElevationGrid *) node)->height;
return GF_OK;
case 5:
info->name = "ccw";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ElevationGrid *) node)->ccw;
return GF_OK;
case 6:
info->name = "colorPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ElevationGrid *) node)->colorPerVertex;
return GF_OK;
case 7:
info->name = "creaseAngle";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ElevationGrid *) node)->creaseAngle;
return GF_OK;
case 8:
info->name = "normalPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ElevationGrid *) node)->normalPerVertex;
return GF_OK;
case 9:
info->name = "solid";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ElevationGrid *) node)->solid;
return GF_OK;
case 10:
info->name = "xDimension";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ElevationGrid *) node)->xDimension;
return GF_OK;
case 11:
info->name = "xSpacing";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ElevationGrid *) node)->xSpacing;
return GF_OK;
case 12:
info->name = "zDimension";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ElevationGrid *) node)->zDimension;
return GF_OK;
case 13:
info->name = "zSpacing";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ElevationGrid *) node)->zSpacing;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ElevationGrid_get_field_index_by_name(char *name)
{
if (!strcmp("set_height", name)) return 0;
if (!strcmp("color", name)) return 1;
if (!strcmp("normal", name)) return 2;
if (!strcmp("texCoord", name)) return 3;
if (!strcmp("height", name)) return 4;
if (!strcmp("ccw", name)) return 5;
if (!strcmp("colorPerVertex", name)) return 6;
if (!strcmp("creaseAngle", name)) return 7;
if (!strcmp("normalPerVertex", name)) return 8;
if (!strcmp("solid", name)) return 9;
if (!strcmp("xDimension", name)) return 10;
if (!strcmp("xSpacing", name)) return 11;
if (!strcmp("zDimension", name)) return 12;
if (!strcmp("zSpacing", name)) return 13;
return -1;
}
static Bool ElevationGrid_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 4:
*AType = 7;
*QType = 11;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
case 10:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 11:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 12:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 13:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *ElevationGrid_Create()
{
M_ElevationGrid *p;
GF_SAFEALLOC(p, M_ElevationGrid);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ElevationGrid);
p->ccw = 1;
p->colorPerVertex = 1;
p->creaseAngle = FLT2FIX(0.0);
p->normalPerVertex = 1;
p->solid = 1;
p->xDimension = 0;
p->xSpacing = FLT2FIX(1.0);
p->zDimension = 0;
p->zSpacing = FLT2FIX(1.0);
return (GF_Node *)p;
}
static void Expression_Del(GF_Node *node)
{
M_Expression *p = (M_Expression *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Expression_Def2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 Expression_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 Expression_Out2All[] = { 0, 1, 2, 3, 4, 5};
static u32 Expression_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 6;
}
}
static GF_Err Expression_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Expression_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Expression_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Expression_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Expression_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "expression_select1";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Expression *) node)->expression_select1;
return GF_OK;
case 1:
info->name = "expression_intensity1";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Expression *) node)->expression_intensity1;
return GF_OK;
case 2:
info->name = "expression_select2";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Expression *) node)->expression_select2;
return GF_OK;
case 3:
info->name = "expression_intensity2";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Expression *) node)->expression_intensity2;
return GF_OK;
case 4:
info->name = "init_face";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Expression *) node)->init_face;
return GF_OK;
case 5:
info->name = "expression_def";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Expression *) node)->expression_def;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Expression_get_field_index_by_name(char *name)
{
if (!strcmp("expression_select1", name)) return 0;
if (!strcmp("expression_intensity1", name)) return 1;
if (!strcmp("expression_select2", name)) return 2;
if (!strcmp("expression_intensity2", name)) return 3;
if (!strcmp("init_face", name)) return 4;
if (!strcmp("expression_def", name)) return 5;
return -1;
}
static Bool Expression_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(63);
return 1;
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 3:
*AType = 0;
*QType = 13;
*QT13_bits = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(63);
return 1;
default:
return 0;
}
}
GF_Node *Expression_Create()
{
M_Expression *p;
GF_SAFEALLOC(p, M_Expression);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Expression);
p->expression_select1 = 0;
p->expression_intensity1 = 0;
p->expression_select2 = 0;
p->expression_intensity2 = 0;
return (GF_Node *)p;
}
static void Extrusion_Del(GF_Node *node)
{
M_Extrusion *p = (M_Extrusion *) node;
gf_sg_mfvec2f_del(p->set_crossSection);
gf_sg_mfrotation_del(p->set_orientation);
gf_sg_mfvec2f_del(p->set_scale);
gf_sg_mfvec3f_del(p->set_spine);
gf_sg_mfvec2f_del(p->crossSection);
gf_sg_mfrotation_del(p->orientation);
gf_sg_mfvec2f_del(p->scale);
gf_sg_mfvec3f_del(p->spine);
gf_node_free((GF_Node *) p);
}
static const u16 Extrusion_Def2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
static const u16 Extrusion_In2All[] = { 0, 1, 2, 3};
static u32 Extrusion_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 10;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 14;
}
}
static GF_Err Extrusion_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Extrusion_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Extrusion_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Extrusion_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_crossSection";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Extrusion *)node)->on_set_crossSection;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_Extrusion *) node)->set_crossSection;
return GF_OK;
case 1:
info->name = "set_orientation";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Extrusion *)node)->on_set_orientation;
info->fieldType = GF_SG_VRML_MFROTATION;
info->far_ptr = & ((M_Extrusion *) node)->set_orientation;
return GF_OK;
case 2:
info->name = "set_scale";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Extrusion *)node)->on_set_scale;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_Extrusion *) node)->set_scale;
return GF_OK;
case 3:
info->name = "set_spine";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Extrusion *)node)->on_set_spine;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_Extrusion *) node)->set_spine;
return GF_OK;
case 4:
info->name = "beginCap";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Extrusion *) node)->beginCap;
return GF_OK;
case 5:
info->name = "ccw";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Extrusion *) node)->ccw;
return GF_OK;
case 6:
info->name = "convex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Extrusion *) node)->convex;
return GF_OK;
case 7:
info->name = "creaseAngle";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Extrusion *) node)->creaseAngle;
return GF_OK;
case 8:
info->name = "crossSection";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_Extrusion *) node)->crossSection;
return GF_OK;
case 9:
info->name = "endCap";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Extrusion *) node)->endCap;
return GF_OK;
case 10:
info->name = "orientation";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFROTATION;
info->far_ptr = & ((M_Extrusion *) node)->orientation;
return GF_OK;
case 11:
info->name = "scale";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_Extrusion *) node)->scale;
return GF_OK;
case 12:
info->name = "solid";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Extrusion *) node)->solid;
return GF_OK;
case 13:
info->name = "spine";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_Extrusion *) node)->spine;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Extrusion_get_field_index_by_name(char *name)
{
if (!strcmp("set_crossSection", name)) return 0;
if (!strcmp("set_orientation", name)) return 1;
if (!strcmp("set_scale", name)) return 2;
if (!strcmp("set_spine", name)) return 3;
if (!strcmp("beginCap", name)) return 4;
if (!strcmp("ccw", name)) return 5;
if (!strcmp("convex", name)) return 6;
if (!strcmp("creaseAngle", name)) return 7;
if (!strcmp("crossSection", name)) return 8;
if (!strcmp("endCap", name)) return 9;
if (!strcmp("orientation", name)) return 10;
if (!strcmp("scale", name)) return 11;
if (!strcmp("solid", name)) return 12;
if (!strcmp("spine", name)) return 13;
return -1;
}
static Bool Extrusion_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 7:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
case 8:
*AType = 0;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 10:
*AType = 0;
*QType = 10;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 11:
*AType = 0;
*QType = 7;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 13:
*AType = 0;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Extrusion_Create()
{
M_Extrusion *p;
GF_SAFEALLOC(p, M_Extrusion);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Extrusion);
p->beginCap = 1;
p->ccw = 1;
p->convex = 1;
p->creaseAngle = FLT2FIX(0.0);
p->crossSection.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*5);
p->crossSection.count = 5;
p->crossSection.vals[0].x = FLT2FIX(1);
p->crossSection.vals[0].y = FLT2FIX(1);
p->crossSection.vals[1].x = FLT2FIX(1);
p->crossSection.vals[1].y = FLT2FIX(-1);
p->crossSection.vals[2].x = FLT2FIX(-1);
p->crossSection.vals[2].y = FLT2FIX(-1);
p->crossSection.vals[3].x = FLT2FIX(-1);
p->crossSection.vals[3].y = FLT2FIX(1);
p->crossSection.vals[4].x = FLT2FIX(1);
p->crossSection.vals[4].y = FLT2FIX(1);
p->endCap = 1;
p->orientation.vals = (GF_Vec4*)gf_malloc(sizeof(GF_Vec4)*1);
p->orientation.count = 1;
p->orientation.vals[0].x = FLT2FIX(0);
p->orientation.vals[0].y = FLT2FIX(0);
p->orientation.vals[0].z = FLT2FIX(1);
p->orientation.vals[0].q = FLT2FIX(0);
p->scale.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*1);
p->scale.count = 1;
p->scale.vals[0].x = FLT2FIX(1);
p->scale.vals[0].y = FLT2FIX(1);
p->solid = 1;
p->spine.vals = (SFVec3f *)gf_malloc(sizeof(SFVec3f)*2);
p->spine.count = 2;
p->spine.vals[0].x = FLT2FIX(0);
p->spine.vals[0].y = FLT2FIX(0);
p->spine.vals[0].z = FLT2FIX(0);
p->spine.vals[1].x = FLT2FIX(0);
p->spine.vals[1].y = FLT2FIX(1);
p->spine.vals[1].z = FLT2FIX(0);
return (GF_Node *)p;
}
static void Face_Del(GF_Node *node)
{
M_Face *p = (M_Face *) node;
gf_node_unregister((GF_Node *) p->fap, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->fdp, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->fit, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->ttsSource, (GF_Node *) p);
gf_node_unregister_children((GF_Node *) p, p->renderedFace);
gf_node_free((GF_Node *) p);
}
static const u16 Face_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 Face_In2All[] = { 0, 1, 2, 3, 4};
static const u16 Face_Out2All[] = { 0, 1, 2, 3, 4};
static u32 Face_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 5;
}
}
static GF_Err Face_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Face_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Face_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Face_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Face_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "fap";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFFAPNode;
info->far_ptr = & ((M_Face *)node)->fap;
return GF_OK;
case 1:
info->name = "fdp";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFFDPNode;
info->far_ptr = & ((M_Face *)node)->fdp;
return GF_OK;
case 2:
info->name = "fit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFFITNode;
info->far_ptr = & ((M_Face *)node)->fit;
return GF_OK;
case 3:
info->name = "ttsSource";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_Face *)node)->ttsSource;
return GF_OK;
case 4:
info->name = "renderedFace";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Face *)node)->renderedFace;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Face_get_field_index_by_name(char *name)
{
if (!strcmp("fap", name)) return 0;
if (!strcmp("fdp", name)) return 1;
if (!strcmp("fit", name)) return 2;
if (!strcmp("ttsSource", name)) return 3;
if (!strcmp("renderedFace", name)) return 4;
return -1;
}
static Bool Face_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Face_Create()
{
M_Face *p;
GF_SAFEALLOC(p, M_Face);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Face);
return (GF_Node *)p;
}
static void FaceDefMesh_Del(GF_Node *node)
{
M_FaceDefMesh *p = (M_FaceDefMesh *) node;
gf_node_unregister((GF_Node *) p->faceSceneGraphNode, (GF_Node *) p);
gf_sg_mfint32_del(p->intervalBorders);
gf_sg_mfint32_del(p->coordIndex);
gf_sg_mfvec3f_del(p->displacements);
gf_node_free((GF_Node *) p);
}
static const u16 FaceDefMesh_Def2All[] = { 0, 1, 2, 3};
static u32 FaceDefMesh_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err FaceDefMesh_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = FaceDefMesh_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FaceDefMesh_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "faceSceneGraphNode";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_FaceDefMesh *)node)->faceSceneGraphNode;
return GF_OK;
case 1:
info->name = "intervalBorders";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_FaceDefMesh *) node)->intervalBorders;
return GF_OK;
case 2:
info->name = "coordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_FaceDefMesh *) node)->coordIndex;
return GF_OK;
case 3:
info->name = "displacements";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_FaceDefMesh *) node)->displacements;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FaceDefMesh_get_field_index_by_name(char *name)
{
if (!strcmp("faceSceneGraphNode", name)) return 0;
if (!strcmp("intervalBorders", name)) return 1;
if (!strcmp("coordIndex", name)) return 2;
if (!strcmp("displacements", name)) return 3;
return -1;
}
static Bool FaceDefMesh_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 0;
return 1;
case 2:
*AType = 0;
*QType = 0;
return 1;
case 3:
*AType = 0;
*QType = 0;
return 1;
default:
return 0;
}
}
GF_Node *FaceDefMesh_Create()
{
M_FaceDefMesh *p;
GF_SAFEALLOC(p, M_FaceDefMesh);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FaceDefMesh);
return (GF_Node *)p;
}
static void FaceDefTables_Del(GF_Node *node)
{
M_FaceDefTables *p = (M_FaceDefTables *) node;
gf_node_unregister_children((GF_Node *) p, p->faceDefMesh);
gf_node_unregister_children((GF_Node *) p, p->faceDefTransform);
gf_node_free((GF_Node *) p);
}
static const u16 FaceDefTables_Def2All[] = { 0, 1, 2, 3};
static const u16 FaceDefTables_In2All[] = { 2, 3};
static const u16 FaceDefTables_Out2All[] = { 2, 3};
static u32 FaceDefTables_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err FaceDefTables_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = FaceDefTables_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = FaceDefTables_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = FaceDefTables_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FaceDefTables_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "fapID";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FaceDefTables *) node)->fapID;
return GF_OK;
case 1:
info->name = "highLevelSelect";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FaceDefTables *) node)->highLevelSelect;
return GF_OK;
case 2:
info->name = "faceDefMesh";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFFaceDefMeshNode;
info->far_ptr = & ((M_FaceDefTables *)node)->faceDefMesh;
return GF_OK;
case 3:
info->name = "faceDefTransform";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFFaceDefTransformNode;
info->far_ptr = & ((M_FaceDefTables *)node)->faceDefTransform;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FaceDefTables_get_field_index_by_name(char *name)
{
if (!strcmp("fapID", name)) return 0;
if (!strcmp("highLevelSelect", name)) return 1;
if (!strcmp("faceDefMesh", name)) return 2;
if (!strcmp("faceDefTransform", name)) return 3;
return -1;
}
static Bool FaceDefTables_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 13;
*QT13_bits = 7;
*b_min = FLT2FIX(1);
*b_max = FLT2FIX( 68);
return 1;
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 6;
*b_min = FLT2FIX(1);
*b_max = FLT2FIX( 64);
return 1;
default:
return 0;
}
}
GF_Node *FaceDefTables_Create()
{
M_FaceDefTables *p;
GF_SAFEALLOC(p, M_FaceDefTables);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FaceDefTables);
p->fapID = 1;
p->highLevelSelect = 1;
return (GF_Node *)p;
}
static void FaceDefTransform_Del(GF_Node *node)
{
M_FaceDefTransform *p = (M_FaceDefTransform *) node;
gf_node_unregister((GF_Node *) p->faceSceneGraphNode, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 FaceDefTransform_Def2All[] = { 0, 1, 2, 3, 4};
static u32 FaceDefTransform_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 5;
}
}
static GF_Err FaceDefTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = FaceDefTransform_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FaceDefTransform_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "faceSceneGraphNode";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_FaceDefTransform *)node)->faceSceneGraphNode;
return GF_OK;
case 1:
info->name = "fieldId";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FaceDefTransform *) node)->fieldId;
return GF_OK;
case 2:
info->name = "rotationDef";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_FaceDefTransform *) node)->rotationDef;
return GF_OK;
case 3:
info->name = "scaleDef";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_FaceDefTransform *) node)->scaleDef;
return GF_OK;
case 4:
info->name = "translationDef";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_FaceDefTransform *) node)->translationDef;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FaceDefTransform_get_field_index_by_name(char *name)
{
if (!strcmp("faceSceneGraphNode", name)) return 0;
if (!strcmp("fieldId", name)) return 1;
if (!strcmp("rotationDef", name)) return 2;
if (!strcmp("scaleDef", name)) return 3;
if (!strcmp("translationDef", name)) return 4;
return -1;
}
static Bool FaceDefTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 10;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 7;
return 1;
case 4:
*AType = 0;
*QType = 1;
return 1;
default:
return 0;
}
}
GF_Node *FaceDefTransform_Create()
{
M_FaceDefTransform *p;
GF_SAFEALLOC(p, M_FaceDefTransform);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FaceDefTransform);
p->fieldId = 1;
p->rotationDef.x = FLT2FIX(0);
p->rotationDef.y = FLT2FIX(0);
p->rotationDef.z = FLT2FIX(1);
p->rotationDef.q = FLT2FIX(0);
p->scaleDef.x = FLT2FIX(1);
p->scaleDef.y = FLT2FIX(1);
p->scaleDef.z = FLT2FIX(1);
p->translationDef.x = FLT2FIX(0);
p->translationDef.y = FLT2FIX(0);
p->translationDef.z = FLT2FIX(0);
return (GF_Node *)p;
}
static void FAP_Del(GF_Node *node)
{
M_FAP *p = (M_FAP *) node;
gf_node_unregister((GF_Node *) p->viseme, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->expression, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
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};
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};
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};
static u32 FAP_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 68;
case GF_SG_FIELD_CODING_DEF:
return 68;
case GF_SG_FIELD_CODING_OUT:
return 68;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 68;
}
}
static GF_Err FAP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = FAP_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = FAP_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = FAP_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FAP_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "viseme";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFVisemeNode;
info->far_ptr = & ((M_FAP *)node)->viseme;
return GF_OK;
case 1:
info->name = "expression";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFExpressionNode;
info->far_ptr = & ((M_FAP *)node)->expression;
return GF_OK;
case 2:
info->name = "open_jaw";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->open_jaw;
return GF_OK;
case 3:
info->name = "lower_t_midlip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->lower_t_midlip;
return GF_OK;
case 4:
info->name = "raise_b_midlip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_b_midlip;
return GF_OK;
case 5:
info->name = "stretch_l_corner";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->stretch_l_corner;
return GF_OK;
case 6:
info->name = "stretch_r_corner";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->stretch_r_corner;
return GF_OK;
case 7:
info->name = "lower_t_lip_lm";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->lower_t_lip_lm;
return GF_OK;
case 8:
info->name = "lower_t_lip_rm";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->lower_t_lip_rm;
return GF_OK;
case 9:
info->name = "lower_b_lip_lm";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->lower_b_lip_lm;
return GF_OK;
case 10:
info->name = "lower_b_lip_rm";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->lower_b_lip_rm;
return GF_OK;
case 11:
info->name = "raise_l_cornerlip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_l_cornerlip;
return GF_OK;
case 12:
info->name = "raise_r_cornerlip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_r_cornerlip;
return GF_OK;
case 13:
info->name = "thrust_jaw";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->thrust_jaw;
return GF_OK;
case 14:
info->name = "shift_jaw";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->shift_jaw;
return GF_OK;
case 15:
info->name = "push_b_lip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->push_b_lip;
return GF_OK;
case 16:
info->name = "push_t_lip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->push_t_lip;
return GF_OK;
case 17:
info->name = "depress_chin";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->depress_chin;
return GF_OK;
case 18:
info->name = "close_t_l_eyelid";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->close_t_l_eyelid;
return GF_OK;
case 19:
info->name = "close_t_r_eyelid";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->close_t_r_eyelid;
return GF_OK;
case 20:
info->name = "close_b_l_eyelid";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->close_b_l_eyelid;
return GF_OK;
case 21:
info->name = "close_b_r_eyelid";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->close_b_r_eyelid;
return GF_OK;
case 22:
info->name = "yaw_l_eyeball";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->yaw_l_eyeball;
return GF_OK;
case 23:
info->name = "yaw_r_eyeball";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->yaw_r_eyeball;
return GF_OK;
case 24:
info->name = "pitch_l_eyeball";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->pitch_l_eyeball;
return GF_OK;
case 25:
info->name = "pitch_r_eyeball";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->pitch_r_eyeball;
return GF_OK;
case 26:
info->name = "thrust_l_eyeball";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->thrust_l_eyeball;
return GF_OK;
case 27:
info->name = "thrust_r_eyeball";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->thrust_r_eyeball;
return GF_OK;
case 28:
info->name = "dilate_l_pupil";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->dilate_l_pupil;
return GF_OK;
case 29:
info->name = "dilate_r_pupil";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->dilate_r_pupil;
return GF_OK;
case 30:
info->name = "raise_l_i_eyebrow";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_l_i_eyebrow;
return GF_OK;
case 31:
info->name = "raise_r_i_eyebrow";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_r_i_eyebrow;
return GF_OK;
case 32:
info->name = "raise_l_m_eyebrow";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_l_m_eyebrow;
return GF_OK;
case 33:
info->name = "raise_r_m_eyebrow";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_r_m_eyebrow;
return GF_OK;
case 34:
info->name = "raise_l_o_eyebrow";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_l_o_eyebrow;
return GF_OK;
case 35:
info->name = "raise_r_o_eyebrow";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_r_o_eyebrow;
return GF_OK;
case 36:
info->name = "squeeze_l_eyebrow";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->squeeze_l_eyebrow;
return GF_OK;
case 37:
info->name = "squeeze_r_eyebrow";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->squeeze_r_eyebrow;
return GF_OK;
case 38:
info->name = "puff_l_cheek";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->puff_l_cheek;
return GF_OK;
case 39:
info->name = "puff_r_cheek";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->puff_r_cheek;
return GF_OK;
case 40:
info->name = "lift_l_cheek";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->lift_l_cheek;
return GF_OK;
case 41:
info->name = "lift_r_cheek";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->lift_r_cheek;
return GF_OK;
case 42:
info->name = "shift_tongue_tip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->shift_tongue_tip;
return GF_OK;
case 43:
info->name = "raise_tongue_tip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_tongue_tip;
return GF_OK;
case 44:
info->name = "thrust_tongue_tip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->thrust_tongue_tip;
return GF_OK;
case 45:
info->name = "raise_tongue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_tongue;
return GF_OK;
case 46:
info->name = "tongue_roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->tongue_roll;
return GF_OK;
case 47:
info->name = "head_pitch";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->head_pitch;
return GF_OK;
case 48:
info->name = "head_yaw";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->head_yaw;
return GF_OK;
case 49:
info->name = "head_roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->head_roll;
return GF_OK;
case 50:
info->name = "lower_t_midlip_o";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->lower_t_midlip_o;
return GF_OK;
case 51:
info->name = "raise_b_midlip_o";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_b_midlip_o;
return GF_OK;
case 52:
info->name = "stretch_l_cornerlip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->stretch_l_cornerlip;
return GF_OK;
case 53:
info->name = "stretch_r_cornerlip";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->stretch_r_cornerlip;
return GF_OK;
case 54:
info->name = "lower_t_lip_lm_o";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->lower_t_lip_lm_o;
return GF_OK;
case 55:
info->name = "lower_t_lip_rm_o";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->lower_t_lip_rm_o;
return GF_OK;
case 56:
info->name = "raise_b_lip_lm_o";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_b_lip_lm_o;
return GF_OK;
case 57:
info->name = "raise_b_lip_rm_o";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_b_lip_rm_o;
return GF_OK;
case 58:
info->name = "raise_l_cornerlip_o";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_l_cornerlip_o;
return GF_OK;
case 59:
info->name = "raise_r_cornerlip_o";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_r_cornerlip_o;
return GF_OK;
case 60:
info->name = "stretch_l_nose";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->stretch_l_nose;
return GF_OK;
case 61:
info->name = "stretch_r_nose";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->stretch_r_nose;
return GF_OK;
case 62:
info->name = "raise_nose";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_nose;
return GF_OK;
case 63:
info->name = "bend_nose";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->bend_nose;
return GF_OK;
case 64:
info->name = "raise_l_ear";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_l_ear;
return GF_OK;
case 65:
info->name = "raise_r_ear";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->raise_r_ear;
return GF_OK;
case 66:
info->name = "pull_l_ear";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->pull_l_ear;
return GF_OK;
case 67:
info->name = "pull_r_ear";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FAP *) node)->pull_r_ear;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FAP_get_field_index_by_name(char *name)
{
if (!strcmp("viseme", name)) return 0;
if (!strcmp("expression", name)) return 1;
if (!strcmp("open_jaw", name)) return 2;
if (!strcmp("lower_t_midlip", name)) return 3;
if (!strcmp("raise_b_midlip", name)) return 4;
if (!strcmp("stretch_l_corner", name)) return 5;
if (!strcmp("stretch_r_corner", name)) return 6;
if (!strcmp("lower_t_lip_lm", name)) return 7;
if (!strcmp("lower_t_lip_rm", name)) return 8;
if (!strcmp("lower_b_lip_lm", name)) return 9;
if (!strcmp("lower_b_lip_rm", name)) return 10;
if (!strcmp("raise_l_cornerlip", name)) return 11;
if (!strcmp("raise_r_cornerlip", name)) return 12;
if (!strcmp("thrust_jaw", name)) return 13;
if (!strcmp("shift_jaw", name)) return 14;
if (!strcmp("push_b_lip", name)) return 15;
if (!strcmp("push_t_lip", name)) return 16;
if (!strcmp("depress_chin", name)) return 17;
if (!strcmp("close_t_l_eyelid", name)) return 18;
if (!strcmp("close_t_r_eyelid", name)) return 19;
if (!strcmp("close_b_l_eyelid", name)) return 20;
if (!strcmp("close_b_r_eyelid", name)) return 21;
if (!strcmp("yaw_l_eyeball", name)) return 22;
if (!strcmp("yaw_r_eyeball", name)) return 23;
if (!strcmp("pitch_l_eyeball", name)) return 24;
if (!strcmp("pitch_r_eyeball", name)) return 25;
if (!strcmp("thrust_l_eyeball", name)) return 26;
if (!strcmp("thrust_r_eyeball", name)) return 27;
if (!strcmp("dilate_l_pupil", name)) return 28;
if (!strcmp("dilate_r_pupil", name)) return 29;
if (!strcmp("raise_l_i_eyebrow", name)) return 30;
if (!strcmp("raise_r_i_eyebrow", name)) return 31;
if (!strcmp("raise_l_m_eyebrow", name)) return 32;
if (!strcmp("raise_r_m_eyebrow", name)) return 33;
if (!strcmp("raise_l_o_eyebrow", name)) return 34;
if (!strcmp("raise_r_o_eyebrow", name)) return 35;
if (!strcmp("squeeze_l_eyebrow", name)) return 36;
if (!strcmp("squeeze_r_eyebrow", name)) return 37;
if (!strcmp("puff_l_cheek", name)) return 38;
if (!strcmp("puff_r_cheek", name)) return 39;
if (!strcmp("lift_l_cheek", name)) return 40;
if (!strcmp("lift_r_cheek", name)) return 41;
if (!strcmp("shift_tongue_tip", name)) return 42;
if (!strcmp("raise_tongue_tip", name)) return 43;
if (!strcmp("thrust_tongue_tip", name)) return 44;
if (!strcmp("raise_tongue", name)) return 45;
if (!strcmp("tongue_roll", name)) return 46;
if (!strcmp("head_pitch", name)) return 47;
if (!strcmp("head_yaw", name)) return 48;
if (!strcmp("head_roll", name)) return 49;
if (!strcmp("lower_t_midlip_o", name)) return 50;
if (!strcmp("raise_b_midlip_o", name)) return 51;
if (!strcmp("stretch_l_cornerlip", name)) return 52;
if (!strcmp("stretch_r_cornerlip", name)) return 53;
if (!strcmp("lower_t_lip_lm_o", name)) return 54;
if (!strcmp("lower_t_lip_rm_o", name)) return 55;
if (!strcmp("raise_b_lip_lm_o", name)) return 56;
if (!strcmp("raise_b_lip_rm_o", name)) return 57;
if (!strcmp("raise_l_cornerlip_o", name)) return 58;
if (!strcmp("raise_r_cornerlip_o", name)) return 59;
if (!strcmp("stretch_l_nose", name)) return 60;
if (!strcmp("stretch_r_nose", name)) return 61;
if (!strcmp("raise_nose", name)) return 62;
if (!strcmp("bend_nose", name)) return 63;
if (!strcmp("raise_l_ear", name)) return 64;
if (!strcmp("raise_r_ear", name)) return 65;
if (!strcmp("pull_l_ear", name)) return 66;
if (!strcmp("pull_r_ear", name)) return 67;
return -1;
}
static Bool FAP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 10:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 11:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 12:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 13:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 14:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 15:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 16:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 17:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 18:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 19:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 20:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 21:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 22:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 23:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 24:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 25:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 26:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 27:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 28:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 29:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 30:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 31:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 32:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 33:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 34:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 35:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 36:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 37:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 38:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 39:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 40:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 41:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 42:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 43:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 44:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 45:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 46:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 47:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 48:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 49:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 50:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 51:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 52:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 53:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 54:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 55:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 56:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 57:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 58:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 59:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 60:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 61:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 62:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 63:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 64:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 65:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 66:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 67:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *FAP_Create()
{
M_FAP *p;
GF_SAFEALLOC(p, M_FAP);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FAP);
p->open_jaw = 1 << 31;
p->lower_t_midlip = 1 << 31;
p->raise_b_midlip = 1 << 31;
p->stretch_l_corner = 1 << 31;
p->stretch_r_corner = 1 << 31;
p->lower_t_lip_lm = 1 << 31;
p->lower_t_lip_rm = 1 << 31;
p->lower_b_lip_lm = 1 << 31;
p->lower_b_lip_rm = 1 << 31;
p->raise_l_cornerlip = 1 << 31;
p->raise_r_cornerlip = 1 << 31;
p->thrust_jaw = 1 << 31;
p->shift_jaw = 1 << 31;
p->push_b_lip = 1 << 31;
p->push_t_lip = 1 << 31;
p->depress_chin = 1 << 31;
p->close_t_l_eyelid = 1 << 31;
p->close_t_r_eyelid = 1 << 31;
p->close_b_l_eyelid = 1 << 31;
p->close_b_r_eyelid = 1 << 31;
p->yaw_l_eyeball = 1 << 31;
p->yaw_r_eyeball = 1 << 31;
p->pitch_l_eyeball = 1 << 31;
p->pitch_r_eyeball = 1 << 31;
p->thrust_l_eyeball = 1 << 31;
p->thrust_r_eyeball = 1 << 31;
p->dilate_l_pupil = 1 << 31;
p->dilate_r_pupil = 1 << 31;
p->raise_l_i_eyebrow = 1 << 31;
p->raise_r_i_eyebrow = 1 << 31;
p->raise_l_m_eyebrow = 1 << 31;
p->raise_r_m_eyebrow = 1 << 31;
p->raise_l_o_eyebrow = 1 << 31;
p->raise_r_o_eyebrow = 1 << 31;
p->squeeze_l_eyebrow = 1 << 31;
p->squeeze_r_eyebrow = 1 << 31;
p->puff_l_cheek = 1 << 31;
p->puff_r_cheek = 1 << 31;
p->lift_l_cheek = 1 << 31;
p->lift_r_cheek = 1 << 31;
p->shift_tongue_tip = 1 << 31;
p->raise_tongue_tip = 1 << 31;
p->thrust_tongue_tip = 1 << 31;
p->raise_tongue = 1 << 31;
p->tongue_roll = 1 << 31;
p->head_pitch = 1 << 31;
p->head_yaw = 1 << 31;
p->head_roll = 1 << 31;
p->lower_t_midlip_o = 1 << 31;
p->raise_b_midlip_o = 1 << 31;
p->stretch_l_cornerlip = 1 << 31;
p->stretch_r_cornerlip = 1 << 31;
p->lower_t_lip_lm_o = 1 << 31;
p->lower_t_lip_rm_o = 1 << 31;
p->raise_b_lip_lm_o = 1 << 31;
p->raise_b_lip_rm_o = 1 << 31;
p->raise_l_cornerlip_o = 1 << 31;
p->raise_r_cornerlip_o = 1 << 31;
p->stretch_l_nose = 1 << 31;
p->stretch_r_nose = 1 << 31;
p->raise_nose = 1 << 31;
p->bend_nose = 1 << 31;
p->raise_l_ear = 1 << 31;
p->raise_r_ear = 1 << 31;
p->pull_l_ear = 1 << 31;
p->pull_r_ear = 1 << 31;
return (GF_Node *)p;
}
static void FDP_Del(GF_Node *node)
{
M_FDP *p = (M_FDP *) node;
gf_node_unregister((GF_Node *) p->featurePointsCoord, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->textureCoord, (GF_Node *) p);
gf_node_unregister_children((GF_Node *) p, p->faceDefTables);
gf_node_unregister_children((GF_Node *) p, p->faceSceneGraph);
gf_node_free((GF_Node *) p);
}
static const u16 FDP_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 FDP_In2All[] = { 0, 1, 2, 3};
static const u16 FDP_Out2All[] = { 0, 1, 2, 3};
static u32 FDP_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 5;
}
}
static GF_Err FDP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = FDP_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = FDP_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = FDP_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FDP_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "featurePointsCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinateNode;
info->far_ptr = & ((M_FDP *)node)->featurePointsCoord;
return GF_OK;
case 1:
info->name = "textureCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureCoordinateNode;
info->far_ptr = & ((M_FDP *)node)->textureCoord;
return GF_OK;
case 2:
info->name = "faceDefTables";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFFaceDefTablesNode;
info->far_ptr = & ((M_FDP *)node)->faceDefTables;
return GF_OK;
case 3:
info->name = "faceSceneGraph";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_FDP *)node)->faceSceneGraph;
return GF_OK;
case 4:
info->name = "useOrthoTexture";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_FDP *) node)->useOrthoTexture;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FDP_get_field_index_by_name(char *name)
{
if (!strcmp("featurePointsCoord", name)) return 0;
if (!strcmp("textureCoord", name)) return 1;
if (!strcmp("faceDefTables", name)) return 2;
if (!strcmp("faceSceneGraph", name)) return 3;
if (!strcmp("useOrthoTexture", name)) return 4;
return -1;
}
static Bool FDP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *FDP_Create()
{
M_FDP *p;
GF_SAFEALLOC(p, M_FDP);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FDP);
return (GF_Node *)p;
}
static void FIT_Del(GF_Node *node)
{
M_FIT *p = (M_FIT *) node;
gf_sg_mfint32_del(p->FAPs);
gf_sg_mfint32_del(p->Graph);
gf_sg_mfint32_del(p->numeratorExp);
gf_sg_mfint32_del(p->denominatorExp);
gf_sg_mfint32_del(p->numeratorImpulse);
gf_sg_mfint32_del(p->numeratorTerms);
gf_sg_mfint32_del(p->denominatorTerms);
gf_sg_mffloat_del(p->numeratorCoefs);
gf_sg_mffloat_del(p->denominatorCoefs);
gf_node_free((GF_Node *) p);
}
static const u16 FIT_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 FIT_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 FIT_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static u32 FIT_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 9;
case GF_SG_FIELD_CODING_DEF:
return 9;
case GF_SG_FIELD_CODING_OUT:
return 9;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 9;
}
}
static GF_Err FIT_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = FIT_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = FIT_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = FIT_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FIT_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "FAPs";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_FIT *) node)->FAPs;
return GF_OK;
case 1:
info->name = "Graph";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_FIT *) node)->Graph;
return GF_OK;
case 2:
info->name = "numeratorExp";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_FIT *) node)->numeratorExp;
return GF_OK;
case 3:
info->name = "denominatorExp";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_FIT *) node)->denominatorExp;
return GF_OK;
case 4:
info->name = "numeratorImpulse";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_FIT *) node)->numeratorImpulse;
return GF_OK;
case 5:
info->name = "numeratorTerms";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_FIT *) node)->numeratorTerms;
return GF_OK;
case 6:
info->name = "denominatorTerms";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_FIT *) node)->denominatorTerms;
return GF_OK;
case 7:
info->name = "numeratorCoefs";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_FIT *) node)->numeratorCoefs;
return GF_OK;
case 8:
info->name = "denominatorCoefs";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_FIT *) node)->denominatorCoefs;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FIT_get_field_index_by_name(char *name)
{
if (!strcmp("FAPs", name)) return 0;
if (!strcmp("Graph", name)) return 1;
if (!strcmp("numeratorExp", name)) return 2;
if (!strcmp("denominatorExp", name)) return 3;
if (!strcmp("numeratorImpulse", name)) return 4;
if (!strcmp("numeratorTerms", name)) return 5;
if (!strcmp("denominatorTerms", name)) return 6;
if (!strcmp("numeratorCoefs", name)) return 7;
if (!strcmp("denominatorCoefs", name)) return 8;
return -1;
}
static Bool FIT_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 13;
*QT13_bits = 7;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(68);
return 1;
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 7;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(68);
return 1;
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(15);
return 1;
case 3:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(15);
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 10;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1023);
return 1;
case 5:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(10);
return 1;
case 6:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(10);
return 1;
default:
return 0;
}
}
GF_Node *FIT_Create()
{
M_FIT *p;
GF_SAFEALLOC(p, M_FIT);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FIT);
return (GF_Node *)p;
}
static void Fog_Del(GF_Node *node)
{
M_Fog *p = (M_Fog *) node;
gf_sg_sfstring_del(p->fogType);
gf_node_free((GF_Node *) p);
}
static const u16 Fog_Def2All[] = { 0, 1, 2};
static const u16 Fog_In2All[] = { 0, 1, 2, 3};
static const u16 Fog_Out2All[] = { 0, 1, 2, 4};
static const u16 Fog_Dyn2All[] = { 0, 2};
static u32 Fog_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 5;
}
}
static GF_Err Fog_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Fog_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Fog_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Fog_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Fog_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Fog_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_Fog *) node)->color;
return GF_OK;
case 1:
info->name = "fogType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_Fog *) node)->fogType;
return GF_OK;
case 2:
info->name = "visibilityRange";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Fog *) node)->visibilityRange;
return GF_OK;
case 3:
info->name = "set_bind";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Fog *)node)->on_set_bind;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Fog *) node)->set_bind;
return GF_OK;
case 4:
info->name = "isBound";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Fog *) node)->isBound;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Fog_get_field_index_by_name(char *name)
{
if (!strcmp("color", name)) return 0;
if (!strcmp("fogType", name)) return 1;
if (!strcmp("visibilityRange", name)) return 2;
if (!strcmp("set_bind", name)) return 3;
if (!strcmp("isBound", name)) return 4;
return -1;
}
static Bool Fog_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 7;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Fog_Create()
{
M_Fog *p;
GF_SAFEALLOC(p, M_Fog);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Fog);
p->color.red = FLT2FIX(1);
p->color.green = FLT2FIX(1);
p->color.blue = FLT2FIX(1);
p->fogType.buffer = (char*)gf_malloc(sizeof(char) * 7);
strcpy(p->fogType.buffer, "LINEAR");
p->visibilityRange = FLT2FIX(0);
return (GF_Node *)p;
}
static void FontStyle_Del(GF_Node *node)
{
M_FontStyle *p = (M_FontStyle *) node;
gf_sg_mfstring_del(p->family);
gf_sg_mfstring_del(p->justify);
gf_sg_sfstring_del(p->language);
gf_sg_sfstring_del(p->style);
gf_node_free((GF_Node *) p);
}
static const u16 FontStyle_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 FontStyle_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 FontStyle_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static u32 FontStyle_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 9;
case GF_SG_FIELD_CODING_DEF:
return 9;
case GF_SG_FIELD_CODING_OUT:
return 9;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 9;
}
}
static GF_Err FontStyle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = FontStyle_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = FontStyle_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = FontStyle_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FontStyle_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "family";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_FontStyle *) node)->family;
return GF_OK;
case 1:
info->name = "horizontal";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_FontStyle *) node)->horizontal;
return GF_OK;
case 2:
info->name = "justify";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_FontStyle *) node)->justify;
return GF_OK;
case 3:
info->name = "language";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_FontStyle *) node)->language;
return GF_OK;
case 4:
info->name = "leftToRight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_FontStyle *) node)->leftToRight;
return GF_OK;
case 5:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_FontStyle *) node)->size;
return GF_OK;
case 6:
info->name = "spacing";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_FontStyle *) node)->spacing;
return GF_OK;
case 7:
info->name = "style";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_FontStyle *) node)->style;
return GF_OK;
case 8:
info->name = "topToBottom";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_FontStyle *) node)->topToBottom;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FontStyle_get_field_index_by_name(char *name)
{
if (!strcmp("family", name)) return 0;
if (!strcmp("horizontal", name)) return 1;
if (!strcmp("justify", name)) return 2;
if (!strcmp("language", name)) return 3;
if (!strcmp("leftToRight", name)) return 4;
if (!strcmp("size", name)) return 5;
if (!strcmp("spacing", name)) return 6;
if (!strcmp("style", name)) return 7;
if (!strcmp("topToBottom", name)) return 8;
return -1;
}
static Bool FontStyle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 5:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *FontStyle_Create()
{
M_FontStyle *p;
GF_SAFEALLOC(p, M_FontStyle);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FontStyle);
p->family.vals = (char**)gf_malloc(sizeof(SFString)*1);
p->family.count = 1;
p->family.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
strcpy(p->family.vals[0], "SERIF");
p->horizontal = 1;
p->justify.vals = (char**)gf_malloc(sizeof(SFString)*1);
p->justify.count = 1;
p->justify.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
strcpy(p->justify.vals[0], "BEGIN");
p->leftToRight = 1;
p->size = FLT2FIX(1.0);
p->spacing = FLT2FIX(1.0);
p->style.buffer = (char*)gf_malloc(sizeof(char) * 6);
strcpy(p->style.buffer, "PLAIN");
p->topToBottom = 1;
return (GF_Node *)p;
}
static void Form_Del(GF_Node *node)
{
M_Form *p = (M_Form *) node;
gf_sg_mfint32_del(p->groups);
gf_sg_mfstring_del(p->constraints);
gf_sg_mfint32_del(p->groupsIndex);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Form_Def2All[] = { 2, 3, 4, 5, 6};
static const u16 Form_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 Form_Out2All[] = { 2, 3, 4, 5, 6};
static const u16 Form_Dyn2All[] = { 3};
static u32 Form_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 7;
}
}
static GF_Err Form_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Form_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Form_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Form_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Form_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Form_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Form *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Form *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Form *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Form *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Form *)node)->children;
return GF_OK;
case 3:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Form *) node)->size;
return GF_OK;
case 4:
info->name = "groups";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_Form *) node)->groups;
return GF_OK;
case 5:
info->name = "constraints";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_Form *) node)->constraints;
return GF_OK;
case 6:
info->name = "groupsIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_Form *) node)->groupsIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Form_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("size", name)) return 3;
if (!strcmp("groups", name)) return 4;
if (!strcmp("constraints", name)) return 5;
if (!strcmp("groupsIndex", name)) return 6;
return -1;
}
static Bool Form_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 12;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 10;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(1022);
return 1;
case 6:
*AType = 0;
*QType = 13;
*QT13_bits = 10;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(1022);
return 1;
default:
return 0;
}
}
GF_Node *Form_Create()
{
M_Form *p;
GF_SAFEALLOC(p, M_Form);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Form);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->size.x = FLT2FIX(-1);
p->size.y = FLT2FIX(-1);
return (GF_Node *)p;
}
static void Group_Del(GF_Node *node)
{
M_Group *p = (M_Group *) node;
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Group_Def2All[] = { 2};
static const u16 Group_In2All[] = { 0, 1, 2};
static const u16 Group_Out2All[] = { 2};
static u32 Group_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 3;
}
}
static GF_Err Group_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Group_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Group_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Group_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Group_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Group *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Group *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Group *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Group *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Group *)node)->children;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Group_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
return -1;
}
static Bool Group_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Group_Create()
{
M_Group *p;
GF_SAFEALLOC(p, M_Group);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Group);
gf_sg_vrml_parent_setup((GF_Node *) p);
return (GF_Node *)p;
}
static void ImageTexture_Del(GF_Node *node)
{
M_ImageTexture *p = (M_ImageTexture *) node;
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 ImageTexture_Def2All[] = { 0, 1, 2};
static const u16 ImageTexture_In2All[] = { 0};
static const u16 ImageTexture_Out2All[] = { 0};
static u32 ImageTexture_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 3;
}
}
static GF_Err ImageTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ImageTexture_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ImageTexture_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ImageTexture_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ImageTexture_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_ImageTexture *) node)->url;
return GF_OK;
case 1:
info->name = "repeatS";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ImageTexture *) node)->repeatS;
return GF_OK;
case 2:
info->name = "repeatT";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ImageTexture *) node)->repeatT;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ImageTexture_get_field_index_by_name(char *name)
{
if (!strcmp("url", name)) return 0;
if (!strcmp("repeatS", name)) return 1;
if (!strcmp("repeatT", name)) return 2;
return -1;
}
static Bool ImageTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *ImageTexture_Create()
{
M_ImageTexture *p;
GF_SAFEALLOC(p, M_ImageTexture);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ImageTexture);
p->repeatS = 1;
p->repeatT = 1;
return (GF_Node *)p;
}
static void IndexedFaceSet_Del(GF_Node *node)
{
M_IndexedFaceSet *p = (M_IndexedFaceSet *) node;
gf_sg_mfint32_del(p->set_colorIndex);
gf_sg_mfint32_del(p->set_coordIndex);
gf_sg_mfint32_del(p->set_normalIndex);
gf_sg_mfint32_del(p->set_texCoordIndex);
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
gf_sg_mfint32_del(p->colorIndex);
gf_sg_mfint32_del(p->coordIndex);
gf_sg_mfint32_del(p->normalIndex);
gf_sg_mfint32_del(p->texCoordIndex);
gf_node_free((GF_Node *) p);
}
static const u16 IndexedFaceSet_Def2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
static const u16 IndexedFaceSet_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 IndexedFaceSet_Out2All[] = { 4, 5, 6, 7};
static u32 IndexedFaceSet_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 14;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 18;
}
}
static GF_Err IndexedFaceSet_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = IndexedFaceSet_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = IndexedFaceSet_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = IndexedFaceSet_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err IndexedFaceSet_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_colorIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_colorIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet *) node)->set_colorIndex;
return GF_OK;
case 1:
info->name = "set_coordIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_coordIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet *) node)->set_coordIndex;
return GF_OK;
case 2:
info->name = "set_normalIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_normalIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet *) node)->set_normalIndex;
return GF_OK;
case 3:
info->name = "set_texCoordIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedFaceSet *)node)->on_set_texCoordIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet *) node)->set_texCoordIndex;
return GF_OK;
case 4:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_IndexedFaceSet *)node)->color;
return GF_OK;
case 5:
info->name = "coord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinateNode;
info->far_ptr = & ((M_IndexedFaceSet *)node)->coord;
return GF_OK;
case 6:
info->name = "normal";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFNormalNode;
info->far_ptr = & ((M_IndexedFaceSet *)node)->normal;
return GF_OK;
case 7:
info->name = "texCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureCoordinateNode;
info->far_ptr = & ((M_IndexedFaceSet *)node)->texCoord;
return GF_OK;
case 8:
info->name = "ccw";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_IndexedFaceSet *) node)->ccw;
return GF_OK;
case 9:
info->name = "colorIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet *) node)->colorIndex;
return GF_OK;
case 10:
info->name = "colorPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_IndexedFaceSet *) node)->colorPerVertex;
return GF_OK;
case 11:
info->name = "convex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_IndexedFaceSet *) node)->convex;
return GF_OK;
case 12:
info->name = "coordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet *) node)->coordIndex;
return GF_OK;
case 13:
info->name = "creaseAngle";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_IndexedFaceSet *) node)->creaseAngle;
return GF_OK;
case 14:
info->name = "normalIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet *) node)->normalIndex;
return GF_OK;
case 15:
info->name = "normalPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_IndexedFaceSet *) node)->normalPerVertex;
return GF_OK;
case 16:
info->name = "solid";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_IndexedFaceSet *) node)->solid;
return GF_OK;
case 17:
info->name = "texCoordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet *) node)->texCoordIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 IndexedFaceSet_get_field_index_by_name(char *name)
{
if (!strcmp("set_colorIndex", name)) return 0;
if (!strcmp("set_coordIndex", name)) return 1;
if (!strcmp("set_normalIndex", name)) return 2;
if (!strcmp("set_texCoordIndex", name)) return 3;
if (!strcmp("color", name)) return 4;
if (!strcmp("coord", name)) return 5;
if (!strcmp("normal", name)) return 6;
if (!strcmp("texCoord", name)) return 7;
if (!strcmp("ccw", name)) return 8;
if (!strcmp("colorIndex", name)) return 9;
if (!strcmp("colorPerVertex", name)) return 10;
if (!strcmp("convex", name)) return 11;
if (!strcmp("coordIndex", name)) return 12;
if (!strcmp("creaseAngle", name)) return 13;
if (!strcmp("normalIndex", name)) return 14;
if (!strcmp("normalPerVertex", name)) return 15;
if (!strcmp("solid", name)) return 16;
if (!strcmp("texCoordIndex", name)) return 17;
return -1;
}
static Bool IndexedFaceSet_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 9:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 12:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 13:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
case 14:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 17:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *IndexedFaceSet_Create()
{
M_IndexedFaceSet *p;
GF_SAFEALLOC(p, M_IndexedFaceSet);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedFaceSet);
p->ccw = 1;
p->colorPerVertex = 1;
p->convex = 1;
p->creaseAngle = FLT2FIX(0.0);
p->normalPerVertex = 1;
p->solid = 1;
return (GF_Node *)p;
}
static void IndexedFaceSet2D_Del(GF_Node *node)
{
M_IndexedFaceSet2D *p = (M_IndexedFaceSet2D *) node;
gf_sg_mfint32_del(p->set_colorIndex);
gf_sg_mfint32_del(p->set_coordIndex);
gf_sg_mfint32_del(p->set_texCoordIndex);
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
gf_sg_mfint32_del(p->colorIndex);
gf_sg_mfint32_del(p->coordIndex);
gf_sg_mfint32_del(p->texCoordIndex);
gf_node_free((GF_Node *) p);
}
static const u16 IndexedFaceSet2D_Def2All[] = { 3, 4, 5, 6, 7, 8, 9, 10};
static const u16 IndexedFaceSet2D_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 IndexedFaceSet2D_Out2All[] = { 3, 4, 5};
static u32 IndexedFaceSet2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 11;
}
}
static GF_Err IndexedFaceSet2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = IndexedFaceSet2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = IndexedFaceSet2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = IndexedFaceSet2D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err IndexedFaceSet2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_colorIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedFaceSet2D *)node)->on_set_colorIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet2D *) node)->set_colorIndex;
return GF_OK;
case 1:
info->name = "set_coordIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedFaceSet2D *)node)->on_set_coordIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet2D *) node)->set_coordIndex;
return GF_OK;
case 2:
info->name = "set_texCoordIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedFaceSet2D *)node)->on_set_texCoordIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet2D *) node)->set_texCoordIndex;
return GF_OK;
case 3:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_IndexedFaceSet2D *)node)->color;
return GF_OK;
case 4:
info->name = "coord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinate2DNode;
info->far_ptr = & ((M_IndexedFaceSet2D *)node)->coord;
return GF_OK;
case 5:
info->name = "texCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureCoordinateNode;
info->far_ptr = & ((M_IndexedFaceSet2D *)node)->texCoord;
return GF_OK;
case 6:
info->name = "colorIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet2D *) node)->colorIndex;
return GF_OK;
case 7:
info->name = "colorPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_IndexedFaceSet2D *) node)->colorPerVertex;
return GF_OK;
case 8:
info->name = "convex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_IndexedFaceSet2D *) node)->convex;
return GF_OK;
case 9:
info->name = "coordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet2D *) node)->coordIndex;
return GF_OK;
case 10:
info->name = "texCoordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedFaceSet2D *) node)->texCoordIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 IndexedFaceSet2D_get_field_index_by_name(char *name)
{
if (!strcmp("set_colorIndex", name)) return 0;
if (!strcmp("set_coordIndex", name)) return 1;
if (!strcmp("set_texCoordIndex", name)) return 2;
if (!strcmp("color", name)) return 3;
if (!strcmp("coord", name)) return 4;
if (!strcmp("texCoord", name)) return 5;
if (!strcmp("colorIndex", name)) return 6;
if (!strcmp("colorPerVertex", name)) return 7;
if (!strcmp("convex", name)) return 8;
if (!strcmp("coordIndex", name)) return 9;
if (!strcmp("texCoordIndex", name)) return 10;
return -1;
}
static Bool IndexedFaceSet2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 6:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 10:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *IndexedFaceSet2D_Create()
{
M_IndexedFaceSet2D *p;
GF_SAFEALLOC(p, M_IndexedFaceSet2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedFaceSet2D);
p->colorPerVertex = 1;
p->convex = 1;
return (GF_Node *)p;
}
static void IndexedLineSet_Del(GF_Node *node)
{
M_IndexedLineSet *p = (M_IndexedLineSet *) node;
gf_sg_mfint32_del(p->set_colorIndex);
gf_sg_mfint32_del(p->set_coordIndex);
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
gf_sg_mfint32_del(p->colorIndex);
gf_sg_mfint32_del(p->coordIndex);
gf_node_free((GF_Node *) p);
}
static const u16 IndexedLineSet_Def2All[] = { 2, 3, 4, 5, 6};
static const u16 IndexedLineSet_In2All[] = { 0, 1, 2, 3};
static const u16 IndexedLineSet_Out2All[] = { 2, 3};
static u32 IndexedLineSet_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 7;
}
}
static GF_Err IndexedLineSet_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = IndexedLineSet_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = IndexedLineSet_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = IndexedLineSet_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err IndexedLineSet_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_colorIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedLineSet *)node)->on_set_colorIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedLineSet *) node)->set_colorIndex;
return GF_OK;
case 1:
info->name = "set_coordIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedLineSet *)node)->on_set_coordIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedLineSet *) node)->set_coordIndex;
return GF_OK;
case 2:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_IndexedLineSet *)node)->color;
return GF_OK;
case 3:
info->name = "coord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinateNode;
info->far_ptr = & ((M_IndexedLineSet *)node)->coord;
return GF_OK;
case 4:
info->name = "colorIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedLineSet *) node)->colorIndex;
return GF_OK;
case 5:
info->name = "colorPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_IndexedLineSet *) node)->colorPerVertex;
return GF_OK;
case 6:
info->name = "coordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedLineSet *) node)->coordIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 IndexedLineSet_get_field_index_by_name(char *name)
{
if (!strcmp("set_colorIndex", name)) return 0;
if (!strcmp("set_coordIndex", name)) return 1;
if (!strcmp("color", name)) return 2;
if (!strcmp("coord", name)) return 3;
if (!strcmp("colorIndex", name)) return 4;
if (!strcmp("colorPerVertex", name)) return 5;
if (!strcmp("coordIndex", name)) return 6;
return -1;
}
static Bool IndexedLineSet_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 4:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *IndexedLineSet_Create()
{
M_IndexedLineSet *p;
GF_SAFEALLOC(p, M_IndexedLineSet);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedLineSet);
p->colorPerVertex = 1;
return (GF_Node *)p;
}
static void IndexedLineSet2D_Del(GF_Node *node)
{
M_IndexedLineSet2D *p = (M_IndexedLineSet2D *) node;
gf_sg_mfint32_del(p->set_colorIndex);
gf_sg_mfint32_del(p->set_coordIndex);
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
gf_sg_mfint32_del(p->colorIndex);
gf_sg_mfint32_del(p->coordIndex);
gf_node_free((GF_Node *) p);
}
static const u16 IndexedLineSet2D_Def2All[] = { 2, 3, 4, 5, 6};
static const u16 IndexedLineSet2D_In2All[] = { 0, 1, 2, 3};
static const u16 IndexedLineSet2D_Out2All[] = { 2, 3};
static u32 IndexedLineSet2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 7;
}
}
static GF_Err IndexedLineSet2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = IndexedLineSet2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = IndexedLineSet2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = IndexedLineSet2D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err IndexedLineSet2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_colorIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedLineSet2D *)node)->on_set_colorIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedLineSet2D *) node)->set_colorIndex;
return GF_OK;
case 1:
info->name = "set_coordIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_IndexedLineSet2D *)node)->on_set_coordIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedLineSet2D *) node)->set_coordIndex;
return GF_OK;
case 2:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_IndexedLineSet2D *)node)->color;
return GF_OK;
case 3:
info->name = "coord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinate2DNode;
info->far_ptr = & ((M_IndexedLineSet2D *)node)->coord;
return GF_OK;
case 4:
info->name = "colorIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedLineSet2D *) node)->colorIndex;
return GF_OK;
case 5:
info->name = "colorPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_IndexedLineSet2D *) node)->colorPerVertex;
return GF_OK;
case 6:
info->name = "coordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_IndexedLineSet2D *) node)->coordIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 IndexedLineSet2D_get_field_index_by_name(char *name)
{
if (!strcmp("set_colorIndex", name)) return 0;
if (!strcmp("set_coordIndex", name)) return 1;
if (!strcmp("color", name)) return 2;
if (!strcmp("coord", name)) return 3;
if (!strcmp("colorIndex", name)) return 4;
if (!strcmp("colorPerVertex", name)) return 5;
if (!strcmp("coordIndex", name)) return 6;
return -1;
}
static Bool IndexedLineSet2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 4:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *IndexedLineSet2D_Create()
{
M_IndexedLineSet2D *p;
GF_SAFEALLOC(p, M_IndexedLineSet2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_IndexedLineSet2D);
p->colorPerVertex = 1;
return (GF_Node *)p;
}
static void Inline_Del(GF_Node *node)
{
M_Inline *p = (M_Inline *) node;
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 Inline_Def2All[] = { 0};
static const u16 Inline_In2All[] = { 0};
static const u16 Inline_Out2All[] = { 0};
static u32 Inline_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 1;
}
}
static GF_Err Inline_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Inline_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Inline_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Inline_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Inline_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_Inline *) node)->url;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Inline_get_field_index_by_name(char *name)
{
if (!strcmp("url", name)) return 0;
return -1;
}
static Bool Inline_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Inline_Create()
{
M_Inline *p;
GF_SAFEALLOC(p, M_Inline);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Inline);
return (GF_Node *)p;
}
static void LOD_Del(GF_Node *node)
{
M_LOD *p = (M_LOD *) node;
gf_node_unregister_children((GF_Node *) p, p->level);
gf_sg_mffloat_del(p->range);
gf_node_free((GF_Node *) p);
}
static const u16 LOD_Def2All[] = { 0, 1, 2};
static const u16 LOD_In2All[] = { 0};
static const u16 LOD_Out2All[] = { 0};
static u32 LOD_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 3;
}
}
static GF_Err LOD_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = LOD_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = LOD_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = LOD_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err LOD_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "level";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_LOD *)node)->level;
return GF_OK;
case 1:
info->name = "center";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_LOD *) node)->center;
return GF_OK;
case 2:
info->name = "range";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_LOD *) node)->range;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 LOD_get_field_index_by_name(char *name)
{
if (!strcmp("level", name)) return 0;
if (!strcmp("center", name)) return 1;
if (!strcmp("range", name)) return 2;
return -1;
}
static Bool LOD_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *LOD_Create()
{
M_LOD *p;
GF_SAFEALLOC(p, M_LOD);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_LOD);
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->center.z = FLT2FIX(0);
return (GF_Node *)p;
}
static void Layer2D_Del(GF_Node *node)
{
M_Layer2D *p = (M_Layer2D *) node;
gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->viewport, (GF_Node *) p);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Layer2D_Def2All[] = { 2, 3, 4, 5};
static const u16 Layer2D_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 Layer2D_Out2All[] = { 2, 3, 4, 5};
static const u16 Layer2D_Dyn2All[] = { 3};
static u32 Layer2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 6;
}
}
static GF_Err Layer2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Layer2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Layer2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Layer2D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Layer2D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Layer2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Layer2D *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Layer2D *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Layer2D *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Layer2D *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Layer2D *)node)->children;
return GF_OK;
case 3:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Layer2D *) node)->size;
return GF_OK;
case 4:
info->name = "background";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFBackground2DNode;
info->far_ptr = & ((M_Layer2D *)node)->background;
return GF_OK;
case 5:
info->name = "viewport";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFViewportNode;
info->far_ptr = & ((M_Layer2D *)node)->viewport;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Layer2D_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("size", name)) return 3;
if (!strcmp("background", name)) return 4;
if (!strcmp("viewport", name)) return 5;
return -1;
}
static Bool Layer2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 12;
*QType = 12;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Layer2D_Create()
{
M_Layer2D *p;
GF_SAFEALLOC(p, M_Layer2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Layer2D);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->size.x = FLT2FIX(-1);
p->size.y = FLT2FIX(-1);
return (GF_Node *)p;
}
static void Layer3D_Del(GF_Node *node)
{
M_Layer3D *p = (M_Layer3D *) node;
gf_node_unregister((GF_Node *) p->background, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->fog, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->navigationInfo, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->viewpoint, (GF_Node *) p);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Layer3D_Def2All[] = { 2, 3, 4, 5, 6, 7};
static const u16 Layer3D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 Layer3D_Out2All[] = { 2, 3, 4, 5, 6, 7};
static const u16 Layer3D_Dyn2All[] = { 3};
static u32 Layer3D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 8;
}
}
static GF_Err Layer3D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Layer3D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Layer3D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Layer3D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Layer3D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Layer3D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Layer3D *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Layer3D *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Layer3D *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Layer3D *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Layer3D *)node)->children;
return GF_OK;
case 3:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Layer3D *) node)->size;
return GF_OK;
case 4:
info->name = "background";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFBackground3DNode;
info->far_ptr = & ((M_Layer3D *)node)->background;
return GF_OK;
case 5:
info->name = "fog";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFFogNode;
info->far_ptr = & ((M_Layer3D *)node)->fog;
return GF_OK;
case 6:
info->name = "navigationInfo";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFNavigationInfoNode;
info->far_ptr = & ((M_Layer3D *)node)->navigationInfo;
return GF_OK;
case 7:
info->name = "viewpoint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFViewpointNode;
info->far_ptr = & ((M_Layer3D *)node)->viewpoint;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Layer3D_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("size", name)) return 3;
if (!strcmp("background", name)) return 4;
if (!strcmp("fog", name)) return 5;
if (!strcmp("navigationInfo", name)) return 6;
if (!strcmp("viewpoint", name)) return 7;
return -1;
}
static Bool Layer3D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 12;
*QType = 12;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Layer3D_Create()
{
M_Layer3D *p;
GF_SAFEALLOC(p, M_Layer3D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Layer3D);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->size.x = FLT2FIX(-1);
p->size.y = FLT2FIX(-1);
return (GF_Node *)p;
}
static void Layout_Del(GF_Node *node)
{
M_Layout *p = (M_Layout *) node;
gf_sg_mfstring_del(p->justify);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Layout_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
static const u16 Layout_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
static const u16 Layout_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
static const u16 Layout_Dyn2All[] = { 4, 9, 13};
static u32 Layout_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 15;
case GF_SG_FIELD_CODING_DEF:
return 13;
case GF_SG_FIELD_CODING_OUT:
return 13;
case GF_SG_FIELD_CODING_DYN:
return 3;
default:
return 15;
}
}
static GF_Err Layout_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Layout_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Layout_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Layout_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Layout_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Layout_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Layout *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Layout *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Layout *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Layout *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Layout *)node)->children;
return GF_OK;
case 3:
info->name = "wrap";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Layout *) node)->wrap;
return GF_OK;
case 4:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Layout *) node)->size;
return GF_OK;
case 5:
info->name = "horizontal";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Layout *) node)->horizontal;
return GF_OK;
case 6:
info->name = "justify";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_Layout *) node)->justify;
return GF_OK;
case 7:
info->name = "leftToRight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Layout *) node)->leftToRight;
return GF_OK;
case 8:
info->name = "topToBottom";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Layout *) node)->topToBottom;
return GF_OK;
case 9:
info->name = "spacing";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Layout *) node)->spacing;
return GF_OK;
case 10:
info->name = "smoothScroll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Layout *) node)->smoothScroll;
return GF_OK;
case 11:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Layout *) node)->loop;
return GF_OK;
case 12:
info->name = "scrollVertical";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Layout *) node)->scrollVertical;
return GF_OK;
case 13:
info->name = "scrollRate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Layout *) node)->scrollRate;
return GF_OK;
case 14:
info->name = "scrollMode";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Layout *) node)->scrollMode;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Layout_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("wrap", name)) return 3;
if (!strcmp("size", name)) return 4;
if (!strcmp("horizontal", name)) return 5;
if (!strcmp("justify", name)) return 6;
if (!strcmp("leftToRight", name)) return 7;
if (!strcmp("topToBottom", name)) return 8;
if (!strcmp("spacing", name)) return 9;
if (!strcmp("smoothScroll", name)) return 10;
if (!strcmp("loop", name)) return 11;
if (!strcmp("scrollVertical", name)) return 12;
if (!strcmp("scrollRate", name)) return 13;
if (!strcmp("scrollMode", name)) return 14;
return -1;
}
static Bool Layout_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 4:
*AType = 12;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 13:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 14:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *Layout_Create()
{
M_Layout *p;
GF_SAFEALLOC(p, M_Layout);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Layout);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->size.x = FLT2FIX(-1);
p->size.y = FLT2FIX(-1);
p->horizontal = 1;
p->justify.vals = (char**)gf_malloc(sizeof(SFString)*1);
p->justify.count = 1;
p->justify.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
strcpy(p->justify.vals[0], "BEGIN");
p->leftToRight = 1;
p->topToBottom = 1;
p->spacing = FLT2FIX(1);
p->scrollVertical = 1;
p->scrollRate = FLT2FIX(0);
p->scrollMode = 0;
return (GF_Node *)p;
}
static void LineProperties_Del(GF_Node *node)
{
M_LineProperties *p = (M_LineProperties *) node;
gf_node_free((GF_Node *) p);
}
static const u16 LineProperties_Def2All[] = { 0, 1, 2};
static const u16 LineProperties_In2All[] = { 0, 1, 2};
static const u16 LineProperties_Out2All[] = { 0, 1, 2};
static const u16 LineProperties_Dyn2All[] = { 0, 2};
static u32 LineProperties_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 3;
}
}
static GF_Err LineProperties_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = LineProperties_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = LineProperties_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = LineProperties_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = LineProperties_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err LineProperties_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "lineColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_LineProperties *) node)->lineColor;
return GF_OK;
case 1:
info->name = "lineStyle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_LineProperties *) node)->lineStyle;
return GF_OK;
case 2:
info->name = "width";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_LineProperties *) node)->width;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 LineProperties_get_field_index_by_name(char *name)
{
if (!strcmp("lineColor", name)) return 0;
if (!strcmp("lineStyle", name)) return 1;
if (!strcmp("width", name)) return 2;
return -1;
}
static Bool LineProperties_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(5);
return 1;
case 2:
*AType = 7;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *LineProperties_Create()
{
M_LineProperties *p;
GF_SAFEALLOC(p, M_LineProperties);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_LineProperties);
p->lineColor.red = FLT2FIX(0);
p->lineColor.green = FLT2FIX(0);
p->lineColor.blue = FLT2FIX(0);
p->lineStyle = 0;
p->width = FLT2FIX(1);
return (GF_Node *)p;
}
static void ListeningPoint_Del(GF_Node *node)
{
M_ListeningPoint *p = (M_ListeningPoint *) node;
gf_sg_sfstring_del(p->description);
gf_node_free((GF_Node *) p);
}
static const u16 ListeningPoint_Def2All[] = { 1, 2, 3, 4};
static const u16 ListeningPoint_In2All[] = { 0, 1, 2, 3};
static const u16 ListeningPoint_Out2All[] = { 1, 2, 3, 5, 6};
static const u16 ListeningPoint_Dyn2All[] = { 2, 3};
static u32 ListeningPoint_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 7;
}
}
static GF_Err ListeningPoint_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ListeningPoint_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ListeningPoint_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ListeningPoint_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = ListeningPoint_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ListeningPoint_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_bind";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_ListeningPoint *)node)->on_set_bind;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ListeningPoint *) node)->set_bind;
return GF_OK;
case 1:
info->name = "jump";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ListeningPoint *) node)->jump;
return GF_OK;
case 2:
info->name = "orientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_ListeningPoint *) node)->orientation;
return GF_OK;
case 3:
info->name = "position";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_ListeningPoint *) node)->position;
return GF_OK;
case 4:
info->name = "description";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_ListeningPoint *) node)->description;
return GF_OK;
case 5:
info->name = "bindTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_ListeningPoint *) node)->bindTime;
return GF_OK;
case 6:
info->name = "isBound";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ListeningPoint *) node)->isBound;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ListeningPoint_get_field_index_by_name(char *name)
{
if (!strcmp("set_bind", name)) return 0;
if (!strcmp("jump", name)) return 1;
if (!strcmp("orientation", name)) return 2;
if (!strcmp("position", name)) return 3;
if (!strcmp("description", name)) return 4;
if (!strcmp("bindTime", name)) return 5;
if (!strcmp("isBound", name)) return 6;
return -1;
}
static Bool ListeningPoint_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 10;
*QType = 10;
return 1;
case 3:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *ListeningPoint_Create()
{
M_ListeningPoint *p;
GF_SAFEALLOC(p, M_ListeningPoint);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ListeningPoint);
p->jump = 1;
p->orientation.x = FLT2FIX(0);
p->orientation.y = FLT2FIX(0);
p->orientation.z = FLT2FIX(1);
p->orientation.q = FLT2FIX(0);
p->position.x = FLT2FIX(0);
p->position.y = FLT2FIX(0);
p->position.z = FLT2FIX(10);
return (GF_Node *)p;
}
static void Material_Del(GF_Node *node)
{
M_Material *p = (M_Material *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Material_Def2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 Material_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 Material_Out2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 Material_Dyn2All[] = { 0, 1, 2, 3, 4, 5};
static u32 Material_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 6;
default:
return 6;
}
}
static GF_Err Material_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Material_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Material_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Material_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Material_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Material_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "ambientIntensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Material *) node)->ambientIntensity;
return GF_OK;
case 1:
info->name = "diffuseColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_Material *) node)->diffuseColor;
return GF_OK;
case 2:
info->name = "emissiveColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_Material *) node)->emissiveColor;
return GF_OK;
case 3:
info->name = "shininess";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Material *) node)->shininess;
return GF_OK;
case 4:
info->name = "specularColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_Material *) node)->specularColor;
return GF_OK;
case 5:
info->name = "transparency";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Material *) node)->transparency;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Material_get_field_index_by_name(char *name)
{
if (!strcmp("ambientIntensity", name)) return 0;
if (!strcmp("diffuseColor", name)) return 1;
if (!strcmp("emissiveColor", name)) return 2;
if (!strcmp("shininess", name)) return 3;
if (!strcmp("specularColor", name)) return 4;
if (!strcmp("transparency", name)) return 5;
return -1;
}
static Bool Material_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 3:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 4:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 5:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *Material_Create()
{
M_Material *p;
GF_SAFEALLOC(p, M_Material);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Material);
p->ambientIntensity = FLT2FIX(0.2);
p->diffuseColor.red = FLT2FIX(0.8);
p->diffuseColor.green = FLT2FIX(0.8);
p->diffuseColor.blue = FLT2FIX(0.8);
p->emissiveColor.red = FLT2FIX(0);
p->emissiveColor.green = FLT2FIX(0);
p->emissiveColor.blue = FLT2FIX(0);
p->shininess = FLT2FIX(0.2);
p->specularColor.red = FLT2FIX(0);
p->specularColor.green = FLT2FIX(0);
p->specularColor.blue = FLT2FIX(0);
p->transparency = FLT2FIX(0);
return (GF_Node *)p;
}
static void Material2D_Del(GF_Node *node)
{
M_Material2D *p = (M_Material2D *) node;
gf_node_unregister((GF_Node *) p->lineProps, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Material2D_Def2All[] = { 0, 1, 2, 3};
static const u16 Material2D_In2All[] = { 0, 1, 2, 3};
static const u16 Material2D_Out2All[] = { 0, 1, 2, 3};
static const u16 Material2D_Dyn2All[] = { 0, 3};
static u32 Material2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 4;
}
}
static GF_Err Material2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Material2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Material2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Material2D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Material2D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Material2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "emissiveColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_Material2D *) node)->emissiveColor;
return GF_OK;
case 1:
info->name = "filled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Material2D *) node)->filled;
return GF_OK;
case 2:
info->name = "lineProps";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFLinePropertiesNode;
info->far_ptr = & ((M_Material2D *)node)->lineProps;
return GF_OK;
case 3:
info->name = "transparency";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Material2D *) node)->transparency;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Material2D_get_field_index_by_name(char *name)
{
if (!strcmp("emissiveColor", name)) return 0;
if (!strcmp("filled", name)) return 1;
if (!strcmp("lineProps", name)) return 2;
if (!strcmp("transparency", name)) return 3;
return -1;
}
static Bool Material2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 3:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *Material2D_Create()
{
M_Material2D *p;
GF_SAFEALLOC(p, M_Material2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Material2D);
p->emissiveColor.red = FLT2FIX(0.8);
p->emissiveColor.green = FLT2FIX(0.8);
p->emissiveColor.blue = FLT2FIX(0.8);
p->transparency = FLT2FIX(0);
return (GF_Node *)p;
}
static void MovieTexture_Del(GF_Node *node)
{
M_MovieTexture *p = (M_MovieTexture *) node;
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 MovieTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 MovieTexture_In2All[] = { 0, 1, 2, 3, 4};
static const u16 MovieTexture_Out2All[] = { 0, 1, 2, 3, 4, 7, 8};
static const u16 MovieTexture_Dyn2All[] = { 1};
static u32 MovieTexture_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 9;
}
}
static GF_Err MovieTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = MovieTexture_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = MovieTexture_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = MovieTexture_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = MovieTexture_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err MovieTexture_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MovieTexture *) node)->loop;
return GF_OK;
case 1:
info->name = "speed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_MovieTexture *) node)->speed;
return GF_OK;
case 2:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MovieTexture *) node)->startTime;
return GF_OK;
case 3:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MovieTexture *) node)->stopTime;
return GF_OK;
case 4:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_MovieTexture *) node)->url;
return GF_OK;
case 5:
info->name = "repeatS";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MovieTexture *) node)->repeatS;
return GF_OK;
case 6:
info->name = "repeatT";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MovieTexture *) node)->repeatT;
return GF_OK;
case 7:
info->name = "duration_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MovieTexture *) node)->duration_changed;
return GF_OK;
case 8:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MovieTexture *) node)->isActive;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 MovieTexture_get_field_index_by_name(char *name)
{
if (!strcmp("loop", name)) return 0;
if (!strcmp("speed", name)) return 1;
if (!strcmp("startTime", name)) return 2;
if (!strcmp("stopTime", name)) return 3;
if (!strcmp("url", name)) return 4;
if (!strcmp("repeatS", name)) return 5;
if (!strcmp("repeatT", name)) return 6;
if (!strcmp("duration_changed", name)) return 7;
if (!strcmp("isActive", name)) return 8;
return -1;
}
static Bool MovieTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *MovieTexture_Create()
{
M_MovieTexture *p;
GF_SAFEALLOC(p, M_MovieTexture);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_MovieTexture);
p->speed = FLT2FIX(1.0);
p->startTime = 0;
p->stopTime = 0;
p->repeatS = 1;
p->repeatT = 1;
return (GF_Node *)p;
}
static void NavigationInfo_Del(GF_Node *node)
{
M_NavigationInfo *p = (M_NavigationInfo *) node;
gf_sg_mffloat_del(p->avatarSize);
gf_sg_mfstring_del(p->type);
gf_node_free((GF_Node *) p);
}
static const u16 NavigationInfo_Def2All[] = { 1, 2, 3, 4, 5};
static const u16 NavigationInfo_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 NavigationInfo_Out2All[] = { 1, 2, 3, 4, 5, 6};
static const u16 NavigationInfo_Dyn2All[] = { 5};
static u32 NavigationInfo_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 7;
}
}
static GF_Err NavigationInfo_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = NavigationInfo_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = NavigationInfo_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = NavigationInfo_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = NavigationInfo_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err NavigationInfo_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_bind";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_NavigationInfo *)node)->on_set_bind;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_NavigationInfo *) node)->set_bind;
return GF_OK;
case 1:
info->name = "avatarSize";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_NavigationInfo *) node)->avatarSize;
return GF_OK;
case 2:
info->name = "headlight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_NavigationInfo *) node)->headlight;
return GF_OK;
case 3:
info->name = "speed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_NavigationInfo *) node)->speed;
return GF_OK;
case 4:
info->name = "type";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_NavigationInfo *) node)->type;
return GF_OK;
case 5:
info->name = "visibilityLimit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_NavigationInfo *) node)->visibilityLimit;
return GF_OK;
case 6:
info->name = "isBound";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_NavigationInfo *) node)->isBound;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 NavigationInfo_get_field_index_by_name(char *name)
{
if (!strcmp("set_bind", name)) return 0;
if (!strcmp("avatarSize", name)) return 1;
if (!strcmp("headlight", name)) return 2;
if (!strcmp("speed", name)) return 3;
if (!strcmp("type", name)) return 4;
if (!strcmp("visibilityLimit", name)) return 5;
if (!strcmp("isBound", name)) return 6;
return -1;
}
static Bool NavigationInfo_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 7;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *NavigationInfo_Create()
{
M_NavigationInfo *p;
GF_SAFEALLOC(p, M_NavigationInfo);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_NavigationInfo);
p->avatarSize.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*3);
p->avatarSize.count = 3;
p->avatarSize.vals[0] = FLT2FIX(0.25);
p->avatarSize.vals[1] = FLT2FIX(1.6);
p->avatarSize.vals[2] = FLT2FIX(0.75);
p->headlight = 1;
p->speed = FLT2FIX(1.0);
p->type.vals = (char**)gf_malloc(sizeof(SFString)*2);
p->type.count = 2;
p->type.vals[0] = (char*)gf_malloc(sizeof(char) * 5);
strcpy(p->type.vals[0], "WALK");
p->type.vals[1] = (char*)gf_malloc(sizeof(char) * 4);
strcpy(p->type.vals[1], "ANY");
p->visibilityLimit = FLT2FIX(0.0);
return (GF_Node *)p;
}
static void Normal_Del(GF_Node *node)
{
M_Normal *p = (M_Normal *) node;
gf_sg_mfvec3f_del(p->vector);
gf_node_free((GF_Node *) p);
}
static const u16 Normal_Def2All[] = { 0};
static const u16 Normal_In2All[] = { 0};
static const u16 Normal_Out2All[] = { 0};
static const u16 Normal_Dyn2All[] = { 0};
static u32 Normal_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 1;
}
}
static GF_Err Normal_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Normal_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Normal_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Normal_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Normal_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Normal_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "vector";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_Normal *) node)->vector;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Normal_get_field_index_by_name(char *name)
{
if (!strcmp("vector", name)) return 0;
return -1;
}
static Bool Normal_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 9;
*QType = 9;
return 1;
default:
return 0;
}
}
GF_Node *Normal_Create()
{
M_Normal *p;
GF_SAFEALLOC(p, M_Normal);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Normal);
return (GF_Node *)p;
}
static void NormalInterpolator_Del(GF_Node *node)
{
M_NormalInterpolator *p = (M_NormalInterpolator *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfvec3f_del(p->keyValue);
gf_sg_mfvec3f_del(p->value_changed);
gf_node_free((GF_Node *) p);
}
static const u16 NormalInterpolator_Def2All[] = { 1, 2};
static const u16 NormalInterpolator_In2All[] = { 0, 1, 2};
static const u16 NormalInterpolator_Out2All[] = { 1, 2, 3};
static u32 NormalInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err NormalInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = NormalInterpolator_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = NormalInterpolator_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = NormalInterpolator_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err NormalInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_NormalInterpolator *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_NormalInterpolator *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_NormalInterpolator *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_NormalInterpolator *) node)->keyValue;
return GF_OK;
case 3:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_NormalInterpolator *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 NormalInterpolator_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("value_changed", name)) return 3;
return -1;
}
static Bool NormalInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 9;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *NormalInterpolator_Create()
{
M_NormalInterpolator *p;
GF_SAFEALLOC(p, M_NormalInterpolator);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_NormalInterpolator);
return (GF_Node *)p;
}
static void OrderedGroup_Del(GF_Node *node)
{
M_OrderedGroup *p = (M_OrderedGroup *) node;
gf_sg_mffloat_del(p->order);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 OrderedGroup_Def2All[] = { 2, 3};
static const u16 OrderedGroup_In2All[] = { 0, 1, 2, 3};
static const u16 OrderedGroup_Out2All[] = { 2, 3};
static u32 OrderedGroup_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err OrderedGroup_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = OrderedGroup_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = OrderedGroup_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = OrderedGroup_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err OrderedGroup_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_OrderedGroup *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_OrderedGroup *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_OrderedGroup *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_OrderedGroup *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_OrderedGroup *)node)->children;
return GF_OK;
case 3:
info->name = "order";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_OrderedGroup *) node)->order;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 OrderedGroup_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("order", name)) return 3;
return -1;
}
static Bool OrderedGroup_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 0;
*QType = 3;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *OrderedGroup_Create()
{
M_OrderedGroup *p;
GF_SAFEALLOC(p, M_OrderedGroup);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_OrderedGroup);
gf_sg_vrml_parent_setup((GF_Node *) p);
return (GF_Node *)p;
}
static void OrientationInterpolator_Del(GF_Node *node)
{
M_OrientationInterpolator *p = (M_OrientationInterpolator *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfrotation_del(p->keyValue);
gf_node_free((GF_Node *) p);
}
static const u16 OrientationInterpolator_Def2All[] = { 1, 2};
static const u16 OrientationInterpolator_In2All[] = { 0, 1, 2};
static const u16 OrientationInterpolator_Out2All[] = { 1, 2, 3};
static u32 OrientationInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err OrientationInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = OrientationInterpolator_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = OrientationInterpolator_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = OrientationInterpolator_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err OrientationInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_OrientationInterpolator *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_OrientationInterpolator *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_OrientationInterpolator *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFROTATION;
info->far_ptr = & ((M_OrientationInterpolator *) node)->keyValue;
return GF_OK;
case 3:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_OrientationInterpolator *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 OrientationInterpolator_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("value_changed", name)) return 3;
return -1;
}
static Bool OrientationInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 10;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *OrientationInterpolator_Create()
{
M_OrientationInterpolator *p;
GF_SAFEALLOC(p, M_OrientationInterpolator);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_OrientationInterpolator);
return (GF_Node *)p;
}
static void PixelTexture_Del(GF_Node *node)
{
M_PixelTexture *p = (M_PixelTexture *) node;
gf_sg_sfimage_del(p->image);
gf_node_free((GF_Node *) p);
}
static const u16 PixelTexture_Def2All[] = { 0, 1, 2};
static const u16 PixelTexture_In2All[] = { 0};
static const u16 PixelTexture_Out2All[] = { 0};
static u32 PixelTexture_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 3;
}
}
static GF_Err PixelTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PixelTexture_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PixelTexture_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PixelTexture_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PixelTexture_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "image";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFIMAGE;
info->far_ptr = & ((M_PixelTexture *) node)->image;
return GF_OK;
case 1:
info->name = "repeatS";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PixelTexture *) node)->repeatS;
return GF_OK;
case 2:
info->name = "repeatT";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PixelTexture *) node)->repeatT;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PixelTexture_get_field_index_by_name(char *name)
{
if (!strcmp("image", name)) return 0;
if (!strcmp("repeatS", name)) return 1;
if (!strcmp("repeatT", name)) return 2;
return -1;
}
static Bool PixelTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 0;
return 1;
default:
return 0;
}
}
GF_Node *PixelTexture_Create()
{
M_PixelTexture *p;
GF_SAFEALLOC(p, M_PixelTexture);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PixelTexture);
p->repeatS = 1;
p->repeatT = 1;
return (GF_Node *)p;
}
static void PlaneSensor_Del(GF_Node *node)
{
M_PlaneSensor *p = (M_PlaneSensor *) node;
gf_node_free((GF_Node *) p);
}
static const u16 PlaneSensor_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 PlaneSensor_In2All[] = { 0, 1, 2, 3, 4};
static const u16 PlaneSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static u32 PlaneSensor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err PlaneSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PlaneSensor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PlaneSensor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PlaneSensor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PlaneSensor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "autoOffset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PlaneSensor *) node)->autoOffset;
return GF_OK;
case 1:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PlaneSensor *) node)->enabled;
return GF_OK;
case 2:
info->name = "maxPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PlaneSensor *) node)->maxPosition;
return GF_OK;
case 3:
info->name = "minPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PlaneSensor *) node)->minPosition;
return GF_OK;
case 4:
info->name = "offset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_PlaneSensor *) node)->offset;
return GF_OK;
case 5:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PlaneSensor *) node)->isActive;
return GF_OK;
case 6:
info->name = "trackPoint_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_PlaneSensor *) node)->trackPoint_changed;
return GF_OK;
case 7:
info->name = "translation_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_PlaneSensor *) node)->translation_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PlaneSensor_get_field_index_by_name(char *name)
{
if (!strcmp("autoOffset", name)) return 0;
if (!strcmp("enabled", name)) return 1;
if (!strcmp("maxPosition", name)) return 2;
if (!strcmp("minPosition", name)) return 3;
if (!strcmp("offset", name)) return 4;
if (!strcmp("isActive", name)) return 5;
if (!strcmp("trackPoint_changed", name)) return 6;
if (!strcmp("translation_changed", name)) return 7;
return -1;
}
static Bool PlaneSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *PlaneSensor_Create()
{
M_PlaneSensor *p;
GF_SAFEALLOC(p, M_PlaneSensor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PlaneSensor);
p->autoOffset = 1;
p->enabled = 1;
p->maxPosition.x = FLT2FIX(-1);
p->maxPosition.y = FLT2FIX(-1);
p->minPosition.x = FLT2FIX(0);
p->minPosition.y = FLT2FIX(0);
p->offset.x = FLT2FIX(0);
p->offset.y = FLT2FIX(0);
p->offset.z = FLT2FIX(0);
return (GF_Node *)p;
}
static void PlaneSensor2D_Del(GF_Node *node)
{
M_PlaneSensor2D *p = (M_PlaneSensor2D *) node;
gf_node_free((GF_Node *) p);
}
static const u16 PlaneSensor2D_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 PlaneSensor2D_In2All[] = { 0, 1, 2, 3, 4};
static const u16 PlaneSensor2D_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static u32 PlaneSensor2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err PlaneSensor2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PlaneSensor2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PlaneSensor2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PlaneSensor2D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PlaneSensor2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "autoOffset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PlaneSensor2D *) node)->autoOffset;
return GF_OK;
case 1:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PlaneSensor2D *) node)->enabled;
return GF_OK;
case 2:
info->name = "maxPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PlaneSensor2D *) node)->maxPosition;
return GF_OK;
case 3:
info->name = "minPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PlaneSensor2D *) node)->minPosition;
return GF_OK;
case 4:
info->name = "offset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PlaneSensor2D *) node)->offset;
return GF_OK;
case 5:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PlaneSensor2D *) node)->isActive;
return GF_OK;
case 6:
info->name = "trackPoint_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PlaneSensor2D *) node)->trackPoint_changed;
return GF_OK;
case 7:
info->name = "translation_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PlaneSensor2D *) node)->translation_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PlaneSensor2D_get_field_index_by_name(char *name)
{
if (!strcmp("autoOffset", name)) return 0;
if (!strcmp("enabled", name)) return 1;
if (!strcmp("maxPosition", name)) return 2;
if (!strcmp("minPosition", name)) return 3;
if (!strcmp("offset", name)) return 4;
if (!strcmp("isActive", name)) return 5;
if (!strcmp("trackPoint_changed", name)) return 6;
if (!strcmp("translation_changed", name)) return 7;
return -1;
}
static Bool PlaneSensor2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 12;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *PlaneSensor2D_Create()
{
M_PlaneSensor2D *p;
GF_SAFEALLOC(p, M_PlaneSensor2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PlaneSensor2D);
p->autoOffset = 1;
p->enabled = 1;
p->maxPosition.x = FLT2FIX(0);
p->maxPosition.y = FLT2FIX(0);
p->minPosition.x = FLT2FIX(0);
p->minPosition.y = FLT2FIX(0);
p->offset.x = FLT2FIX(0);
p->offset.y = FLT2FIX(0);
return (GF_Node *)p;
}
static void PointLight_Del(GF_Node *node)
{
M_PointLight *p = (M_PointLight *) node;
gf_node_free((GF_Node *) p);
}
static const u16 PointLight_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 PointLight_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 PointLight_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 PointLight_Dyn2All[] = { 0, 1, 2, 3, 4, 6};
static u32 PointLight_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 6;
default:
return 7;
}
}
static GF_Err PointLight_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PointLight_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PointLight_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PointLight_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = PointLight_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PointLight_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "ambientIntensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PointLight *) node)->ambientIntensity;
return GF_OK;
case 1:
info->name = "attenuation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_PointLight *) node)->attenuation;
return GF_OK;
case 2:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_PointLight *) node)->color;
return GF_OK;
case 3:
info->name = "intensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PointLight *) node)->intensity;
return GF_OK;
case 4:
info->name = "location";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_PointLight *) node)->location;
return GF_OK;
case 5:
info->name = "on";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PointLight *) node)->on;
return GF_OK;
case 6:
info->name = "radius";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PointLight *) node)->radius;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PointLight_get_field_index_by_name(char *name)
{
if (!strcmp("ambientIntensity", name)) return 0;
if (!strcmp("attenuation", name)) return 1;
if (!strcmp("color", name)) return 2;
if (!strcmp("intensity", name)) return 3;
if (!strcmp("location", name)) return 4;
if (!strcmp("on", name)) return 5;
if (!strcmp("radius", name)) return 6;
return -1;
}
static Bool PointLight_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 1;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 3:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 4:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 7;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *PointLight_Create()
{
M_PointLight *p;
GF_SAFEALLOC(p, M_PointLight);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PointLight);
p->ambientIntensity = FLT2FIX(0);
p->attenuation.x = FLT2FIX(1);
p->attenuation.y = FLT2FIX(0);
p->attenuation.z = FLT2FIX(0);
p->color.red = FLT2FIX(1);
p->color.green = FLT2FIX(1);
p->color.blue = FLT2FIX(1);
p->intensity = FLT2FIX(1);
p->location.x = FLT2FIX(0);
p->location.y = FLT2FIX(0);
p->location.z = FLT2FIX(0);
p->on = 1;
p->radius = FLT2FIX(100);
return (GF_Node *)p;
}
static void PointSet_Del(GF_Node *node)
{
M_PointSet *p = (M_PointSet *) node;
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 PointSet_Def2All[] = { 0, 1};
static const u16 PointSet_In2All[] = { 0, 1};
static const u16 PointSet_Out2All[] = { 0, 1};
static u32 PointSet_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err PointSet_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PointSet_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PointSet_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PointSet_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PointSet_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_PointSet *)node)->color;
return GF_OK;
case 1:
info->name = "coord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinateNode;
info->far_ptr = & ((M_PointSet *)node)->coord;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PointSet_get_field_index_by_name(char *name)
{
if (!strcmp("color", name)) return 0;
if (!strcmp("coord", name)) return 1;
return -1;
}
static Bool PointSet_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *PointSet_Create()
{
M_PointSet *p;
GF_SAFEALLOC(p, M_PointSet);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PointSet);
return (GF_Node *)p;
}
static void PointSet2D_Del(GF_Node *node)
{
M_PointSet2D *p = (M_PointSet2D *) node;
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 PointSet2D_Def2All[] = { 0, 1};
static const u16 PointSet2D_In2All[] = { 0, 1};
static const u16 PointSet2D_Out2All[] = { 0, 1};
static u32 PointSet2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err PointSet2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PointSet2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PointSet2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PointSet2D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PointSet2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_PointSet2D *)node)->color;
return GF_OK;
case 1:
info->name = "coord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinate2DNode;
info->far_ptr = & ((M_PointSet2D *)node)->coord;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PointSet2D_get_field_index_by_name(char *name)
{
if (!strcmp("color", name)) return 0;
if (!strcmp("coord", name)) return 1;
return -1;
}
static Bool PointSet2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *PointSet2D_Create()
{
M_PointSet2D *p;
GF_SAFEALLOC(p, M_PointSet2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PointSet2D);
return (GF_Node *)p;
}
static void PositionInterpolator_Del(GF_Node *node)
{
M_PositionInterpolator *p = (M_PositionInterpolator *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfvec3f_del(p->keyValue);
gf_node_free((GF_Node *) p);
}
static const u16 PositionInterpolator_Def2All[] = { 1, 2};
static const u16 PositionInterpolator_In2All[] = { 0, 1, 2};
static const u16 PositionInterpolator_Out2All[] = { 1, 2, 3};
static u32 PositionInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err PositionInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PositionInterpolator_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PositionInterpolator_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PositionInterpolator_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PositionInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_PositionInterpolator *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PositionInterpolator *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_PositionInterpolator *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_PositionInterpolator *) node)->keyValue;
return GF_OK;
case 3:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_PositionInterpolator *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PositionInterpolator_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("value_changed", name)) return 3;
return -1;
}
static Bool PositionInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *PositionInterpolator_Create()
{
M_PositionInterpolator *p;
GF_SAFEALLOC(p, M_PositionInterpolator);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionInterpolator);
return (GF_Node *)p;
}
static void PositionInterpolator2D_Del(GF_Node *node)
{
M_PositionInterpolator2D *p = (M_PositionInterpolator2D *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfvec2f_del(p->keyValue);
gf_node_free((GF_Node *) p);
}
static const u16 PositionInterpolator2D_Def2All[] = { 1, 2};
static const u16 PositionInterpolator2D_In2All[] = { 0, 1, 2};
static const u16 PositionInterpolator2D_Out2All[] = { 1, 2, 3};
static u32 PositionInterpolator2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err PositionInterpolator2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PositionInterpolator2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PositionInterpolator2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PositionInterpolator2D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PositionInterpolator2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_PositionInterpolator2D *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PositionInterpolator2D *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_PositionInterpolator2D *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_PositionInterpolator2D *) node)->keyValue;
return GF_OK;
case 3:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PositionInterpolator2D *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PositionInterpolator2D_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("value_changed", name)) return 3;
return -1;
}
static Bool PositionInterpolator2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *PositionInterpolator2D_Create()
{
M_PositionInterpolator2D *p;
GF_SAFEALLOC(p, M_PositionInterpolator2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionInterpolator2D);
return (GF_Node *)p;
}
static void ProximitySensor2D_Del(GF_Node *node)
{
M_ProximitySensor2D *p = (M_ProximitySensor2D *) node;
gf_node_free((GF_Node *) p);
}
static const u16 ProximitySensor2D_Def2All[] = { 0, 1, 2};
static const u16 ProximitySensor2D_In2All[] = { 0, 1, 2};
static const u16 ProximitySensor2D_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static u32 ProximitySensor2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err ProximitySensor2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ProximitySensor2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ProximitySensor2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ProximitySensor2D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ProximitySensor2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "center";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_ProximitySensor2D *) node)->center;
return GF_OK;
case 1:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_ProximitySensor2D *) node)->size;
return GF_OK;
case 2:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ProximitySensor2D *) node)->enabled;
return GF_OK;
case 3:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ProximitySensor2D *) node)->isActive;
return GF_OK;
case 4:
info->name = "position_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_ProximitySensor2D *) node)->position_changed;
return GF_OK;
case 5:
info->name = "orientation_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ProximitySensor2D *) node)->orientation_changed;
return GF_OK;
case 6:
info->name = "enterTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_ProximitySensor2D *) node)->enterTime;
return GF_OK;
case 7:
info->name = "exitTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_ProximitySensor2D *) node)->exitTime;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ProximitySensor2D_get_field_index_by_name(char *name)
{
if (!strcmp("center", name)) return 0;
if (!strcmp("size", name)) return 1;
if (!strcmp("enabled", name)) return 2;
if (!strcmp("isActive", name)) return 3;
if (!strcmp("position_changed", name)) return 4;
if (!strcmp("orientation_changed", name)) return 5;
if (!strcmp("enterTime", name)) return 6;
if (!strcmp("exitTime", name)) return 7;
return -1;
}
static Bool ProximitySensor2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 2;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 0;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *ProximitySensor2D_Create()
{
M_ProximitySensor2D *p;
GF_SAFEALLOC(p, M_ProximitySensor2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ProximitySensor2D);
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->size.x = FLT2FIX(0);
p->size.y = FLT2FIX(0);
p->enabled = 1;
return (GF_Node *)p;
}
static void ProximitySensor_Del(GF_Node *node)
{
M_ProximitySensor *p = (M_ProximitySensor *) node;
gf_node_free((GF_Node *) p);
}
static const u16 ProximitySensor_Def2All[] = { 0, 1, 2};
static const u16 ProximitySensor_In2All[] = { 0, 1, 2};
static const u16 ProximitySensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static u32 ProximitySensor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err ProximitySensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ProximitySensor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ProximitySensor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ProximitySensor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ProximitySensor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "center";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_ProximitySensor *) node)->center;
return GF_OK;
case 1:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_ProximitySensor *) node)->size;
return GF_OK;
case 2:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ProximitySensor *) node)->enabled;
return GF_OK;
case 3:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ProximitySensor *) node)->isActive;
return GF_OK;
case 4:
info->name = "position_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_ProximitySensor *) node)->position_changed;
return GF_OK;
case 5:
info->name = "orientation_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_ProximitySensor *) node)->orientation_changed;
return GF_OK;
case 6:
info->name = "enterTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_ProximitySensor *) node)->enterTime;
return GF_OK;
case 7:
info->name = "exitTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_ProximitySensor *) node)->exitTime;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ProximitySensor_get_field_index_by_name(char *name)
{
if (!strcmp("center", name)) return 0;
if (!strcmp("size", name)) return 1;
if (!strcmp("enabled", name)) return 2;
if (!strcmp("isActive", name)) return 3;
if (!strcmp("position_changed", name)) return 4;
if (!strcmp("orientation_changed", name)) return 5;
if (!strcmp("enterTime", name)) return 6;
if (!strcmp("exitTime", name)) return 7;
return -1;
}
static Bool ProximitySensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *ProximitySensor_Create()
{
M_ProximitySensor *p;
GF_SAFEALLOC(p, M_ProximitySensor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ProximitySensor);
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->center.z = FLT2FIX(0);
p->size.x = FLT2FIX(0);
p->size.y = FLT2FIX(0);
p->size.z = FLT2FIX(0);
p->enabled = 1;
return (GF_Node *)p;
}
static void QuantizationParameter_Del(GF_Node *node)
{
M_QuantizationParameter *p = (M_QuantizationParameter *) node;
gf_node_free((GF_Node *) p);
}
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};
static u32 QuantizationParameter_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 40;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 40;
}
}
static GF_Err QuantizationParameter_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = QuantizationParameter_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err QuantizationParameter_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "isLocal";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->isLocal;
return GF_OK;
case 1:
info->name = "position3DQuant";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->position3DQuant;
return GF_OK;
case 2:
info->name = "position3DMin";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_QuantizationParameter *) node)->position3DMin;
return GF_OK;
case 3:
info->name = "position3DMax";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_QuantizationParameter *) node)->position3DMax;
return GF_OK;
case 4:
info->name = "position3DNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_QuantizationParameter *) node)->position3DNbBits;
return GF_OK;
case 5:
info->name = "position2DQuant";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->position2DQuant;
return GF_OK;
case 6:
info->name = "position2DMin";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_QuantizationParameter *) node)->position2DMin;
return GF_OK;
case 7:
info->name = "position2DMax";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_QuantizationParameter *) node)->position2DMax;
return GF_OK;
case 8:
info->name = "position2DNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_QuantizationParameter *) node)->position2DNbBits;
return GF_OK;
case 9:
info->name = "drawOrderQuant";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderQuant;
return GF_OK;
case 10:
info->name = "drawOrderMin";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderMin;
return GF_OK;
case 11:
info->name = "drawOrderMax";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderMax;
return GF_OK;
case 12:
info->name = "drawOrderNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_QuantizationParameter *) node)->drawOrderNbBits;
return GF_OK;
case 13:
info->name = "colorQuant";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->colorQuant;
return GF_OK;
case 14:
info->name = "colorMin";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->colorMin;
return GF_OK;
case 15:
info->name = "colorMax";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->colorMax;
return GF_OK;
case 16:
info->name = "colorNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_QuantizationParameter *) node)->colorNbBits;
return GF_OK;
case 17:
info->name = "textureCoordinateQuant";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateQuant;
return GF_OK;
case 18:
info->name = "textureCoordinateMin";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateMin;
return GF_OK;
case 19:
info->name = "textureCoordinateMax";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateMax;
return GF_OK;
case 20:
info->name = "textureCoordinateNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_QuantizationParameter *) node)->textureCoordinateNbBits;
return GF_OK;
case 21:
info->name = "angleQuant";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->angleQuant;
return GF_OK;
case 22:
info->name = "angleMin";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->angleMin;
return GF_OK;
case 23:
info->name = "angleMax";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->angleMax;
return GF_OK;
case 24:
info->name = "angleNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_QuantizationParameter *) node)->angleNbBits;
return GF_OK;
case 25:
info->name = "scaleQuant";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->scaleQuant;
return GF_OK;
case 26:
info->name = "scaleMin";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->scaleMin;
return GF_OK;
case 27:
info->name = "scaleMax";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->scaleMax;
return GF_OK;
case 28:
info->name = "scaleNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_QuantizationParameter *) node)->scaleNbBits;
return GF_OK;
case 29:
info->name = "keyQuant";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->keyQuant;
return GF_OK;
case 30:
info->name = "keyMin";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->keyMin;
return GF_OK;
case 31:
info->name = "keyMax";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->keyMax;
return GF_OK;
case 32:
info->name = "keyNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_QuantizationParameter *) node)->keyNbBits;
return GF_OK;
case 33:
info->name = "normalQuant";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->normalQuant;
return GF_OK;
case 34:
info->name = "normalNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_QuantizationParameter *) node)->normalNbBits;
return GF_OK;
case 35:
info->name = "sizeQuant";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->sizeQuant;
return GF_OK;
case 36:
info->name = "sizeMin";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->sizeMin;
return GF_OK;
case 37:
info->name = "sizeMax";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_QuantizationParameter *) node)->sizeMax;
return GF_OK;
case 38:
info->name = "sizeNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_QuantizationParameter *) node)->sizeNbBits;
return GF_OK;
case 39:
info->name = "useEfficientCoding";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_QuantizationParameter *) node)->useEfficientCoding;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 QuantizationParameter_get_field_index_by_name(char *name)
{
if (!strcmp("isLocal", name)) return 0;
if (!strcmp("position3DQuant", name)) return 1;
if (!strcmp("position3DMin", name)) return 2;
if (!strcmp("position3DMax", name)) return 3;
if (!strcmp("position3DNbBits", name)) return 4;
if (!strcmp("position2DQuant", name)) return 5;
if (!strcmp("position2DMin", name)) return 6;
if (!strcmp("position2DMax", name)) return 7;
if (!strcmp("position2DNbBits", name)) return 8;
if (!strcmp("drawOrderQuant", name)) return 9;
if (!strcmp("drawOrderMin", name)) return 10;
if (!strcmp("drawOrderMax", name)) return 11;
if (!strcmp("drawOrderNbBits", name)) return 12;
if (!strcmp("colorQuant", name)) return 13;
if (!strcmp("colorMin", name)) return 14;
if (!strcmp("colorMax", name)) return 15;
if (!strcmp("colorNbBits", name)) return 16;
if (!strcmp("textureCoordinateQuant", name)) return 17;
if (!strcmp("textureCoordinateMin", name)) return 18;
if (!strcmp("textureCoordinateMax", name)) return 19;
if (!strcmp("textureCoordinateNbBits", name)) return 20;
if (!strcmp("angleQuant", name)) return 21;
if (!strcmp("angleMin", name)) return 22;
if (!strcmp("angleMax", name)) return 23;
if (!strcmp("angleNbBits", name)) return 24;
if (!strcmp("scaleQuant", name)) return 25;
if (!strcmp("scaleMin", name)) return 26;
if (!strcmp("scaleMax", name)) return 27;
if (!strcmp("scaleNbBits", name)) return 28;
if (!strcmp("keyQuant", name)) return 29;
if (!strcmp("keyMin", name)) return 30;
if (!strcmp("keyMax", name)) return 31;
if (!strcmp("keyNbBits", name)) return 32;
if (!strcmp("normalQuant", name)) return 33;
if (!strcmp("normalNbBits", name)) return 34;
if (!strcmp("sizeQuant", name)) return 35;
if (!strcmp("sizeMin", name)) return 36;
if (!strcmp("sizeMax", name)) return 37;
if (!strcmp("sizeNbBits", name)) return 38;
if (!strcmp("useEfficientCoding", name)) return 39;
return -1;
}
static Bool QuantizationParameter_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 6:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 10:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 11:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 12:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 14:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 15:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 16:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 18:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 19:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 20:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 22:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
case 23:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
case 24:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 26:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 27:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 28:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 30:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 31:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 32:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 34:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 36:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 37:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 38:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
default:
return 0;
}
}
GF_Node *QuantizationParameter_Create()
{
M_QuantizationParameter *p;
GF_SAFEALLOC(p, M_QuantizationParameter);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_QuantizationParameter);
p->position3DMin.x = FIX_MIN;
p->position3DMin.y = FIX_MIN;
p->position3DMin.z = FIX_MIN;
p->position3DMax.x = FIX_MAX;
p->position3DMax.y = FIX_MAX;
p->position3DMax.z = FIX_MAX;
p->position3DNbBits = 16;
p->position2DMin.x = FIX_MIN;
p->position2DMin.y = FIX_MIN;
p->position2DMax.x = FIX_MAX;
p->position2DMax.y = FIX_MAX;
p->position2DNbBits = 16;
p->drawOrderMin = FIX_MIN;
p->drawOrderMax = FIX_MAX;
p->drawOrderNbBits = 8;
p->colorQuant = 1;
p->colorMin = FLT2FIX(0.0);
p->colorMax = FLT2FIX(1.0);
p->colorNbBits = 8;
p->textureCoordinateQuant = 1;
p->textureCoordinateMin = FLT2FIX(0);
p->textureCoordinateMax = FLT2FIX(1);
p->textureCoordinateNbBits = 16;
p->angleQuant = 1;
p->angleMin = FLT2FIX(0.0);
p->angleMax = FLT2FIX(6.2831853);
p->angleNbBits = 16;
p->scaleMin = FLT2FIX(0.0);
p->scaleMax = FIX_MAX;
p->scaleNbBits = 8;
p->keyQuant = 1;
p->keyMin = FLT2FIX(0.0);
p->keyMax = FLT2FIX(1.0);
p->keyNbBits = 8;
p->normalQuant = 1;
p->normalNbBits = 8;
p->sizeMin = FLT2FIX(0);
p->sizeMax = FIX_MAX;
p->sizeNbBits = 8;
return (GF_Node *)p;
}
static void Rectangle_Del(GF_Node *node)
{
M_Rectangle *p = (M_Rectangle *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Rectangle_Def2All[] = { 0};
static const u16 Rectangle_In2All[] = { 0};
static const u16 Rectangle_Out2All[] = { 0};
static const u16 Rectangle_Dyn2All[] = { 0};
static u32 Rectangle_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 1;
}
}
static GF_Err Rectangle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Rectangle_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Rectangle_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Rectangle_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Rectangle_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Rectangle_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Rectangle *) node)->size;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Rectangle_get_field_index_by_name(char *name)
{
if (!strcmp("size", name)) return 0;
return -1;
}
static Bool Rectangle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 2;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Rectangle_Create()
{
M_Rectangle *p;
GF_SAFEALLOC(p, M_Rectangle);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Rectangle);
p->size.x = FLT2FIX(2);
p->size.y = FLT2FIX(2);
return (GF_Node *)p;
}
static void ScalarInterpolator_Del(GF_Node *node)
{
M_ScalarInterpolator *p = (M_ScalarInterpolator *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mffloat_del(p->keyValue);
gf_node_free((GF_Node *) p);
}
static const u16 ScalarInterpolator_Def2All[] = { 1, 2};
static const u16 ScalarInterpolator_In2All[] = { 0, 1, 2};
static const u16 ScalarInterpolator_Out2All[] = { 1, 2, 3};
static u32 ScalarInterpolator_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err ScalarInterpolator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ScalarInterpolator_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ScalarInterpolator_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ScalarInterpolator_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ScalarInterpolator_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_ScalarInterpolator *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ScalarInterpolator *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_ScalarInterpolator *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_ScalarInterpolator *) node)->keyValue;
return GF_OK;
case 3:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ScalarInterpolator *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ScalarInterpolator_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("value_changed", name)) return 3;
return -1;
}
static Bool ScalarInterpolator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *ScalarInterpolator_Create()
{
M_ScalarInterpolator *p;
GF_SAFEALLOC(p, M_ScalarInterpolator);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ScalarInterpolator);
return (GF_Node *)p;
}
static void Script_Del(GF_Node *node)
{
M_Script *p = (M_Script *) node;
gf_sg_mfscript_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 Script_Def2All[] = { 0, 1, 2};
static const u16 Script_In2All[] = { 0};
static const u16 Script_Out2All[] = { 0};
static u32 Script_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 3;
}
}
static GF_Err Script_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Script_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Script_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Script_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Script_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSCRIPT;
info->far_ptr = & ((M_Script *) node)->url;
return GF_OK;
case 1:
info->name = "directOutput";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Script *) node)->directOutput;
return GF_OK;
case 2:
info->name = "mustEvaluate";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Script *) node)->mustEvaluate;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Script_get_field_index_by_name(char *name)
{
if (!strcmp("url", name)) return 0;
if (!strcmp("directOutput", name)) return 1;
if (!strcmp("mustEvaluate", name)) return 2;
return -1;
}
static Bool Script_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Script_Create()
{
M_Script *p;
GF_SAFEALLOC(p, M_Script);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Script);
return (GF_Node *)p;
}
static void Shape_Del(GF_Node *node)
{
M_Shape *p = (M_Shape *) node;
gf_node_unregister((GF_Node *) p->appearance, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Shape_Def2All[] = { 0, 1};
static const u16 Shape_In2All[] = { 0, 1};
static const u16 Shape_Out2All[] = { 0, 1};
static u32 Shape_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err Shape_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Shape_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Shape_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Shape_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Shape_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "appearance";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFAppearanceNode;
info->far_ptr = & ((M_Shape *)node)->appearance;
return GF_OK;
case 1:
info->name = "geometry";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_Shape *)node)->geometry;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Shape_get_field_index_by_name(char *name)
{
if (!strcmp("appearance", name)) return 0;
if (!strcmp("geometry", name)) return 1;
return -1;
}
static Bool Shape_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Shape_Create()
{
M_Shape *p;
GF_SAFEALLOC(p, M_Shape);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Shape);
return (GF_Node *)p;
}
static void Sound_Del(GF_Node *node)
{
M_Sound *p = (M_Sound *) node;
gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Sound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 Sound_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 Sound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 Sound_Dyn2All[] = { 1, 2, 3, 4, 5, 6};
static u32 Sound_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 9;
case GF_SG_FIELD_CODING_DEF:
return 10;
case GF_SG_FIELD_CODING_OUT:
return 9;
case GF_SG_FIELD_CODING_DYN:
return 6;
default:
return 10;
}
}
static GF_Err Sound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Sound_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Sound_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Sound_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Sound_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Sound_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "direction";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Sound *) node)->direction;
return GF_OK;
case 1:
info->name = "intensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Sound *) node)->intensity;
return GF_OK;
case 2:
info->name = "location";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Sound *) node)->location;
return GF_OK;
case 3:
info->name = "maxBack";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Sound *) node)->maxBack;
return GF_OK;
case 4:
info->name = "maxFront";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Sound *) node)->maxFront;
return GF_OK;
case 5:
info->name = "minBack";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Sound *) node)->minBack;
return GF_OK;
case 6:
info->name = "minFront";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Sound *) node)->minFront;
return GF_OK;
case 7:
info->name = "priority";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Sound *) node)->priority;
return GF_OK;
case 8:
info->name = "source";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_Sound *)node)->source;
return GF_OK;
case 9:
info->name = "spatialize";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Sound *) node)->spatialize;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Sound_get_field_index_by_name(char *name)
{
if (!strcmp("direction", name)) return 0;
if (!strcmp("intensity", name)) return 1;
if (!strcmp("location", name)) return 2;
if (!strcmp("maxBack", name)) return 3;
if (!strcmp("maxFront", name)) return 4;
if (!strcmp("minBack", name)) return 5;
if (!strcmp("minFront", name)) return 6;
if (!strcmp("priority", name)) return 7;
if (!strcmp("source", name)) return 8;
if (!strcmp("spatialize", name)) return 9;
return -1;
}
static Bool Sound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 9;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 7;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 7;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 7;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 7;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 7;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 0;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *Sound_Create()
{
M_Sound *p;
GF_SAFEALLOC(p, M_Sound);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Sound);
p->direction.x = FLT2FIX(0);
p->direction.y = FLT2FIX(0);
p->direction.z = FLT2FIX(1);
p->intensity = FLT2FIX(1);
p->location.x = FLT2FIX(0);
p->location.y = FLT2FIX(0);
p->location.z = FLT2FIX(0);
p->maxBack = FLT2FIX(10);
p->maxFront = FLT2FIX(10);
p->minBack = FLT2FIX(1);
p->minFront = FLT2FIX(1);
p->priority = FLT2FIX(0);
p->spatialize = 1;
return (GF_Node *)p;
}
static void Sound2D_Del(GF_Node *node)
{
M_Sound2D *p = (M_Sound2D *) node;
gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Sound2D_Def2All[] = { 0, 1, 2, 3};
static const u16 Sound2D_In2All[] = { 0, 1, 2};
static const u16 Sound2D_Out2All[] = { 0, 1, 2};
static const u16 Sound2D_Dyn2All[] = { 0, 1};
static u32 Sound2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 4;
}
}
static GF_Err Sound2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Sound2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Sound2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Sound2D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Sound2D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Sound2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "intensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Sound2D *) node)->intensity;
return GF_OK;
case 1:
info->name = "location";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Sound2D *) node)->location;
return GF_OK;
case 2:
info->name = "source";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_Sound2D *)node)->source;
return GF_OK;
case 3:
info->name = "spatialize";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Sound2D *) node)->spatialize;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Sound2D_get_field_index_by_name(char *name)
{
if (!strcmp("intensity", name)) return 0;
if (!strcmp("location", name)) return 1;
if (!strcmp("source", name)) return 2;
if (!strcmp("spatialize", name)) return 3;
return -1;
}
static Bool Sound2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 7;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 2;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Sound2D_Create()
{
M_Sound2D *p;
GF_SAFEALLOC(p, M_Sound2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Sound2D);
p->intensity = FLT2FIX(1);
p->location.x = FLT2FIX(0);
p->location.y = FLT2FIX(0);
p->spatialize = 1;
return (GF_Node *)p;
}
static void Sphere_Del(GF_Node *node)
{
M_Sphere *p = (M_Sphere *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Sphere_Def2All[] = { 0};
static u32 Sphere_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 1;
}
}
static GF_Err Sphere_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = Sphere_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Sphere_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "radius";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Sphere *) node)->radius;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Sphere_get_field_index_by_name(char *name)
{
if (!strcmp("radius", name)) return 0;
return -1;
}
static Bool Sphere_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Sphere_Create()
{
M_Sphere *p;
GF_SAFEALLOC(p, M_Sphere);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Sphere);
p->radius = FLT2FIX(1);
return (GF_Node *)p;
}
static void SphereSensor_Del(GF_Node *node)
{
M_SphereSensor *p = (M_SphereSensor *) node;
gf_node_free((GF_Node *) p);
}
static const u16 SphereSensor_Def2All[] = { 0, 1, 2};
static const u16 SphereSensor_In2All[] = { 0, 1, 2};
static const u16 SphereSensor_Out2All[] = { 0, 1, 2, 3, 4, 5};
static u32 SphereSensor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 6;
}
}
static GF_Err SphereSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SphereSensor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SphereSensor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SphereSensor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SphereSensor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "autoOffset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SphereSensor *) node)->autoOffset;
return GF_OK;
case 1:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SphereSensor *) node)->enabled;
return GF_OK;
case 2:
info->name = "offset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_SphereSensor *) node)->offset;
return GF_OK;
case 3:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SphereSensor *) node)->isActive;
return GF_OK;
case 4:
info->name = "rotation_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_SphereSensor *) node)->rotation_changed;
return GF_OK;
case 5:
info->name = "trackPoint_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SphereSensor *) node)->trackPoint_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SphereSensor_get_field_index_by_name(char *name)
{
if (!strcmp("autoOffset", name)) return 0;
if (!strcmp("enabled", name)) return 1;
if (!strcmp("offset", name)) return 2;
if (!strcmp("isActive", name)) return 3;
if (!strcmp("rotation_changed", name)) return 4;
if (!strcmp("trackPoint_changed", name)) return 5;
return -1;
}
static Bool SphereSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 10;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *SphereSensor_Create()
{
M_SphereSensor *p;
GF_SAFEALLOC(p, M_SphereSensor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SphereSensor);
p->autoOffset = 1;
p->enabled = 1;
p->offset.x = FLT2FIX(0);
p->offset.y = FLT2FIX(1);
p->offset.z = FLT2FIX(0);
p->offset.q = FLT2FIX(0);
return (GF_Node *)p;
}
static void SpotLight_Del(GF_Node *node)
{
M_SpotLight *p = (M_SpotLight *) node;
gf_node_free((GF_Node *) p);
}
static const u16 SpotLight_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 SpotLight_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 SpotLight_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 SpotLight_Dyn2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 9};
static u32 SpotLight_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 10;
case GF_SG_FIELD_CODING_DEF:
return 10;
case GF_SG_FIELD_CODING_OUT:
return 10;
case GF_SG_FIELD_CODING_DYN:
return 9;
default:
return 10;
}
}
static GF_Err SpotLight_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SpotLight_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SpotLight_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SpotLight_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = SpotLight_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SpotLight_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "ambientIntensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SpotLight *) node)->ambientIntensity;
return GF_OK;
case 1:
info->name = "attenuation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SpotLight *) node)->attenuation;
return GF_OK;
case 2:
info->name = "beamWidth";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SpotLight *) node)->beamWidth;
return GF_OK;
case 3:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_SpotLight *) node)->color;
return GF_OK;
case 4:
info->name = "cutOffAngle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SpotLight *) node)->cutOffAngle;
return GF_OK;
case 5:
info->name = "direction";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SpotLight *) node)->direction;
return GF_OK;
case 6:
info->name = "intensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SpotLight *) node)->intensity;
return GF_OK;
case 7:
info->name = "location";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SpotLight *) node)->location;
return GF_OK;
case 8:
info->name = "on";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SpotLight *) node)->on;
return GF_OK;
case 9:
info->name = "radius";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SpotLight *) node)->radius;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SpotLight_get_field_index_by_name(char *name)
{
if (!strcmp("ambientIntensity", name)) return 0;
if (!strcmp("attenuation", name)) return 1;
if (!strcmp("beamWidth", name)) return 2;
if (!strcmp("color", name)) return 3;
if (!strcmp("cutOffAngle", name)) return 4;
if (!strcmp("direction", name)) return 5;
if (!strcmp("intensity", name)) return 6;
if (!strcmp("location", name)) return 7;
if (!strcmp("on", name)) return 8;
if (!strcmp("radius", name)) return 9;
return -1;
}
static Bool SpotLight_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 1;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 8;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1.5707963);
return 1;
case 3:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 4:
*AType = 8;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1.5707963);
return 1;
case 5:
*AType = 9;
*QType = 9;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 7:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 7;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *SpotLight_Create()
{
M_SpotLight *p;
GF_SAFEALLOC(p, M_SpotLight);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SpotLight);
p->ambientIntensity = FLT2FIX(0);
p->attenuation.x = FLT2FIX(1);
p->attenuation.y = FLT2FIX(0);
p->attenuation.z = FLT2FIX(0);
p->beamWidth = FLT2FIX(1.570796);
p->color.red = FLT2FIX(1);
p->color.green = FLT2FIX(1);
p->color.blue = FLT2FIX(1);
p->cutOffAngle = FLT2FIX(0.785398);
p->direction.x = FLT2FIX(0);
p->direction.y = FLT2FIX(0);
p->direction.z = FLT2FIX(-1);
p->intensity = FLT2FIX(1);
p->location.x = FLT2FIX(0);
p->location.y = FLT2FIX(0);
p->location.z = FLT2FIX(0);
p->on = 1;
p->radius = FLT2FIX(100);
return (GF_Node *)p;
}
static void Switch_Del(GF_Node *node)
{
M_Switch *p = (M_Switch *) node;
gf_node_unregister_children((GF_Node *) p, p->choice);
gf_node_free((GF_Node *) p);
}
static const u16 Switch_Def2All[] = { 0, 1};
static const u16 Switch_In2All[] = { 0, 1};
static const u16 Switch_Out2All[] = { 0, 1};
static u32 Switch_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err Switch_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Switch_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Switch_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Switch_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Switch_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "choice";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Switch *)node)->choice;
return GF_OK;
case 1:
info->name = "whichChoice";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Switch *) node)->whichChoice;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Switch_get_field_index_by_name(char *name)
{
if (!strcmp("choice", name)) return 0;
if (!strcmp("whichChoice", name)) return 1;
return -1;
}
static Bool Switch_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 10;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX( 1022);
return 1;
default:
return 0;
}
}
GF_Node *Switch_Create()
{
M_Switch *p;
GF_SAFEALLOC(p, M_Switch);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Switch);
p->whichChoice = -1;
return (GF_Node *)p;
}
static void TermCap_Del(GF_Node *node)
{
M_TermCap *p = (M_TermCap *) node;
gf_node_free((GF_Node *) p);
}
static const u16 TermCap_Def2All[] = { 1};
static const u16 TermCap_In2All[] = { 0, 1};
static const u16 TermCap_Out2All[] = { 1, 2};
static u32 TermCap_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 3;
}
}
static GF_Err TermCap_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = TermCap_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = TermCap_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = TermCap_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err TermCap_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "evaluate";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_TermCap *)node)->on_evaluate;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TermCap *) node)->evaluate;
return GF_OK;
case 1:
info->name = "capability";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_TermCap *) node)->capability;
return GF_OK;
case 2:
info->name = "value";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_TermCap *) node)->value;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 TermCap_get_field_index_by_name(char *name)
{
if (!strcmp("evaluate", name)) return 0;
if (!strcmp("capability", name)) return 1;
if (!strcmp("value", name)) return 2;
return -1;
}
static Bool TermCap_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 7;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(127);
return 1;
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(7);
return 1;
default:
return 0;
}
}
GF_Node *TermCap_Create()
{
M_TermCap *p;
GF_SAFEALLOC(p, M_TermCap);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_TermCap);
p->capability = 0;
return (GF_Node *)p;
}
static void Text_Del(GF_Node *node)
{
M_Text *p = (M_Text *) node;
gf_sg_mfstring_del(p->string);
gf_sg_mffloat_del(p->length);
gf_node_unregister((GF_Node *) p->fontStyle, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Text_Def2All[] = { 0, 1, 2, 3};
static const u16 Text_In2All[] = { 0, 1, 2, 3};
static const u16 Text_Out2All[] = { 0, 1, 2, 3};
static const u16 Text_Dyn2All[] = { 1, 3};
static u32 Text_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 4;
}
}
static GF_Err Text_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Text_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Text_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Text_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Text_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Text_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "string";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_Text *) node)->string;
return GF_OK;
case 1:
info->name = "length";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_Text *) node)->length;
return GF_OK;
case 2:
info->name = "fontStyle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFFontStyleNode;
info->far_ptr = & ((M_Text *)node)->fontStyle;
return GF_OK;
case 3:
info->name = "maxExtent";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Text *) node)->maxExtent;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Text_get_field_index_by_name(char *name)
{
if (!strcmp("string", name)) return 0;
if (!strcmp("length", name)) return 1;
if (!strcmp("fontStyle", name)) return 2;
if (!strcmp("maxExtent", name)) return 3;
return -1;
}
static Bool Text_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 7;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 7;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Text_Create()
{
M_Text *p;
GF_SAFEALLOC(p, M_Text);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Text);
p->maxExtent = FLT2FIX(0.0);
return (GF_Node *)p;
}
static void TextureCoordinate_Del(GF_Node *node)
{
M_TextureCoordinate *p = (M_TextureCoordinate *) node;
gf_sg_mfvec2f_del(p->point);
gf_node_free((GF_Node *) p);
}
static const u16 TextureCoordinate_Def2All[] = { 0};
static const u16 TextureCoordinate_In2All[] = { 0};
static const u16 TextureCoordinate_Out2All[] = { 0};
static const u16 TextureCoordinate_Dyn2All[] = { 0};
static u32 TextureCoordinate_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 1;
}
}
static GF_Err TextureCoordinate_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = TextureCoordinate_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = TextureCoordinate_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = TextureCoordinate_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = TextureCoordinate_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err TextureCoordinate_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "point";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_TextureCoordinate *) node)->point;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 TextureCoordinate_get_field_index_by_name(char *name)
{
if (!strcmp("point", name)) return 0;
return -1;
}
static Bool TextureCoordinate_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 2;
*QType = 5;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *TextureCoordinate_Create()
{
M_TextureCoordinate *p;
GF_SAFEALLOC(p, M_TextureCoordinate);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_TextureCoordinate);
return (GF_Node *)p;
}
static void TextureTransform_Del(GF_Node *node)
{
M_TextureTransform *p = (M_TextureTransform *) node;
gf_node_free((GF_Node *) p);
}
static const u16 TextureTransform_Def2All[] = { 0, 1, 2, 3};
static const u16 TextureTransform_In2All[] = { 0, 1, 2, 3};
static const u16 TextureTransform_Out2All[] = { 0, 1, 2, 3};
static const u16 TextureTransform_Dyn2All[] = { 0, 1, 2, 3};
static u32 TextureTransform_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 4;
default:
return 4;
}
}
static GF_Err TextureTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = TextureTransform_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = TextureTransform_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = TextureTransform_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = TextureTransform_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err TextureTransform_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "center";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_TextureTransform *) node)->center;
return GF_OK;
case 1:
info->name = "rotation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_TextureTransform *) node)->rotation;
return GF_OK;
case 2:
info->name = "scale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_TextureTransform *) node)->scale;
return GF_OK;
case 3:
info->name = "translation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_TextureTransform *) node)->translation;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 TextureTransform_get_field_index_by_name(char *name)
{
if (!strcmp("center", name)) return 0;
if (!strcmp("rotation", name)) return 1;
if (!strcmp("scale", name)) return 2;
if (!strcmp("translation", name)) return 3;
return -1;
}
static Bool TextureTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 2;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 6;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
case 2:
*AType = 12;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 2;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *TextureTransform_Create()
{
M_TextureTransform *p;
GF_SAFEALLOC(p, M_TextureTransform);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_TextureTransform);
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->rotation = FLT2FIX(0);
p->scale.x = FLT2FIX(1);
p->scale.y = FLT2FIX(1);
p->translation.x = FLT2FIX(0);
p->translation.y = FLT2FIX(0);
return (GF_Node *)p;
}
static void TimeSensor_Del(GF_Node *node)
{
M_TimeSensor *p = (M_TimeSensor *) node;
gf_node_free((GF_Node *) p);
}
static const u16 TimeSensor_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 TimeSensor_In2All[] = { 0, 1, 2, 3, 4};
static const u16 TimeSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static u32 TimeSensor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 9;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 9;
}
}
static GF_Err TimeSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = TimeSensor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = TimeSensor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = TimeSensor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err TimeSensor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "cycleInterval";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TimeSensor *) node)->cycleInterval;
return GF_OK;
case 1:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TimeSensor *) node)->enabled;
return GF_OK;
case 2:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TimeSensor *) node)->loop;
return GF_OK;
case 3:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TimeSensor *) node)->startTime;
return GF_OK;
case 4:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TimeSensor *) node)->stopTime;
return GF_OK;
case 5:
info->name = "cycleTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TimeSensor *) node)->cycleTime;
return GF_OK;
case 6:
info->name = "fraction_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_TimeSensor *) node)->fraction_changed;
return GF_OK;
case 7:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TimeSensor *) node)->isActive;
return GF_OK;
case 8:
info->name = "time";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TimeSensor *) node)->time;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 TimeSensor_get_field_index_by_name(char *name)
{
if (!strcmp("cycleInterval", name)) return 0;
if (!strcmp("enabled", name)) return 1;
if (!strcmp("loop", name)) return 2;
if (!strcmp("startTime", name)) return 3;
if (!strcmp("stopTime", name)) return 4;
if (!strcmp("cycleTime", name)) return 5;
if (!strcmp("fraction_changed", name)) return 6;
if (!strcmp("isActive", name)) return 7;
if (!strcmp("time", name)) return 8;
return -1;
}
static Bool TimeSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *TimeSensor_Create()
{
M_TimeSensor *p;
GF_SAFEALLOC(p, M_TimeSensor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_TimeSensor);
p->cycleInterval = 1;
p->enabled = 1;
p->startTime = 0;
p->stopTime = 0;
return (GF_Node *)p;
}
static void TouchSensor_Del(GF_Node *node)
{
M_TouchSensor *p = (M_TouchSensor *) node;
gf_node_free((GF_Node *) p);
}
static const u16 TouchSensor_Def2All[] = { 0};
static const u16 TouchSensor_In2All[] = { 0};
static const u16 TouchSensor_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
static u32 TouchSensor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 7;
}
}
static GF_Err TouchSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = TouchSensor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = TouchSensor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = TouchSensor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err TouchSensor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TouchSensor *) node)->enabled;
return GF_OK;
case 1:
info->name = "hitNormal_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_TouchSensor *) node)->hitNormal_changed;
return GF_OK;
case 2:
info->name = "hitPoint_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_TouchSensor *) node)->hitPoint_changed;
return GF_OK;
case 3:
info->name = "hitTexCoord_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_TouchSensor *) node)->hitTexCoord_changed;
return GF_OK;
case 4:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TouchSensor *) node)->isActive;
return GF_OK;
case 5:
info->name = "isOver";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TouchSensor *) node)->isOver;
return GF_OK;
case 6:
info->name = "touchTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TouchSensor *) node)->touchTime;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 TouchSensor_get_field_index_by_name(char *name)
{
if (!strcmp("enabled", name)) return 0;
if (!strcmp("hitNormal_changed", name)) return 1;
if (!strcmp("hitPoint_changed", name)) return 2;
if (!strcmp("hitTexCoord_changed", name)) return 3;
if (!strcmp("isActive", name)) return 4;
if (!strcmp("isOver", name)) return 5;
if (!strcmp("touchTime", name)) return 6;
return -1;
}
static Bool TouchSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *TouchSensor_Create()
{
M_TouchSensor *p;
GF_SAFEALLOC(p, M_TouchSensor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_TouchSensor);
p->enabled = 1;
return (GF_Node *)p;
}
static void Transform_Del(GF_Node *node)
{
M_Transform *p = (M_Transform *) node;
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Transform_Def2All[] = { 2, 3, 4, 5, 6, 7};
static const u16 Transform_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 Transform_Out2All[] = { 2, 3, 4, 5, 6, 7};
static const u16 Transform_Dyn2All[] = { 2, 4, 5, 6, 7};
static u32 Transform_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 5;
default:
return 8;
}
}
static GF_Err Transform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Transform_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Transform_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Transform_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Transform_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Transform_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Transform *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Transform *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Transform *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Transform *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "center";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Transform *) node)->center;
return GF_OK;
case 3:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Transform *)node)->children;
return GF_OK;
case 4:
info->name = "rotation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_Transform *) node)->rotation;
return GF_OK;
case 5:
info->name = "scale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Transform *) node)->scale;
return GF_OK;
case 6:
info->name = "scaleOrientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_Transform *) node)->scaleOrientation;
return GF_OK;
case 7:
info->name = "translation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Transform *) node)->translation;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Transform_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("center", name)) return 2;
if (!strcmp("children", name)) return 3;
if (!strcmp("rotation", name)) return 4;
if (!strcmp("scale", name)) return 5;
if (!strcmp("scaleOrientation", name)) return 6;
if (!strcmp("translation", name)) return 7;
return -1;
}
static Bool Transform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 10;
*QType = 10;
return 1;
case 5:
*AType = 11;
*QType = 7;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 10;
*QType = 10;
return 1;
case 7:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Transform_Create()
{
M_Transform *p;
GF_SAFEALLOC(p, M_Transform);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Transform);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->center.z = FLT2FIX(0);
p->rotation.x = FLT2FIX(0);
p->rotation.y = FLT2FIX(0);
p->rotation.z = FLT2FIX(1);
p->rotation.q = FLT2FIX(0);
p->scale.x = FLT2FIX(1);
p->scale.y = FLT2FIX(1);
p->scale.z = FLT2FIX(1);
p->scaleOrientation.x = FLT2FIX(0);
p->scaleOrientation.y = FLT2FIX(0);
p->scaleOrientation.z = FLT2FIX(1);
p->scaleOrientation.q = FLT2FIX(0);
p->translation.x = FLT2FIX(0);
p->translation.y = FLT2FIX(0);
p->translation.z = FLT2FIX(0);
return (GF_Node *)p;
}
static void Transform2D_Del(GF_Node *node)
{
M_Transform2D *p = (M_Transform2D *) node;
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Transform2D_Def2All[] = { 2, 3, 4, 5, 6, 7};
static const u16 Transform2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 Transform2D_Out2All[] = { 2, 3, 4, 5, 6, 7};
static const u16 Transform2D_Dyn2All[] = { 3, 4, 5, 6, 7};
static u32 Transform2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 5;
default:
return 8;
}
}
static GF_Err Transform2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Transform2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Transform2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Transform2D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Transform2D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Transform2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Transform2D *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Transform2D *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Transform2D *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Transform2D *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Transform2D *)node)->children;
return GF_OK;
case 3:
info->name = "center";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Transform2D *) node)->center;
return GF_OK;
case 4:
info->name = "rotationAngle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Transform2D *) node)->rotationAngle;
return GF_OK;
case 5:
info->name = "scale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Transform2D *) node)->scale;
return GF_OK;
case 6:
info->name = "scaleOrientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Transform2D *) node)->scaleOrientation;
return GF_OK;
case 7:
info->name = "translation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Transform2D *) node)->translation;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Transform2D_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("center", name)) return 3;
if (!strcmp("rotationAngle", name)) return 4;
if (!strcmp("scale", name)) return 5;
if (!strcmp("scaleOrientation", name)) return 6;
if (!strcmp("translation", name)) return 7;
return -1;
}
static Bool Transform2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 2;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 6;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
case 5:
*AType = 12;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 6;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
case 7:
*AType = 2;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Transform2D_Create()
{
M_Transform2D *p;
GF_SAFEALLOC(p, M_Transform2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Transform2D);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->rotationAngle = FLT2FIX(0);
p->scale.x = FLT2FIX(1);
p->scale.y = FLT2FIX(1);
p->scaleOrientation = FLT2FIX(0);
p->translation.x = FLT2FIX(0);
p->translation.y = FLT2FIX(0);
return (GF_Node *)p;
}
static void Valuator_Del(GF_Node *node)
{
M_Valuator *p = (M_Valuator *) node;
gf_sg_mfcolor_del(p->inMFColor);
gf_sg_mffloat_del(p->inMFFloat);
gf_sg_mfint32_del(p->inMFInt32);
gf_sg_mfrotation_del(p->inMFRotation);
gf_sg_sfstring_del(p->inSFString);
gf_sg_mfstring_del(p->inMFString);
gf_sg_mfvec2f_del(p->inMFVec2f);
gf_sg_mfvec3f_del(p->inMFVec3f);
gf_sg_mfcolor_del(p->outMFColor);
gf_sg_mffloat_del(p->outMFFloat);
gf_sg_mfint32_del(p->outMFInt32);
gf_sg_mfrotation_del(p->outMFRotation);
gf_sg_sfstring_del(p->outSFString);
gf_sg_mfstring_del(p->outMFString);
gf_sg_mfvec2f_del(p->outMFVec2f);
gf_sg_mfvec3f_del(p->outMFVec3f);
gf_node_free((GF_Node *) p);
}
static const u16 Valuator_Def2All[] = { 32, 33, 34, 35, 36, 37, 38, 39, 40};
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};
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};
static u32 Valuator_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 25;
case GF_SG_FIELD_CODING_DEF:
return 9;
case GF_SG_FIELD_CODING_OUT:
return 25;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 41;
}
}
static GF_Err Valuator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Valuator_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Valuator_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Valuator_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Valuator_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "inSFBool";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inSFBool;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Valuator *) node)->inSFBool;
return GF_OK;
case 1:
info->name = "inSFColor";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inSFColor;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_Valuator *) node)->inSFColor;
return GF_OK;
case 2:
info->name = "inMFColor";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inMFColor;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_Valuator *) node)->inMFColor;
return GF_OK;
case 3:
info->name = "inSFFloat";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inSFFloat;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->inSFFloat;
return GF_OK;
case 4:
info->name = "inMFFloat";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inMFFloat;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->inMFFloat;
return GF_OK;
case 5:
info->name = "inSFInt32";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inSFInt32;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Valuator *) node)->inSFInt32;
return GF_OK;
case 6:
info->name = "inMFInt32";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inMFInt32;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_Valuator *) node)->inMFInt32;
return GF_OK;
case 7:
info->name = "inSFRotation";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inSFRotation;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_Valuator *) node)->inSFRotation;
return GF_OK;
case 8:
info->name = "inMFRotation";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inMFRotation;
info->fieldType = GF_SG_VRML_MFROTATION;
info->far_ptr = & ((M_Valuator *) node)->inMFRotation;
return GF_OK;
case 9:
info->name = "inSFString";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inSFString;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_Valuator *) node)->inSFString;
return GF_OK;
case 10:
info->name = "inMFString";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inMFString;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_Valuator *) node)->inMFString;
return GF_OK;
case 11:
info->name = "inSFTime";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inSFTime;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_Valuator *) node)->inSFTime;
return GF_OK;
case 12:
info->name = "inSFVec2f";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inSFVec2f;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Valuator *) node)->inSFVec2f;
return GF_OK;
case 13:
info->name = "inMFVec2f";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inMFVec2f;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_Valuator *) node)->inMFVec2f;
return GF_OK;
case 14:
info->name = "inSFVec3f";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inSFVec3f;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Valuator *) node)->inSFVec3f;
return GF_OK;
case 15:
info->name = "inMFVec3f";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Valuator *)node)->on_inMFVec3f;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_Valuator *) node)->inMFVec3f;
return GF_OK;
case 16:
info->name = "outSFBool";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Valuator *) node)->outSFBool;
return GF_OK;
case 17:
info->name = "outSFColor";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_Valuator *) node)->outSFColor;
return GF_OK;
case 18:
info->name = "outMFColor";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_Valuator *) node)->outMFColor;
return GF_OK;
case 19:
info->name = "outSFFloat";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->outSFFloat;
return GF_OK;
case 20:
info->name = "outMFFloat";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->outMFFloat;
return GF_OK;
case 21:
info->name = "outSFInt32";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Valuator *) node)->outSFInt32;
return GF_OK;
case 22:
info->name = "outMFInt32";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_Valuator *) node)->outMFInt32;
return GF_OK;
case 23:
info->name = "outSFRotation";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_Valuator *) node)->outSFRotation;
return GF_OK;
case 24:
info->name = "outMFRotation";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFROTATION;
info->far_ptr = & ((M_Valuator *) node)->outMFRotation;
return GF_OK;
case 25:
info->name = "outSFString";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_Valuator *) node)->outSFString;
return GF_OK;
case 26:
info->name = "outMFString";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_Valuator *) node)->outMFString;
return GF_OK;
case 27:
info->name = "outSFTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_Valuator *) node)->outSFTime;
return GF_OK;
case 28:
info->name = "outSFVec2f";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Valuator *) node)->outSFVec2f;
return GF_OK;
case 29:
info->name = "outMFVec2f";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_Valuator *) node)->outMFVec2f;
return GF_OK;
case 30:
info->name = "outSFVec3f";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Valuator *) node)->outSFVec3f;
return GF_OK;
case 31:
info->name = "outMFVec3f";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_Valuator *) node)->outMFVec3f;
return GF_OK;
case 32:
info->name = "Factor1";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->Factor1;
return GF_OK;
case 33:
info->name = "Factor2";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->Factor2;
return GF_OK;
case 34:
info->name = "Factor3";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->Factor3;
return GF_OK;
case 35:
info->name = "Factor4";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->Factor4;
return GF_OK;
case 36:
info->name = "Offset1";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->Offset1;
return GF_OK;
case 37:
info->name = "Offset2";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->Offset2;
return GF_OK;
case 38:
info->name = "Offset3";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->Offset3;
return GF_OK;
case 39:
info->name = "Offset4";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Valuator *) node)->Offset4;
return GF_OK;
case 40:
info->name = "Sum";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Valuator *) node)->Sum;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Valuator_get_field_index_by_name(char *name)
{
if (!strcmp("inSFBool", name)) return 0;
if (!strcmp("inSFColor", name)) return 1;
if (!strcmp("inMFColor", name)) return 2;
if (!strcmp("inSFFloat", name)) return 3;
if (!strcmp("inMFFloat", name)) return 4;
if (!strcmp("inSFInt32", name)) return 5;
if (!strcmp("inMFInt32", name)) return 6;
if (!strcmp("inSFRotation", name)) return 7;
if (!strcmp("inMFRotation", name)) return 8;
if (!strcmp("inSFString", name)) return 9;
if (!strcmp("inMFString", name)) return 10;
if (!strcmp("inSFTime", name)) return 11;
if (!strcmp("inSFVec2f", name)) return 12;
if (!strcmp("inMFVec2f", name)) return 13;
if (!strcmp("inSFVec3f", name)) return 14;
if (!strcmp("inMFVec3f", name)) return 15;
if (!strcmp("outSFBool", name)) return 16;
if (!strcmp("outSFColor", name)) return 17;
if (!strcmp("outMFColor", name)) return 18;
if (!strcmp("outSFFloat", name)) return 19;
if (!strcmp("outMFFloat", name)) return 20;
if (!strcmp("outSFInt32", name)) return 21;
if (!strcmp("outMFInt32", name)) return 22;
if (!strcmp("outSFRotation", name)) return 23;
if (!strcmp("outMFRotation", name)) return 24;
if (!strcmp("outSFString", name)) return 25;
if (!strcmp("outMFString", name)) return 26;
if (!strcmp("outSFTime", name)) return 27;
if (!strcmp("outSFVec2f", name)) return 28;
if (!strcmp("outMFVec2f", name)) return 29;
if (!strcmp("outSFVec3f", name)) return 30;
if (!strcmp("outMFVec3f", name)) return 31;
if (!strcmp("Factor1", name)) return 32;
if (!strcmp("Factor2", name)) return 33;
if (!strcmp("Factor3", name)) return 34;
if (!strcmp("Factor4", name)) return 35;
if (!strcmp("Offset1", name)) return 36;
if (!strcmp("Offset2", name)) return 37;
if (!strcmp("Offset3", name)) return 38;
if (!strcmp("Offset4", name)) return 39;
if (!strcmp("Sum", name)) return 40;
return -1;
}
static Bool Valuator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 32:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 33:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 34:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 35:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 36:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 37:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 38:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 39:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Valuator_Create()
{
M_Valuator *p;
GF_SAFEALLOC(p, M_Valuator);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Valuator);
p->Factor1 = FLT2FIX(1.0);
p->Factor2 = FLT2FIX(1.0);
p->Factor3 = FLT2FIX(1.0);
p->Factor4 = FLT2FIX(1.0);
p->Offset1 = FLT2FIX(0.0);
p->Offset2 = FLT2FIX(0.0);
p->Offset3 = FLT2FIX(0.0);
p->Offset4 = FLT2FIX(0.0);
return (GF_Node *)p;
}
static void Viewpoint_Del(GF_Node *node)
{
M_Viewpoint *p = (M_Viewpoint *) node;
gf_sg_sfstring_del(p->description);
gf_node_free((GF_Node *) p);
}
static const u16 Viewpoint_Def2All[] = { 1, 2, 3, 4, 5};
static const u16 Viewpoint_In2All[] = { 0, 1, 2, 3, 4};
static const u16 Viewpoint_Out2All[] = { 1, 2, 3, 4, 6, 7};
static const u16 Viewpoint_Dyn2All[] = { 1, 3, 4};
static u32 Viewpoint_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 3;
default:
return 8;
}
}
static GF_Err Viewpoint_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Viewpoint_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Viewpoint_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Viewpoint_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Viewpoint_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Viewpoint_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_bind";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Viewpoint *)node)->on_set_bind;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Viewpoint *) node)->set_bind;
return GF_OK;
case 1:
info->name = "fieldOfView";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Viewpoint *) node)->fieldOfView;
return GF_OK;
case 2:
info->name = "jump";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Viewpoint *) node)->jump;
return GF_OK;
case 3:
info->name = "orientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_Viewpoint *) node)->orientation;
return GF_OK;
case 4:
info->name = "position";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Viewpoint *) node)->position;
return GF_OK;
case 5:
info->name = "description";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_Viewpoint *) node)->description;
return GF_OK;
case 6:
info->name = "bindTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_Viewpoint *) node)->bindTime;
return GF_OK;
case 7:
info->name = "isBound";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Viewpoint *) node)->isBound;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Viewpoint_get_field_index_by_name(char *name)
{
if (!strcmp("set_bind", name)) return 0;
if (!strcmp("fieldOfView", name)) return 1;
if (!strcmp("jump", name)) return 2;
if (!strcmp("orientation", name)) return 3;
if (!strcmp("position", name)) return 4;
if (!strcmp("description", name)) return 5;
if (!strcmp("bindTime", name)) return 6;
if (!strcmp("isBound", name)) return 7;
return -1;
}
static Bool Viewpoint_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 8;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(3.1415927);
return 1;
case 3:
*AType = 10;
*QType = 10;
return 1;
case 4:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Viewpoint_Create()
{
M_Viewpoint *p;
GF_SAFEALLOC(p, M_Viewpoint);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Viewpoint);
p->fieldOfView = FLT2FIX(0.785398);
p->jump = 1;
p->orientation.x = FLT2FIX(0);
p->orientation.y = FLT2FIX(0);
p->orientation.z = FLT2FIX(1);
p->orientation.q = FLT2FIX(0);
p->position.x = FLT2FIX(0);
p->position.y = FLT2FIX(0);
p->position.z = FLT2FIX(10);
return (GF_Node *)p;
}
static void VisibilitySensor_Del(GF_Node *node)
{
M_VisibilitySensor *p = (M_VisibilitySensor *) node;
gf_node_free((GF_Node *) p);
}
static const u16 VisibilitySensor_Def2All[] = { 0, 1, 2};
static const u16 VisibilitySensor_In2All[] = { 0, 1, 2};
static const u16 VisibilitySensor_Out2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 VisibilitySensor_Dyn2All[] = { 0, 2};
static u32 VisibilitySensor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 6;
}
}
static GF_Err VisibilitySensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = VisibilitySensor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = VisibilitySensor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = VisibilitySensor_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = VisibilitySensor_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err VisibilitySensor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "center";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_VisibilitySensor *) node)->center;
return GF_OK;
case 1:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_VisibilitySensor *) node)->enabled;
return GF_OK;
case 2:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_VisibilitySensor *) node)->size;
return GF_OK;
case 3:
info->name = "enterTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_VisibilitySensor *) node)->enterTime;
return GF_OK;
case 4:
info->name = "exitTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_VisibilitySensor *) node)->exitTime;
return GF_OK;
case 5:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_VisibilitySensor *) node)->isActive;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 VisibilitySensor_get_field_index_by_name(char *name)
{
if (!strcmp("center", name)) return 0;
if (!strcmp("enabled", name)) return 1;
if (!strcmp("size", name)) return 2;
if (!strcmp("enterTime", name)) return 3;
if (!strcmp("exitTime", name)) return 4;
if (!strcmp("isActive", name)) return 5;
return -1;
}
static Bool VisibilitySensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 11;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *VisibilitySensor_Create()
{
M_VisibilitySensor *p;
GF_SAFEALLOC(p, M_VisibilitySensor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_VisibilitySensor);
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->center.z = FLT2FIX(0);
p->enabled = 1;
p->size.x = FLT2FIX(0);
p->size.y = FLT2FIX(0);
p->size.z = FLT2FIX(0);
return (GF_Node *)p;
}
static void Viseme_Del(GF_Node *node)
{
M_Viseme *p = (M_Viseme *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Viseme_Def2All[] = { 0, 1, 2, 3};
static const u16 Viseme_In2All[] = { 0, 1, 2, 3};
static const u16 Viseme_Out2All[] = { 0, 1, 2, 3};
static u32 Viseme_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err Viseme_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Viseme_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Viseme_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Viseme_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Viseme_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "viseme_select1";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Viseme *) node)->viseme_select1;
return GF_OK;
case 1:
info->name = "viseme_select2";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Viseme *) node)->viseme_select2;
return GF_OK;
case 2:
info->name = "viseme_blend";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Viseme *) node)->viseme_blend;
return GF_OK;
case 3:
info->name = "viseme_def";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Viseme *) node)->viseme_def;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Viseme_get_field_index_by_name(char *name)
{
if (!strcmp("viseme_select1", name)) return 0;
if (!strcmp("viseme_select2", name)) return 1;
if (!strcmp("viseme_blend", name)) return 2;
if (!strcmp("viseme_def", name)) return 3;
return -1;
}
static Bool Viseme_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(63);
return 1;
default:
return 0;
}
}
GF_Node *Viseme_Create()
{
M_Viseme *p;
GF_SAFEALLOC(p, M_Viseme);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Viseme);
p->viseme_select1 = 0;
p->viseme_select2 = 0;
p->viseme_blend = 0;
return (GF_Node *)p;
}
static void WorldInfo_Del(GF_Node *node)
{
M_WorldInfo *p = (M_WorldInfo *) node;
gf_sg_mfstring_del(p->info);
gf_sg_sfstring_del(p->title);
gf_node_free((GF_Node *) p);
}
static const u16 WorldInfo_Def2All[] = { 0, 1};
static u32 WorldInfo_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err WorldInfo_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = WorldInfo_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err WorldInfo_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "info";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_WorldInfo *) node)->info;
return GF_OK;
case 1:
info->name = "title";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_WorldInfo *) node)->title;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 WorldInfo_get_field_index_by_name(char *name)
{
if (!strcmp("info", name)) return 0;
if (!strcmp("title", name)) return 1;
return -1;
}
static Bool WorldInfo_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *WorldInfo_Create()
{
M_WorldInfo *p;
GF_SAFEALLOC(p, M_WorldInfo);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_WorldInfo);
return (GF_Node *)p;
}
static void AcousticMaterial_Del(GF_Node *node)
{
M_AcousticMaterial *p = (M_AcousticMaterial *) node;
gf_sg_mffloat_del(p->reffunc);
gf_sg_mffloat_del(p->transfunc);
gf_sg_mffloat_del(p->refFrequency);
gf_sg_mffloat_del(p->transFrequency);
gf_node_free((GF_Node *) p);
}
static const u16 AcousticMaterial_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 AcousticMaterial_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 AcousticMaterial_Out2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 AcousticMaterial_Dyn2All[] = { 0, 1, 2, 3, 4, 5};
static u32 AcousticMaterial_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 10;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 6;
default:
return 10;
}
}
static GF_Err AcousticMaterial_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AcousticMaterial_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AcousticMaterial_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AcousticMaterial_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = AcousticMaterial_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AcousticMaterial_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "ambientIntensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AcousticMaterial *) node)->ambientIntensity;
return GF_OK;
case 1:
info->name = "diffuseColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_AcousticMaterial *) node)->diffuseColor;
return GF_OK;
case 2:
info->name = "emissiveColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_AcousticMaterial *) node)->emissiveColor;
return GF_OK;
case 3:
info->name = "shininess";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AcousticMaterial *) node)->shininess;
return GF_OK;
case 4:
info->name = "specularColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_AcousticMaterial *) node)->specularColor;
return GF_OK;
case 5:
info->name = "transparency";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AcousticMaterial *) node)->transparency;
return GF_OK;
case 6:
info->name = "reffunc";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_AcousticMaterial *) node)->reffunc;
return GF_OK;
case 7:
info->name = "transfunc";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_AcousticMaterial *) node)->transfunc;
return GF_OK;
case 8:
info->name = "refFrequency";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_AcousticMaterial *) node)->refFrequency;
return GF_OK;
case 9:
info->name = "transFrequency";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_AcousticMaterial *) node)->transFrequency;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AcousticMaterial_get_field_index_by_name(char *name)
{
if (!strcmp("ambientIntensity", name)) return 0;
if (!strcmp("diffuseColor", name)) return 1;
if (!strcmp("emissiveColor", name)) return 2;
if (!strcmp("shininess", name)) return 3;
if (!strcmp("specularColor", name)) return 4;
if (!strcmp("transparency", name)) return 5;
if (!strcmp("reffunc", name)) return 6;
if (!strcmp("transfunc", name)) return 7;
if (!strcmp("refFrequency", name)) return 8;
if (!strcmp("transFrequency", name)) return 9;
return -1;
}
static Bool AcousticMaterial_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 3:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 4:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 5:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 6:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *AcousticMaterial_Create()
{
M_AcousticMaterial *p;
GF_SAFEALLOC(p, M_AcousticMaterial);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AcousticMaterial);
p->ambientIntensity = FLT2FIX(0.2);
p->diffuseColor.red = FLT2FIX(0.8);
p->diffuseColor.green = FLT2FIX(0.8);
p->diffuseColor.blue = FLT2FIX(0.8);
p->emissiveColor.red = FLT2FIX(0);
p->emissiveColor.green = FLT2FIX(0);
p->emissiveColor.blue = FLT2FIX(0);
p->shininess = FLT2FIX(0.2);
p->specularColor.red = FLT2FIX(0);
p->specularColor.green = FLT2FIX(0);
p->specularColor.blue = FLT2FIX(0);
p->transparency = FLT2FIX(0);
p->reffunc.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->reffunc.count = 1;
p->reffunc.vals[0] = FLT2FIX(0);
p->transfunc.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->transfunc.count = 1;
p->transfunc.vals[0] = FLT2FIX(1);
p->refFrequency.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->refFrequency.count = 1;
p->refFrequency.vals[0] = FLT2FIX(0);
p->transFrequency.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->transFrequency.count = 1;
p->transFrequency.vals[0] = FLT2FIX(0);
return (GF_Node *)p;
}
static void AcousticScene_Del(GF_Node *node)
{
M_AcousticScene *p = (M_AcousticScene *) node;
gf_sg_mftime_del(p->reverbTime);
gf_sg_mffloat_del(p->reverbFreq);
gf_node_free((GF_Node *) p);
}
static const u16 AcousticScene_Def2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 AcousticScene_In2All[] = { 4, 5};
static const u16 AcousticScene_Out2All[] = { 4, 5};
static const u16 AcousticScene_Dyn2All[] = { 4};
static u32 AcousticScene_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 6;
}
}
static GF_Err AcousticScene_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AcousticScene_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AcousticScene_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AcousticScene_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = AcousticScene_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AcousticScene_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "center";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_AcousticScene *) node)->center;
return GF_OK;
case 1:
info->name = "Size";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_AcousticScene *) node)->Size;
return GF_OK;
case 2:
info->name = "reverbTime";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFTIME;
info->far_ptr = & ((M_AcousticScene *) node)->reverbTime;
return GF_OK;
case 3:
info->name = "reverbFreq";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_AcousticScene *) node)->reverbFreq;
return GF_OK;
case 4:
info->name = "reverbLevel";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AcousticScene *) node)->reverbLevel;
return GF_OK;
case 5:
info->name = "reverbDelay";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AcousticScene *) node)->reverbDelay;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AcousticScene_get_field_index_by_name(char *name)
{
if (!strcmp("center", name)) return 0;
if (!strcmp("Size", name)) return 1;
if (!strcmp("reverbTime", name)) return 2;
if (!strcmp("reverbFreq", name)) return 3;
if (!strcmp("reverbLevel", name)) return 4;
if (!strcmp("reverbDelay", name)) return 5;
return -1;
}
static Bool AcousticScene_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 0;
*QType = 11;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0 );
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0 );
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0 );
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0 );
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *AcousticScene_Create()
{
M_AcousticScene *p;
GF_SAFEALLOC(p, M_AcousticScene);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AcousticScene);
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->center.z = FLT2FIX(0);
p->Size.x = FLT2FIX(-1);
p->Size.y = FLT2FIX(-1);
p->Size.z = FLT2FIX(-1);
p->reverbTime.vals = (SFTime*)gf_malloc(sizeof(SFTime)*1);
p->reverbTime.count = 1;
p->reverbTime.vals[0] = 0;
p->reverbFreq.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->reverbFreq.count = 1;
p->reverbFreq.vals[0] = FLT2FIX(1000);
p->reverbLevel = FLT2FIX(0.4);
p->reverbDelay = 0.5;
return (GF_Node *)p;
}
static void ApplicationWindow_Del(GF_Node *node)
{
M_ApplicationWindow *p = (M_ApplicationWindow *) node;
gf_sg_sfstring_del(p->description);
gf_sg_mfstring_del(p->parameter);
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 ApplicationWindow_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 ApplicationWindow_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 ApplicationWindow_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 ApplicationWindow_Dyn2All[] = { 6};
static u32 ApplicationWindow_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 7;
}
}
static GF_Err ApplicationWindow_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ApplicationWindow_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ApplicationWindow_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ApplicationWindow_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = ApplicationWindow_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ApplicationWindow_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "isActive";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ApplicationWindow *) node)->isActive;
return GF_OK;
case 1:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_ApplicationWindow *) node)->startTime;
return GF_OK;
case 2:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_ApplicationWindow *) node)->stopTime;
return GF_OK;
case 3:
info->name = "description";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_ApplicationWindow *) node)->description;
return GF_OK;
case 4:
info->name = "parameter";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_ApplicationWindow *) node)->parameter;
return GF_OK;
case 5:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_ApplicationWindow *) node)->url;
return GF_OK;
case 6:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_ApplicationWindow *) node)->size;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ApplicationWindow_get_field_index_by_name(char *name)
{
if (!strcmp("isActive", name)) return 0;
if (!strcmp("startTime", name)) return 1;
if (!strcmp("stopTime", name)) return 2;
if (!strcmp("description", name)) return 3;
if (!strcmp("parameter", name)) return 4;
if (!strcmp("url", name)) return 5;
if (!strcmp("size", name)) return 6;
return -1;
}
static Bool ApplicationWindow_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 12;
*QType = 12;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *ApplicationWindow_Create()
{
M_ApplicationWindow *p;
GF_SAFEALLOC(p, M_ApplicationWindow);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ApplicationWindow);
p->startTime = 0;
p->stopTime = 0;
p->size.x = FLT2FIX(0);
p->size.y = FLT2FIX(0);
return (GF_Node *)p;
}
static void BAP_Del(GF_Node *node)
{
M_BAP *p = (M_BAP *) node;
gf_node_free((GF_Node *) p);
}
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};
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};
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};
static u32 BAP_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 296;
case GF_SG_FIELD_CODING_DEF:
return 296;
case GF_SG_FIELD_CODING_OUT:
return 296;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 296;
}
}
static GF_Err BAP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = BAP_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = BAP_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = BAP_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err BAP_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "sacroiliac_tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->sacroiliac_tilt;
return GF_OK;
case 1:
info->name = "sacroiliac_torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->sacroiliac_torsion;
return GF_OK;
case 2:
info->name = "sacroiliac_roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->sacroiliac_roll;
return GF_OK;
case 3:
info->name = "l_hip_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_hip_flexion;
return GF_OK;
case 4:
info->name = "r_hip_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_hip_flexion;
return GF_OK;
case 5:
info->name = "l_hip_abduct";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_hip_abduct;
return GF_OK;
case 6:
info->name = "r_hip_abduct";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_hip_abduct;
return GF_OK;
case 7:
info->name = "l_hip_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_hip_twisting;
return GF_OK;
case 8:
info->name = "r_hip_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_hip_twisting;
return GF_OK;
case 9:
info->name = "l_knee_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_knee_flexion;
return GF_OK;
case 10:
info->name = "r_knee_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_knee_flexion;
return GF_OK;
case 11:
info->name = "l_knee_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_knee_twisting;
return GF_OK;
case 12:
info->name = "r_knee_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_knee_twisting;
return GF_OK;
case 13:
info->name = "l_ankle_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_ankle_flexion;
return GF_OK;
case 14:
info->name = "r_ankle_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_ankle_flexion;
return GF_OK;
case 15:
info->name = "l_ankle_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_ankle_twisting;
return GF_OK;
case 16:
info->name = "r_ankle_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_ankle_twisting;
return GF_OK;
case 17:
info->name = "l_subtalar_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_subtalar_flexion;
return GF_OK;
case 18:
info->name = "r_subtalar_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_subtalar_flexion;
return GF_OK;
case 19:
info->name = "l_midtarsal_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_midtarsal_flexion;
return GF_OK;
case 20:
info->name = "r_midtarsal_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_midtarsal_flexion;
return GF_OK;
case 21:
info->name = "l_metatarsal_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_metatarsal_flexion;
return GF_OK;
case 22:
info->name = "r_metatarsal_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_metatarsal_flexion;
return GF_OK;
case 23:
info->name = "l_sternoclavicular_abduct";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_sternoclavicular_abduct;
return GF_OK;
case 24:
info->name = "r_sternoclavicular_abduct";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_sternoclavicular_abduct;
return GF_OK;
case 25:
info->name = "l_sternoclavicular_rotate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_sternoclavicular_rotate;
return GF_OK;
case 26:
info->name = "r_sternoclavicular_rotate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_sternoclavicular_rotate;
return GF_OK;
case 27:
info->name = "l_acromioclavicular_abduct";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_acromioclavicular_abduct;
return GF_OK;
case 28:
info->name = "r_acromioclavicular_abduct";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_acromioclavicular_abduct;
return GF_OK;
case 29:
info->name = "l_acromioclavicular_rotate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_acromioclavicular_rotate;
return GF_OK;
case 30:
info->name = "r_acromioclavicular_rotate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_acromioclavicular_rotate;
return GF_OK;
case 31:
info->name = "l_shoulder_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_shoulder_flexion;
return GF_OK;
case 32:
info->name = "r_shoulder_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_shoulder_flexion;
return GF_OK;
case 33:
info->name = "l_shoulder_abduct";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_shoulder_abduct;
return GF_OK;
case 34:
info->name = "r_shoulder_abduct";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_shoulder_abduct;
return GF_OK;
case 35:
info->name = "l_shoulder_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_shoulder_twisting;
return GF_OK;
case 36:
info->name = "r_shoulder_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_shoulder_twisting;
return GF_OK;
case 37:
info->name = "l_elbow_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_elbow_flexion;
return GF_OK;
case 38:
info->name = "r_elbow_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_elbow_flexion;
return GF_OK;
case 39:
info->name = "l_elbow_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_elbow_twisting;
return GF_OK;
case 40:
info->name = "r_elbow_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_elbow_twisting;
return GF_OK;
case 41:
info->name = "l_wrist_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_wrist_flexion;
return GF_OK;
case 42:
info->name = "r_wrist_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_wrist_flexion;
return GF_OK;
case 43:
info->name = "l_wrist_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_wrist_pivot;
return GF_OK;
case 44:
info->name = "r_wrist_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_wrist_pivot;
return GF_OK;
case 45:
info->name = "l_wrist_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_wrist_twisting;
return GF_OK;
case 46:
info->name = "r_wrist_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_wrist_twisting;
return GF_OK;
case 47:
info->name = "skullbase_roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->skullbase_roll;
return GF_OK;
case 48:
info->name = "skullbase_torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->skullbase_torsion;
return GF_OK;
case 49:
info->name = "skullbase_tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->skullbase_tilt;
return GF_OK;
case 50:
info->name = "vc1roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc1roll;
return GF_OK;
case 51:
info->name = "vc1torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc1torsion;
return GF_OK;
case 52:
info->name = "vc1tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc1tilt;
return GF_OK;
case 53:
info->name = "vc2roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc2roll;
return GF_OK;
case 54:
info->name = "vc2torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc2torsion;
return GF_OK;
case 55:
info->name = "vc2tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc2tilt;
return GF_OK;
case 56:
info->name = "vc3roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc3roll;
return GF_OK;
case 57:
info->name = "vc3torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc3torsion;
return GF_OK;
case 58:
info->name = "vc3tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc3tilt;
return GF_OK;
case 59:
info->name = "vc4roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc4roll;
return GF_OK;
case 60:
info->name = "vc4torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc4torsion;
return GF_OK;
case 61:
info->name = "vc4tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc4tilt;
return GF_OK;
case 62:
info->name = "vc5roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc5roll;
return GF_OK;
case 63:
info->name = "vc5torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc5torsion;
return GF_OK;
case 64:
info->name = "vc5tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc5tilt;
return GF_OK;
case 65:
info->name = "vc6roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc6roll;
return GF_OK;
case 66:
info->name = "vc6torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc6torsion;
return GF_OK;
case 67:
info->name = "vc6tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc6tilt;
return GF_OK;
case 68:
info->name = "vc7roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc7roll;
return GF_OK;
case 69:
info->name = "vc7torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc7torsion;
return GF_OK;
case 70:
info->name = "vc7tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vc7tilt;
return GF_OK;
case 71:
info->name = "vt1roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt1roll;
return GF_OK;
case 72:
info->name = "vt1torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt1torsion;
return GF_OK;
case 73:
info->name = "vt1tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt1tilt;
return GF_OK;
case 74:
info->name = "vt2roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt2roll;
return GF_OK;
case 75:
info->name = "vt2torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt2torsion;
return GF_OK;
case 76:
info->name = "vt2tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt2tilt;
return GF_OK;
case 77:
info->name = "vt3roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt3roll;
return GF_OK;
case 78:
info->name = "vt3torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt3torsion;
return GF_OK;
case 79:
info->name = "vt3tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt3tilt;
return GF_OK;
case 80:
info->name = "vt4roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt4roll;
return GF_OK;
case 81:
info->name = "vt4torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt4torsion;
return GF_OK;
case 82:
info->name = "vt4tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt4tilt;
return GF_OK;
case 83:
info->name = "vt5roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt5roll;
return GF_OK;
case 84:
info->name = "vt5torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt5torsion;
return GF_OK;
case 85:
info->name = "vt5tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt5tilt;
return GF_OK;
case 86:
info->name = "vt6roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt6roll;
return GF_OK;
case 87:
info->name = "vt6torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt6torsion;
return GF_OK;
case 88:
info->name = "vt6tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt6tilt;
return GF_OK;
case 89:
info->name = "vt7roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt7roll;
return GF_OK;
case 90:
info->name = "vt7torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt7torsion;
return GF_OK;
case 91:
info->name = "vt7tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt7tilt;
return GF_OK;
case 92:
info->name = "vt8roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt8roll;
return GF_OK;
case 93:
info->name = "vt8torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt8torsion;
return GF_OK;
case 94:
info->name = "vt8tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt8tilt;
return GF_OK;
case 95:
info->name = "vt9roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt9roll;
return GF_OK;
case 96:
info->name = "vt9torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt9torsion;
return GF_OK;
case 97:
info->name = "vt9tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt9tilt;
return GF_OK;
case 98:
info->name = "vt10roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt10roll;
return GF_OK;
case 99:
info->name = "vt10torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt10torsion;
return GF_OK;
case 100:
info->name = "vt10tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt10tilt;
return GF_OK;
case 101:
info->name = "vt11roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt11roll;
return GF_OK;
case 102:
info->name = "vt11torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt11torsion;
return GF_OK;
case 103:
info->name = "vt11tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt11tilt;
return GF_OK;
case 104:
info->name = "vt12roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt12roll;
return GF_OK;
case 105:
info->name = "vt12torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt12torsion;
return GF_OK;
case 106:
info->name = "vt12tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vt12tilt;
return GF_OK;
case 107:
info->name = "vl1roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl1roll;
return GF_OK;
case 108:
info->name = "vl1torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl1torsion;
return GF_OK;
case 109:
info->name = "vl1tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl1tilt;
return GF_OK;
case 110:
info->name = "vl2roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl2roll;
return GF_OK;
case 111:
info->name = "vl2torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl2torsion;
return GF_OK;
case 112:
info->name = "vl2tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl2tilt;
return GF_OK;
case 113:
info->name = "vl3roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl3roll;
return GF_OK;
case 114:
info->name = "vl3torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl3torsion;
return GF_OK;
case 115:
info->name = "vl3tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl3tilt;
return GF_OK;
case 116:
info->name = "vl4roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl4roll;
return GF_OK;
case 117:
info->name = "vl4torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl4torsion;
return GF_OK;
case 118:
info->name = "vl4tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl4tilt;
return GF_OK;
case 119:
info->name = "vl5roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl5roll;
return GF_OK;
case 120:
info->name = "vl5torsion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl5torsion;
return GF_OK;
case 121:
info->name = "vl5tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->vl5tilt;
return GF_OK;
case 122:
info->name = "l_pinky0_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_pinky0_flexion;
return GF_OK;
case 123:
info->name = "r_pinky0_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_pinky0_flexion;
return GF_OK;
case 124:
info->name = "l_pinky1_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_pinky1_flexion;
return GF_OK;
case 125:
info->name = "r_pinky1_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_pinky1_flexion;
return GF_OK;
case 126:
info->name = "l_pinky1_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_pinky1_pivot;
return GF_OK;
case 127:
info->name = "r_pinky1_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_pinky1_pivot;
return GF_OK;
case 128:
info->name = "l_pinky1_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_pinky1_twisting;
return GF_OK;
case 129:
info->name = "r_pinky1_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_pinky1_twisting;
return GF_OK;
case 130:
info->name = "l_pinky2_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_pinky2_flexion;
return GF_OK;
case 131:
info->name = "r_pinky2_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_pinky2_flexion;
return GF_OK;
case 132:
info->name = "l_pinky3_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_pinky3_flexion;
return GF_OK;
case 133:
info->name = "r_pinky3_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_pinky3_flexion;
return GF_OK;
case 134:
info->name = "l_ring0_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_ring0_flexion;
return GF_OK;
case 135:
info->name = "r_ring0_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_ring0_flexion;
return GF_OK;
case 136:
info->name = "l_ring1_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_ring1_flexion;
return GF_OK;
case 137:
info->name = "r_ring1_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_ring1_flexion;
return GF_OK;
case 138:
info->name = "l_ring1_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_ring1_pivot;
return GF_OK;
case 139:
info->name = "r_ring1_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_ring1_pivot;
return GF_OK;
case 140:
info->name = "l_ring1_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_ring1_twisting;
return GF_OK;
case 141:
info->name = "r_ring1_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_ring1_twisting;
return GF_OK;
case 142:
info->name = "l_ring2_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_ring2_flexion;
return GF_OK;
case 143:
info->name = "r_ring2_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_ring2_flexion;
return GF_OK;
case 144:
info->name = "l_ring3_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_ring3_flexion;
return GF_OK;
case 145:
info->name = "r_ring3_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_ring3_flexion;
return GF_OK;
case 146:
info->name = "l_middle0_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_middle0_flexion;
return GF_OK;
case 147:
info->name = "r_middle0_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_middle0_flexion;
return GF_OK;
case 148:
info->name = "l_middle1_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_middle1_flexion;
return GF_OK;
case 149:
info->name = "r_middle1_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_middle1_flexion;
return GF_OK;
case 150:
info->name = "l_middle1_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_middle1_pivot;
return GF_OK;
case 151:
info->name = "r_middle1_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_middle1_pivot;
return GF_OK;
case 152:
info->name = "l_middle1_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_middle1_twisting;
return GF_OK;
case 153:
info->name = "r_middle1_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_middle1_twisting;
return GF_OK;
case 154:
info->name = "l_middle2_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_middle2_flexion;
return GF_OK;
case 155:
info->name = "r_middle2_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_middle2_flexion;
return GF_OK;
case 156:
info->name = "l_middle3_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_middle3_flexion;
return GF_OK;
case 157:
info->name = "r_middle3_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_middle3_flexion;
return GF_OK;
case 158:
info->name = "l_index0_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_index0_flexion;
return GF_OK;
case 159:
info->name = "r_index0_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_index0_flexion;
return GF_OK;
case 160:
info->name = "l_index1_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_index1_flexion;
return GF_OK;
case 161:
info->name = "r_index1_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_index1_flexion;
return GF_OK;
case 162:
info->name = "l_index1_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_index1_pivot;
return GF_OK;
case 163:
info->name = "r_index1_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_index1_pivot;
return GF_OK;
case 164:
info->name = "l_index1_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_index1_twisting;
return GF_OK;
case 165:
info->name = "r_index1_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_index1_twisting;
return GF_OK;
case 166:
info->name = "l_index2_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_index2_flexion;
return GF_OK;
case 167:
info->name = "r_index2_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_index2_flexion;
return GF_OK;
case 168:
info->name = "l_index3_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_index3_flexion;
return GF_OK;
case 169:
info->name = "r_index3_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_index3_flexion;
return GF_OK;
case 170:
info->name = "l_thumb1_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_thumb1_flexion;
return GF_OK;
case 171:
info->name = "r_thumb1_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_thumb1_flexion;
return GF_OK;
case 172:
info->name = "l_thumb1_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_thumb1_pivot;
return GF_OK;
case 173:
info->name = "r_thumb1_pivot";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_thumb1_pivot;
return GF_OK;
case 174:
info->name = "l_thumb1_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_thumb1_twisting;
return GF_OK;
case 175:
info->name = "r_thumb1_twisting";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_thumb1_twisting;
return GF_OK;
case 176:
info->name = "l_thumb2_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_thumb2_flexion;
return GF_OK;
case 177:
info->name = "r_thumb2_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_thumb2_flexion;
return GF_OK;
case 178:
info->name = "l_thumb3_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->l_thumb3_flexion;
return GF_OK;
case 179:
info->name = "r_thumb3_flexion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->r_thumb3_flexion;
return GF_OK;
case 180:
info->name = "HumanoidRoot_tr_vertical";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_tr_vertical;
return GF_OK;
case 181:
info->name = "HumanoidRoot_tr_lateral";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_tr_lateral;
return GF_OK;
case 182:
info->name = "HumanoidRoot_tr_frontal";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_tr_frontal;
return GF_OK;
case 183:
info->name = "HumanoidRoot_rt_body_turn";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_rt_body_turn;
return GF_OK;
case 184:
info->name = "HumanoidRoot_rt_body_roll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_rt_body_roll;
return GF_OK;
case 185:
info->name = "HumanoidRoot_rt_body_tilt";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->HumanoidRoot_rt_body_tilt;
return GF_OK;
case 186:
info->name = "extensionBap187";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap187;
return GF_OK;
case 187:
info->name = "extensionBap188";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap188;
return GF_OK;
case 188:
info->name = "extensionBap189";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap189;
return GF_OK;
case 189:
info->name = "extensionBap190";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap190;
return GF_OK;
case 190:
info->name = "extensionBap191";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap191;
return GF_OK;
case 191:
info->name = "extensionBap192";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap192;
return GF_OK;
case 192:
info->name = "extensionBap193";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap193;
return GF_OK;
case 193:
info->name = "extensionBap194";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap194;
return GF_OK;
case 194:
info->name = "extensionBap195";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap195;
return GF_OK;
case 195:
info->name = "extensionBap196";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap196;
return GF_OK;
case 196:
info->name = "extensionBap197";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap197;
return GF_OK;
case 197:
info->name = "extensionBap198";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap198;
return GF_OK;
case 198:
info->name = "extensionBap199";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap199;
return GF_OK;
case 199:
info->name = "extensionBap200";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap200;
return GF_OK;
case 200:
info->name = "extensionBap201";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap201;
return GF_OK;
case 201:
info->name = "extensionBap202";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap202;
return GF_OK;
case 202:
info->name = "extensionBap203";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap203;
return GF_OK;
case 203:
info->name = "extensionBap204";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap204;
return GF_OK;
case 204:
info->name = "extensionBap205";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap205;
return GF_OK;
case 205:
info->name = "extensionBap206";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap206;
return GF_OK;
case 206:
info->name = "extensionBap207";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap207;
return GF_OK;
case 207:
info->name = "extensionBap208";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap208;
return GF_OK;
case 208:
info->name = "extensionBap209";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap209;
return GF_OK;
case 209:
info->name = "extensionBap210";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap210;
return GF_OK;
case 210:
info->name = "extensionBap211";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap211;
return GF_OK;
case 211:
info->name = "extensionBap212";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap212;
return GF_OK;
case 212:
info->name = "extensionBap213";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap213;
return GF_OK;
case 213:
info->name = "extensionBap214";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap214;
return GF_OK;
case 214:
info->name = "extensionBap215";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap215;
return GF_OK;
case 215:
info->name = "extensionBap216";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap216;
return GF_OK;
case 216:
info->name = "extensionBap217";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap217;
return GF_OK;
case 217:
info->name = "extensionBap218";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap218;
return GF_OK;
case 218:
info->name = "extensionBap219";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap219;
return GF_OK;
case 219:
info->name = "extensionBap220";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap220;
return GF_OK;
case 220:
info->name = "extensionBap221";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap221;
return GF_OK;
case 221:
info->name = "extensionBap222";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap222;
return GF_OK;
case 222:
info->name = "extensionBap223";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap223;
return GF_OK;
case 223:
info->name = "extensionBap224";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap224;
return GF_OK;
case 224:
info->name = "extensionBap225";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap225;
return GF_OK;
case 225:
info->name = "extensionBap226";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap226;
return GF_OK;
case 226:
info->name = "extensionBap227";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap227;
return GF_OK;
case 227:
info->name = "extensionBap228";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap228;
return GF_OK;
case 228:
info->name = "extensionBap229";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap229;
return GF_OK;
case 229:
info->name = "extensionBap230";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap230;
return GF_OK;
case 230:
info->name = "extensionBap231";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap231;
return GF_OK;
case 231:
info->name = "extensionBap232";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap232;
return GF_OK;
case 232:
info->name = "extensionBap233";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap233;
return GF_OK;
case 233:
info->name = "extensionBap234";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap234;
return GF_OK;
case 234:
info->name = "extensionBap235";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap235;
return GF_OK;
case 235:
info->name = "extensionBap236";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap236;
return GF_OK;
case 236:
info->name = "extensionBap237";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap237;
return GF_OK;
case 237:
info->name = "extensionBap238";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap238;
return GF_OK;
case 238:
info->name = "extensionBap239";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap239;
return GF_OK;
case 239:
info->name = "extensionBap240";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap240;
return GF_OK;
case 240:
info->name = "extensionBap241";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap241;
return GF_OK;
case 241:
info->name = "extensionBap242";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap242;
return GF_OK;
case 242:
info->name = "extensionBap243";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap243;
return GF_OK;
case 243:
info->name = "extensionBap244";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap244;
return GF_OK;
case 244:
info->name = "extensionBap245";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap245;
return GF_OK;
case 245:
info->name = "extensionBap246";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap246;
return GF_OK;
case 246:
info->name = "extensionBap247";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap247;
return GF_OK;
case 247:
info->name = "extensionBap248";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap248;
return GF_OK;
case 248:
info->name = "extensionBap249";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap249;
return GF_OK;
case 249:
info->name = "extensionBap250";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap250;
return GF_OK;
case 250:
info->name = "extensionBap251";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap251;
return GF_OK;
case 251:
info->name = "extensionBap252";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap252;
return GF_OK;
case 252:
info->name = "extensionBap253";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap253;
return GF_OK;
case 253:
info->name = "extensionBap254";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap254;
return GF_OK;
case 254:
info->name = "extensionBap255";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap255;
return GF_OK;
case 255:
info->name = "extensionBap256";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap256;
return GF_OK;
case 256:
info->name = "extensionBap257";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap257;
return GF_OK;
case 257:
info->name = "extensionBap258";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap258;
return GF_OK;
case 258:
info->name = "extensionBap259";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap259;
return GF_OK;
case 259:
info->name = "extensionBap260";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap260;
return GF_OK;
case 260:
info->name = "extensionBap261";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap261;
return GF_OK;
case 261:
info->name = "extensionBap262";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap262;
return GF_OK;
case 262:
info->name = "extensionBap263";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap263;
return GF_OK;
case 263:
info->name = "extensionBap264";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap264;
return GF_OK;
case 264:
info->name = "extensionBap265";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap265;
return GF_OK;
case 265:
info->name = "extensionBap266";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap266;
return GF_OK;
case 266:
info->name = "extensionBap267";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap267;
return GF_OK;
case 267:
info->name = "extensionBap268";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap268;
return GF_OK;
case 268:
info->name = "extensionBap269";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap269;
return GF_OK;
case 269:
info->name = "extensionBap270";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap270;
return GF_OK;
case 270:
info->name = "extensionBap271";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap271;
return GF_OK;
case 271:
info->name = "extensionBap272";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap272;
return GF_OK;
case 272:
info->name = "extensionBap273";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap273;
return GF_OK;
case 273:
info->name = "extensionBap274";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap274;
return GF_OK;
case 274:
info->name = "extensionBap275";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap275;
return GF_OK;
case 275:
info->name = "extensionBap276";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap276;
return GF_OK;
case 276:
info->name = "extensionBap277";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap277;
return GF_OK;
case 277:
info->name = "extensionBap278";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap278;
return GF_OK;
case 278:
info->name = "extensionBap279";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap279;
return GF_OK;
case 279:
info->name = "extensionBap280";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap280;
return GF_OK;
case 280:
info->name = "extensionBap281";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap281;
return GF_OK;
case 281:
info->name = "extensionBap282";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap282;
return GF_OK;
case 282:
info->name = "extensionBap283";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap283;
return GF_OK;
case 283:
info->name = "extensionBap284";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap284;
return GF_OK;
case 284:
info->name = "extensionBap285";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap285;
return GF_OK;
case 285:
info->name = "extensionBap286";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap286;
return GF_OK;
case 286:
info->name = "extensionBap287";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap287;
return GF_OK;
case 287:
info->name = "extensionBap288";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap288;
return GF_OK;
case 288:
info->name = "extensionBap289";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap289;
return GF_OK;
case 289:
info->name = "extensionBap290";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap290;
return GF_OK;
case 290:
info->name = "extensionBap291";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap291;
return GF_OK;
case 291:
info->name = "extensionBap292";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap292;
return GF_OK;
case 292:
info->name = "extensionBap293";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap293;
return GF_OK;
case 293:
info->name = "extensionBap294";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap294;
return GF_OK;
case 294:
info->name = "extensionBap295";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap295;
return GF_OK;
case 295:
info->name = "extensionBap296";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BAP *) node)->extensionBap296;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 BAP_get_field_index_by_name(char *name)
{
if (!strcmp("sacroiliac_tilt", name)) return 0;
if (!strcmp("sacroiliac_torsion", name)) return 1;
if (!strcmp("sacroiliac_roll", name)) return 2;
if (!strcmp("l_hip_flexion", name)) return 3;
if (!strcmp("r_hip_flexion", name)) return 4;
if (!strcmp("l_hip_abduct", name)) return 5;
if (!strcmp("r_hip_abduct", name)) return 6;
if (!strcmp("l_hip_twisting", name)) return 7;
if (!strcmp("r_hip_twisting", name)) return 8;
if (!strcmp("l_knee_flexion", name)) return 9;
if (!strcmp("r_knee_flexion", name)) return 10;
if (!strcmp("l_knee_twisting", name)) return 11;
if (!strcmp("r_knee_twisting", name)) return 12;
if (!strcmp("l_ankle_flexion", name)) return 13;
if (!strcmp("r_ankle_flexion", name)) return 14;
if (!strcmp("l_ankle_twisting", name)) return 15;
if (!strcmp("r_ankle_twisting", name)) return 16;
if (!strcmp("l_subtalar_flexion", name)) return 17;
if (!strcmp("r_subtalar_flexion", name)) return 18;
if (!strcmp("l_midtarsal_flexion", name)) return 19;
if (!strcmp("r_midtarsal_flexion", name)) return 20;
if (!strcmp("l_metatarsal_flexion", name)) return 21;
if (!strcmp("r_metatarsal_flexion", name)) return 22;
if (!strcmp("l_sternoclavicular_abduct", name)) return 23;
if (!strcmp("r_sternoclavicular_abduct", name)) return 24;
if (!strcmp("l_sternoclavicular_rotate", name)) return 25;
if (!strcmp("r_sternoclavicular_rotate", name)) return 26;
if (!strcmp("l_acromioclavicular_abduct", name)) return 27;
if (!strcmp("r_acromioclavicular_abduct", name)) return 28;
if (!strcmp("l_acromioclavicular_rotate", name)) return 29;
if (!strcmp("r_acromioclavicular_rotate", name)) return 30;
if (!strcmp("l_shoulder_flexion", name)) return 31;
if (!strcmp("r_shoulder_flexion", name)) return 32;
if (!strcmp("l_shoulder_abduct", name)) return 33;
if (!strcmp("r_shoulder_abduct", name)) return 34;
if (!strcmp("l_shoulder_twisting", name)) return 35;
if (!strcmp("r_shoulder_twisting", name)) return 36;
if (!strcmp("l_elbow_flexion", name)) return 37;
if (!strcmp("r_elbow_flexion", name)) return 38;
if (!strcmp("l_elbow_twisting", name)) return 39;
if (!strcmp("r_elbow_twisting", name)) return 40;
if (!strcmp("l_wrist_flexion", name)) return 41;
if (!strcmp("r_wrist_flexion", name)) return 42;
if (!strcmp("l_wrist_pivot", name)) return 43;
if (!strcmp("r_wrist_pivot", name)) return 44;
if (!strcmp("l_wrist_twisting", name)) return 45;
if (!strcmp("r_wrist_twisting", name)) return 46;
if (!strcmp("skullbase_roll", name)) return 47;
if (!strcmp("skullbase_torsion", name)) return 48;
if (!strcmp("skullbase_tilt", name)) return 49;
if (!strcmp("vc1roll", name)) return 50;
if (!strcmp("vc1torsion", name)) return 51;
if (!strcmp("vc1tilt", name)) return 52;
if (!strcmp("vc2roll", name)) return 53;
if (!strcmp("vc2torsion", name)) return 54;
if (!strcmp("vc2tilt", name)) return 55;
if (!strcmp("vc3roll", name)) return 56;
if (!strcmp("vc3torsion", name)) return 57;
if (!strcmp("vc3tilt", name)) return 58;
if (!strcmp("vc4roll", name)) return 59;
if (!strcmp("vc4torsion", name)) return 60;
if (!strcmp("vc4tilt", name)) return 61;
if (!strcmp("vc5roll", name)) return 62;
if (!strcmp("vc5torsion", name)) return 63;
if (!strcmp("vc5tilt", name)) return 64;
if (!strcmp("vc6roll", name)) return 65;
if (!strcmp("vc6torsion", name)) return 66;
if (!strcmp("vc6tilt", name)) return 67;
if (!strcmp("vc7roll", name)) return 68;
if (!strcmp("vc7torsion", name)) return 69;
if (!strcmp("vc7tilt", name)) return 70;
if (!strcmp("vt1roll", name)) return 71;
if (!strcmp("vt1torsion", name)) return 72;
if (!strcmp("vt1tilt", name)) return 73;
if (!strcmp("vt2roll", name)) return 74;
if (!strcmp("vt2torsion", name)) return 75;
if (!strcmp("vt2tilt", name)) return 76;
if (!strcmp("vt3roll", name)) return 77;
if (!strcmp("vt3torsion", name)) return 78;
if (!strcmp("vt3tilt", name)) return 79;
if (!strcmp("vt4roll", name)) return 80;
if (!strcmp("vt4torsion", name)) return 81;
if (!strcmp("vt4tilt", name)) return 82;
if (!strcmp("vt5roll", name)) return 83;
if (!strcmp("vt5torsion", name)) return 84;
if (!strcmp("vt5tilt", name)) return 85;
if (!strcmp("vt6roll", name)) return 86;
if (!strcmp("vt6torsion", name)) return 87;
if (!strcmp("vt6tilt", name)) return 88;
if (!strcmp("vt7roll", name)) return 89;
if (!strcmp("vt7torsion", name)) return 90;
if (!strcmp("vt7tilt", name)) return 91;
if (!strcmp("vt8roll", name)) return 92;
if (!strcmp("vt8torsion", name)) return 93;
if (!strcmp("vt8tilt", name)) return 94;
if (!strcmp("vt9roll", name)) return 95;
if (!strcmp("vt9torsion", name)) return 96;
if (!strcmp("vt9tilt", name)) return 97;
if (!strcmp("vt10roll", name)) return 98;
if (!strcmp("vt10torsion", name)) return 99;
if (!strcmp("vt10tilt", name)) return 100;
if (!strcmp("vt11roll", name)) return 101;
if (!strcmp("vt11torsion", name)) return 102;
if (!strcmp("vt11tilt", name)) return 103;
if (!strcmp("vt12roll", name)) return 104;
if (!strcmp("vt12torsion", name)) return 105;
if (!strcmp("vt12tilt", name)) return 106;
if (!strcmp("vl1roll", name)) return 107;
if (!strcmp("vl1torsion", name)) return 108;
if (!strcmp("vl1tilt", name)) return 109;
if (!strcmp("vl2roll", name)) return 110;
if (!strcmp("vl2torsion", name)) return 111;
if (!strcmp("vl2tilt", name)) return 112;
if (!strcmp("vl3roll", name)) return 113;
if (!strcmp("vl3torsion", name)) return 114;
if (!strcmp("vl3tilt", name)) return 115;
if (!strcmp("vl4roll", name)) return 116;
if (!strcmp("vl4torsion", name)) return 117;
if (!strcmp("vl4tilt", name)) return 118;
if (!strcmp("vl5roll", name)) return 119;
if (!strcmp("vl5torsion", name)) return 120;
if (!strcmp("vl5tilt", name)) return 121;
if (!strcmp("l_pinky0_flexion", name)) return 122;
if (!strcmp("r_pinky0_flexion", name)) return 123;
if (!strcmp("l_pinky1_flexion", name)) return 124;
if (!strcmp("r_pinky1_flexion", name)) return 125;
if (!strcmp("l_pinky1_pivot", name)) return 126;
if (!strcmp("r_pinky1_pivot", name)) return 127;
if (!strcmp("l_pinky1_twisting", name)) return 128;
if (!strcmp("r_pinky1_twisting", name)) return 129;
if (!strcmp("l_pinky2_flexion", name)) return 130;
if (!strcmp("r_pinky2_flexion", name)) return 131;
if (!strcmp("l_pinky3_flexion", name)) return 132;
if (!strcmp("r_pinky3_flexion", name)) return 133;
if (!strcmp("l_ring0_flexion", name)) return 134;
if (!strcmp("r_ring0_flexion", name)) return 135;
if (!strcmp("l_ring1_flexion", name)) return 136;
if (!strcmp("r_ring1_flexion", name)) return 137;
if (!strcmp("l_ring1_pivot", name)) return 138;
if (!strcmp("r_ring1_pivot", name)) return 139;
if (!strcmp("l_ring1_twisting", name)) return 140;
if (!strcmp("r_ring1_twisting", name)) return 141;
if (!strcmp("l_ring2_flexion", name)) return 142;
if (!strcmp("r_ring2_flexion", name)) return 143;
if (!strcmp("l_ring3_flexion", name)) return 144;
if (!strcmp("r_ring3_flexion", name)) return 145;
if (!strcmp("l_middle0_flexion", name)) return 146;
if (!strcmp("r_middle0_flexion", name)) return 147;
if (!strcmp("l_middle1_flexion", name)) return 148;
if (!strcmp("r_middle1_flexion", name)) return 149;
if (!strcmp("l_middle1_pivot", name)) return 150;
if (!strcmp("r_middle1_pivot", name)) return 151;
if (!strcmp("l_middle1_twisting", name)) return 152;
if (!strcmp("r_middle1_twisting", name)) return 153;
if (!strcmp("l_middle2_flexion", name)) return 154;
if (!strcmp("r_middle2_flexion", name)) return 155;
if (!strcmp("l_middle3_flexion", name)) return 156;
if (!strcmp("r_middle3_flexion", name)) return 157;
if (!strcmp("l_index0_flexion", name)) return 158;
if (!strcmp("r_index0_flexion", name)) return 159;
if (!strcmp("l_index1_flexion", name)) return 160;
if (!strcmp("r_index1_flexion", name)) return 161;
if (!strcmp("l_index1_pivot", name)) return 162;
if (!strcmp("r_index1_pivot", name)) return 163;
if (!strcmp("l_index1_twisting", name)) return 164;
if (!strcmp("r_index1_twisting", name)) return 165;
if (!strcmp("l_index2_flexion", name)) return 166;
if (!strcmp("r_index2_flexion", name)) return 167;
if (!strcmp("l_index3_flexion", name)) return 168;
if (!strcmp("r_index3_flexion", name)) return 169;
if (!strcmp("l_thumb1_flexion", name)) return 170;
if (!strcmp("r_thumb1_flexion", name)) return 171;
if (!strcmp("l_thumb1_pivot", name)) return 172;
if (!strcmp("r_thumb1_pivot", name)) return 173;
if (!strcmp("l_thumb1_twisting", name)) return 174;
if (!strcmp("r_thumb1_twisting", name)) return 175;
if (!strcmp("l_thumb2_flexion", name)) return 176;
if (!strcmp("r_thumb2_flexion", name)) return 177;
if (!strcmp("l_thumb3_flexion", name)) return 178;
if (!strcmp("r_thumb3_flexion", name)) return 179;
if (!strcmp("HumanoidRoot_tr_vertical", name)) return 180;
if (!strcmp("HumanoidRoot_tr_lateral", name)) return 181;
if (!strcmp("HumanoidRoot_tr_frontal", name)) return 182;
if (!strcmp("HumanoidRoot_rt_body_turn", name)) return 183;
if (!strcmp("HumanoidRoot_rt_body_roll", name)) return 184;
if (!strcmp("HumanoidRoot_rt_body_tilt", name)) return 185;
if (!strcmp("extensionBap187", name)) return 186;
if (!strcmp("extensionBap188", name)) return 187;
if (!strcmp("extensionBap189", name)) return 188;
if (!strcmp("extensionBap190", name)) return 189;
if (!strcmp("extensionBap191", name)) return 190;
if (!strcmp("extensionBap192", name)) return 191;
if (!strcmp("extensionBap193", name)) return 192;
if (!strcmp("extensionBap194", name)) return 193;
if (!strcmp("extensionBap195", name)) return 194;
if (!strcmp("extensionBap196", name)) return 195;
if (!strcmp("extensionBap197", name)) return 196;
if (!strcmp("extensionBap198", name)) return 197;
if (!strcmp("extensionBap199", name)) return 198;
if (!strcmp("extensionBap200", name)) return 199;
if (!strcmp("extensionBap201", name)) return 200;
if (!strcmp("extensionBap202", name)) return 201;
if (!strcmp("extensionBap203", name)) return 202;
if (!strcmp("extensionBap204", name)) return 203;
if (!strcmp("extensionBap205", name)) return 204;
if (!strcmp("extensionBap206", name)) return 205;
if (!strcmp("extensionBap207", name)) return 206;
if (!strcmp("extensionBap208", name)) return 207;
if (!strcmp("extensionBap209", name)) return 208;
if (!strcmp("extensionBap210", name)) return 209;
if (!strcmp("extensionBap211", name)) return 210;
if (!strcmp("extensionBap212", name)) return 211;
if (!strcmp("extensionBap213", name)) return 212;
if (!strcmp("extensionBap214", name)) return 213;
if (!strcmp("extensionBap215", name)) return 214;
if (!strcmp("extensionBap216", name)) return 215;
if (!strcmp("extensionBap217", name)) return 216;
if (!strcmp("extensionBap218", name)) return 217;
if (!strcmp("extensionBap219", name)) return 218;
if (!strcmp("extensionBap220", name)) return 219;
if (!strcmp("extensionBap221", name)) return 220;
if (!strcmp("extensionBap222", name)) return 221;
if (!strcmp("extensionBap223", name)) return 222;
if (!strcmp("extensionBap224", name)) return 223;
if (!strcmp("extensionBap225", name)) return 224;
if (!strcmp("extensionBap226", name)) return 225;
if (!strcmp("extensionBap227", name)) return 226;
if (!strcmp("extensionBap228", name)) return 227;
if (!strcmp("extensionBap229", name)) return 228;
if (!strcmp("extensionBap230", name)) return 229;
if (!strcmp("extensionBap231", name)) return 230;
if (!strcmp("extensionBap232", name)) return 231;
if (!strcmp("extensionBap233", name)) return 232;
if (!strcmp("extensionBap234", name)) return 233;
if (!strcmp("extensionBap235", name)) return 234;
if (!strcmp("extensionBap236", name)) return 235;
if (!strcmp("extensionBap237", name)) return 236;
if (!strcmp("extensionBap238", name)) return 237;
if (!strcmp("extensionBap239", name)) return 238;
if (!strcmp("extensionBap240", name)) return 239;
if (!strcmp("extensionBap241", name)) return 240;
if (!strcmp("extensionBap242", name)) return 241;
if (!strcmp("extensionBap243", name)) return 242;
if (!strcmp("extensionBap244", name)) return 243;
if (!strcmp("extensionBap245", name)) return 244;
if (!strcmp("extensionBap246", name)) return 245;
if (!strcmp("extensionBap247", name)) return 246;
if (!strcmp("extensionBap248", name)) return 247;
if (!strcmp("extensionBap249", name)) return 248;
if (!strcmp("extensionBap250", name)) return 249;
if (!strcmp("extensionBap251", name)) return 250;
if (!strcmp("extensionBap252", name)) return 251;
if (!strcmp("extensionBap253", name)) return 252;
if (!strcmp("extensionBap254", name)) return 253;
if (!strcmp("extensionBap255", name)) return 254;
if (!strcmp("extensionBap256", name)) return 255;
if (!strcmp("extensionBap257", name)) return 256;
if (!strcmp("extensionBap258", name)) return 257;
if (!strcmp("extensionBap259", name)) return 258;
if (!strcmp("extensionBap260", name)) return 259;
if (!strcmp("extensionBap261", name)) return 260;
if (!strcmp("extensionBap262", name)) return 261;
if (!strcmp("extensionBap263", name)) return 262;
if (!strcmp("extensionBap264", name)) return 263;
if (!strcmp("extensionBap265", name)) return 264;
if (!strcmp("extensionBap266", name)) return 265;
if (!strcmp("extensionBap267", name)) return 266;
if (!strcmp("extensionBap268", name)) return 267;
if (!strcmp("extensionBap269", name)) return 268;
if (!strcmp("extensionBap270", name)) return 269;
if (!strcmp("extensionBap271", name)) return 270;
if (!strcmp("extensionBap272", name)) return 271;
if (!strcmp("extensionBap273", name)) return 272;
if (!strcmp("extensionBap274", name)) return 273;
if (!strcmp("extensionBap275", name)) return 274;
if (!strcmp("extensionBap276", name)) return 275;
if (!strcmp("extensionBap277", name)) return 276;
if (!strcmp("extensionBap278", name)) return 277;
if (!strcmp("extensionBap279", name)) return 278;
if (!strcmp("extensionBap280", name)) return 279;
if (!strcmp("extensionBap281", name)) return 280;
if (!strcmp("extensionBap282", name)) return 281;
if (!strcmp("extensionBap283", name)) return 282;
if (!strcmp("extensionBap284", name)) return 283;
if (!strcmp("extensionBap285", name)) return 284;
if (!strcmp("extensionBap286", name)) return 285;
if (!strcmp("extensionBap287", name)) return 286;
if (!strcmp("extensionBap288", name)) return 287;
if (!strcmp("extensionBap289", name)) return 288;
if (!strcmp("extensionBap290", name)) return 289;
if (!strcmp("extensionBap291", name)) return 290;
if (!strcmp("extensionBap292", name)) return 291;
if (!strcmp("extensionBap293", name)) return 292;
if (!strcmp("extensionBap294", name)) return 293;
if (!strcmp("extensionBap295", name)) return 294;
if (!strcmp("extensionBap296", name)) return 295;
return -1;
}
static Bool BAP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 10:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 11:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 12:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 13:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 14:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 15:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 16:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 17:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 18:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 19:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 20:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 21:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 22:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 23:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 24:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 25:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 26:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 27:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 28:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 29:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 30:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 31:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 32:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 33:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 34:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 35:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 36:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 37:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 38:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 39:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 40:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 41:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 42:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 43:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 44:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 45:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 46:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 47:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 48:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 49:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 50:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 51:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 52:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 53:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 54:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 55:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 56:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 57:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 58:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 59:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 60:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 61:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 62:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 63:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 64:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 65:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 66:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 67:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 68:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 69:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 70:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 71:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 72:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 73:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 74:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 75:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 76:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 77:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 78:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 79:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 80:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 81:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 82:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 83:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 84:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 85:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 86:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 87:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 88:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 89:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 90:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 91:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 92:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 93:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 94:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 95:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 96:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 97:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 98:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 99:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 100:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 101:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 102:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 103:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 104:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 105:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 106:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 107:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 108:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 109:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 110:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 111:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 112:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 113:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 114:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 115:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 116:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 117:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 118:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 119:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 120:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 121:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 122:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 123:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 124:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 125:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 126:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 127:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 128:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 129:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 130:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 131:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 132:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 133:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 134:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 135:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 136:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 137:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 138:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 139:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 140:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 141:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 142:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 143:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 144:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 145:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 146:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 147:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 148:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 149:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 150:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 151:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 152:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 153:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 154:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 155:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 156:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 157:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 158:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 159:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 160:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 161:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 162:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 163:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 164:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 165:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 166:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 167:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 168:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 169:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 170:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 171:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 172:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 173:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 174:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 175:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 176:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 177:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 178:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 179:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 180:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 181:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 182:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 183:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 184:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 185:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 186:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 187:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 188:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 189:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 190:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 191:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 192:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 193:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 194:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 195:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 196:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 197:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 198:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 199:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 200:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 201:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 202:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 203:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 204:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 205:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 206:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 207:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 208:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 209:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 210:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 211:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 212:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 213:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 214:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 215:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 216:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 217:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 218:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 219:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 220:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 221:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 222:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 223:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 224:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 225:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 226:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 227:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 228:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 229:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 230:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 231:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 232:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 233:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 234:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 235:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 236:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 237:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 238:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 239:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 240:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 241:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 242:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 243:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 244:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 245:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 246:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 247:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 248:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 249:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 250:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 251:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 252:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 253:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 254:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 255:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 256:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 257:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 258:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 259:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 260:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 261:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 262:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 263:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 264:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 265:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 266:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 267:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 268:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 269:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 270:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 271:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 272:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 273:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 274:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 275:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 276:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 277:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 278:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 279:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 280:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 281:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 282:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 283:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 284:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 285:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 286:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 287:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 288:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 289:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 290:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 291:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 292:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 293:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 294:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 295:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *BAP_Create()
{
M_BAP *p;
GF_SAFEALLOC(p, M_BAP);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_BAP);
p->sacroiliac_tilt = 1 << 31;
p->sacroiliac_torsion = 1 << 31;
p->sacroiliac_roll = 1 << 31;
p->l_hip_flexion = 1 << 31;
p->r_hip_flexion = 1 << 31;
p->l_hip_abduct = 1 << 31;
p->r_hip_abduct = 1 << 31;
p->l_hip_twisting = 1 << 31;
p->r_hip_twisting = 1 << 31;
p->l_knee_flexion = 1 << 31;
p->r_knee_flexion = 1 << 31;
p->l_knee_twisting = 1 << 31;
p->r_knee_twisting = 1 << 31;
p->l_ankle_flexion = 1 << 31;
p->r_ankle_flexion = 1 << 31;
p->l_ankle_twisting = 1 << 31;
p->r_ankle_twisting = 1 << 31;
p->l_subtalar_flexion = 1 << 31;
p->r_subtalar_flexion = 1 << 31;
p->l_midtarsal_flexion = 1 << 31;
p->r_midtarsal_flexion = 1 << 31;
p->l_metatarsal_flexion = 1 << 31;
p->r_metatarsal_flexion = 1 << 31;
p->l_sternoclavicular_abduct = 1 << 31;
p->r_sternoclavicular_abduct = 1 << 31;
p->l_sternoclavicular_rotate = 1 << 31;
p->r_sternoclavicular_rotate = 1 << 31;
p->l_acromioclavicular_abduct = 1 << 31;
p->r_acromioclavicular_abduct = 1 << 31;
p->l_acromioclavicular_rotate = 1 << 31;
p->r_acromioclavicular_rotate = 1 << 31;
p->l_shoulder_flexion = 1 << 31;
p->r_shoulder_flexion = 1 << 31;
p->l_shoulder_abduct = 1 << 31;
p->r_shoulder_abduct = 1 << 31;
p->l_shoulder_twisting = 1 << 31;
p->r_shoulder_twisting = 1 << 31;
p->l_elbow_flexion = 1 << 31;
p->r_elbow_flexion = 1 << 31;
p->l_elbow_twisting = 1 << 31;
p->r_elbow_twisting = 1 << 31;
p->l_wrist_flexion = 1 << 31;
p->r_wrist_flexion = 1 << 31;
p->l_wrist_pivot = 1 << 31;
p->r_wrist_pivot = 1 << 31;
p->l_wrist_twisting = 1 << 31;
p->r_wrist_twisting = 1 << 31;
p->skullbase_roll = 1 << 31;
p->skullbase_torsion = 1 << 31;
p->skullbase_tilt = 1 << 31;
p->vc1roll = 1 << 31;
p->vc1torsion = 1 << 31;
p->vc1tilt = 1 << 31;
p->vc2roll = 1 << 31;
p->vc2torsion = 1 << 31;
p->vc2tilt = 1 << 31;
p->vc3roll = 1 << 31;
p->vc3torsion = 1 << 31;
p->vc3tilt = 1 << 31;
p->vc4roll = 1 << 31;
p->vc4torsion = 1 << 31;
p->vc4tilt = 1 << 31;
p->vc5roll = 1 << 31;
p->vc5torsion = 1 << 31;
p->vc5tilt = 1 << 31;
p->vc6roll = 1 << 31;
p->vc6torsion = 1 << 31;
p->vc6tilt = 1 << 31;
p->vc7roll = 1 << 31;
p->vc7torsion = 1 << 31;
p->vc7tilt = 1 << 31;
p->vt1roll = 1 << 31;
p->vt1torsion = 1 << 31;
p->vt1tilt = 1 << 31;
p->vt2roll = 1 << 31;
p->vt2torsion = 1 << 31;
p->vt2tilt = 1 << 31;
p->vt3roll = 1 << 31;
p->vt3torsion = 1 << 31;
p->vt3tilt = 1 << 31;
p->vt4roll = 1 << 31;
p->vt4torsion = 1 << 31;
p->vt4tilt = 1 << 31;
p->vt5roll = 1 << 31;
p->vt5torsion = 1 << 31;
p->vt5tilt = 1 << 31;
p->vt6roll = 1 << 31;
p->vt6torsion = 1 << 31;
p->vt6tilt = 1 << 31;
p->vt7roll = 1 << 31;
p->vt7torsion = 1 << 31;
p->vt7tilt = 1 << 31;
p->vt8roll = 1 << 31;
p->vt8torsion = 1 << 31;
p->vt8tilt = 1 << 31;
p->vt9roll = 1 << 31;
p->vt9torsion = 1 << 31;
p->vt9tilt = 1 << 31;
p->vt10roll = 1 << 31;
p->vt10torsion = 1 << 31;
p->vt10tilt = 1 << 31;
p->vt11roll = 1 << 31;
p->vt11torsion = 1 << 31;
p->vt11tilt = 1 << 31;
p->vt12roll = 1 << 31;
p->vt12torsion = 1 << 31;
p->vt12tilt = 1 << 31;
p->vl1roll = 1 << 31;
p->vl1torsion = 1 << 31;
p->vl1tilt = 1 << 31;
p->vl2roll = 1 << 31;
p->vl2torsion = 1 << 31;
p->vl2tilt = 1 << 31;
p->vl3roll = 1 << 31;
p->vl3torsion = 1 << 31;
p->vl3tilt = 1 << 31;
p->vl4roll = 1 << 31;
p->vl4torsion = 1 << 31;
p->vl4tilt = 1 << 31;
p->vl5roll = 1 << 31;
p->vl5torsion = 1 << 31;
p->vl5tilt = 1 << 31;
p->l_pinky0_flexion = 1 << 31;
p->r_pinky0_flexion = 1 << 31;
p->l_pinky1_flexion = 1 << 31;
p->r_pinky1_flexion = 1 << 31;
p->l_pinky1_pivot = 1 << 31;
p->r_pinky1_pivot = 1 << 31;
p->l_pinky1_twisting = 1 << 31;
p->r_pinky1_twisting = 1 << 31;
p->l_pinky2_flexion = 1 << 31;
p->r_pinky2_flexion = 1 << 31;
p->l_pinky3_flexion = 1 << 31;
p->r_pinky3_flexion = 1 << 31;
p->l_ring0_flexion = 1 << 31;
p->r_ring0_flexion = 1 << 31;
p->l_ring1_flexion = 1 << 31;
p->r_ring1_flexion = 1 << 31;
p->l_ring1_pivot = 1 << 31;
p->r_ring1_pivot = 1 << 31;
p->l_ring1_twisting = 1 << 31;
p->r_ring1_twisting = 1 << 31;
p->l_ring2_flexion = 1 << 31;
p->r_ring2_flexion = 1 << 31;
p->l_ring3_flexion = 1 << 31;
p->r_ring3_flexion = 1 << 31;
p->l_middle0_flexion = 1 << 31;
p->r_middle0_flexion = 1 << 31;
p->l_middle1_flexion = 1 << 31;
p->r_middle1_flexion = 1 << 31;
p->l_middle1_pivot = 1 << 31;
p->r_middle1_pivot = 1 << 31;
p->l_middle1_twisting = 1 << 31;
p->r_middle1_twisting = 1 << 31;
p->l_middle2_flexion = 1 << 31;
p->r_middle2_flexion = 1 << 31;
p->l_middle3_flexion = 1 << 31;
p->r_middle3_flexion = 1 << 31;
p->l_index0_flexion = 1 << 31;
p->r_index0_flexion = 1 << 31;
p->l_index1_flexion = 1 << 31;
p->r_index1_flexion = 1 << 31;
p->l_index1_pivot = 1 << 31;
p->r_index1_pivot = 1 << 31;
p->l_index1_twisting = 1 << 31;
p->r_index1_twisting = 1 << 31;
p->l_index2_flexion = 1 << 31;
p->r_index2_flexion = 1 << 31;
p->l_index3_flexion = 1 << 31;
p->r_index3_flexion = 1 << 31;
p->l_thumb1_flexion = 1 << 31;
p->r_thumb1_flexion = 1 << 31;
p->l_thumb1_pivot = 1 << 31;
p->r_thumb1_pivot = 1 << 31;
p->l_thumb1_twisting = 1 << 31;
p->r_thumb1_twisting = 1 << 31;
p->l_thumb2_flexion = 1 << 31;
p->r_thumb2_flexion = 1 << 31;
p->l_thumb3_flexion = 1 << 31;
p->r_thumb3_flexion = 1 << 31;
p->HumanoidRoot_tr_vertical = 1 << 31;
p->HumanoidRoot_tr_lateral = 1 << 31;
p->HumanoidRoot_tr_frontal = 1 << 31;
p->HumanoidRoot_rt_body_turn = 1 << 31;
p->HumanoidRoot_rt_body_roll = 1 << 31;
p->HumanoidRoot_rt_body_tilt = 1 << 31;
p->extensionBap187 = 1 << 31;
p->extensionBap188 = 1 << 31;
p->extensionBap189 = 1 << 31;
p->extensionBap190 = 1 << 31;
p->extensionBap191 = 1 << 31;
p->extensionBap192 = 1 << 31;
p->extensionBap193 = 1 << 31;
p->extensionBap194 = 1 << 31;
p->extensionBap195 = 1 << 31;
p->extensionBap196 = 1 << 31;
p->extensionBap197 = 1 << 31;
p->extensionBap198 = 1 << 31;
p->extensionBap199 = 1 << 31;
p->extensionBap200 = 1 << 31;
p->extensionBap201 = 1 << 31;
p->extensionBap202 = 1 << 31;
p->extensionBap203 = 1 << 31;
p->extensionBap204 = 1 << 31;
p->extensionBap205 = 1 << 31;
p->extensionBap206 = 1 << 31;
p->extensionBap207 = 1 << 31;
p->extensionBap208 = 1 << 31;
p->extensionBap209 = 1 << 31;
p->extensionBap210 = 1 << 31;
p->extensionBap211 = 1 << 31;
p->extensionBap212 = 1 << 31;
p->extensionBap213 = 1 << 31;
p->extensionBap214 = 1 << 31;
p->extensionBap215 = 1 << 31;
p->extensionBap216 = 1 << 31;
p->extensionBap217 = 1 << 31;
p->extensionBap218 = 1 << 31;
p->extensionBap219 = 1 << 31;
p->extensionBap220 = 1 << 31;
p->extensionBap221 = 1 << 31;
p->extensionBap222 = 1 << 31;
p->extensionBap223 = 1 << 31;
p->extensionBap224 = 1 << 31;
p->extensionBap225 = 1 << 31;
p->extensionBap226 = 1 << 31;
p->extensionBap227 = 1 << 31;
p->extensionBap228 = 1 << 31;
p->extensionBap229 = 1 << 31;
p->extensionBap230 = 1 << 31;
p->extensionBap231 = 1 << 31;
p->extensionBap232 = 1 << 31;
p->extensionBap233 = 1 << 31;
p->extensionBap234 = 1 << 31;
p->extensionBap235 = 1 << 31;
p->extensionBap236 = 1 << 31;
p->extensionBap237 = 1 << 31;
p->extensionBap238 = 1 << 31;
p->extensionBap239 = 1 << 31;
p->extensionBap240 = 1 << 31;
p->extensionBap241 = 1 << 31;
p->extensionBap242 = 1 << 31;
p->extensionBap243 = 1 << 31;
p->extensionBap244 = 1 << 31;
p->extensionBap245 = 1 << 31;
p->extensionBap246 = 1 << 31;
p->extensionBap247 = 1 << 31;
p->extensionBap248 = 1 << 31;
p->extensionBap249 = 1 << 31;
p->extensionBap250 = 1 << 31;
p->extensionBap251 = 1 << 31;
p->extensionBap252 = 1 << 31;
p->extensionBap253 = 1 << 31;
p->extensionBap254 = 1 << 31;
p->extensionBap255 = 1 << 31;
p->extensionBap256 = 1 << 31;
p->extensionBap257 = 1 << 31;
p->extensionBap258 = 1 << 31;
p->extensionBap259 = 1 << 31;
p->extensionBap260 = 1 << 31;
p->extensionBap261 = 1 << 31;
p->extensionBap262 = 1 << 31;
p->extensionBap263 = 1 << 31;
p->extensionBap264 = 1 << 31;
p->extensionBap265 = 1 << 31;
p->extensionBap266 = 1 << 31;
p->extensionBap267 = 1 << 31;
p->extensionBap268 = 1 << 31;
p->extensionBap269 = 1 << 31;
p->extensionBap270 = 1 << 31;
p->extensionBap271 = 1 << 31;
p->extensionBap272 = 1 << 31;
p->extensionBap273 = 1 << 31;
p->extensionBap274 = 1 << 31;
p->extensionBap275 = 1 << 31;
p->extensionBap276 = 1 << 31;
p->extensionBap277 = 1 << 31;
p->extensionBap278 = 1 << 31;
p->extensionBap279 = 1 << 31;
p->extensionBap280 = 1 << 31;
p->extensionBap281 = 1 << 31;
p->extensionBap282 = 1 << 31;
p->extensionBap283 = 1 << 31;
p->extensionBap284 = 1 << 31;
p->extensionBap285 = 1 << 31;
p->extensionBap286 = 1 << 31;
p->extensionBap287 = 1 << 31;
p->extensionBap288 = 1 << 31;
p->extensionBap289 = 1 << 31;
p->extensionBap290 = 1 << 31;
p->extensionBap291 = 1 << 31;
p->extensionBap292 = 1 << 31;
p->extensionBap293 = 1 << 31;
p->extensionBap294 = 1 << 31;
p->extensionBap295 = 1 << 31;
p->extensionBap296 = 1 << 31;
return (GF_Node *)p;
}
static void BDP_Del(GF_Node *node)
{
M_BDP *p = (M_BDP *) node;
gf_node_unregister_children((GF_Node *) p, p->bodyDefTables);
gf_node_unregister_children((GF_Node *) p, p->bodySceneGraph);
gf_node_free((GF_Node *) p);
}
static const u16 BDP_Def2All[] = { 0, 1};
static const u16 BDP_In2All[] = { 0, 1};
static const u16 BDP_Out2All[] = { 0, 1};
static u32 BDP_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err BDP_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = BDP_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = BDP_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = BDP_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err BDP_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "bodyDefTables";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFBodyDefTableNode;
info->far_ptr = & ((M_BDP *)node)->bodyDefTables;
return GF_OK;
case 1:
info->name = "bodySceneGraph";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_BDP *)node)->bodySceneGraph;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 BDP_get_field_index_by_name(char *name)
{
if (!strcmp("bodyDefTables", name)) return 0;
if (!strcmp("bodySceneGraph", name)) return 1;
return -1;
}
static Bool BDP_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *BDP_Create()
{
M_BDP *p;
GF_SAFEALLOC(p, M_BDP);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_BDP);
return (GF_Node *)p;
}
static void Body_Del(GF_Node *node)
{
M_Body *p = (M_Body *) node;
gf_node_unregister((GF_Node *) p->bdp, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->bap, (GF_Node *) p);
gf_node_unregister_children((GF_Node *) p, p->renderedBody);
gf_node_free((GF_Node *) p);
}
static const u16 Body_Def2All[] = { 0, 1, 2};
static const u16 Body_In2All[] = { 0, 1, 2};
static const u16 Body_Out2All[] = { 0, 1, 2};
static u32 Body_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 3;
}
}
static GF_Err Body_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Body_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Body_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Body_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Body_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "bdp";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFBDPNode;
info->far_ptr = & ((M_Body *)node)->bdp;
return GF_OK;
case 1:
info->name = "bap";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFBAPNode;
info->far_ptr = & ((M_Body *)node)->bap;
return GF_OK;
case 2:
info->name = "renderedBody";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Body *)node)->renderedBody;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Body_get_field_index_by_name(char *name)
{
if (!strcmp("bdp", name)) return 0;
if (!strcmp("bap", name)) return 1;
if (!strcmp("renderedBody", name)) return 2;
return -1;
}
static Bool Body_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Body_Create()
{
M_Body *p;
GF_SAFEALLOC(p, M_Body);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Body);
return (GF_Node *)p;
}
static void BodyDefTable_Del(GF_Node *node)
{
M_BodyDefTable *p = (M_BodyDefTable *) node;
gf_sg_sfstring_del(p->bodySceneGraphNodeName);
gf_sg_mfint32_del(p->bapIDs);
gf_sg_mfint32_del(p->vertexIds);
gf_sg_mfint32_del(p->bapCombinations);
gf_sg_mfvec3f_del(p->displacements);
gf_node_free((GF_Node *) p);
}
static const u16 BodyDefTable_Def2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 BodyDefTable_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 BodyDefTable_Out2All[] = { 0, 1, 2, 3, 4, 5};
static u32 BodyDefTable_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 6;
}
}
static GF_Err BodyDefTable_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = BodyDefTable_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = BodyDefTable_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = BodyDefTable_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err BodyDefTable_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "bodySceneGraphNodeName";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_BodyDefTable *) node)->bodySceneGraphNodeName;
return GF_OK;
case 1:
info->name = "bapIDs";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_BodyDefTable *) node)->bapIDs;
return GF_OK;
case 2:
info->name = "vertexIds";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_BodyDefTable *) node)->vertexIds;
return GF_OK;
case 3:
info->name = "bapCombinations";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_BodyDefTable *) node)->bapCombinations;
return GF_OK;
case 4:
info->name = "displacements";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_BodyDefTable *) node)->displacements;
return GF_OK;
case 5:
info->name = "numInterpolateKeys";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BodyDefTable *) node)->numInterpolateKeys;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 BodyDefTable_get_field_index_by_name(char *name)
{
if (!strcmp("bodySceneGraphNodeName", name)) return 0;
if (!strcmp("bapIDs", name)) return 1;
if (!strcmp("vertexIds", name)) return 2;
if (!strcmp("bapCombinations", name)) return 3;
if (!strcmp("displacements", name)) return 4;
if (!strcmp("numInterpolateKeys", name)) return 5;
return -1;
}
static Bool BodyDefTable_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 9;
*b_min = FLT2FIX(1);
*b_max = FLT2FIX(296);
return 1;
case 2:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(2);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *BodyDefTable_Create()
{
M_BodyDefTable *p;
GF_SAFEALLOC(p, M_BodyDefTable);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_BodyDefTable);
p->numInterpolateKeys = 2;
return (GF_Node *)p;
}
static void BodySegmentConnectionHint_Del(GF_Node *node)
{
M_BodySegmentConnectionHint *p = (M_BodySegmentConnectionHint *) node;
gf_sg_sfstring_del(p->firstSegmentNodeName);
gf_sg_sfstring_del(p->secondSegmentNodeName);
gf_sg_mfint32_del(p->firstVertexIdList);
gf_sg_mfint32_del(p->secondVertexIdList);
gf_node_free((GF_Node *) p);
}
static const u16 BodySegmentConnectionHint_Def2All[] = { 0, 1, 2, 3};
static const u16 BodySegmentConnectionHint_In2All[] = { 0, 1, 2, 3};
static const u16 BodySegmentConnectionHint_Out2All[] = { 0, 1, 2, 3};
static u32 BodySegmentConnectionHint_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err BodySegmentConnectionHint_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = BodySegmentConnectionHint_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = BodySegmentConnectionHint_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = BodySegmentConnectionHint_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err BodySegmentConnectionHint_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "firstSegmentNodeName";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->firstSegmentNodeName;
return GF_OK;
case 1:
info->name = "secondSegmentNodeName";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->secondSegmentNodeName;
return GF_OK;
case 2:
info->name = "firstVertexIdList";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->firstVertexIdList;
return GF_OK;
case 3:
info->name = "secondVertexIdList";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_BodySegmentConnectionHint *) node)->secondVertexIdList;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 BodySegmentConnectionHint_get_field_index_by_name(char *name)
{
if (!strcmp("firstSegmentNodeName", name)) return 0;
if (!strcmp("secondSegmentNodeName", name)) return 1;
if (!strcmp("firstVertexIdList", name)) return 2;
if (!strcmp("secondVertexIdList", name)) return 3;
return -1;
}
static Bool BodySegmentConnectionHint_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *BodySegmentConnectionHint_Create()
{
M_BodySegmentConnectionHint *p;
GF_SAFEALLOC(p, M_BodySegmentConnectionHint);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_BodySegmentConnectionHint);
return (GF_Node *)p;
}
static void DirectiveSound_Del(GF_Node *node)
{
M_DirectiveSound *p = (M_DirectiveSound *) node;
gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->perceptualParameters, (GF_Node *) p);
gf_sg_mffloat_del(p->directivity);
gf_sg_mffloat_del(p->angles);
gf_sg_mffloat_del(p->frequency);
gf_node_free((GF_Node *) p);
}
static const u16 DirectiveSound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static const u16 DirectiveSound_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 DirectiveSound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 DirectiveSound_Dyn2All[] = { 0, 1, 2};
static u32 DirectiveSound_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 13;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 3;
default:
return 13;
}
}
static GF_Err DirectiveSound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = DirectiveSound_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = DirectiveSound_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = DirectiveSound_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = DirectiveSound_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err DirectiveSound_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "direction";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_DirectiveSound *) node)->direction;
return GF_OK;
case 1:
info->name = "intensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DirectiveSound *) node)->intensity;
return GF_OK;
case 2:
info->name = "location";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_DirectiveSound *) node)->location;
return GF_OK;
case 3:
info->name = "source";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_DirectiveSound *)node)->source;
return GF_OK;
case 4:
info->name = "perceptualParameters";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFPerceptualParameterNode;
info->far_ptr = & ((M_DirectiveSound *)node)->perceptualParameters;
return GF_OK;
case 5:
info->name = "roomEffect";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_DirectiveSound *) node)->roomEffect;
return GF_OK;
case 6:
info->name = "spatialize";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_DirectiveSound *) node)->spatialize;
return GF_OK;
case 7:
info->name = "directivity";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_DirectiveSound *) node)->directivity;
return GF_OK;
case 8:
info->name = "angles";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_DirectiveSound *) node)->angles;
return GF_OK;
case 9:
info->name = "frequency";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_DirectiveSound *) node)->frequency;
return GF_OK;
case 10:
info->name = "speedOfSound";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DirectiveSound *) node)->speedOfSound;
return GF_OK;
case 11:
info->name = "distance";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DirectiveSound *) node)->distance;
return GF_OK;
case 12:
info->name = "useAirabs";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_DirectiveSound *) node)->useAirabs;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 DirectiveSound_get_field_index_by_name(char *name)
{
if (!strcmp("direction", name)) return 0;
if (!strcmp("intensity", name)) return 1;
if (!strcmp("location", name)) return 2;
if (!strcmp("source", name)) return 3;
if (!strcmp("perceptualParameters", name)) return 4;
if (!strcmp("roomEffect", name)) return 5;
if (!strcmp("spatialize", name)) return 6;
if (!strcmp("directivity", name)) return 7;
if (!strcmp("angles", name)) return 8;
if (!strcmp("frequency", name)) return 9;
if (!strcmp("speedOfSound", name)) return 10;
if (!strcmp("distance", name)) return 11;
if (!strcmp("useAirabs", name)) return 12;
return -1;
}
static Bool DirectiveSound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 9;
*QType = 9;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(3.14159265);
return 1;
case 9:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 10:
*AType = 0;
*QType = 1;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 11:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *DirectiveSound_Create()
{
M_DirectiveSound *p;
GF_SAFEALLOC(p, M_DirectiveSound);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_DirectiveSound);
p->direction.x = FLT2FIX(0);
p->direction.y = FLT2FIX(0);
p->direction.z = FLT2FIX(-1);
p->intensity = FLT2FIX(1);
p->location.x = FLT2FIX(0);
p->location.y = FLT2FIX(0);
p->location.z = FLT2FIX(0);
p->spatialize = 1;
p->directivity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->directivity.count = 1;
p->directivity.vals[0] = FLT2FIX(1);
p->angles.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->angles.count = 1;
p->angles.vals[0] = FLT2FIX(1);
p->speedOfSound = FLT2FIX(340);
p->distance = FLT2FIX(100);
return (GF_Node *)p;
}
static void Hierarchical3DMesh_Del(GF_Node *node)
{
M_Hierarchical3DMesh *p = (M_Hierarchical3DMesh *) node;
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 Hierarchical3DMesh_Def2All[] = { 1, 2};
static const u16 Hierarchical3DMesh_In2All[] = { 0, 1};
static const u16 Hierarchical3DMesh_Out2All[] = { 1, 3};
static u32 Hierarchical3DMesh_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err Hierarchical3DMesh_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Hierarchical3DMesh_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Hierarchical3DMesh_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Hierarchical3DMesh_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Hierarchical3DMesh_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "triangleBudget";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Hierarchical3DMesh *)node)->on_triangleBudget;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Hierarchical3DMesh *) node)->triangleBudget;
return GF_OK;
case 1:
info->name = "level";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Hierarchical3DMesh *) node)->level;
return GF_OK;
case 2:
info->name = "url";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_Hierarchical3DMesh *) node)->url;
return GF_OK;
case 3:
info->name = "doneLoading";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Hierarchical3DMesh *) node)->doneLoading;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Hierarchical3DMesh_get_field_index_by_name(char *name)
{
if (!strcmp("triangleBudget", name)) return 0;
if (!strcmp("level", name)) return 1;
if (!strcmp("url", name)) return 2;
if (!strcmp("doneLoading", name)) return 3;
return -1;
}
static Bool Hierarchical3DMesh_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Hierarchical3DMesh_Create()
{
M_Hierarchical3DMesh *p;
GF_SAFEALLOC(p, M_Hierarchical3DMesh);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Hierarchical3DMesh);
p->level = FLT2FIX(1);
return (GF_Node *)p;
}
static void MaterialKey_Del(GF_Node *node)
{
M_MaterialKey *p = (M_MaterialKey *) node;
gf_node_free((GF_Node *) p);
}
static const u16 MaterialKey_Def2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 MaterialKey_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 MaterialKey_Out2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 MaterialKey_Dyn2All[] = { 2, 3, 4, 5};
static u32 MaterialKey_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 4;
default:
return 6;
}
}
static GF_Err MaterialKey_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = MaterialKey_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = MaterialKey_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = MaterialKey_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = MaterialKey_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err MaterialKey_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "isKeyed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MaterialKey *) node)->isKeyed;
return GF_OK;
case 1:
info->name = "isRGB";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MaterialKey *) node)->isRGB;
return GF_OK;
case 2:
info->name = "keyColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_MaterialKey *) node)->keyColor;
return GF_OK;
case 3:
info->name = "lowThreshold";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_MaterialKey *) node)->lowThreshold;
return GF_OK;
case 4:
info->name = "highThreshold";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_MaterialKey *) node)->highThreshold;
return GF_OK;
case 5:
info->name = "transparency";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_MaterialKey *) node)->transparency;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 MaterialKey_get_field_index_by_name(char *name)
{
if (!strcmp("isKeyed", name)) return 0;
if (!strcmp("isRGB", name)) return 1;
if (!strcmp("keyColor", name)) return 2;
if (!strcmp("lowThreshold", name)) return 3;
if (!strcmp("highThreshold", name)) return 4;
if (!strcmp("transparency", name)) return 5;
return -1;
}
static Bool MaterialKey_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 3:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 4:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 5:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *MaterialKey_Create()
{
M_MaterialKey *p;
GF_SAFEALLOC(p, M_MaterialKey);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_MaterialKey);
p->isKeyed = 1;
p->isRGB = 1;
p->keyColor.red = FLT2FIX(0);
p->keyColor.green = FLT2FIX(0);
p->keyColor.blue = FLT2FIX(0);
p->lowThreshold = FLT2FIX(0);
p->highThreshold = FLT2FIX(0);
p->transparency = FLT2FIX(0);
return (GF_Node *)p;
}
static void PerceptualParameters_Del(GF_Node *node)
{
M_PerceptualParameters *p = (M_PerceptualParameters *) node;
gf_sg_mffloat_del(p->omniDirectivity);
gf_sg_mffloat_del(p->directFilterGains);
gf_sg_mffloat_del(p->inputFilterGains);
gf_node_free((GF_Node *) p);
}
static const u16 PerceptualParameters_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
static const u16 PerceptualParameters_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
static const u16 PerceptualParameters_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
static const u16 PerceptualParameters_Dyn2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
static u32 PerceptualParameters_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 19;
case GF_SG_FIELD_CODING_DEF:
return 19;
case GF_SG_FIELD_CODING_OUT:
return 19;
case GF_SG_FIELD_CODING_DYN:
return 15;
default:
return 19;
}
}
static GF_Err PerceptualParameters_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PerceptualParameters_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PerceptualParameters_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PerceptualParameters_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = PerceptualParameters_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PerceptualParameters_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "sourcePresence";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->sourcePresence;
return GF_OK;
case 1:
info->name = "sourceWarmth";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->sourceWarmth;
return GF_OK;
case 2:
info->name = "sourceBrilliance";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->sourceBrilliance;
return GF_OK;
case 3:
info->name = "roomPresence";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->roomPresence;
return GF_OK;
case 4:
info->name = "runningReverberance";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->runningReverberance;
return GF_OK;
case 5:
info->name = "envelopment";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->envelopment;
return GF_OK;
case 6:
info->name = "lateReverberance";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->lateReverberance;
return GF_OK;
case 7:
info->name = "heavyness";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->heavyness;
return GF_OK;
case 8:
info->name = "liveness";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->liveness;
return GF_OK;
case 9:
info->name = "omniDirectivity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->omniDirectivity;
return GF_OK;
case 10:
info->name = "directFilterGains";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->directFilterGains;
return GF_OK;
case 11:
info->name = "inputFilterGains";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->inputFilterGains;
return GF_OK;
case 12:
info->name = "refDistance";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->refDistance;
return GF_OK;
case 13:
info->name = "freqLow";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->freqLow;
return GF_OK;
case 14:
info->name = "freqHigh";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PerceptualParameters *) node)->freqHigh;
return GF_OK;
case 15:
info->name = "timeLimit1";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_PerceptualParameters *) node)->timeLimit1;
return GF_OK;
case 16:
info->name = "timeLimit2";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_PerceptualParameters *) node)->timeLimit2;
return GF_OK;
case 17:
info->name = "timeLimit3";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_PerceptualParameters *) node)->timeLimit3;
return GF_OK;
case 18:
info->name = "modalDensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_PerceptualParameters *) node)->modalDensity;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PerceptualParameters_get_field_index_by_name(char *name)
{
if (!strcmp("sourcePresence", name)) return 0;
if (!strcmp("sourceWarmth", name)) return 1;
if (!strcmp("sourceBrilliance", name)) return 2;
if (!strcmp("roomPresence", name)) return 3;
if (!strcmp("runningReverberance", name)) return 4;
if (!strcmp("envelopment", name)) return 5;
if (!strcmp("lateReverberance", name)) return 6;
if (!strcmp("heavyness", name)) return 7;
if (!strcmp("liveness", name)) return 8;
if (!strcmp("omniDirectivity", name)) return 9;
if (!strcmp("directFilterGains", name)) return 10;
if (!strcmp("inputFilterGains", name)) return 11;
if (!strcmp("refDistance", name)) return 12;
if (!strcmp("freqLow", name)) return 13;
if (!strcmp("freqHigh", name)) return 14;
if (!strcmp("timeLimit1", name)) return 15;
if (!strcmp("timeLimit2", name)) return 16;
if (!strcmp("timeLimit3", name)) return 17;
if (!strcmp("modalDensity", name)) return 18;
return -1;
}
static Bool PerceptualParameters_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 10:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 11:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 12:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 13:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 14:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 15:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 16:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 17:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 18:
*AType = 0;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *PerceptualParameters_Create()
{
M_PerceptualParameters *p;
GF_SAFEALLOC(p, M_PerceptualParameters);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PerceptualParameters);
p->sourcePresence = FLT2FIX(1.0);
p->sourceWarmth = FLT2FIX(1.0);
p->sourceBrilliance = FLT2FIX(1.0);
p->roomPresence = FLT2FIX(1.0);
p->runningReverberance = FLT2FIX(1.0);
p->envelopment = FLT2FIX(0.0);
p->lateReverberance = FLT2FIX(1.0);
p->heavyness = FLT2FIX(1.0);
p->liveness = FLT2FIX(1.0);
p->omniDirectivity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->omniDirectivity.count = 1;
p->omniDirectivity.vals[0] = FLT2FIX(1.0);
p->directFilterGains.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*3);
p->directFilterGains.count = 3;
p->directFilterGains.vals[0] = FLT2FIX(1.0);
p->directFilterGains.vals[1] = FLT2FIX(1.0);
p->directFilterGains.vals[2] = FLT2FIX(1.0);
p->inputFilterGains.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*3);
p->inputFilterGains.count = 3;
p->inputFilterGains.vals[0] = FLT2FIX(1.0);
p->inputFilterGains.vals[1] = FLT2FIX(1.0);
p->inputFilterGains.vals[2] = FLT2FIX(1.0);
p->refDistance = FLT2FIX(1.0);
p->freqLow = FLT2FIX(250.0);
p->freqHigh = FLT2FIX(4000.0);
p->timeLimit1 = 0.02;
p->timeLimit2 = 0.04;
p->timeLimit3 = 0.1;
p->modalDensity = 0.8;
return (GF_Node *)p;
}
static void TemporalTransform_Del(GF_Node *node)
{
M_TemporalTransform *p = (M_TemporalTransform *) node;
gf_sg_mfurl_del(p->url);
gf_sg_mfint32_del(p->stretchMode);
gf_sg_mfint32_del(p->shrinkMode);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 TemporalTransform_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
static const u16 TemporalTransform_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
static const u16 TemporalTransform_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static const u16 TemporalTransform_Dyn2All[] = { 7, 8};
static u32 TemporalTransform_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 12;
case GF_SG_FIELD_CODING_DEF:
return 10;
case GF_SG_FIELD_CODING_OUT:
return 11;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 13;
}
}
static GF_Err TemporalTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = TemporalTransform_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = TemporalTransform_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = TemporalTransform_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = TemporalTransform_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err TemporalTransform_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_TemporalTransform *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_TemporalTransform *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_TemporalTransform *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_TemporalTransform *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_TemporalTransform *)node)->children;
return GF_OK;
case 3:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_TemporalTransform *) node)->url;
return GF_OK;
case 4:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TemporalTransform *) node)->startTime;
return GF_OK;
case 5:
info->name = "optimalDuration";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TemporalTransform *) node)->optimalDuration;
return GF_OK;
case 6:
info->name = "active";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TemporalTransform *) node)->active;
return GF_OK;
case 7:
info->name = "speed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_TemporalTransform *) node)->speed;
return GF_OK;
case 8:
info->name = "scalability";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_TemporalTransform *) node)->scalability;
return GF_OK;
case 9:
info->name = "stretchMode";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_TemporalTransform *) node)->stretchMode;
return GF_OK;
case 10:
info->name = "shrinkMode";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_TemporalTransform *) node)->shrinkMode;
return GF_OK;
case 11:
info->name = "maxDelay";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TemporalTransform *) node)->maxDelay;
return GF_OK;
case 12:
info->name = "actualDuration";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_TemporalTransform *) node)->actualDuration;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 TemporalTransform_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("url", name)) return 3;
if (!strcmp("startTime", name)) return 4;
if (!strcmp("optimalDuration", name)) return 5;
if (!strcmp("active", name)) return 6;
if (!strcmp("speed", name)) return 7;
if (!strcmp("scalability", name)) return 8;
if (!strcmp("stretchMode", name)) return 9;
if (!strcmp("shrinkMode", name)) return 10;
if (!strcmp("maxDelay", name)) return 11;
if (!strcmp("actualDuration", name)) return 12;
return -1;
}
static Bool TemporalTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 7:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 12;
*QType = 12;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(2);
return 1;
case 10:
*AType = 0;
*QType = 13;
*QT13_bits = 1;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *TemporalTransform_Create()
{
M_TemporalTransform *p;
GF_SAFEALLOC(p, M_TemporalTransform);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_TemporalTransform);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->startTime = -1.0;
p->optimalDuration = -1.0;
p->speed = FLT2FIX(1.0);
p->scalability.x = FLT2FIX(1.0);
p->scalability.y = FLT2FIX(1.0);
p->stretchMode.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
p->stretchMode.count = 1;
p->stretchMode.vals[0] = 0;
p->shrinkMode.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
p->shrinkMode.count = 1;
p->shrinkMode.vals[0] = 0;
p->maxDelay = 0;
return (GF_Node *)p;
}
static void TemporalGroup_Del(GF_Node *node)
{
M_TemporalGroup *p = (M_TemporalGroup *) node;
gf_sg_mffloat_del(p->priority);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 TemporalGroup_Def2All[] = { 2, 3, 4, 5, 6};
static const u16 TemporalGroup_In2All[] = { 0, 1, 2, 6};
static const u16 TemporalGroup_Out2All[] = { 2, 6, 7, 8};
static u32 TemporalGroup_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 9;
}
}
static GF_Err TemporalGroup_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = TemporalGroup_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = TemporalGroup_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = TemporalGroup_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err TemporalGroup_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_TemporalGroup *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFTemporalNode;
info->far_ptr = & ((M_TemporalGroup *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_TemporalGroup *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFTemporalNode;
info->far_ptr = & ((M_TemporalGroup *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFTemporalNode;
info->far_ptr = & ((M_TemporalGroup *)node)->children;
return GF_OK;
case 3:
info->name = "costart";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TemporalGroup *) node)->costart;
return GF_OK;
case 4:
info->name = "coend";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TemporalGroup *) node)->coend;
return GF_OK;
case 5:
info->name = "meet";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TemporalGroup *) node)->meet;
return GF_OK;
case 6:
info->name = "priority";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_TemporalGroup *) node)->priority;
return GF_OK;
case 7:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_TemporalGroup *) node)->isActive;
return GF_OK;
case 8:
info->name = "activeChild";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_TemporalGroup *) node)->activeChild;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 TemporalGroup_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("costart", name)) return 3;
if (!strcmp("coend", name)) return 4;
if (!strcmp("meet", name)) return 5;
if (!strcmp("priority", name)) return 6;
if (!strcmp("isActive", name)) return 7;
if (!strcmp("activeChild", name)) return 8;
return -1;
}
static Bool TemporalGroup_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 6:
*AType = 0;
*QType = 3;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *TemporalGroup_Create()
{
M_TemporalGroup *p;
GF_SAFEALLOC(p, M_TemporalGroup);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_TemporalGroup);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->costart = 1;
return (GF_Node *)p;
}
static void ServerCommand_Del(GF_Node *node)
{
M_ServerCommand *p = (M_ServerCommand *) node;
gf_sg_mfurl_del(p->url);
gf_sg_sfstring_del(p->command);
gf_node_free((GF_Node *) p);
}
static const u16 ServerCommand_Def2All[] = { 1, 2, 3};
static const u16 ServerCommand_In2All[] = { 0, 1, 2, 3};
static const u16 ServerCommand_Out2All[] = { 1, 2, 3};
static u32 ServerCommand_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err ServerCommand_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ServerCommand_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ServerCommand_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ServerCommand_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ServerCommand_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "trigger";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_ServerCommand *)node)->on_trigger;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ServerCommand *) node)->trigger;
return GF_OK;
case 1:
info->name = "enable";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ServerCommand *) node)->enable;
return GF_OK;
case 2:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_ServerCommand *) node)->url;
return GF_OK;
case 3:
info->name = "command";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_ServerCommand *) node)->command;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ServerCommand_get_field_index_by_name(char *name)
{
if (!strcmp("trigger", name)) return 0;
if (!strcmp("enable", name)) return 1;
if (!strcmp("url", name)) return 2;
if (!strcmp("command", name)) return 3;
return -1;
}
static Bool ServerCommand_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *ServerCommand_Create()
{
M_ServerCommand *p;
GF_SAFEALLOC(p, M_ServerCommand);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ServerCommand);
return (GF_Node *)p;
}
static void InputSensor_Del(GF_Node *node)
{
M_InputSensor *p = (M_InputSensor *) node;
gf_sg_sfcommand_del(p->buffer);
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 InputSensor_Def2All[] = { 0, 1, 2};
static const u16 InputSensor_In2All[] = { 0, 1, 2};
static const u16 InputSensor_Out2All[] = { 0, 1, 2, 3};
static u32 InputSensor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err InputSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = InputSensor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = InputSensor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = InputSensor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err InputSensor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_InputSensor *) node)->enabled;
return GF_OK;
case 1:
info->name = "buffer";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOMMANDBUFFER;
info->far_ptr = & ((M_InputSensor *) node)->buffer;
return GF_OK;
case 2:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_InputSensor *) node)->url;
return GF_OK;
case 3:
info->name = "eventTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_InputSensor *) node)->eventTime;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 InputSensor_get_field_index_by_name(char *name)
{
if (!strcmp("enabled", name)) return 0;
if (!strcmp("buffer", name)) return 1;
if (!strcmp("url", name)) return 2;
if (!strcmp("eventTime", name)) return 3;
return -1;
}
static Bool InputSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *InputSensor_Create()
{
M_InputSensor *p;
GF_SAFEALLOC(p, M_InputSensor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_InputSensor);
p->buffer.commandList = gf_list_new();
p->enabled = 1;
return (GF_Node *)p;
}
static void MatteTexture_Del(GF_Node *node)
{
M_MatteTexture *p = (M_MatteTexture *) node;
gf_node_unregister((GF_Node *) p->surfaceA, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->surfaceB, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->alphaSurface, (GF_Node *) p);
gf_sg_sfstring_del(p->operation);
gf_sg_mffloat_del(p->parameter);
gf_node_free((GF_Node *) p);
}
static const u16 MatteTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 MatteTexture_In2All[] = { 3, 5, 6};
static const u16 MatteTexture_Out2All[] = { 3, 5, 6};
static u32 MatteTexture_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 7;
}
}
static GF_Err MatteTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = MatteTexture_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = MatteTexture_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = MatteTexture_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err MatteTexture_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "surfaceA";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_MatteTexture *)node)->surfaceA;
return GF_OK;
case 1:
info->name = "surfaceB";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_MatteTexture *)node)->surfaceB;
return GF_OK;
case 2:
info->name = "alphaSurface";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_MatteTexture *)node)->alphaSurface;
return GF_OK;
case 3:
info->name = "operation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_MatteTexture *) node)->operation;
return GF_OK;
case 4:
info->name = "overwrite";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MatteTexture *) node)->overwrite;
return GF_OK;
case 5:
info->name = "fraction";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_MatteTexture *) node)->fraction;
return GF_OK;
case 6:
info->name = "parameter";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_MatteTexture *) node)->parameter;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 MatteTexture_get_field_index_by_name(char *name)
{
if (!strcmp("surfaceA", name)) return 0;
if (!strcmp("surfaceB", name)) return 1;
if (!strcmp("alphaSurface", name)) return 2;
if (!strcmp("operation", name)) return 3;
if (!strcmp("overwrite", name)) return 4;
if (!strcmp("fraction", name)) return 5;
if (!strcmp("parameter", name)) return 6;
return -1;
}
static Bool MatteTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *MatteTexture_Create()
{
M_MatteTexture *p;
GF_SAFEALLOC(p, M_MatteTexture);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_MatteTexture);
p->fraction = FLT2FIX(0);
p->parameter.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->parameter.count = 1;
p->parameter.vals[0] = FLT2FIX(0);
return (GF_Node *)p;
}
static void MediaBuffer_Del(GF_Node *node)
{
M_MediaBuffer *p = (M_MediaBuffer *) node;
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 MediaBuffer_Def2All[] = { 0, 1, 2, 3, 5};
static const u16 MediaBuffer_In2All[] = { 0, 1, 2, 3, 5};
static const u16 MediaBuffer_Out2All[] = { 0, 1, 2, 3, 4, 5};
static u32 MediaBuffer_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 6;
}
}
static GF_Err MediaBuffer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = MediaBuffer_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = MediaBuffer_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = MediaBuffer_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err MediaBuffer_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "bufferSize";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_MediaBuffer *) node)->bufferSize;
return GF_OK;
case 1:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_MediaBuffer *) node)->url;
return GF_OK;
case 2:
info->name = "mediaStartTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MediaBuffer *) node)->mediaStartTime;
return GF_OK;
case 3:
info->name = "mediaStopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MediaBuffer *) node)->mediaStopTime;
return GF_OK;
case 4:
info->name = "isBuffered";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MediaBuffer *) node)->isBuffered;
return GF_OK;
case 5:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MediaBuffer *) node)->enabled;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 MediaBuffer_get_field_index_by_name(char *name)
{
if (!strcmp("bufferSize", name)) return 0;
if (!strcmp("url", name)) return 1;
if (!strcmp("mediaStartTime", name)) return 2;
if (!strcmp("mediaStopTime", name)) return 3;
if (!strcmp("isBuffered", name)) return 4;
if (!strcmp("enabled", name)) return 5;
return -1;
}
static Bool MediaBuffer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *MediaBuffer_Create()
{
M_MediaBuffer *p;
GF_SAFEALLOC(p, M_MediaBuffer);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_MediaBuffer);
p->bufferSize = FLT2FIX(0.0);
p->mediaStartTime = -1;
p->mediaStopTime = FIX_MAX;
p->enabled = 1;
return (GF_Node *)p;
}
static void MediaControl_Del(GF_Node *node)
{
M_MediaControl *p = (M_MediaControl *) node;
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 MediaControl_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 MediaControl_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 MediaControl_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static u32 MediaControl_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 9;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 9;
}
}
static GF_Err MediaControl_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = MediaControl_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = MediaControl_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = MediaControl_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err MediaControl_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_MediaControl *) node)->url;
return GF_OK;
case 1:
info->name = "mediaStartTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MediaControl *) node)->mediaStartTime;
return GF_OK;
case 2:
info->name = "mediaStopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MediaControl *) node)->mediaStopTime;
return GF_OK;
case 3:
info->name = "mediaSpeed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_MediaControl *) node)->mediaSpeed;
return GF_OK;
case 4:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MediaControl *) node)->loop;
return GF_OK;
case 5:
info->name = "preRoll";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MediaControl *) node)->preRoll;
return GF_OK;
case 6:
info->name = "mute";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MediaControl *) node)->mute;
return GF_OK;
case 7:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MediaControl *) node)->enabled;
return GF_OK;
case 8:
info->name = "isPreRolled";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MediaControl *) node)->isPreRolled;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 MediaControl_get_field_index_by_name(char *name)
{
if (!strcmp("url", name)) return 0;
if (!strcmp("mediaStartTime", name)) return 1;
if (!strcmp("mediaStopTime", name)) return 2;
if (!strcmp("mediaSpeed", name)) return 3;
if (!strcmp("loop", name)) return 4;
if (!strcmp("preRoll", name)) return 5;
if (!strcmp("mute", name)) return 6;
if (!strcmp("enabled", name)) return 7;
if (!strcmp("isPreRolled", name)) return 8;
return -1;
}
static Bool MediaControl_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *MediaControl_Create()
{
M_MediaControl *p;
GF_SAFEALLOC(p, M_MediaControl);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_MediaControl);
p->mediaStartTime = -1;
p->mediaStopTime = FIX_MAX;
p->mediaSpeed = FLT2FIX(1.0);
p->preRoll = 1;
p->enabled = 1;
return (GF_Node *)p;
}
static void MediaSensor_Del(GF_Node *node)
{
M_MediaSensor *p = (M_MediaSensor *) node;
gf_sg_mfurl_del(p->url);
gf_sg_mfstring_del(p->info);
gf_node_free((GF_Node *) p);
}
static const u16 MediaSensor_Def2All[] = { 0};
static const u16 MediaSensor_In2All[] = { 0};
static const u16 MediaSensor_Out2All[] = { 0, 1, 2, 3, 4, 5};
static u32 MediaSensor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 6;
}
}
static GF_Err MediaSensor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = MediaSensor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = MediaSensor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = MediaSensor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err MediaSensor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_MediaSensor *) node)->url;
return GF_OK;
case 1:
info->name = "mediaCurrentTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MediaSensor *) node)->mediaCurrentTime;
return GF_OK;
case 2:
info->name = "streamObjectStartTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MediaSensor *) node)->streamObjectStartTime;
return GF_OK;
case 3:
info->name = "mediaDuration";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MediaSensor *) node)->mediaDuration;
return GF_OK;
case 4:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MediaSensor *) node)->isActive;
return GF_OK;
case 5:
info->name = "info";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_MediaSensor *) node)->info;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 MediaSensor_get_field_index_by_name(char *name)
{
if (!strcmp("url", name)) return 0;
if (!strcmp("mediaCurrentTime", name)) return 1;
if (!strcmp("streamObjectStartTime", name)) return 2;
if (!strcmp("mediaDuration", name)) return 3;
if (!strcmp("isActive", name)) return 4;
if (!strcmp("info", name)) return 5;
return -1;
}
static Bool MediaSensor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *MediaSensor_Create()
{
M_MediaSensor *p;
GF_SAFEALLOC(p, M_MediaSensor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_MediaSensor);
return (GF_Node *)p;
}
static void BitWrapper_Del(GF_Node *node)
{
M_BitWrapper *p = (M_BitWrapper *) node;
gf_node_unregister((GF_Node *) p->node, (GF_Node *) p);
gf_sg_mfurl_del(p->url);
gf_sg_sfstring_del(p->buffer);
gf_node_free((GF_Node *) p);
}
static const u16 BitWrapper_Def2All[] = { 0, 1, 2, 3};
static u32 BitWrapper_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err BitWrapper_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = BitWrapper_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err BitWrapper_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "node";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFWorldNode;
info->far_ptr = & ((M_BitWrapper *)node)->node;
return GF_OK;
case 1:
info->name = "type";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BitWrapper *) node)->type;
return GF_OK;
case 2:
info->name = "url";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_BitWrapper *) node)->url;
return GF_OK;
case 3:
info->name = "buffer";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_BitWrapper *) node)->buffer;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 BitWrapper_get_field_index_by_name(char *name)
{
if (!strcmp("node", name)) return 0;
if (!strcmp("type", name)) return 1;
if (!strcmp("url", name)) return 2;
if (!strcmp("buffer", name)) return 3;
return -1;
}
static Bool BitWrapper_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *BitWrapper_Create()
{
M_BitWrapper *p;
GF_SAFEALLOC(p, M_BitWrapper);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_BitWrapper);
p->type = 0;
return (GF_Node *)p;
}
static void CoordinateInterpolator4D_Del(GF_Node *node)
{
M_CoordinateInterpolator4D *p = (M_CoordinateInterpolator4D *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfvec4f_del(p->keyValue);
gf_sg_mfvec4f_del(p->value_changed);
gf_node_free((GF_Node *) p);
}
static const u16 CoordinateInterpolator4D_Def2All[] = { 1, 2};
static const u16 CoordinateInterpolator4D_In2All[] = { 0, 1, 2};
static const u16 CoordinateInterpolator4D_Out2All[] = { 1, 2, 3};
static u32 CoordinateInterpolator4D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err CoordinateInterpolator4D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = CoordinateInterpolator4D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = CoordinateInterpolator4D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = CoordinateInterpolator4D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err CoordinateInterpolator4D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_CoordinateInterpolator4D *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC4F;
info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->keyValue;
return GF_OK;
case 3:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFVEC4F;
info->far_ptr = & ((M_CoordinateInterpolator4D *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 CoordinateInterpolator4D_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("value_changed", name)) return 3;
return -1;
}
static Bool CoordinateInterpolator4D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *CoordinateInterpolator4D_Create()
{
M_CoordinateInterpolator4D *p;
GF_SAFEALLOC(p, M_CoordinateInterpolator4D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_CoordinateInterpolator4D);
return (GF_Node *)p;
}
static void DepthImage_Del(GF_Node *node)
{
M_DepthImage *p = (M_DepthImage *) node;
gf_node_unregister((GF_Node *) p->diTexture, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 DepthImage_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
static u32 DepthImage_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 7;
}
}
static GF_Err DepthImage_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = DepthImage_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err DepthImage_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "diTexture";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFDepthTextureNode;
info->far_ptr = & ((M_DepthImage *)node)->diTexture;
return GF_OK;
case 1:
info->name = "farPlane";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DepthImage *) node)->farPlane;
return GF_OK;
case 2:
info->name = "fieldOfView";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_DepthImage *) node)->fieldOfView;
return GF_OK;
case 3:
info->name = "nearPlane";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DepthImage *) node)->nearPlane;
return GF_OK;
case 4:
info->name = "orientation";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_DepthImage *) node)->orientation;
return GF_OK;
case 5:
info->name = "orthographic";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_DepthImage *) node)->orthographic;
return GF_OK;
case 6:
info->name = "position";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_DepthImage *) node)->position;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 DepthImage_get_field_index_by_name(char *name)
{
if (!strcmp("diTexture", name)) return 0;
if (!strcmp("farPlane", name)) return 1;
if (!strcmp("fieldOfView", name)) return 2;
if (!strcmp("nearPlane", name)) return 3;
if (!strcmp("orientation", name)) return 4;
if (!strcmp("orthographic", name)) return 5;
if (!strcmp("position", name)) return 6;
return -1;
}
static Bool DepthImage_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *DepthImage_Create()
{
M_DepthImage *p;
GF_SAFEALLOC(p, M_DepthImage);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_DepthImage);
p->farPlane = FLT2FIX(100);
p->fieldOfView.x = FLT2FIX(0.785398);
p->fieldOfView.y = FLT2FIX(0.785398);
p->nearPlane = FLT2FIX(10);
p->orientation.x = FLT2FIX(0);
p->orientation.y = FLT2FIX(0);
p->orientation.z = FLT2FIX(1);
p->orientation.q = FLT2FIX(0);
p->orthographic = 1;
p->position.x = FLT2FIX(0);
p->position.y = FLT2FIX(0);
p->position.z = FLT2FIX(10);
return (GF_Node *)p;
}
static void FFD_Del(GF_Node *node)
{
M_FFD *p = (M_FFD *) node;
gf_sg_mfvec4f_del(p->controlPoint);
gf_sg_mffloat_del(p->uKnot);
gf_sg_mffloat_del(p->vKnot);
gf_sg_mffloat_del(p->wKnot);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 FFD_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static const u16 FFD_In2All[] = { 0, 1, 2, 3};
static const u16 FFD_Out2All[] = { 2, 3};
static const u16 FFD_Dyn2All[] = { 3};
static u32 FFD_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 11;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 13;
}
}
static GF_Err FFD_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = FFD_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = FFD_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = FFD_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = FFD_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FFD_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_FFD *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_FFD *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_FFD *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_FFD *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_FFD *)node)->children;
return GF_OK;
case 3:
info->name = "controlPoint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC4F;
info->far_ptr = & ((M_FFD *) node)->controlPoint;
return GF_OK;
case 4:
info->name = "uDimension";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FFD *) node)->uDimension;
return GF_OK;
case 5:
info->name = "uKnot";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_FFD *) node)->uKnot;
return GF_OK;
case 6:
info->name = "uOrder";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FFD *) node)->uOrder;
return GF_OK;
case 7:
info->name = "vDimension";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FFD *) node)->vDimension;
return GF_OK;
case 8:
info->name = "vKnot";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_FFD *) node)->vKnot;
return GF_OK;
case 9:
info->name = "vOrder";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FFD *) node)->vOrder;
return GF_OK;
case 10:
info->name = "wDimension";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FFD *) node)->wDimension;
return GF_OK;
case 11:
info->name = "wKnot";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_FFD *) node)->wKnot;
return GF_OK;
case 12:
info->name = "wOrder";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FFD *) node)->wOrder;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FFD_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("controlPoint", name)) return 3;
if (!strcmp("uDimension", name)) return 4;
if (!strcmp("uKnot", name)) return 5;
if (!strcmp("uOrder", name)) return 6;
if (!strcmp("vDimension", name)) return 7;
if (!strcmp("vKnot", name)) return 8;
if (!strcmp("vOrder", name)) return 9;
if (!strcmp("wDimension", name)) return 10;
if (!strcmp("wKnot", name)) return 11;
if (!strcmp("wOrder", name)) return 12;
return -1;
}
static Bool FFD_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 15;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(2);
*b_max = FLT2FIX(257);
return 1;
case 6:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(2);
*b_max = FLT2FIX(33);
return 1;
case 7:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(2);
*b_max = FLT2FIX(257);
return 1;
case 9:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(2);
*b_max = FLT2FIX(33);
return 1;
case 10:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(2);
*b_max = FLT2FIX(257);
return 1;
case 12:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(2);
*b_max = FLT2FIX(33);
return 1;
default:
return 0;
}
}
GF_Node *FFD_Create()
{
M_FFD *p;
GF_SAFEALLOC(p, M_FFD);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FFD);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->uDimension = 2;
p->uOrder = 2;
p->vDimension = 2;
p->vOrder = 2;
p->wDimension = 2;
p->wOrder = 2;
return (GF_Node *)p;
}
static void Implicit_Del(GF_Node *node)
{
M_Implicit *p = (M_Implicit *) node;
gf_sg_mffloat_del(p->c);
gf_sg_mfint32_del(p->densities);
gf_node_free((GF_Node *) p);
}
static const u16 Implicit_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 Implicit_In2All[] = { 0, 1, 2, 3, 4};
static const u16 Implicit_Out2All[] = { 0, 1, 2, 3, 4};
static const u16 Implicit_Dyn2All[] = { 0, 1};
static u32 Implicit_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 5;
}
}
static GF_Err Implicit_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Implicit_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Implicit_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Implicit_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Implicit_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Implicit_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "bboxSize";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Implicit *) node)->bboxSize;
return GF_OK;
case 1:
info->name = "c";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_Implicit *) node)->c;
return GF_OK;
case 2:
info->name = "densities";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_Implicit *) node)->densities;
return GF_OK;
case 3:
info->name = "dual";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Implicit *) node)->dual;
return GF_OK;
case 4:
info->name = "solid";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Implicit *) node)->solid;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Implicit_get_field_index_by_name(char *name)
{
if (!strcmp("bboxSize", name)) return 0;
if (!strcmp("c", name)) return 1;
if (!strcmp("densities", name)) return 2;
if (!strcmp("dual", name)) return 3;
if (!strcmp("solid", name)) return 4;
return -1;
}
static Bool Implicit_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 11;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Implicit_Create()
{
M_Implicit *p;
GF_SAFEALLOC(p, M_Implicit);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Implicit);
p->bboxSize.x = FLT2FIX(2);
p->bboxSize.y = FLT2FIX(2);
p->bboxSize.z = FLT2FIX(2);
return (GF_Node *)p;
}
static void XXLFM_Appearance_Del(GF_Node *node)
{
M_XXLFM_Appearance *p = (M_XXLFM_Appearance *) node;
gf_node_unregister((GF_Node *) p->blendList, (GF_Node *) p);
gf_node_unregister_children((GF_Node *) p, p->lightMapList);
gf_node_unregister_children((GF_Node *) p, p->tileList);
gf_node_unregister((GF_Node *) p->vertexFrameList, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 XXLFM_Appearance_Def2All[] = { 0, 1, 2, 3};
static const u16 XXLFM_Appearance_In2All[] = { 0, 1, 2, 3};
static const u16 XXLFM_Appearance_Out2All[] = { 0, 1, 2, 3};
static u32 XXLFM_Appearance_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err XXLFM_Appearance_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XXLFM_Appearance_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XXLFM_Appearance_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XXLFM_Appearance_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XXLFM_Appearance_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "blendList";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFBlendListNode;
info->far_ptr = & ((M_XXLFM_Appearance *)node)->blendList;
return GF_OK;
case 1:
info->name = "lightMapList";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFLightMapNode;
info->far_ptr = & ((M_XXLFM_Appearance *)node)->lightMapList;
return GF_OK;
case 2:
info->name = "tileList";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_XXLFM_Appearance *)node)->tileList;
return GF_OK;
case 3:
info->name = "vertexFrameList";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFFrameListNode;
info->far_ptr = & ((M_XXLFM_Appearance *)node)->vertexFrameList;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XXLFM_Appearance_get_field_index_by_name(char *name)
{
if (!strcmp("blendList", name)) return 0;
if (!strcmp("lightMapList", name)) return 1;
if (!strcmp("tileList", name)) return 2;
if (!strcmp("vertexFrameList", name)) return 3;
return -1;
}
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)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *XXLFM_Appearance_Create()
{
M_XXLFM_Appearance *p;
GF_SAFEALLOC(p, M_XXLFM_Appearance);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_Appearance);
return (GF_Node *)p;
}
static void XXLFM_BlendList_Del(GF_Node *node)
{
M_XXLFM_BlendList *p = (M_XXLFM_BlendList *) node;
gf_sg_mfint32_del(p->blendMode);
gf_sg_mfint32_del(p->lightMapIndex);
gf_node_free((GF_Node *) p);
}
static const u16 XXLFM_BlendList_Def2All[] = { 0, 1};
static const u16 XXLFM_BlendList_In2All[] = { 0, 1};
static const u16 XXLFM_BlendList_Out2All[] = { 0, 1};
static u32 XXLFM_BlendList_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err XXLFM_BlendList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XXLFM_BlendList_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XXLFM_BlendList_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XXLFM_BlendList_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XXLFM_BlendList_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "blendMode";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XXLFM_BlendList *) node)->blendMode;
return GF_OK;
case 1:
info->name = "lightMapIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XXLFM_BlendList *) node)->lightMapIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XXLFM_BlendList_get_field_index_by_name(char *name)
{
if (!strcmp("blendMode", name)) return 0;
if (!strcmp("lightMapIndex", name)) return 1;
return -1;
}
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)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 13;
*QT13_bits = 1;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 0;
*QType = 14;
return 1;
default:
return 0;
}
}
GF_Node *XXLFM_BlendList_Create()
{
M_XXLFM_BlendList *p;
GF_SAFEALLOC(p, M_XXLFM_BlendList);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_BlendList);
return (GF_Node *)p;
}
static void XXLFM_FrameList_Del(GF_Node *node)
{
M_XXLFM_FrameList *p = (M_XXLFM_FrameList *) node;
gf_sg_mfint32_del(p->index);
gf_sg_mfvec3f_del(p->frame);
gf_node_free((GF_Node *) p);
}
static const u16 XXLFM_FrameList_Def2All[] = { 0, 1};
static const u16 XXLFM_FrameList_In2All[] = { 0, 1};
static const u16 XXLFM_FrameList_Out2All[] = { 0, 1};
static u32 XXLFM_FrameList_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err XXLFM_FrameList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XXLFM_FrameList_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XXLFM_FrameList_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XXLFM_FrameList_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XXLFM_FrameList_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "index";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XXLFM_FrameList *) node)->index;
return GF_OK;
case 1:
info->name = "frame";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_XXLFM_FrameList *) node)->frame;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XXLFM_FrameList_get_field_index_by_name(char *name)
{
if (!strcmp("index", name)) return 0;
if (!strcmp("frame", name)) return 1;
return -1;
}
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)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 14;
return 1;
case 1:
*AType = 0;
*QType = 1;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *XXLFM_FrameList_Create()
{
M_XXLFM_FrameList *p;
GF_SAFEALLOC(p, M_XXLFM_FrameList);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_FrameList);
p->index.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
p->index.count = 1;
p->index.vals[0] = -1;
p->frame.vals = (SFVec3f *)gf_malloc(sizeof(SFVec3f)*3);
p->frame.count = 3;
p->frame.vals[0].x = FLT2FIX(1);
p->frame.vals[0].y = FLT2FIX(0);
p->frame.vals[0].z = FLT2FIX(0);
p->frame.vals[1].x = FLT2FIX(0);
p->frame.vals[1].y = FLT2FIX(1);
p->frame.vals[1].z = FLT2FIX(0);
p->frame.vals[2].x = FLT2FIX(0);
p->frame.vals[2].y = FLT2FIX(0);
p->frame.vals[2].z = FLT2FIX(1);
return (GF_Node *)p;
}
static void XXLFM_LightMap_Del(GF_Node *node)
{
M_XXLFM_LightMap *p = (M_XXLFM_LightMap *) node;
gf_node_unregister((GF_Node *) p->surfaceMapList, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->viewMapList, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 XXLFM_LightMap_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 XXLFM_LightMap_In2All[] = { 0, 1, 2, 3, 4};
static const u16 XXLFM_LightMap_Out2All[] = { 0, 1, 2, 3, 4};
static u32 XXLFM_LightMap_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 5;
}
}
static GF_Err XXLFM_LightMap_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XXLFM_LightMap_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XXLFM_LightMap_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XXLFM_LightMap_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XXLFM_LightMap_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "biasRGB";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_XXLFM_LightMap *) node)->biasRGB;
return GF_OK;
case 1:
info->name = "priorityLevel";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_XXLFM_LightMap *) node)->priorityLevel;
return GF_OK;
case 2:
info->name = "scaleRGB";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_XXLFM_LightMap *) node)->scaleRGB;
return GF_OK;
case 3:
info->name = "surfaceMapList";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFSurfaceMapNode;
info->far_ptr = & ((M_XXLFM_LightMap *)node)->surfaceMapList;
return GF_OK;
case 4:
info->name = "viewMapList";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFViewMapNode;
info->far_ptr = & ((M_XXLFM_LightMap *)node)->viewMapList;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XXLFM_LightMap_get_field_index_by_name(char *name)
{
if (!strcmp("biasRGB", name)) return 0;
if (!strcmp("priorityLevel", name)) return 1;
if (!strcmp("scaleRGB", name)) return 2;
if (!strcmp("surfaceMapList", name)) return 3;
if (!strcmp("viewMapList", name)) return 4;
return -1;
}
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)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 7;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
case 2:
*AType = 0;
*QType = 7;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(1);
return 1;
default:
return 0;
}
}
GF_Node *XXLFM_LightMap_Create()
{
M_XXLFM_LightMap *p;
GF_SAFEALLOC(p, M_XXLFM_LightMap);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_LightMap);
p->biasRGB.x = FLT2FIX(0);
p->biasRGB.y = FLT2FIX(0);
p->biasRGB.z = FLT2FIX(0);
p->priorityLevel = 0;
p->scaleRGB.x = FLT2FIX(1);
p->scaleRGB.y = FLT2FIX(1);
p->scaleRGB.z = FLT2FIX(1);
return (GF_Node *)p;
}
static void XXLFM_SurfaceMapList_Del(GF_Node *node)
{
M_XXLFM_SurfaceMapList *p = (M_XXLFM_SurfaceMapList *) node;
gf_sg_mfint32_del(p->tileIndex);
gf_node_unregister((GF_Node *) p->triangleCoordinate, (GF_Node *) p);
gf_sg_mfint32_del(p->triangleIndex);
gf_sg_mfint32_del(p->viewMapIndex);
gf_node_free((GF_Node *) p);
}
static const u16 XXLFM_SurfaceMapList_Def2All[] = { 0, 1, 2, 3};
static const u16 XXLFM_SurfaceMapList_In2All[] = { 0, 1, 2, 3};
static const u16 XXLFM_SurfaceMapList_Out2All[] = { 0, 1, 2, 3};
static u32 XXLFM_SurfaceMapList_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err XXLFM_SurfaceMapList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XXLFM_SurfaceMapList_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XXLFM_SurfaceMapList_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XXLFM_SurfaceMapList_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XXLFM_SurfaceMapList_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "tileIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XXLFM_SurfaceMapList *) node)->tileIndex;
return GF_OK;
case 1:
info->name = "triangleCoordinate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureCoordinateNode;
info->far_ptr = & ((M_XXLFM_SurfaceMapList *)node)->triangleCoordinate;
return GF_OK;
case 2:
info->name = "triangleIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XXLFM_SurfaceMapList *) node)->triangleIndex;
return GF_OK;
case 3:
info->name = "viewMapIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XXLFM_SurfaceMapList *) node)->viewMapIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XXLFM_SurfaceMapList_get_field_index_by_name(char *name)
{
if (!strcmp("tileIndex", name)) return 0;
if (!strcmp("triangleCoordinate", name)) return 1;
if (!strcmp("triangleIndex", name)) return 2;
if (!strcmp("viewMapIndex", name)) return 3;
return -1;
}
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)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 14;
return 1;
case 2:
*AType = 0;
*QType = 14;
return 1;
case 3:
*AType = 0;
*QType = 14;
return 1;
default:
return 0;
}
}
GF_Node *XXLFM_SurfaceMapList_Create()
{
M_XXLFM_SurfaceMapList *p;
GF_SAFEALLOC(p, M_XXLFM_SurfaceMapList);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_SurfaceMapList);
return (GF_Node *)p;
}
static void XXLFM_ViewMapList_Del(GF_Node *node)
{
M_XXLFM_ViewMapList *p = (M_XXLFM_ViewMapList *) node;
gf_node_unregister((GF_Node *) p->textureOrigin, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->textureSize, (GF_Node *) p);
gf_sg_mfint32_del(p->tileIndex);
gf_sg_mfint32_del(p->vertexIndex);
gf_node_free((GF_Node *) p);
}
static const u16 XXLFM_ViewMapList_Def2All[] = { 0, 1, 2, 3};
static const u16 XXLFM_ViewMapList_In2All[] = { 0, 1, 2, 3};
static const u16 XXLFM_ViewMapList_Out2All[] = { 0, 1, 2, 3};
static u32 XXLFM_ViewMapList_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err XXLFM_ViewMapList_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XXLFM_ViewMapList_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XXLFM_ViewMapList_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XXLFM_ViewMapList_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XXLFM_ViewMapList_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "textureOrigin";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureCoordinateNode;
info->far_ptr = & ((M_XXLFM_ViewMapList *)node)->textureOrigin;
return GF_OK;
case 1:
info->name = "textureSize";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureCoordinateNode;
info->far_ptr = & ((M_XXLFM_ViewMapList *)node)->textureSize;
return GF_OK;
case 2:
info->name = "tileIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XXLFM_ViewMapList *) node)->tileIndex;
return GF_OK;
case 3:
info->name = "vertexIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XXLFM_ViewMapList *) node)->vertexIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XXLFM_ViewMapList_get_field_index_by_name(char *name)
{
if (!strcmp("textureOrigin", name)) return 0;
if (!strcmp("textureSize", name)) return 1;
if (!strcmp("tileIndex", name)) return 2;
if (!strcmp("vertexIndex", name)) return 3;
return -1;
}
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)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 14;
return 1;
case 3:
*AType = 0;
*QType = 14;
return 1;
default:
return 0;
}
}
GF_Node *XXLFM_ViewMapList_Create()
{
M_XXLFM_ViewMapList *p;
GF_SAFEALLOC(p, M_XXLFM_ViewMapList);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XXLFM_ViewMapList);
return (GF_Node *)p;
}
static void MeshGrid_Del(GF_Node *node)
{
M_MeshGrid *p = (M_MeshGrid *) node;
gf_sg_mfint32_del(p->set_colorIndex);
gf_sg_mfint32_del(p->set_coordIndex);
gf_sg_mfint32_del(p->set_normalIndex);
gf_sg_mfint32_del(p->set_texCoordIndex);
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->gridCoord, (GF_Node *) p);
gf_sg_mfint32_del(p->nLevels);
gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
gf_sg_mfint32_del(p->nSlices);
gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
gf_sg_mffloat_del(p->vertexOffset);
gf_sg_mfint32_del(p->vertexLink);
gf_sg_mfint32_del(p->colorIndex);
gf_sg_mfint32_del(p->coordIndex);
gf_sg_mfint32_del(p->normalIndex);
gf_sg_mfint32_del(p->texCoordIndex);
gf_sg_mfint32_del(p->nVertices);
gf_node_free((GF_Node *) p);
}
static const u16 MeshGrid_Def2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
static const u16 MeshGrid_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
static const u16 MeshGrid_Out2All[] = { 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 21, 22};
static const u16 MeshGrid_Dyn2All[] = { 6, 7, 9, 10, 12, 14};
static u32 MeshGrid_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 16;
case GF_SG_FIELD_CODING_DEF:
return 17;
case GF_SG_FIELD_CODING_OUT:
return 14;
case GF_SG_FIELD_CODING_DYN:
return 6;
default:
return 23;
}
}
static GF_Err MeshGrid_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = MeshGrid_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = MeshGrid_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = MeshGrid_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = MeshGrid_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err MeshGrid_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_colorIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_MeshGrid *)node)->on_set_colorIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->set_colorIndex;
return GF_OK;
case 1:
info->name = "set_coordIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_MeshGrid *)node)->on_set_coordIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->set_coordIndex;
return GF_OK;
case 2:
info->name = "set_normalIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_MeshGrid *)node)->on_set_normalIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->set_normalIndex;
return GF_OK;
case 3:
info->name = "set_texCoordIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_MeshGrid *)node)->on_set_texCoordIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->set_texCoordIndex;
return GF_OK;
case 4:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_MeshGrid *)node)->color;
return GF_OK;
case 5:
info->name = "coord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinateNode;
info->far_ptr = & ((M_MeshGrid *)node)->coord;
return GF_OK;
case 6:
info->name = "displayLevel";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->displayLevel;
return GF_OK;
case 7:
info->name = "filterType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->filterType;
return GF_OK;
case 8:
info->name = "gridCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinateNode;
info->far_ptr = & ((M_MeshGrid *)node)->gridCoord;
return GF_OK;
case 9:
info->name = "hierarchicalLevel";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->hierarchicalLevel;
return GF_OK;
case 10:
info->name = "nLevels";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->nLevels;
return GF_OK;
case 11:
info->name = "normal";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFNormalNode;
info->far_ptr = & ((M_MeshGrid *)node)->normal;
return GF_OK;
case 12:
info->name = "nSlices";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->nSlices;
return GF_OK;
case 13:
info->name = "texCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureCoordinateNode;
info->far_ptr = & ((M_MeshGrid *)node)->texCoord;
return GF_OK;
case 14:
info->name = "vertexOffset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_MeshGrid *) node)->vertexOffset;
return GF_OK;
case 15:
info->name = "vertexLink";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->vertexLink;
return GF_OK;
case 16:
info->name = "colorIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->colorIndex;
return GF_OK;
case 17:
info->name = "coordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->coordIndex;
return GF_OK;
case 18:
info->name = "normalIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->normalIndex;
return GF_OK;
case 19:
info->name = "solid";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MeshGrid *) node)->solid;
return GF_OK;
case 20:
info->name = "texCoordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->texCoordIndex;
return GF_OK;
case 21:
info->name = "isLoading";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MeshGrid *) node)->isLoading;
return GF_OK;
case 22:
info->name = "nVertices";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MeshGrid *) node)->nVertices;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 MeshGrid_get_field_index_by_name(char *name)
{
if (!strcmp("set_colorIndex", name)) return 0;
if (!strcmp("set_coordIndex", name)) return 1;
if (!strcmp("set_normalIndex", name)) return 2;
if (!strcmp("set_texCoordIndex", name)) return 3;
if (!strcmp("color", name)) return 4;
if (!strcmp("coord", name)) return 5;
if (!strcmp("displayLevel", name)) return 6;
if (!strcmp("filterType", name)) return 7;
if (!strcmp("gridCoord", name)) return 8;
if (!strcmp("hierarchicalLevel", name)) return 9;
if (!strcmp("nLevels", name)) return 10;
if (!strcmp("normal", name)) return 11;
if (!strcmp("nSlices", name)) return 12;
if (!strcmp("texCoord", name)) return 13;
if (!strcmp("vertexOffset", name)) return 14;
if (!strcmp("vertexLink", name)) return 15;
if (!strcmp("colorIndex", name)) return 16;
if (!strcmp("coordIndex", name)) return 17;
if (!strcmp("normalIndex", name)) return 18;
if (!strcmp("solid", name)) return 19;
if (!strcmp("texCoordIndex", name)) return 20;
if (!strcmp("isLoading", name)) return 21;
if (!strcmp("nVertices", name)) return 22;
return -1;
}
static Bool MeshGrid_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 6:
*AType = 13;
*QType = 13;
*QT13_bits = 32;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 13;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX( 1);
return 1;
case 9:
*AType = 13;
*QType = 13;
*QT13_bits = 32;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 10:
*AType = 7;
*QType = 7;
return 1;
case 12:
*AType = 7;
*QType = 7;
return 1;
case 14:
*AType = 7;
*QType = 7;
*b_min = FLT2FIX(0.0);
*b_max = FLT2FIX( 2.0);
return 1;
case 15:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX( 3);
return 1;
case 16:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 17:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 18:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
case 20:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(-1);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *MeshGrid_Create()
{
M_MeshGrid *p;
GF_SAFEALLOC(p, M_MeshGrid);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_MeshGrid);
p->displayLevel = 0;
p->filterType = 0;
p->hierarchicalLevel = 0;
p->solid = 1;
return (GF_Node *)p;
}
static void NonLinearDeformer_Del(GF_Node *node)
{
M_NonLinearDeformer *p = (M_NonLinearDeformer *) node;
gf_sg_mffloat_del(p->extend);
gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 NonLinearDeformer_Def2All[] = { 0, 1, 2, 3, 4};
static const u16 NonLinearDeformer_In2All[] = { 0, 1, 2, 3, 4};
static const u16 NonLinearDeformer_Out2All[] = { 0, 1, 2, 3, 4};
static u32 NonLinearDeformer_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 5;
}
}
static GF_Err NonLinearDeformer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = NonLinearDeformer_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = NonLinearDeformer_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = NonLinearDeformer_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err NonLinearDeformer_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "axis";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_NonLinearDeformer *) node)->axis;
return GF_OK;
case 1:
info->name = "extend";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_NonLinearDeformer *) node)->extend;
return GF_OK;
case 2:
info->name = "geometry";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_NonLinearDeformer *)node)->geometry;
return GF_OK;
case 3:
info->name = "param";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_NonLinearDeformer *) node)->param;
return GF_OK;
case 4:
info->name = "type";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NonLinearDeformer *) node)->type;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 NonLinearDeformer_get_field_index_by_name(char *name)
{
if (!strcmp("axis", name)) return 0;
if (!strcmp("extend", name)) return 1;
if (!strcmp("geometry", name)) return 2;
if (!strcmp("param", name)) return 3;
if (!strcmp("type", name)) return 4;
return -1;
}
static Bool NonLinearDeformer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *NonLinearDeformer_Create()
{
M_NonLinearDeformer *p;
GF_SAFEALLOC(p, M_NonLinearDeformer);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_NonLinearDeformer);
p->axis.x = FLT2FIX(0);
p->axis.y = FLT2FIX(0);
p->axis.z = FLT2FIX(1);
p->param = FLT2FIX(0);
p->type = 0;
return (GF_Node *)p;
}
static void NurbsCurve_Del(GF_Node *node)
{
M_NurbsCurve *p = (M_NurbsCurve *) node;
gf_sg_mfint32_del(p->set_colorIndex);
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_sg_mfvec4f_del(p->controlPoint);
gf_sg_mfint32_del(p->colorIndex);
gf_sg_mffloat_del(p->knot);
gf_node_free((GF_Node *) p);
}
static const u16 NurbsCurve_Def2All[] = { 1, 2, 3, 4, 5, 6, 7};
static const u16 NurbsCurve_In2All[] = { 0, 1, 2, 3};
static const u16 NurbsCurve_Out2All[] = { 1, 2, 3};
static const u16 NurbsCurve_Dyn2All[] = { 2};
static u32 NurbsCurve_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 8;
}
}
static GF_Err NurbsCurve_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = NurbsCurve_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = NurbsCurve_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = NurbsCurve_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = NurbsCurve_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err NurbsCurve_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_colorIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_NurbsCurve *)node)->on_set_colorIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_NurbsCurve *) node)->set_colorIndex;
return GF_OK;
case 1:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_NurbsCurve *)node)->color;
return GF_OK;
case 2:
info->name = "controlPoint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC4F;
info->far_ptr = & ((M_NurbsCurve *) node)->controlPoint;
return GF_OK;
case 3:
info->name = "tessellation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NurbsCurve *) node)->tessellation;
return GF_OK;
case 4:
info->name = "colorIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_NurbsCurve *) node)->colorIndex;
return GF_OK;
case 5:
info->name = "colorPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_NurbsCurve *) node)->colorPerVertex;
return GF_OK;
case 6:
info->name = "knot";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_NurbsCurve *) node)->knot;
return GF_OK;
case 7:
info->name = "order";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NurbsCurve *) node)->order;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 NurbsCurve_get_field_index_by_name(char *name)
{
if (!strcmp("set_colorIndex", name)) return 0;
if (!strcmp("color", name)) return 1;
if (!strcmp("controlPoint", name)) return 2;
if (!strcmp("tessellation", name)) return 3;
if (!strcmp("colorIndex", name)) return 4;
if (!strcmp("colorPerVertex", name)) return 5;
if (!strcmp("knot", name)) return 6;
if (!strcmp("order", name)) return 7;
return -1;
}
static Bool NurbsCurve_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 15;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 14;
return 1;
case 7:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(3);
*b_max = FLT2FIX(34);
return 1;
default:
return 0;
}
}
GF_Node *NurbsCurve_Create()
{
M_NurbsCurve *p;
GF_SAFEALLOC(p, M_NurbsCurve);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_NurbsCurve);
p->tessellation = 0;
p->colorPerVertex = 1;
p->order = 4;
return (GF_Node *)p;
}
static void NurbsCurve2D_Del(GF_Node *node)
{
M_NurbsCurve2D *p = (M_NurbsCurve2D *) node;
gf_sg_mfint32_del(p->set_colorIndex);
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_sg_mfvec3f_del(p->controlPoint);
gf_sg_mfint32_del(p->colorIndex);
gf_sg_mffloat_del(p->knot);
gf_node_free((GF_Node *) p);
}
static const u16 NurbsCurve2D_Def2All[] = { 1, 2, 3, 4, 5, 6, 7};
static const u16 NurbsCurve2D_In2All[] = { 0, 1, 2, 3};
static const u16 NurbsCurve2D_Out2All[] = { 1, 2, 3};
static const u16 NurbsCurve2D_Dyn2All[] = { 2};
static u32 NurbsCurve2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 8;
}
}
static GF_Err NurbsCurve2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = NurbsCurve2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = NurbsCurve2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = NurbsCurve2D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = NurbsCurve2D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err NurbsCurve2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_colorIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_NurbsCurve2D *)node)->on_set_colorIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_NurbsCurve2D *) node)->set_colorIndex;
return GF_OK;
case 1:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_NurbsCurve2D *)node)->color;
return GF_OK;
case 2:
info->name = "controlPoint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_NurbsCurve2D *) node)->controlPoint;
return GF_OK;
case 3:
info->name = "tessellation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NurbsCurve2D *) node)->tessellation;
return GF_OK;
case 4:
info->name = "colorIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_NurbsCurve2D *) node)->colorIndex;
return GF_OK;
case 5:
info->name = "colorPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_NurbsCurve2D *) node)->colorPerVertex;
return GF_OK;
case 6:
info->name = "knot";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_NurbsCurve2D *) node)->knot;
return GF_OK;
case 7:
info->name = "order";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NurbsCurve2D *) node)->order;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 NurbsCurve2D_get_field_index_by_name(char *name)
{
if (!strcmp("set_colorIndex", name)) return 0;
if (!strcmp("color", name)) return 1;
if (!strcmp("controlPoint", name)) return 2;
if (!strcmp("tessellation", name)) return 3;
if (!strcmp("colorIndex", name)) return 4;
if (!strcmp("colorPerVertex", name)) return 5;
if (!strcmp("knot", name)) return 6;
if (!strcmp("order", name)) return 7;
return -1;
}
static Bool NurbsCurve2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 2;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 0;
*QType = 14;
return 1;
case 7:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(3);
*b_max = FLT2FIX(34);
return 1;
default:
return 0;
}
}
GF_Node *NurbsCurve2D_Create()
{
M_NurbsCurve2D *p;
GF_SAFEALLOC(p, M_NurbsCurve2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_NurbsCurve2D);
p->tessellation = 0;
p->colorPerVertex = 1;
p->order = 4;
return (GF_Node *)p;
}
static void NurbsSurface_Del(GF_Node *node)
{
M_NurbsSurface *p = (M_NurbsSurface *) node;
gf_sg_mfint32_del(p->set_colorIndex);
gf_sg_mfint32_del(p->set_texColorIndex);
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_sg_mfvec4f_del(p->controlPoint);
gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
gf_sg_mfint32_del(p->colorIndex);
gf_sg_mfint32_del(p->texColorIndex);
gf_sg_mffloat_del(p->uKnot);
gf_sg_mffloat_del(p->vKnot);
gf_node_free((GF_Node *) p);
}
static const u16 NurbsSurface_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17};
static const u16 NurbsSurface_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 NurbsSurface_Out2All[] = { 2, 3, 4, 5, 6};
static const u16 NurbsSurface_Dyn2All[] = { 3};
static u32 NurbsSurface_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 16;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 18;
}
}
static GF_Err NurbsSurface_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = NurbsSurface_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = NurbsSurface_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = NurbsSurface_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = NurbsSurface_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err NurbsSurface_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_colorIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_NurbsSurface *)node)->on_set_colorIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_NurbsSurface *) node)->set_colorIndex;
return GF_OK;
case 1:
info->name = "set_texColorIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_NurbsSurface *)node)->on_set_texColorIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_NurbsSurface *) node)->set_texColorIndex;
return GF_OK;
case 2:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_NurbsSurface *)node)->color;
return GF_OK;
case 3:
info->name = "controlPoint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC4F;
info->far_ptr = & ((M_NurbsSurface *) node)->controlPoint;
return GF_OK;
case 4:
info->name = "texCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureCoordinateNode;
info->far_ptr = & ((M_NurbsSurface *)node)->texCoord;
return GF_OK;
case 5:
info->name = "uTessellation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NurbsSurface *) node)->uTessellation;
return GF_OK;
case 6:
info->name = "vTessellation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NurbsSurface *) node)->vTessellation;
return GF_OK;
case 7:
info->name = "ccw";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_NurbsSurface *) node)->ccw;
return GF_OK;
case 8:
info->name = "colorIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_NurbsSurface *) node)->colorIndex;
return GF_OK;
case 9:
info->name = "colorPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_NurbsSurface *) node)->colorPerVertex;
return GF_OK;
case 10:
info->name = "solid";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_NurbsSurface *) node)->solid;
return GF_OK;
case 11:
info->name = "texColorIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_NurbsSurface *) node)->texColorIndex;
return GF_OK;
case 12:
info->name = "uDimension";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NurbsSurface *) node)->uDimension;
return GF_OK;
case 13:
info->name = "uKnot";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_NurbsSurface *) node)->uKnot;
return GF_OK;
case 14:
info->name = "uOrder";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NurbsSurface *) node)->uOrder;
return GF_OK;
case 15:
info->name = "vDimension";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NurbsSurface *) node)->vDimension;
return GF_OK;
case 16:
info->name = "vKnot";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_NurbsSurface *) node)->vKnot;
return GF_OK;
case 17:
info->name = "vOrder";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_NurbsSurface *) node)->vOrder;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 NurbsSurface_get_field_index_by_name(char *name)
{
if (!strcmp("set_colorIndex", name)) return 0;
if (!strcmp("set_texColorIndex", name)) return 1;
if (!strcmp("color", name)) return 2;
if (!strcmp("controlPoint", name)) return 3;
if (!strcmp("texCoord", name)) return 4;
if (!strcmp("uTessellation", name)) return 5;
if (!strcmp("vTessellation", name)) return 6;
if (!strcmp("ccw", name)) return 7;
if (!strcmp("colorIndex", name)) return 8;
if (!strcmp("colorPerVertex", name)) return 9;
if (!strcmp("solid", name)) return 10;
if (!strcmp("texColorIndex", name)) return 11;
if (!strcmp("uDimension", name)) return 12;
if (!strcmp("uKnot", name)) return 13;
if (!strcmp("uOrder", name)) return 14;
if (!strcmp("vDimension", name)) return 15;
if (!strcmp("vKnot", name)) return 16;
if (!strcmp("vOrder", name)) return 17;
return -1;
}
static Bool NurbsSurface_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 15;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 14;
return 1;
case 11:
*AType = 0;
*QType = 14;
return 1;
case 12:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(3);
*b_max = FLT2FIX(258);
return 1;
case 14:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(3);
*b_max = FLT2FIX(34);
return 1;
case 15:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(3);
*b_max = FLT2FIX(258);
return 1;
case 17:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(3);
*b_max = FLT2FIX(34);
return 1;
default:
return 0;
}
}
GF_Node *NurbsSurface_Create()
{
M_NurbsSurface *p;
GF_SAFEALLOC(p, M_NurbsSurface);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_NurbsSurface);
p->uTessellation = 0;
p->vTessellation = 0;
p->ccw = 1;
p->colorPerVertex = 1;
p->solid = 1;
p->uDimension = 4;
p->uOrder = 4;
p->vDimension = 4;
p->vOrder = 4;
return (GF_Node *)p;
}
static void OctreeImage_Del(GF_Node *node)
{
M_OctreeImage *p = (M_OctreeImage *) node;
gf_node_unregister_children((GF_Node *) p, p->images);
gf_sg_mfint32_del(p->octree);
gf_sg_mfint32_del(p->voxelImageIndex);
gf_node_free((GF_Node *) p);
}
static const u16 OctreeImage_Def2All[] = { 0, 1, 2, 3};
static u32 OctreeImage_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err OctreeImage_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = OctreeImage_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err OctreeImage_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "images";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFDepthImageNode;
info->far_ptr = & ((M_OctreeImage *)node)->images;
return GF_OK;
case 1:
info->name = "octree";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_OctreeImage *) node)->octree;
return GF_OK;
case 2:
info->name = "octreeResolution";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_OctreeImage *) node)->octreeResolution;
return GF_OK;
case 3:
info->name = "voxelImageIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_OctreeImage *) node)->voxelImageIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 OctreeImage_get_field_index_by_name(char *name)
{
if (!strcmp("images", name)) return 0;
if (!strcmp("octree", name)) return 1;
if (!strcmp("octreeResolution", name)) return 2;
if (!strcmp("voxelImageIndex", name)) return 3;
return -1;
}
static Bool OctreeImage_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
case 3:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
default:
return 0;
}
}
GF_Node *OctreeImage_Create()
{
M_OctreeImage *p;
GF_SAFEALLOC(p, M_OctreeImage);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_OctreeImage);
p->octreeResolution = 256;
return (GF_Node *)p;
}
static void XXParticles_Del(GF_Node *node)
{
M_XXParticles *p = (M_XXParticles *) node;
gf_node_unregister_children((GF_Node *) p, p->influences);
gf_node_unregister((GF_Node *) p->init, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->primitive, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
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};
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};
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};
static u32 XXParticles_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 25;
case GF_SG_FIELD_CODING_DEF:
return 25;
case GF_SG_FIELD_CODING_OUT:
return 25;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 25;
}
}
static GF_Err XXParticles_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XXParticles_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XXParticles_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XXParticles_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XXParticles_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "creationRate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->creationRate;
return GF_OK;
case 1:
info->name = "creationRateVariation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->creationRateVariation;
return GF_OK;
case 2:
info->name = "emitAlpha";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->emitAlpha;
return GF_OK;
case 3:
info->name = "emitColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_XXParticles *) node)->emitColor;
return GF_OK;
case 4:
info->name = "emitColorVariation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_XXParticles *) node)->emitColorVariation;
return GF_OK;
case 5:
info->name = "emitterPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_XXParticles *) node)->emitterPosition;
return GF_OK;
case 6:
info->name = "emitVelocity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_XXParticles *) node)->emitVelocity;
return GF_OK;
case 7:
info->name = "emitVelocityVariation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_XXParticles *) node)->emitVelocityVariation;
return GF_OK;
case 8:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_XXParticles *) node)->enabled;
return GF_OK;
case 9:
info->name = "fadeAlpha";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->fadeAlpha;
return GF_OK;
case 10:
info->name = "fadeColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_XXParticles *) node)->fadeColor;
return GF_OK;
case 11:
info->name = "fadeRate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->fadeRate;
return GF_OK;
case 12:
info->name = "force";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_XXParticles *) node)->force;
return GF_OK;
case 13:
info->name = "influences";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFInfluenceNode;
info->far_ptr = & ((M_XXParticles *)node)->influences;
return GF_OK;
case 14:
info->name = "init";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFWorldNode;
info->far_ptr = & ((M_XXParticles *)node)->init;
return GF_OK;
case 15:
info->name = "maxLifeTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_XXParticles *) node)->maxLifeTime;
return GF_OK;
case 16:
info->name = "maxLifeTimeVariation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->maxLifeTimeVariation;
return GF_OK;
case 17:
info->name = "maxParticles";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_XXParticles *) node)->maxParticles;
return GF_OK;
case 18:
info->name = "minRange";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->minRange;
return GF_OK;
case 19:
info->name = "maxRange";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->maxRange;
return GF_OK;
case 20:
info->name = "primitive";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFWorldNode;
info->far_ptr = & ((M_XXParticles *)node)->primitive;
return GF_OK;
case 21:
info->name = "primitiveType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_XXParticles *) node)->primitiveType;
return GF_OK;
case 22:
info->name = "particleRadius";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->particleRadius;
return GF_OK;
case 23:
info->name = "particleRadiusRate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->particleRadiusRate;
return GF_OK;
case 24:
info->name = "particleRadiusVariation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticles *) node)->particleRadiusVariation;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XXParticles_get_field_index_by_name(char *name)
{
if (!strcmp("creationRate", name)) return 0;
if (!strcmp("creationRateVariation", name)) return 1;
if (!strcmp("emitAlpha", name)) return 2;
if (!strcmp("emitColor", name)) return 3;
if (!strcmp("emitColorVariation", name)) return 4;
if (!strcmp("emitterPosition", name)) return 5;
if (!strcmp("emitVelocity", name)) return 6;
if (!strcmp("emitVelocityVariation", name)) return 7;
if (!strcmp("enabled", name)) return 8;
if (!strcmp("fadeAlpha", name)) return 9;
if (!strcmp("fadeColor", name)) return 10;
if (!strcmp("fadeRate", name)) return 11;
if (!strcmp("force", name)) return 12;
if (!strcmp("influences", name)) return 13;
if (!strcmp("init", name)) return 14;
if (!strcmp("maxLifeTime", name)) return 15;
if (!strcmp("maxLifeTimeVariation", name)) return 16;
if (!strcmp("maxParticles", name)) return 17;
if (!strcmp("minRange", name)) return 18;
if (!strcmp("maxRange", name)) return 19;
if (!strcmp("primitive", name)) return 20;
if (!strcmp("primitiveType", name)) return 21;
if (!strcmp("particleRadius", name)) return 22;
if (!strcmp("particleRadiusRate", name)) return 23;
if (!strcmp("particleRadiusVariation", name)) return 24;
return -1;
}
static Bool XXParticles_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *XXParticles_Create()
{
M_XXParticles *p;
GF_SAFEALLOC(p, M_XXParticles);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XXParticles);
p->creationRate = FLT2FIX(500);
p->creationRateVariation = FLT2FIX(0);
p->emitAlpha = FLT2FIX(1.0);
p->emitColor.red = FLT2FIX(1);
p->emitColor.green = FLT2FIX(1);
p->emitColor.blue = FLT2FIX(1);
p->emitColorVariation.red = FLT2FIX(0);
p->emitColorVariation.green = FLT2FIX(0);
p->emitColorVariation.blue = FLT2FIX(0);
p->emitterPosition.x = FLT2FIX(0);
p->emitterPosition.y = FLT2FIX(3);
p->emitterPosition.z = FLT2FIX(0);
p->emitVelocity.x = FLT2FIX(0);
p->emitVelocity.y = FLT2FIX(0);
p->emitVelocity.z = FLT2FIX(0);
p->emitVelocityVariation.x = FLT2FIX(1);
p->emitVelocityVariation.y = FLT2FIX(1);
p->emitVelocityVariation.z = FLT2FIX(1);
p->enabled = 1;
p->fadeAlpha = FLT2FIX(1.0);
p->fadeColor.red = FLT2FIX(0.25);
p->fadeColor.green = FLT2FIX(0.25);
p->fadeColor.blue = FLT2FIX(0.25);
p->fadeRate = FLT2FIX(0.25);
p->force.x = FLT2FIX(0);
p->force.y = FLT2FIX(-9.8);
p->force.z = FLT2FIX(0);
p->maxLifeTime = 5;
p->maxLifeTimeVariation = FLT2FIX(0);
p->maxParticles = 500;
p->minRange = FLT2FIX(1);
p->maxRange = FLT2FIX(-1);
p->primitiveType = 2;
p->particleRadius = FLT2FIX(0.1);
p->particleRadiusRate = FLT2FIX(0);
p->particleRadiusVariation = FLT2FIX(0);
return (GF_Node *)p;
}
static void XXParticleInitBox_Del(GF_Node *node)
{
M_XXParticleInitBox *p = (M_XXParticleInitBox *) node;
gf_node_free((GF_Node *) p);
}
static const u16 XXParticleInitBox_Def2All[] = { 0, 1};
static const u16 XXParticleInitBox_In2All[] = { 0, 1};
static const u16 XXParticleInitBox_Out2All[] = { 0, 1};
static u32 XXParticleInitBox_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err XXParticleInitBox_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XXParticleInitBox_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XXParticleInitBox_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XXParticleInitBox_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XXParticleInitBox_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "falloff";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXParticleInitBox *) node)->falloff;
return GF_OK;
case 1:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_XXParticleInitBox *) node)->size;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XXParticleInitBox_get_field_index_by_name(char *name)
{
if (!strcmp("falloff", name)) return 0;
if (!strcmp("size", name)) return 1;
return -1;
}
static Bool XXParticleInitBox_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *XXParticleInitBox_Create()
{
M_XXParticleInitBox *p;
GF_SAFEALLOC(p, M_XXParticleInitBox);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XXParticleInitBox);
p->falloff = FLT2FIX(0);
p->size.x = FLT2FIX(1);
p->size.y = FLT2FIX(1);
p->size.z = FLT2FIX(1);
return (GF_Node *)p;
}
static void XXPlanarObstacle_Del(GF_Node *node)
{
M_XXPlanarObstacle *p = (M_XXPlanarObstacle *) node;
gf_node_free((GF_Node *) p);
}
static const u16 XXPlanarObstacle_Def2All[] = { 0, 1, 2, 3};
static const u16 XXPlanarObstacle_In2All[] = { 0, 1, 2, 3};
static const u16 XXPlanarObstacle_Out2All[] = { 0, 1, 2, 3};
static u32 XXPlanarObstacle_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err XXPlanarObstacle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XXPlanarObstacle_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XXPlanarObstacle_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XXPlanarObstacle_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XXPlanarObstacle_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "distance";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_XXPlanarObstacle *) node)->distance;
return GF_OK;
case 1:
info->name = "normal";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_XXPlanarObstacle *) node)->normal;
return GF_OK;
case 2:
info->name = "reflection";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXPlanarObstacle *) node)->reflection;
return GF_OK;
case 3:
info->name = "absorption";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXPlanarObstacle *) node)->absorption;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XXPlanarObstacle_get_field_index_by_name(char *name)
{
if (!strcmp("distance", name)) return 0;
if (!strcmp("normal", name)) return 1;
if (!strcmp("reflection", name)) return 2;
if (!strcmp("absorption", name)) return 3;
return -1;
}
static Bool XXPlanarObstacle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *XXPlanarObstacle_Create()
{
M_XXPlanarObstacle *p;
GF_SAFEALLOC(p, M_XXPlanarObstacle);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XXPlanarObstacle);
p->distance.x = FLT2FIX(0);
p->distance.y = FLT2FIX(0);
p->distance.z = FLT2FIX(0);
p->normal.x = FLT2FIX(0);
p->normal.y = FLT2FIX(1);
p->normal.z = FLT2FIX(0);
p->reflection = FLT2FIX(0);
p->absorption = FLT2FIX(0);
return (GF_Node *)p;
}
static void XXPointAttractor_Del(GF_Node *node)
{
M_XXPointAttractor *p = (M_XXPointAttractor *) node;
gf_node_free((GF_Node *) p);
}
static const u16 XXPointAttractor_Def2All[] = { 0, 1, 2, 3};
static const u16 XXPointAttractor_In2All[] = { 0, 1, 2, 3};
static const u16 XXPointAttractor_Out2All[] = { 0, 1, 2, 3};
static u32 XXPointAttractor_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err XXPointAttractor_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XXPointAttractor_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XXPointAttractor_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XXPointAttractor_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XXPointAttractor_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "innerRadius";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXPointAttractor *) node)->innerRadius;
return GF_OK;
case 1:
info->name = "outerRadius";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXPointAttractor *) node)->outerRadius;
return GF_OK;
case 2:
info->name = "position";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_XXPointAttractor *) node)->position;
return GF_OK;
case 3:
info->name = "rate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XXPointAttractor *) node)->rate;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XXPointAttractor_get_field_index_by_name(char *name)
{
if (!strcmp("innerRadius", name)) return 0;
if (!strcmp("outerRadius", name)) return 1;
if (!strcmp("position", name)) return 2;
if (!strcmp("rate", name)) return 3;
return -1;
}
static Bool XXPointAttractor_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *XXPointAttractor_Create()
{
M_XXPointAttractor *p;
GF_SAFEALLOC(p, M_XXPointAttractor);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XXPointAttractor);
p->innerRadius = FLT2FIX(10);
p->outerRadius = FLT2FIX(100);
p->position.x = FLT2FIX(0);
p->position.y = FLT2FIX(0);
p->position.z = FLT2FIX(0);
p->rate = FLT2FIX(1);
return (GF_Node *)p;
}
static void PointTexture_Del(GF_Node *node)
{
M_PointTexture *p = (M_PointTexture *) node;
gf_sg_mfcolor_del(p->color);
gf_sg_mfint32_del(p->depth);
gf_node_free((GF_Node *) p);
}
static const u16 PointTexture_Def2All[] = { 0, 1, 2, 3, 4};
static u32 PointTexture_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 5;
}
}
static GF_Err PointTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = PointTexture_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PointTexture_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "color";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_PointTexture *) node)->color;
return GF_OK;
case 1:
info->name = "depth";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_PointTexture *) node)->depth;
return GF_OK;
case 2:
info->name = "depthNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PointTexture *) node)->depthNbBits;
return GF_OK;
case 3:
info->name = "height";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PointTexture *) node)->height;
return GF_OK;
case 4:
info->name = "width";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PointTexture *) node)->width;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PointTexture_get_field_index_by_name(char *name)
{
if (!strcmp("color", name)) return 0;
if (!strcmp("depth", name)) return 1;
if (!strcmp("depthNbBits", name)) return 2;
if (!strcmp("height", name)) return 3;
if (!strcmp("width", name)) return 4;
return -1;
}
static Bool PointTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
default:
return 0;
}
}
GF_Node *PointTexture_Create()
{
M_PointTexture *p;
GF_SAFEALLOC(p, M_PointTexture);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PointTexture);
p->depthNbBits = 7;
p->height = 256;
p->width = 256;
return (GF_Node *)p;
}
static void PositionAnimator_Del(GF_Node *node)
{
M_PositionAnimator *p = (M_PositionAnimator *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfrotation_del(p->keyOrientation);
gf_sg_mfvec2f_del(p->keySpline);
gf_sg_mfvec3f_del(p->keyValue);
gf_sg_mffloat_del(p->weight);
gf_node_free((GF_Node *) p);
}
static const u16 PositionAnimator_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 PositionAnimator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 PositionAnimator_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static u32 PositionAnimator_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 10;
case GF_SG_FIELD_CODING_DEF:
return 9;
case GF_SG_FIELD_CODING_OUT:
return 12;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 13;
}
}
static GF_Err PositionAnimator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PositionAnimator_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PositionAnimator_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PositionAnimator_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PositionAnimator_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_PositionAnimator *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PositionAnimator *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "fromTo";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PositionAnimator *) node)->fromTo;
return GF_OK;
case 2:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_PositionAnimator *) node)->key;
return GF_OK;
case 3:
info->name = "keyOrientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFROTATION;
info->far_ptr = & ((M_PositionAnimator *) node)->keyOrientation;
return GF_OK;
case 4:
info->name = "keyType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PositionAnimator *) node)->keyType;
return GF_OK;
case 5:
info->name = "keySpline";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_PositionAnimator *) node)->keySpline;
return GF_OK;
case 6:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_PositionAnimator *) node)->keyValue;
return GF_OK;
case 7:
info->name = "keyValueType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PositionAnimator *) node)->keyValueType;
return GF_OK;
case 8:
info->name = "offset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_PositionAnimator *) node)->offset;
return GF_OK;
case 9:
info->name = "weight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_PositionAnimator *) node)->weight;
return GF_OK;
case 10:
info->name = "endValue";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_PositionAnimator *) node)->endValue;
return GF_OK;
case 11:
info->name = "rotation_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_PositionAnimator *) node)->rotation_changed;
return GF_OK;
case 12:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_PositionAnimator *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PositionAnimator_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("fromTo", name)) return 1;
if (!strcmp("key", name)) return 2;
if (!strcmp("keyOrientation", name)) return 3;
if (!strcmp("keyType", name)) return 4;
if (!strcmp("keySpline", name)) return 5;
if (!strcmp("keyValue", name)) return 6;
if (!strcmp("keyValueType", name)) return 7;
if (!strcmp("offset", name)) return 8;
if (!strcmp("weight", name)) return 9;
if (!strcmp("endValue", name)) return 10;
if (!strcmp("rotation_changed", name)) return 11;
if (!strcmp("value_changed", name)) return 12;
return -1;
}
static Bool PositionAnimator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
return 1;
case 2:
*AType = 0;
*QType = 8;
return 1;
case 5:
*AType = 0;
*QType = 8;
return 1;
case 6:
*AType = 0;
*QType = 4;
return 1;
case 8:
*AType = 0;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *PositionAnimator_Create()
{
M_PositionAnimator *p;
GF_SAFEALLOC(p, M_PositionAnimator);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionAnimator);
p->fromTo.x = FLT2FIX(0);
p->fromTo.y = FLT2FIX(1);
p->keyType = 0;
p->keySpline.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
p->keySpline.count = 2;
p->keySpline.vals[0].x = FLT2FIX(0);
p->keySpline.vals[0].y = FLT2FIX(0);
p->keySpline.vals[1].x = FLT2FIX(1);
p->keySpline.vals[1].y = FLT2FIX(1);
p->keyValueType = 0;
p->offset.x = FLT2FIX(0);
p->offset.y = FLT2FIX(0);
p->offset.z = FLT2FIX(0);
return (GF_Node *)p;
}
static void PositionAnimator2D_Del(GF_Node *node)
{
M_PositionAnimator2D *p = (M_PositionAnimator2D *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfvec2f_del(p->keySpline);
gf_sg_mfvec2f_del(p->keyValue);
gf_sg_mffloat_del(p->weight);
gf_node_free((GF_Node *) p);
}
static const u16 PositionAnimator2D_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 PositionAnimator2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 PositionAnimator2D_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static u32 PositionAnimator2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 10;
case GF_SG_FIELD_CODING_DEF:
return 9;
case GF_SG_FIELD_CODING_OUT:
return 12;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 13;
}
}
static GF_Err PositionAnimator2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PositionAnimator2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PositionAnimator2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PositionAnimator2D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PositionAnimator2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_PositionAnimator2D *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PositionAnimator2D *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "fromTo";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PositionAnimator2D *) node)->fromTo;
return GF_OK;
case 2:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_PositionAnimator2D *) node)->key;
return GF_OK;
case 3:
info->name = "keyOrientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PositionAnimator2D *) node)->keyOrientation;
return GF_OK;
case 4:
info->name = "keyType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PositionAnimator2D *) node)->keyType;
return GF_OK;
case 5:
info->name = "keySpline";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_PositionAnimator2D *) node)->keySpline;
return GF_OK;
case 6:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_PositionAnimator2D *) node)->keyValue;
return GF_OK;
case 7:
info->name = "keyValueType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PositionAnimator2D *) node)->keyValueType;
return GF_OK;
case 8:
info->name = "offset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PositionAnimator2D *) node)->offset;
return GF_OK;
case 9:
info->name = "weight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_PositionAnimator2D *) node)->weight;
return GF_OK;
case 10:
info->name = "endValue";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PositionAnimator2D *) node)->endValue;
return GF_OK;
case 11:
info->name = "rotation_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PositionAnimator2D *) node)->rotation_changed;
return GF_OK;
case 12:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_PositionAnimator2D *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PositionAnimator2D_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("fromTo", name)) return 1;
if (!strcmp("key", name)) return 2;
if (!strcmp("keyOrientation", name)) return 3;
if (!strcmp("keyType", name)) return 4;
if (!strcmp("keySpline", name)) return 5;
if (!strcmp("keyValue", name)) return 6;
if (!strcmp("keyValueType", name)) return 7;
if (!strcmp("offset", name)) return 8;
if (!strcmp("weight", name)) return 9;
if (!strcmp("endValue", name)) return 10;
if (!strcmp("rotation_changed", name)) return 11;
if (!strcmp("value_changed", name)) return 12;
return -1;
}
static Bool PositionAnimator2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
return 1;
case 2:
*AType = 0;
*QType = 8;
return 1;
case 5:
*AType = 0;
*QType = 8;
return 1;
case 6:
*AType = 0;
*QType = 4;
return 1;
case 8:
*AType = 0;
*QType = 2;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *PositionAnimator2D_Create()
{
M_PositionAnimator2D *p;
GF_SAFEALLOC(p, M_PositionAnimator2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionAnimator2D);
p->fromTo.x = FLT2FIX(0);
p->fromTo.y = FLT2FIX(1);
p->keyOrientation = 0;
p->keyType = 0;
p->keySpline.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
p->keySpline.count = 2;
p->keySpline.vals[0].x = FLT2FIX(0);
p->keySpline.vals[0].y = FLT2FIX(0);
p->keySpline.vals[1].x = FLT2FIX(1);
p->keySpline.vals[1].y = FLT2FIX(1);
p->keyValueType = 0;
p->offset.x = FLT2FIX(0);
p->offset.y = FLT2FIX(0);
return (GF_Node *)p;
}
static void PositionInterpolator4D_Del(GF_Node *node)
{
M_PositionInterpolator4D *p = (M_PositionInterpolator4D *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfvec4f_del(p->keyValue);
gf_node_free((GF_Node *) p);
}
static const u16 PositionInterpolator4D_Def2All[] = { 1, 2};
static const u16 PositionInterpolator4D_In2All[] = { 0, 1, 2};
static const u16 PositionInterpolator4D_Out2All[] = { 1, 2, 3};
static u32 PositionInterpolator4D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err PositionInterpolator4D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PositionInterpolator4D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PositionInterpolator4D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PositionInterpolator4D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PositionInterpolator4D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_PositionInterpolator4D *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PositionInterpolator4D *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_PositionInterpolator4D *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC4F;
info->far_ptr = & ((M_PositionInterpolator4D *) node)->keyValue;
return GF_OK;
case 3:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC4F;
info->far_ptr = & ((M_PositionInterpolator4D *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PositionInterpolator4D_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("value_changed", name)) return 3;
return -1;
}
static Bool PositionInterpolator4D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *PositionInterpolator4D_Create()
{
M_PositionInterpolator4D *p;
GF_SAFEALLOC(p, M_PositionInterpolator4D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PositionInterpolator4D);
return (GF_Node *)p;
}
static void ProceduralTexture_Del(GF_Node *node)
{
M_ProceduralTexture *p = (M_ProceduralTexture *) node;
gf_sg_mfvec2f_del(p->aWarpmap);
gf_sg_mffloat_del(p->aWeights);
gf_sg_mfvec2f_del(p->bWarpmap);
gf_sg_mffloat_del(p->bWeights);
gf_sg_mfcolor_del(p->color);
gf_sg_mfvec2f_del(p->xWarpmap);
gf_sg_mfvec2f_del(p->yWarpmap);
gf_sg_sfimage_del(p->image_changed);
gf_node_free((GF_Node *) p);
}
static const u16 ProceduralTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
static const u16 ProceduralTexture_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18};
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};
static u32 ProceduralTexture_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 19;
case GF_SG_FIELD_CODING_DEF:
return 19;
case GF_SG_FIELD_CODING_OUT:
return 20;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 20;
}
}
static GF_Err ProceduralTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ProceduralTexture_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ProceduralTexture_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ProceduralTexture_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ProceduralTexture_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "aSmooth";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ProceduralTexture *) node)->aSmooth;
return GF_OK;
case 1:
info->name = "aWarpmap";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_ProceduralTexture *) node)->aWarpmap;
return GF_OK;
case 2:
info->name = "aWeights";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_ProceduralTexture *) node)->aWeights;
return GF_OK;
case 3:
info->name = "bSmooth";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ProceduralTexture *) node)->bSmooth;
return GF_OK;
case 4:
info->name = "bWarpmap";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_ProceduralTexture *) node)->bWarpmap;
return GF_OK;
case 5:
info->name = "bWeights";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_ProceduralTexture *) node)->bWeights;
return GF_OK;
case 6:
info->name = "cellWidth";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ProceduralTexture *) node)->cellWidth;
return GF_OK;
case 7:
info->name = "cellHeight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ProceduralTexture *) node)->cellHeight;
return GF_OK;
case 8:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_ProceduralTexture *) node)->color;
return GF_OK;
case 9:
info->name = "distortion";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ProceduralTexture *) node)->distortion;
return GF_OK;
case 10:
info->name = "height";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ProceduralTexture *) node)->height;
return GF_OK;
case 11:
info->name = "roughness";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ProceduralTexture *) node)->roughness;
return GF_OK;
case 12:
info->name = "seed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ProceduralTexture *) node)->seed;
return GF_OK;
case 13:
info->name = "type";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ProceduralTexture *) node)->type;
return GF_OK;
case 14:
info->name = "xSmooth";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ProceduralTexture *) node)->xSmooth;
return GF_OK;
case 15:
info->name = "xWarpmap";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_ProceduralTexture *) node)->xWarpmap;
return GF_OK;
case 16:
info->name = "ySmooth";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_ProceduralTexture *) node)->ySmooth;
return GF_OK;
case 17:
info->name = "yWarpmap";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_ProceduralTexture *) node)->yWarpmap;
return GF_OK;
case 18:
info->name = "width";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ProceduralTexture *) node)->width;
return GF_OK;
case 19:
info->name = "image_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFIMAGE;
info->far_ptr = & ((M_ProceduralTexture *) node)->image_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ProceduralTexture_get_field_index_by_name(char *name)
{
if (!strcmp("aSmooth", name)) return 0;
if (!strcmp("aWarpmap", name)) return 1;
if (!strcmp("aWeights", name)) return 2;
if (!strcmp("bSmooth", name)) return 3;
if (!strcmp("bWarpmap", name)) return 4;
if (!strcmp("bWeights", name)) return 5;
if (!strcmp("cellWidth", name)) return 6;
if (!strcmp("cellHeight", name)) return 7;
if (!strcmp("color", name)) return 8;
if (!strcmp("distortion", name)) return 9;
if (!strcmp("height", name)) return 10;
if (!strcmp("roughness", name)) return 11;
if (!strcmp("seed", name)) return 12;
if (!strcmp("type", name)) return 13;
if (!strcmp("xSmooth", name)) return 14;
if (!strcmp("xWarpmap", name)) return 15;
if (!strcmp("ySmooth", name)) return 16;
if (!strcmp("yWarpmap", name)) return 17;
if (!strcmp("width", name)) return 18;
if (!strcmp("image_changed", name)) return 19;
return -1;
}
static Bool ProceduralTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 4:
*AType = 0;
*QType = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX( 1);
return 1;
case 6:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(15);
return 1;
case 7:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(15);
return 1;
case 8:
*AType = 0;
*QType = 4;
return 1;
case 9:
*AType = 0;
*QType = 13;
*QT13_bits = 16;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 10:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(1);
*b_max = FLT2FIX(15);
return 1;
case 11:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(15);
return 1;
case 13:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(4);
return 1;
case 15:
*AType = 0;
*QType = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 17:
*AType = 0;
*QType = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 18:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(1);
*b_max = FLT2FIX(15);
return 1;
default:
return 0;
}
}
GF_Node *ProceduralTexture_Create()
{
M_ProceduralTexture *p;
GF_SAFEALLOC(p, M_ProceduralTexture);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ProceduralTexture);
p->aWarpmap.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
p->aWarpmap.count = 2;
p->aWarpmap.vals[0].x = FLT2FIX(0);
p->aWarpmap.vals[0].y = FLT2FIX(0);
p->aWarpmap.vals[1].x = FLT2FIX(1);
p->aWarpmap.vals[1].y = FLT2FIX(1);
p->aWeights.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*16);
p->aWeights.count = 16;
p->aWeights.vals[0] = FLT2FIX(0);
p->aWeights.vals[1] = FLT2FIX(0);
p->aWeights.vals[2] = FLT2FIX(0);
p->aWeights.vals[3] = FLT2FIX(0);
p->aWeights.vals[4] = FLT2FIX(0);
p->aWeights.vals[5] = FLT2FIX(0);
p->aWeights.vals[6] = FLT2FIX(0);
p->aWeights.vals[7] = FLT2FIX(0);
p->aWeights.vals[8] = FLT2FIX(0);
p->aWeights.vals[9] = FLT2FIX(0);
p->aWeights.vals[10] = FLT2FIX(0);
p->aWeights.vals[11] = FLT2FIX(0);
p->aWeights.vals[12] = FLT2FIX(1);
p->aWeights.vals[13] = FLT2FIX(0);
p->aWeights.vals[14] = FLT2FIX(0);
p->aWeights.vals[15] = FLT2FIX(0);
p->bWarpmap.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
p->bWarpmap.count = 2;
p->bWarpmap.vals[0].x = FLT2FIX(0);
p->bWarpmap.vals[0].y = FLT2FIX(0);
p->bWarpmap.vals[1].x = FLT2FIX(1);
p->bWarpmap.vals[1].y = FLT2FIX(1);
p->bWeights.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*16);
p->bWeights.count = 16;
p->bWeights.vals[0] = FLT2FIX(0);
p->bWeights.vals[1] = FLT2FIX(0);
p->bWeights.vals[2] = FLT2FIX(0);
p->bWeights.vals[3] = FLT2FIX(0);
p->bWeights.vals[4] = FLT2FIX(0);
p->bWeights.vals[5] = FLT2FIX(1);
p->bWeights.vals[6] = FLT2FIX(0);
p->bWeights.vals[7] = FLT2FIX(0);
p->bWeights.vals[8] = FLT2FIX(0);
p->bWeights.vals[9] = FLT2FIX(0);
p->bWeights.vals[10] = FLT2FIX(0);
p->bWeights.vals[11] = FLT2FIX(0);
p->bWeights.vals[12] = FLT2FIX(0);
p->bWeights.vals[13] = FLT2FIX(0);
p->bWeights.vals[14] = FLT2FIX(0);
p->bWeights.vals[15] = FLT2FIX(0);
p->cellWidth = 4;
p->cellHeight = 4;
p->color.vals = (SFColor*)gf_malloc(sizeof(SFColor)*4);
p->color.count = 4;
p->color.vals[0].red = FLT2FIX(0.3);
p->color.vals[0].green = FLT2FIX(0.698);
p->color.vals[0].blue = FLT2FIX(1);
p->color.vals[1].red = FLT2FIX(0.8);
p->color.vals[1].green = FLT2FIX(0.8);
p->color.vals[1].blue = FLT2FIX(0.8);
p->color.vals[2].red = FLT2FIX(1);
p->color.vals[2].green = FLT2FIX(1);
p->color.vals[2].blue = FLT2FIX(1);
p->color.vals[3].red = FLT2FIX(0);
p->color.vals[3].green = FLT2FIX(0);
p->color.vals[3].blue = FLT2FIX(0);
p->distortion = FLT2FIX(0);
p->height = 7;
p->roughness = 0;
p->seed = 129093;
p->type = 0;
p->width = 7;
return (GF_Node *)p;
}
static void Quadric_Del(GF_Node *node)
{
M_Quadric *p = (M_Quadric *) node;
gf_sg_mfint32_del(p->densities);
gf_node_free((GF_Node *) p);
}
static const u16 Quadric_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 Quadric_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 Quadric_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 Quadric_Dyn2All[] = { 0, 3, 4, 5, 6, 7, 8};
static u32 Quadric_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 10;
case GF_SG_FIELD_CODING_DEF:
return 10;
case GF_SG_FIELD_CODING_OUT:
return 10;
case GF_SG_FIELD_CODING_DYN:
return 7;
default:
return 10;
}
}
static GF_Err Quadric_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Quadric_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Quadric_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Quadric_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Quadric_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Quadric_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "bboxSize";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Quadric *) node)->bboxSize;
return GF_OK;
case 1:
info->name = "densities";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_Quadric *) node)->densities;
return GF_OK;
case 2:
info->name = "dual";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Quadric *) node)->dual;
return GF_OK;
case 3:
info->name = "P0";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC4F;
info->far_ptr = & ((M_Quadric *) node)->P0;
return GF_OK;
case 4:
info->name = "P1";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC4F;
info->far_ptr = & ((M_Quadric *) node)->P1;
return GF_OK;
case 5:
info->name = "P2";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC4F;
info->far_ptr = & ((M_Quadric *) node)->P2;
return GF_OK;
case 6:
info->name = "P3";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC4F;
info->far_ptr = & ((M_Quadric *) node)->P3;
return GF_OK;
case 7:
info->name = "P4";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC4F;
info->far_ptr = & ((M_Quadric *) node)->P4;
return GF_OK;
case 8:
info->name = "P5";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC4F;
info->far_ptr = & ((M_Quadric *) node)->P5;
return GF_OK;
case 9:
info->name = "solid";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Quadric *) node)->solid;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Quadric_get_field_index_by_name(char *name)
{
if (!strcmp("bboxSize", name)) return 0;
if (!strcmp("densities", name)) return 1;
if (!strcmp("dual", name)) return 2;
if (!strcmp("P0", name)) return 3;
if (!strcmp("P1", name)) return 4;
if (!strcmp("P2", name)) return 5;
if (!strcmp("P3", name)) return 6;
if (!strcmp("P4", name)) return 7;
if (!strcmp("P5", name)) return 8;
if (!strcmp("solid", name)) return 9;
return -1;
}
static Bool Quadric_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 11;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 15;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 15;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 15;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 15;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 15;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 15;
*QType = 15;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Quadric_Create()
{
M_Quadric *p;
GF_SAFEALLOC(p, M_Quadric);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Quadric);
p->bboxSize.x = FLT2FIX(2);
p->bboxSize.y = FLT2FIX(2);
p->bboxSize.z = FLT2FIX(2);
p->P0.x = FLT2FIX(-1);
p->P0.y = FLT2FIX(0);
p->P0.z = FLT2FIX(0);
p->P0.q = FLT2FIX(1);
p->P1.x = FLT2FIX(1);
p->P1.y = FLT2FIX(0);
p->P1.z = FLT2FIX(0);
p->P1.q = FLT2FIX(1);
p->P2.x = FLT2FIX(0);
p->P2.y = FLT2FIX(1);
p->P2.z = FLT2FIX(0);
p->P2.q = FLT2FIX(0);
p->P3.x = FLT2FIX(0);
p->P3.y = FLT2FIX(0);
p->P3.z = FLT2FIX(1);
p->P3.q = FLT2FIX(0);
p->P4.x = FLT2FIX(0);
p->P4.y = FLT2FIX(1);
p->P4.z = FLT2FIX(0);
p->P4.q = FLT2FIX(1);
p->P5.x = FLT2FIX(0);
p->P5.y = FLT2FIX(0);
p->P5.z = FLT2FIX(1);
p->P5.q = FLT2FIX(1);
return (GF_Node *)p;
}
static void SBBone_Del(GF_Node *node)
{
M_SBBone *p = (M_SBBone *) node;
gf_sg_mffloat_del(p->ikPitchLimit);
gf_sg_mffloat_del(p->ikRollLimit);
gf_sg_mffloat_del(p->ikTxLimit);
gf_sg_mffloat_del(p->ikTyLimit);
gf_sg_mffloat_del(p->ikTzLimit);
gf_sg_mffloat_del(p->ikYawLimit);
gf_sg_mffloat_del(p->sectionInner);
gf_sg_mffloat_del(p->sectionOuter);
gf_sg_mffloat_del(p->sectionPosition);
gf_sg_mfint32_del(p->skinCoordIndex);
gf_sg_mffloat_del(p->skinCoordWeight);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
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};
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};
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};
static const u16 SBBone_Dyn2All[] = { 3, 5, 14, 16, 17, 23};
static u32 SBBone_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 24;
case GF_SG_FIELD_CODING_DEF:
return 22;
case GF_SG_FIELD_CODING_OUT:
return 22;
case GF_SG_FIELD_CODING_DYN:
return 6;
default:
return 24;
}
}
static GF_Err SBBone_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SBBone_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SBBone_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SBBone_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = SBBone_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SBBone_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SBBone *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBBone *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SBBone *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBBone *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "boneID";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SBBone *) node)->boneID;
return GF_OK;
case 3:
info->name = "center";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBBone *) node)->center;
return GF_OK;
case 4:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBBone *)node)->children;
return GF_OK;
case 5:
info->name = "endpoint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBBone *) node)->endpoint;
return GF_OK;
case 6:
info->name = "falloff";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SBBone *) node)->falloff;
return GF_OK;
case 7:
info->name = "ikChainPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SBBone *) node)->ikChainPosition;
return GF_OK;
case 8:
info->name = "ikPitchLimit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBBone *) node)->ikPitchLimit;
return GF_OK;
case 9:
info->name = "ikRollLimit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBBone *) node)->ikRollLimit;
return GF_OK;
case 10:
info->name = "ikTxLimit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBBone *) node)->ikTxLimit;
return GF_OK;
case 11:
info->name = "ikTyLimit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBBone *) node)->ikTyLimit;
return GF_OK;
case 12:
info->name = "ikTzLimit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBBone *) node)->ikTzLimit;
return GF_OK;
case 13:
info->name = "ikYawLimit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBBone *) node)->ikYawLimit;
return GF_OK;
case 14:
info->name = "rotation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_SBBone *) node)->rotation;
return GF_OK;
case 15:
info->name = "rotationOrder";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SBBone *) node)->rotationOrder;
return GF_OK;
case 16:
info->name = "scale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBBone *) node)->scale;
return GF_OK;
case 17:
info->name = "scaleOrientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_SBBone *) node)->scaleOrientation;
return GF_OK;
case 18:
info->name = "sectionInner";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBBone *) node)->sectionInner;
return GF_OK;
case 19:
info->name = "sectionOuter";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBBone *) node)->sectionOuter;
return GF_OK;
case 20:
info->name = "sectionPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBBone *) node)->sectionPosition;
return GF_OK;
case 21:
info->name = "skinCoordIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SBBone *) node)->skinCoordIndex;
return GF_OK;
case 22:
info->name = "skinCoordWeight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBBone *) node)->skinCoordWeight;
return GF_OK;
case 23:
info->name = "translation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBBone *) node)->translation;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SBBone_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("boneID", name)) return 2;
if (!strcmp("center", name)) return 3;
if (!strcmp("children", name)) return 4;
if (!strcmp("endpoint", name)) return 5;
if (!strcmp("falloff", name)) return 6;
if (!strcmp("ikChainPosition", name)) return 7;
if (!strcmp("ikPitchLimit", name)) return 8;
if (!strcmp("ikRollLimit", name)) return 9;
if (!strcmp("ikTxLimit", name)) return 10;
if (!strcmp("ikTyLimit", name)) return 11;
if (!strcmp("ikTzLimit", name)) return 12;
if (!strcmp("ikYawLimit", name)) return 13;
if (!strcmp("rotation", name)) return 14;
if (!strcmp("rotationOrder", name)) return 15;
if (!strcmp("scale", name)) return 16;
if (!strcmp("scaleOrientation", name)) return 17;
if (!strcmp("sectionInner", name)) return 18;
if (!strcmp("sectionOuter", name)) return 19;
if (!strcmp("sectionPosition", name)) return 20;
if (!strcmp("skinCoordIndex", name)) return 21;
if (!strcmp("skinCoordWeight", name)) return 22;
if (!strcmp("translation", name)) return 23;
return -1;
}
static Bool SBBone_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 10;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1023);
return 1;
case 3:
*AType = 1;
*QType = 1;
return 1;
case 5:
*AType = 1;
*QType = 1;
return 1;
case 6:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(4);
return 1;
case 7:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(3);
return 1;
case 14:
*AType = 10;
*QType = 10;
return 1;
case 15:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(23);
return 1;
case 16:
*AType = 11;
*QType = 7;
return 1;
case 17:
*AType = 10;
*QType = 10;
return 1;
case 21:
*AType = 0;
*QType = 14;
return 1;
case 23:
*AType = 1;
*QType = 1;
return 1;
default:
return 0;
}
}
GF_Node *SBBone_Create()
{
M_SBBone *p;
GF_SAFEALLOC(p, M_SBBone);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SBBone);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->boneID = 0;
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->center.z = FLT2FIX(0);
p->endpoint.x = FLT2FIX(0);
p->endpoint.y = FLT2FIX(0);
p->endpoint.z = FLT2FIX(1);
p->falloff = 1;
p->ikChainPosition = 0;
p->rotation.x = FLT2FIX(0);
p->rotation.y = FLT2FIX(0);
p->rotation.z = FLT2FIX(1);
p->rotation.q = FLT2FIX(0);
p->rotationOrder = 0;
p->scale.x = FLT2FIX(0);
p->scale.y = FLT2FIX(0);
p->scale.z = FLT2FIX(0);
p->scaleOrientation.x = FLT2FIX(0);
p->scaleOrientation.y = FLT2FIX(0);
p->scaleOrientation.z = FLT2FIX(1);
p->scaleOrientation.q = FLT2FIX(0);
p->translation.x = FLT2FIX(0);
p->translation.y = FLT2FIX(0);
p->translation.z = FLT2FIX(0);
return (GF_Node *)p;
}
static void SBMuscle_Del(GF_Node *node)
{
M_SBMuscle *p = (M_SBMuscle *) node;
gf_node_unregister((GF_Node *) p->muscleCurve, (GF_Node *) p);
gf_sg_mfint32_del(p->skinCoordIndex);
gf_sg_mffloat_del(p->skinCoordWeight);
gf_node_free((GF_Node *) p);
}
static const u16 SBMuscle_Def2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 SBMuscle_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 SBMuscle_Out2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 SBMuscle_Dyn2All[] = { 3};
static u32 SBMuscle_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 6;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 6;
}
}
static GF_Err SBMuscle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SBMuscle_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SBMuscle_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SBMuscle_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = SBMuscle_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SBMuscle_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "falloff";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SBMuscle *) node)->falloff;
return GF_OK;
case 1:
info->name = "muscleCurve";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_SBMuscle *)node)->muscleCurve;
return GF_OK;
case 2:
info->name = "muscleID";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SBMuscle *) node)->muscleID;
return GF_OK;
case 3:
info->name = "radius";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SBMuscle *) node)->radius;
return GF_OK;
case 4:
info->name = "skinCoordIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SBMuscle *) node)->skinCoordIndex;
return GF_OK;
case 5:
info->name = "skinCoordWeight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_SBMuscle *) node)->skinCoordWeight;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SBMuscle_get_field_index_by_name(char *name)
{
if (!strcmp("falloff", name)) return 0;
if (!strcmp("muscleCurve", name)) return 1;
if (!strcmp("muscleID", name)) return 2;
if (!strcmp("radius", name)) return 3;
if (!strcmp("skinCoordIndex", name)) return 4;
if (!strcmp("skinCoordWeight", name)) return 5;
return -1;
}
static Bool SBMuscle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(4);
return 1;
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 10;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1023);
return 1;
case 3:
*AType = 11;
*QType = 7;
return 1;
case 4:
*AType = 0;
*QType = 14;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *SBMuscle_Create()
{
M_SBMuscle *p;
GF_SAFEALLOC(p, M_SBMuscle);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SBMuscle);
p->falloff = 1;
p->muscleID = 0;
p->radius = 1;
return (GF_Node *)p;
}
static void SBSegment_Del(GF_Node *node)
{
M_SBSegment *p = (M_SBSegment *) node;
gf_sg_mfvec3f_del(p->momentsOfInertia);
gf_sg_sfstring_del(p->name);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 SBSegment_Def2All[] = { 2, 3, 4, 5, 6};
static const u16 SBSegment_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 SBSegment_Out2All[] = { 2, 3, 4, 5, 6};
static const u16 SBSegment_Dyn2All[] = { 2};
static u32 SBSegment_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 7;
}
}
static GF_Err SBSegment_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SBSegment_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SBSegment_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SBSegment_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = SBSegment_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SBSegment_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SBSegment *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBSegment *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SBSegment *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBSegment *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "centerOfMass";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBSegment *) node)->centerOfMass;
return GF_OK;
case 3:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBSegment *)node)->children;
return GF_OK;
case 4:
info->name = "mass";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SBSegment *) node)->mass;
return GF_OK;
case 5:
info->name = "momentsOfInertia";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_SBSegment *) node)->momentsOfInertia;
return GF_OK;
case 6:
info->name = "name";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_SBSegment *) node)->name;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SBSegment_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("centerOfMass", name)) return 2;
if (!strcmp("children", name)) return 3;
if (!strcmp("mass", name)) return 4;
if (!strcmp("momentsOfInertia", name)) return 5;
if (!strcmp("name", name)) return 6;
return -1;
}
static Bool SBSegment_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 1;
*QType = 1;
return 1;
default:
return 0;
}
}
GF_Node *SBSegment_Create()
{
M_SBSegment *p;
GF_SAFEALLOC(p, M_SBSegment);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SBSegment);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->centerOfMass.x = FLT2FIX(0);
p->centerOfMass.y = FLT2FIX(0);
p->centerOfMass.z = FLT2FIX(0);
p->mass = FLT2FIX(0);
p->momentsOfInertia.vals = (SFVec3f *)gf_malloc(sizeof(SFVec3f)*3);
p->momentsOfInertia.count = 3;
p->momentsOfInertia.vals[0].x = FLT2FIX(0);
p->momentsOfInertia.vals[0].y = FLT2FIX(0);
p->momentsOfInertia.vals[0].z = FLT2FIX(0);
p->momentsOfInertia.vals[1].x = FLT2FIX(0);
p->momentsOfInertia.vals[1].y = FLT2FIX(0);
p->momentsOfInertia.vals[1].z = FLT2FIX(0);
p->momentsOfInertia.vals[2].x = FLT2FIX(0);
p->momentsOfInertia.vals[2].y = FLT2FIX(0);
p->momentsOfInertia.vals[2].z = FLT2FIX(0);
return (GF_Node *)p;
}
static void SBSite_Del(GF_Node *node)
{
M_SBSite *p = (M_SBSite *) node;
gf_sg_sfstring_del(p->name);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 SBSite_Def2All[] = { 2, 3, 4, 5, 6, 7, 8};
static const u16 SBSite_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 SBSite_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
static const u16 SBSite_Dyn2All[] = { 2, 5, 6, 7, 8};
static u32 SBSite_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 9;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 5;
default:
return 9;
}
}
static GF_Err SBSite_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SBSite_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SBSite_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SBSite_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = SBSite_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SBSite_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SBSite *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBSite *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SBSite *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBSite *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "center";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBSite *) node)->center;
return GF_OK;
case 3:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBSite *)node)->children;
return GF_OK;
case 4:
info->name = "name";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_SBSite *) node)->name;
return GF_OK;
case 5:
info->name = "rotation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_SBSite *) node)->rotation;
return GF_OK;
case 6:
info->name = "scale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBSite *) node)->scale;
return GF_OK;
case 7:
info->name = "scaleOrientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_SBSite *) node)->scaleOrientation;
return GF_OK;
case 8:
info->name = "translation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBSite *) node)->translation;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SBSite_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("center", name)) return 2;
if (!strcmp("children", name)) return 3;
if (!strcmp("name", name)) return 4;
if (!strcmp("rotation", name)) return 5;
if (!strcmp("scale", name)) return 6;
if (!strcmp("scaleOrientation", name)) return 7;
if (!strcmp("translation", name)) return 8;
return -1;
}
static Bool SBSite_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 1;
*QType = 1;
return 1;
case 5:
*AType = 10;
*QType = 10;
return 1;
case 6:
*AType = 11;
*QType = 7;
return 1;
case 7:
*AType = 10;
*QType = 10;
return 1;
case 8:
*AType = 1;
*QType = 1;
return 1;
default:
return 0;
}
}
GF_Node *SBSite_Create()
{
M_SBSite *p;
GF_SAFEALLOC(p, M_SBSite);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SBSite);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->center.z = FLT2FIX(0);
p->rotation.x = FLT2FIX(0);
p->rotation.y = FLT2FIX(0);
p->rotation.z = FLT2FIX(1);
p->rotation.q = FLT2FIX(0);
p->scale.x = FLT2FIX(1);
p->scale.y = FLT2FIX(1);
p->scale.z = FLT2FIX(1);
p->scaleOrientation.x = FLT2FIX(0);
p->scaleOrientation.y = FLT2FIX(0);
p->scaleOrientation.z = FLT2FIX(1);
p->scaleOrientation.q = FLT2FIX(0);
p->translation.x = FLT2FIX(0);
p->translation.y = FLT2FIX(0);
p->translation.z = FLT2FIX(0);
return (GF_Node *)p;
}
static void SBSkinnedModel_Del(GF_Node *node)
{
M_SBSkinnedModel *p = (M_SBSkinnedModel *) node;
gf_node_unregister_children((GF_Node *) p, p->bones);
gf_node_unregister_children((GF_Node *) p, p->muscles);
gf_sg_sfstring_del(p->name);
gf_node_unregister_children((GF_Node *) p, p->segments);
gf_node_unregister_children((GF_Node *) p, p->sites);
gf_node_unregister_children((GF_Node *) p, p->skeleton);
gf_node_unregister_children((GF_Node *) p, p->skin);
gf_node_unregister((GF_Node *) p->skinCoord, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->skinNormal, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->weighsComputationSkinCoord, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 SBSkinnedModel_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
static const u16 SBSkinnedModel_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
static const u16 SBSkinnedModel_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
static const u16 SBSkinnedModel_Dyn2All[] = { 1, 4, 6, 7, 13};
static u32 SBSkinnedModel_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 15;
case GF_SG_FIELD_CODING_DEF:
return 15;
case GF_SG_FIELD_CODING_OUT:
return 15;
case GF_SG_FIELD_CODING_DYN:
return 5;
default:
return 15;
}
}
static GF_Err SBSkinnedModel_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SBSkinnedModel_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SBSkinnedModel_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SBSkinnedModel_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = SBSkinnedModel_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SBSkinnedModel_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "bones";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFSBBoneNode;
info->far_ptr = & ((M_SBSkinnedModel *)node)->bones;
return GF_OK;
case 1:
info->name = "center";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBSkinnedModel *) node)->center;
return GF_OK;
case 2:
info->name = "muscles";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFSBMuscleNode;
info->far_ptr = & ((M_SBSkinnedModel *)node)->muscles;
return GF_OK;
case 3:
info->name = "name";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_SBSkinnedModel *) node)->name;
return GF_OK;
case 4:
info->name = "rotation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_SBSkinnedModel *) node)->rotation;
return GF_OK;
case 5:
info->name = "segments";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFSBSegmentNode;
info->far_ptr = & ((M_SBSkinnedModel *)node)->segments;
return GF_OK;
case 6:
info->name = "scale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBSkinnedModel *) node)->scale;
return GF_OK;
case 7:
info->name = "scaleOrientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_SBSkinnedModel *) node)->scaleOrientation;
return GF_OK;
case 8:
info->name = "sites";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFSBSiteNode;
info->far_ptr = & ((M_SBSkinnedModel *)node)->sites;
return GF_OK;
case 9:
info->name = "skeleton";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBSkinnedModel *)node)->skeleton;
return GF_OK;
case 10:
info->name = "skin";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBSkinnedModel *)node)->skin;
return GF_OK;
case 11:
info->name = "skinCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinateNode;
info->far_ptr = & ((M_SBSkinnedModel *)node)->skinCoord;
return GF_OK;
case 12:
info->name = "skinNormal";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFNormalNode;
info->far_ptr = & ((M_SBSkinnedModel *)node)->skinNormal;
return GF_OK;
case 13:
info->name = "translation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SBSkinnedModel *) node)->translation;
return GF_OK;
case 14:
info->name = "weighsComputationSkinCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBSkinnedModel *)node)->weighsComputationSkinCoord;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SBSkinnedModel_get_field_index_by_name(char *name)
{
if (!strcmp("bones", name)) return 0;
if (!strcmp("center", name)) return 1;
if (!strcmp("muscles", name)) return 2;
if (!strcmp("name", name)) return 3;
if (!strcmp("rotation", name)) return 4;
if (!strcmp("segments", name)) return 5;
if (!strcmp("scale", name)) return 6;
if (!strcmp("scaleOrientation", name)) return 7;
if (!strcmp("sites", name)) return 8;
if (!strcmp("skeleton", name)) return 9;
if (!strcmp("skin", name)) return 10;
if (!strcmp("skinCoord", name)) return 11;
if (!strcmp("skinNormal", name)) return 12;
if (!strcmp("translation", name)) return 13;
if (!strcmp("weighsComputationSkinCoord", name)) return 14;
return -1;
}
static Bool SBSkinnedModel_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 1;
*QType = 1;
return 1;
case 4:
*AType = 10;
*QType = 10;
return 1;
case 6:
*AType = 11;
*QType = 7;
return 1;
case 7:
*AType = 10;
*QType = 10;
return 1;
case 13:
*AType = 1;
*QType = 1;
return 1;
default:
return 0;
}
}
GF_Node *SBSkinnedModel_Create()
{
M_SBSkinnedModel *p;
GF_SAFEALLOC(p, M_SBSkinnedModel);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SBSkinnedModel);
p->center.x = FLT2FIX(0);
p->center.y = FLT2FIX(0);
p->center.z = FLT2FIX(0);
p->rotation.x = FLT2FIX(0);
p->rotation.y = FLT2FIX(0);
p->rotation.z = FLT2FIX(1);
p->rotation.q = FLT2FIX(0);
p->scale.x = FLT2FIX(1);
p->scale.y = FLT2FIX(1);
p->scale.z = FLT2FIX(1);
p->scaleOrientation.x = FLT2FIX(0);
p->scaleOrientation.y = FLT2FIX(0);
p->scaleOrientation.z = FLT2FIX(1);
p->scaleOrientation.q = FLT2FIX(0);
p->translation.x = FLT2FIX(0);
p->translation.y = FLT2FIX(0);
p->translation.z = FLT2FIX(0);
return (GF_Node *)p;
}
static void SBVCAnimation_Del(GF_Node *node)
{
M_SBVCAnimation *p = (M_SBVCAnimation *) node;
gf_sg_mfurl_del(p->url);
gf_node_unregister_children((GF_Node *) p, p->virtualCharacters);
gf_node_free((GF_Node *) p);
}
static const u16 SBVCAnimation_Def2All[] = { 0, 1};
static const u16 SBVCAnimation_In2All[] = { 0, 1};
static const u16 SBVCAnimation_Out2All[] = { 0, 1};
static u32 SBVCAnimation_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err SBVCAnimation_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SBVCAnimation_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SBVCAnimation_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SBVCAnimation_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SBVCAnimation_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_SBVCAnimation *) node)->url;
return GF_OK;
case 1:
info->name = "virtualCharacters";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBVCAnimation *)node)->virtualCharacters;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SBVCAnimation_get_field_index_by_name(char *name)
{
if (!strcmp("url", name)) return 0;
if (!strcmp("virtualCharacters", name)) return 1;
return -1;
}
static Bool SBVCAnimation_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *SBVCAnimation_Create()
{
M_SBVCAnimation *p;
GF_SAFEALLOC(p, M_SBVCAnimation);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SBVCAnimation);
return (GF_Node *)p;
}
static void ScalarAnimator_Del(GF_Node *node)
{
M_ScalarAnimator *p = (M_ScalarAnimator *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfvec2f_del(p->keySpline);
gf_sg_mffloat_del(p->keyValue);
gf_sg_mffloat_del(p->weight);
gf_node_free((GF_Node *) p);
}
static const u16 ScalarAnimator_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 ScalarAnimator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 ScalarAnimator_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
static u32 ScalarAnimator_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 9;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 10;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 11;
}
}
static GF_Err ScalarAnimator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ScalarAnimator_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ScalarAnimator_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ScalarAnimator_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ScalarAnimator_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_fraction";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_ScalarAnimator *)node)->on_set_fraction;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ScalarAnimator *) node)->set_fraction;
return GF_OK;
case 1:
info->name = "fromTo";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_ScalarAnimator *) node)->fromTo;
return GF_OK;
case 2:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_ScalarAnimator *) node)->key;
return GF_OK;
case 3:
info->name = "keyType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ScalarAnimator *) node)->keyType;
return GF_OK;
case 4:
info->name = "keySpline";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC2F;
info->far_ptr = & ((M_ScalarAnimator *) node)->keySpline;
return GF_OK;
case 5:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_ScalarAnimator *) node)->keyValue;
return GF_OK;
case 6:
info->name = "keyValueType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_ScalarAnimator *) node)->keyValueType;
return GF_OK;
case 7:
info->name = "offset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ScalarAnimator *) node)->offset;
return GF_OK;
case 8:
info->name = "weight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_ScalarAnimator *) node)->weight;
return GF_OK;
case 9:
info->name = "endValue";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ScalarAnimator *) node)->endValue;
return GF_OK;
case 10:
info->name = "value_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ScalarAnimator *) node)->value_changed;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ScalarAnimator_get_field_index_by_name(char *name)
{
if (!strcmp("set_fraction", name)) return 0;
if (!strcmp("fromTo", name)) return 1;
if (!strcmp("key", name)) return 2;
if (!strcmp("keyType", name)) return 3;
if (!strcmp("keySpline", name)) return 4;
if (!strcmp("keyValue", name)) return 5;
if (!strcmp("keyValueType", name)) return 6;
if (!strcmp("offset", name)) return 7;
if (!strcmp("weight", name)) return 8;
if (!strcmp("endValue", name)) return 9;
if (!strcmp("value_changed", name)) return 10;
return -1;
}
static Bool ScalarAnimator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 8;
return 1;
case 2:
*AType = 0;
*QType = 8;
return 1;
case 4:
*AType = 0;
*QType = 8;
return 1;
case 5:
*AType = 0;
*QType = 0;
return 1;
default:
return 0;
}
}
GF_Node *ScalarAnimator_Create()
{
M_ScalarAnimator *p;
GF_SAFEALLOC(p, M_ScalarAnimator);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ScalarAnimator);
p->fromTo.x = FLT2FIX(0);
p->fromTo.y = FLT2FIX(1);
p->keyType = 0;
p->keySpline.vals = (SFVec2f*)gf_malloc(sizeof(SFVec2f)*2);
p->keySpline.count = 2;
p->keySpline.vals[0].x = FLT2FIX(0);
p->keySpline.vals[0].y = FLT2FIX(0);
p->keySpline.vals[1].x = FLT2FIX(1);
p->keySpline.vals[1].y = FLT2FIX(1);
p->keyValueType = 0;
p->offset = FLT2FIX(0);
return (GF_Node *)p;
}
static void SimpleTexture_Del(GF_Node *node)
{
M_SimpleTexture *p = (M_SimpleTexture *) node;
gf_node_unregister((GF_Node *) p->depth, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 SimpleTexture_Def2All[] = { 0, 1};
static u32 SimpleTexture_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err SimpleTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = SimpleTexture_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SimpleTexture_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "depth";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_SimpleTexture *)node)->depth;
return GF_OK;
case 1:
info->name = "texture";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_SimpleTexture *)node)->texture;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SimpleTexture_get_field_index_by_name(char *name)
{
if (!strcmp("depth", name)) return 0;
if (!strcmp("texture", name)) return 1;
return -1;
}
static Bool SimpleTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *SimpleTexture_Create()
{
M_SimpleTexture *p;
GF_SAFEALLOC(p, M_SimpleTexture);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SimpleTexture);
return (GF_Node *)p;
}
static void SolidRep_Del(GF_Node *node)
{
M_SolidRep *p = (M_SolidRep *) node;
gf_sg_mfint32_del(p->densityList);
gf_node_unregister((GF_Node *) p->solidTree, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 SolidRep_Def2All[] = { 0, 1, 2};
static const u16 SolidRep_In2All[] = { 0, 1, 2};
static const u16 SolidRep_Out2All[] = { 0, 1, 2};
static const u16 SolidRep_Dyn2All[] = { 0};
static u32 SolidRep_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 3;
}
}
static GF_Err SolidRep_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SolidRep_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SolidRep_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SolidRep_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = SolidRep_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SolidRep_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "bboxSize";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SolidRep *) node)->bboxSize;
return GF_OK;
case 1:
info->name = "densityList";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SolidRep *) node)->densityList;
return GF_OK;
case 2:
info->name = "solidTree";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SolidRep *)node)->solidTree;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SolidRep_get_field_index_by_name(char *name)
{
if (!strcmp("bboxSize", name)) return 0;
if (!strcmp("densityList", name)) return 1;
if (!strcmp("solidTree", name)) return 2;
return -1;
}
static Bool SolidRep_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 11;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *SolidRep_Create()
{
M_SolidRep *p;
GF_SAFEALLOC(p, M_SolidRep);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SolidRep);
p->bboxSize.x = FLT2FIX(2);
p->bboxSize.y = FLT2FIX(2);
p->bboxSize.z = FLT2FIX(2);
return (GF_Node *)p;
}
static void SubdivisionSurface_Del(GF_Node *node)
{
M_SubdivisionSurface *p = (M_SubdivisionSurface *) node;
gf_sg_mfint32_del(p->set_colorIndex);
gf_sg_mfint32_del(p->set_coordIndex);
gf_sg_mfint32_del(p->set_cornerVertexIndex);
gf_sg_mfint32_del(p->set_creaseEdgeIndex);
gf_sg_mfint32_del(p->set_creaseVertexIndex);
gf_sg_mfint32_del(p->set_dartVertexIndex);
gf_sg_mfint32_del(p->set_texCoordIndex);
gf_node_unregister((GF_Node *) p->color, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->coord, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->texCoord, (GF_Node *) p);
gf_node_unregister_children((GF_Node *) p, p->sectors);
gf_sg_mfint32_del(p->invisibleEdgeIndex);
gf_sg_mfint32_del(p->colorIndex);
gf_sg_mfint32_del(p->coordIndex);
gf_sg_mfint32_del(p->cornerVertexIndex);
gf_sg_mfint32_del(p->creaseEdgeIndex);
gf_sg_mfint32_del(p->creaseVertexIndex);
gf_sg_mfint32_del(p->dartVertexIndex);
gf_sg_mfint32_del(p->texCoordIndex);
gf_node_free((GF_Node *) p);
}
static const u16 SubdivisionSurface_Def2All[] = { 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25};
static const u16 SubdivisionSurface_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
static const u16 SubdivisionSurface_Out2All[] = { 7, 8, 9, 10, 11, 12, 13};
static u32 SubdivisionSurface_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 14;
case GF_SG_FIELD_CODING_DEF:
return 19;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 26;
}
}
static GF_Err SubdivisionSurface_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SubdivisionSurface_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SubdivisionSurface_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SubdivisionSurface_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SubdivisionSurface_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_colorIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_colorIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->set_colorIndex;
return GF_OK;
case 1:
info->name = "set_coordIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_coordIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->set_coordIndex;
return GF_OK;
case 2:
info->name = "set_cornerVertexIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_cornerVertexIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->set_cornerVertexIndex;
return GF_OK;
case 3:
info->name = "set_creaseEdgeIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_creaseEdgeIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->set_creaseEdgeIndex;
return GF_OK;
case 4:
info->name = "set_creaseVertexIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_creaseVertexIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->set_creaseVertexIndex;
return GF_OK;
case 5:
info->name = "set_dartVertexIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_dartVertexIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->set_dartVertexIndex;
return GF_OK;
case 6:
info->name = "set_texCoordIndex";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SubdivisionSurface *)node)->on_set_texCoordIndex;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->set_texCoordIndex;
return GF_OK;
case 7:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFColorNode;
info->far_ptr = & ((M_SubdivisionSurface *)node)->color;
return GF_OK;
case 8:
info->name = "coord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinateNode;
info->far_ptr = & ((M_SubdivisionSurface *)node)->coord;
return GF_OK;
case 9:
info->name = "texCoord";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureCoordinateNode;
info->far_ptr = & ((M_SubdivisionSurface *)node)->texCoord;
return GF_OK;
case 10:
info->name = "sectors";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFSubdivSurfaceSectorNode;
info->far_ptr = & ((M_SubdivisionSurface *)node)->sectors;
return GF_OK;
case 11:
info->name = "subdivisionLevel";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->subdivisionLevel;
return GF_OK;
case 12:
info->name = "subdivisionType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->subdivisionType;
return GF_OK;
case 13:
info->name = "subdivisionSubType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->subdivisionSubType;
return GF_OK;
case 14:
info->name = "invisibleEdgeIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->invisibleEdgeIndex;
return GF_OK;
case 15:
info->name = "ccw";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SubdivisionSurface *) node)->ccw;
return GF_OK;
case 16:
info->name = "colorIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->colorIndex;
return GF_OK;
case 17:
info->name = "colorPerVertex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SubdivisionSurface *) node)->colorPerVertex;
return GF_OK;
case 18:
info->name = "convex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SubdivisionSurface *) node)->convex;
return GF_OK;
case 19:
info->name = "coordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->coordIndex;
return GF_OK;
case 20:
info->name = "cornerVertexIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->cornerVertexIndex;
return GF_OK;
case 21:
info->name = "creaseEdgeIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->creaseEdgeIndex;
return GF_OK;
case 22:
info->name = "creaseVertexIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->creaseVertexIndex;
return GF_OK;
case 23:
info->name = "dartVertexIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->dartVertexIndex;
return GF_OK;
case 24:
info->name = "solid";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SubdivisionSurface *) node)->solid;
return GF_OK;
case 25:
info->name = "texCoordIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SubdivisionSurface *) node)->texCoordIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SubdivisionSurface_get_field_index_by_name(char *name)
{
if (!strcmp("set_colorIndex", name)) return 0;
if (!strcmp("set_coordIndex", name)) return 1;
if (!strcmp("set_cornerVertexIndex", name)) return 2;
if (!strcmp("set_creaseEdgeIndex", name)) return 3;
if (!strcmp("set_creaseVertexIndex", name)) return 4;
if (!strcmp("set_dartVertexIndex", name)) return 5;
if (!strcmp("set_texCoordIndex", name)) return 6;
if (!strcmp("color", name)) return 7;
if (!strcmp("coord", name)) return 8;
if (!strcmp("texCoord", name)) return 9;
if (!strcmp("sectors", name)) return 10;
if (!strcmp("subdivisionLevel", name)) return 11;
if (!strcmp("subdivisionType", name)) return 12;
if (!strcmp("subdivisionSubType", name)) return 13;
if (!strcmp("invisibleEdgeIndex", name)) return 14;
if (!strcmp("ccw", name)) return 15;
if (!strcmp("colorIndex", name)) return 16;
if (!strcmp("colorPerVertex", name)) return 17;
if (!strcmp("convex", name)) return 18;
if (!strcmp("coordIndex", name)) return 19;
if (!strcmp("cornerVertexIndex", name)) return 20;
if (!strcmp("creaseEdgeIndex", name)) return 21;
if (!strcmp("creaseVertexIndex", name)) return 22;
if (!strcmp("dartVertexIndex", name)) return 23;
if (!strcmp("solid", name)) return 24;
if (!strcmp("texCoordIndex", name)) return 25;
return -1;
}
static Bool SubdivisionSurface_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 12:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(3);
return 1;
case 13:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(3);
return 1;
default:
return 0;
}
}
GF_Node *SubdivisionSurface_Create()
{
M_SubdivisionSurface *p;
GF_SAFEALLOC(p, M_SubdivisionSurface);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SubdivisionSurface);
p->subdivisionLevel = 0;
p->subdivisionType = 0;
p->subdivisionSubType = 0;
p->ccw = 1;
p->colorPerVertex = 1;
p->convex = 1;
p->solid = 1;
return (GF_Node *)p;
}
static void SubdivSurfaceSector_Del(GF_Node *node)
{
M_SubdivSurfaceSector *p = (M_SubdivSurfaceSector *) node;
gf_node_free((GF_Node *) p);
}
static const u16 SubdivSurfaceSector_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 SubdivSurfaceSector_In2All[] = { 0, 1, 2, 3, 4};
static const u16 SubdivSurfaceSector_Out2All[] = { 0, 1, 2, 3, 4};
static u32 SubdivSurfaceSector_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 7;
}
}
static GF_Err SubdivSurfaceSector_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SubdivSurfaceSector_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SubdivSurfaceSector_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SubdivSurfaceSector_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SubdivSurfaceSector_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "flatness";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SubdivSurfaceSector *) node)->flatness;
return GF_OK;
case 1:
info->name = "normal";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SubdivSurfaceSector *) node)->normal;
return GF_OK;
case 2:
info->name = "normalTension";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SubdivSurfaceSector *) node)->normalTension;
return GF_OK;
case 3:
info->name = "tag";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SubdivSurfaceSector *) node)->_tag;
return GF_OK;
case 4:
info->name = "theta";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SubdivSurfaceSector *) node)->theta;
return GF_OK;
case 5:
info->name = "faceIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SubdivSurfaceSector *) node)->faceIndex;
return GF_OK;
case 6:
info->name = "vertexIndex";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SubdivSurfaceSector *) node)->vertexIndex;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SubdivSurfaceSector_get_field_index_by_name(char *name)
{
if (!strcmp("flatness", name)) return 0;
if (!strcmp("normal", name)) return 1;
if (!strcmp("normalTension", name)) return 2;
if (!strcmp("tag", name)) return 3;
if (!strcmp("theta", name)) return 4;
if (!strcmp("faceIndex", name)) return 5;
if (!strcmp("vertexIndex", name)) return 6;
return -1;
}
static Bool SubdivSurfaceSector_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 0;
*QType = 7;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 0;
*QType = 9;
return 1;
case 2:
*AType = 0;
*QType = 7;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 3:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(2);
return 1;
case 4:
*AType = 0;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
case 5:
*AType = 0;
*QType = 14;
return 1;
case 6:
*AType = 0;
*QType = 14;
return 1;
default:
return 0;
}
}
GF_Node *SubdivSurfaceSector_Create()
{
M_SubdivSurfaceSector *p;
GF_SAFEALLOC(p, M_SubdivSurfaceSector);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SubdivSurfaceSector);
p->flatness = FLT2FIX(0);
p->normal.x = FLT2FIX(0);
p->normal.y = FLT2FIX(0);
p->normal.z = FLT2FIX(0);
p->normalTension = FLT2FIX(0);
p->_tag = 0;
p->theta = FLT2FIX(0);
p->faceIndex = 0;
p->vertexIndex = 0;
return (GF_Node *)p;
}
static void WaveletSubdivisionSurface_Del(GF_Node *node)
{
M_WaveletSubdivisionSurface *p = (M_WaveletSubdivisionSurface *) node;
gf_node_unregister((GF_Node *) p->baseMesh, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 WaveletSubdivisionSurface_Def2All[] = { 0, 1, 2, 3};
static const u16 WaveletSubdivisionSurface_In2All[] = { 0, 1, 2, 3};
static const u16 WaveletSubdivisionSurface_Out2All[] = { 0, 1, 2, 3};
static u32 WaveletSubdivisionSurface_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err WaveletSubdivisionSurface_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = WaveletSubdivisionSurface_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = WaveletSubdivisionSurface_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = WaveletSubdivisionSurface_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err WaveletSubdivisionSurface_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "baseMesh";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_WaveletSubdivisionSurface *)node)->baseMesh;
return GF_OK;
case 1:
info->name = "fieldOfView";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_WaveletSubdivisionSurface *) node)->fieldOfView;
return GF_OK;
case 2:
info->name = "frequency";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_WaveletSubdivisionSurface *) node)->frequency;
return GF_OK;
case 3:
info->name = "quality";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_WaveletSubdivisionSurface *) node)->quality;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 WaveletSubdivisionSurface_get_field_index_by_name(char *name)
{
if (!strcmp("baseMesh", name)) return 0;
if (!strcmp("fieldOfView", name)) return 1;
if (!strcmp("frequency", name)) return 2;
if (!strcmp("quality", name)) return 3;
return -1;
}
static Bool WaveletSubdivisionSurface_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *WaveletSubdivisionSurface_Create()
{
M_WaveletSubdivisionSurface *p;
GF_SAFEALLOC(p, M_WaveletSubdivisionSurface);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_WaveletSubdivisionSurface);
p->fieldOfView = FLT2FIX(0.785398);
p->frequency = FLT2FIX(1.0);
p->quality = 1;
return (GF_Node *)p;
}
static void Clipper2D_Del(GF_Node *node)
{
M_Clipper2D *p = (M_Clipper2D *) node;
gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->transform, (GF_Node *) p);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Clipper2D_Def2All[] = { 2, 3, 4, 5, 6};
static const u16 Clipper2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 Clipper2D_Out2All[] = { 2, 3, 4, 5, 6};
static u32 Clipper2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 7;
}
}
static GF_Err Clipper2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Clipper2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Clipper2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Clipper2D_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Clipper2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Clipper2D *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Clipper2D *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Clipper2D *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Clipper2D *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Clipper2D *)node)->children;
return GF_OK;
case 3:
info->name = "geometry";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_Clipper2D *)node)->geometry;
return GF_OK;
case 4:
info->name = "inside";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Clipper2D *) node)->inside;
return GF_OK;
case 5:
info->name = "transform";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_Clipper2D *)node)->transform;
return GF_OK;
case 6:
info->name = "XOR";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Clipper2D *) node)->XOR;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Clipper2D_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("geometry", name)) return 3;
if (!strcmp("inside", name)) return 4;
if (!strcmp("transform", name)) return 5;
if (!strcmp("XOR", name)) return 6;
return -1;
}
static Bool Clipper2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Clipper2D_Create()
{
M_Clipper2D *p;
GF_SAFEALLOC(p, M_Clipper2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Clipper2D);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->inside = 1;
return (GF_Node *)p;
}
static void ColorTransform_Del(GF_Node *node)
{
M_ColorTransform *p = (M_ColorTransform *) node;
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
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};
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};
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};
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};
static u32 ColorTransform_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 23;
case GF_SG_FIELD_CODING_DEF:
return 21;
case GF_SG_FIELD_CODING_OUT:
return 21;
case GF_SG_FIELD_CODING_DYN:
return 20;
default:
return 23;
}
}
static GF_Err ColorTransform_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ColorTransform_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ColorTransform_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ColorTransform_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = ColorTransform_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ColorTransform_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_ColorTransform *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_ColorTransform *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_ColorTransform *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_ColorTransform *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_ColorTransform *)node)->children;
return GF_OK;
case 3:
info->name = "mrr";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mrr;
return GF_OK;
case 4:
info->name = "mrg";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mrg;
return GF_OK;
case 5:
info->name = "mrb";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mrb;
return GF_OK;
case 6:
info->name = "mra";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mra;
return GF_OK;
case 7:
info->name = "tr";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->tr;
return GF_OK;
case 8:
info->name = "mgr";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mgr;
return GF_OK;
case 9:
info->name = "mgg";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mgg;
return GF_OK;
case 10:
info->name = "mgb";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mgb;
return GF_OK;
case 11:
info->name = "mga";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mga;
return GF_OK;
case 12:
info->name = "tg";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->tg;
return GF_OK;
case 13:
info->name = "mbr";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mbr;
return GF_OK;
case 14:
info->name = "mbg";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mbg;
return GF_OK;
case 15:
info->name = "mbb";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mbb;
return GF_OK;
case 16:
info->name = "mba";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mba;
return GF_OK;
case 17:
info->name = "tb";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->tb;
return GF_OK;
case 18:
info->name = "mar";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mar;
return GF_OK;
case 19:
info->name = "mag";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mag;
return GF_OK;
case 20:
info->name = "mab";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->mab;
return GF_OK;
case 21:
info->name = "maa";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->maa;
return GF_OK;
case 22:
info->name = "ta";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_ColorTransform *) node)->ta;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ColorTransform_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("mrr", name)) return 3;
if (!strcmp("mrg", name)) return 4;
if (!strcmp("mrb", name)) return 5;
if (!strcmp("mra", name)) return 6;
if (!strcmp("tr", name)) return 7;
if (!strcmp("mgr", name)) return 8;
if (!strcmp("mgg", name)) return 9;
if (!strcmp("mgb", name)) return 10;
if (!strcmp("mga", name)) return 11;
if (!strcmp("tg", name)) return 12;
if (!strcmp("mbr", name)) return 13;
if (!strcmp("mbg", name)) return 14;
if (!strcmp("mbb", name)) return 15;
if (!strcmp("mba", name)) return 16;
if (!strcmp("tb", name)) return 17;
if (!strcmp("mar", name)) return 18;
if (!strcmp("mag", name)) return 19;
if (!strcmp("mab", name)) return 20;
if (!strcmp("maa", name)) return 21;
if (!strcmp("ta", name)) return 22;
return -1;
}
static Bool ColorTransform_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 7;
*QType = 4;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 10:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 11:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 12:
*AType = 7;
*QType = 4;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 13:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 14:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 15:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 16:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 17:
*AType = 7;
*QType = 4;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 18:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 19:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 20:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 21:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 22:
*AType = 7;
*QType = 4;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *ColorTransform_Create()
{
M_ColorTransform *p;
GF_SAFEALLOC(p, M_ColorTransform);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ColorTransform);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->mrr = FLT2FIX(1);
p->mrg = FLT2FIX(0);
p->mrb = FLT2FIX(0);
p->mra = FLT2FIX(0);
p->tr = FLT2FIX(0);
p->mgr = FLT2FIX(0);
p->mgg = FLT2FIX(1);
p->mgb = FLT2FIX(0);
p->mga = FLT2FIX(0);
p->tg = FLT2FIX(0);
p->mbr = FLT2FIX(0);
p->mbg = FLT2FIX(0);
p->mbb = FLT2FIX(1);
p->mba = FLT2FIX(0);
p->tb = FLT2FIX(0);
p->mar = FLT2FIX(0);
p->mag = FLT2FIX(0);
p->mab = FLT2FIX(0);
p->maa = FLT2FIX(1);
p->ta = FLT2FIX(0);
return (GF_Node *)p;
}
static void Ellipse_Del(GF_Node *node)
{
M_Ellipse *p = (M_Ellipse *) node;
gf_node_free((GF_Node *) p);
}
static const u16 Ellipse_Def2All[] = { 0};
static const u16 Ellipse_In2All[] = { 0};
static const u16 Ellipse_Out2All[] = { 0};
static const u16 Ellipse_Dyn2All[] = { 0};
static u32 Ellipse_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 1;
}
}
static GF_Err Ellipse_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Ellipse_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Ellipse_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Ellipse_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Ellipse_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Ellipse_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "radius";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Ellipse *) node)->radius;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Ellipse_get_field_index_by_name(char *name)
{
if (!strcmp("radius", name)) return 0;
return -1;
}
static Bool Ellipse_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 2;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *Ellipse_Create()
{
M_Ellipse *p;
GF_SAFEALLOC(p, M_Ellipse);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Ellipse);
p->radius.x = FLT2FIX(1);
p->radius.y = FLT2FIX(1);
return (GF_Node *)p;
}
static void LinearGradient_Del(GF_Node *node)
{
M_LinearGradient *p = (M_LinearGradient *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfcolor_del(p->keyValue);
gf_sg_mffloat_del(p->opacity);
gf_node_unregister((GF_Node *) p->transform, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 LinearGradient_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 LinearGradient_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 LinearGradient_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 LinearGradient_Dyn2All[] = { 0, 5};
static u32 LinearGradient_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 7;
}
}
static GF_Err LinearGradient_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = LinearGradient_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = LinearGradient_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = LinearGradient_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = LinearGradient_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err LinearGradient_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "endPoint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_LinearGradient *) node)->endPoint;
return GF_OK;
case 1:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_LinearGradient *) node)->key;
return GF_OK;
case 2:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_LinearGradient *) node)->keyValue;
return GF_OK;
case 3:
info->name = "opacity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_LinearGradient *) node)->opacity;
return GF_OK;
case 4:
info->name = "spreadMethod";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_LinearGradient *) node)->spreadMethod;
return GF_OK;
case 5:
info->name = "startPoint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_LinearGradient *) node)->startPoint;
return GF_OK;
case 6:
info->name = "transform";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_LinearGradient *)node)->transform;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 LinearGradient_get_field_index_by_name(char *name)
{
if (!strcmp("endPoint", name)) return 0;
if (!strcmp("key", name)) return 1;
if (!strcmp("keyValue", name)) return 2;
if (!strcmp("opacity", name)) return 3;
if (!strcmp("spreadMethod", name)) return 4;
if (!strcmp("startPoint", name)) return 5;
if (!strcmp("transform", name)) return 6;
return -1;
}
static Bool LinearGradient_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 2;
*QType = 5;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 3:
*AType = 0;
*QType = 7;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(2);
return 1;
case 5:
*AType = 2;
*QType = 5;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *LinearGradient_Create()
{
M_LinearGradient *p;
GF_SAFEALLOC(p, M_LinearGradient);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_LinearGradient);
p->endPoint.x = FLT2FIX(1);
p->endPoint.y = FLT2FIX(0);
p->opacity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->opacity.count = 1;
p->opacity.vals[0] = FLT2FIX(1);
p->spreadMethod = 0;
p->startPoint.x = FLT2FIX(0);
p->startPoint.y = FLT2FIX(0);
return (GF_Node *)p;
}
static void PathLayout_Del(GF_Node *node)
{
M_PathLayout *p = (M_PathLayout *) node;
gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
gf_sg_mfint32_del(p->alignment);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 PathLayout_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 PathLayout_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 PathLayout_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 PathLayout_Dyn2All[] = { 5, 6};
static u32 PathLayout_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 10;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 10;
}
}
static GF_Err PathLayout_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = PathLayout_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = PathLayout_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = PathLayout_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = PathLayout_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PathLayout_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_PathLayout *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_PathLayout *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_PathLayout *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_PathLayout *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_PathLayout *)node)->children;
return GF_OK;
case 3:
info->name = "geometry";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_PathLayout *)node)->geometry;
return GF_OK;
case 4:
info->name = "alignment";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_PathLayout *) node)->alignment;
return GF_OK;
case 5:
info->name = "pathOffset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PathLayout *) node)->pathOffset;
return GF_OK;
case 6:
info->name = "spacing";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_PathLayout *) node)->spacing;
return GF_OK;
case 7:
info->name = "reverseLayout";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PathLayout *) node)->reverseLayout;
return GF_OK;
case 8:
info->name = "wrapMode";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PathLayout *) node)->wrapMode;
return GF_OK;
case 9:
info->name = "splitText";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_PathLayout *) node)->splitText;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PathLayout_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("geometry", name)) return 3;
if (!strcmp("alignment", name)) return 4;
if (!strcmp("pathOffset", name)) return 5;
if (!strcmp("spacing", name)) return 6;
if (!strcmp("reverseLayout", name)) return 7;
if (!strcmp("wrapMode", name)) return 8;
if (!strcmp("splitText", name)) return 9;
return -1;
}
static Bool PathLayout_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(1);
return 1;
case 5:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(2);
return 1;
default:
return 0;
}
}
GF_Node *PathLayout_Create()
{
M_PathLayout *p;
GF_SAFEALLOC(p, M_PathLayout);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PathLayout);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->alignment.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
p->alignment.count = 1;
p->alignment.vals[0] = 0;
p->pathOffset = FLT2FIX(0);
p->spacing = FLT2FIX(1.0);
p->wrapMode = 0;
p->splitText = 1;
return (GF_Node *)p;
}
static void RadialGradient_Del(GF_Node *node)
{
M_RadialGradient *p = (M_RadialGradient *) node;
gf_sg_mffloat_del(p->key);
gf_sg_mfcolor_del(p->keyValue);
gf_sg_mffloat_del(p->opacity);
gf_node_unregister((GF_Node *) p->transform, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 RadialGradient_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 RadialGradient_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 RadialGradient_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 RadialGradient_Dyn2All[] = { 0, 1, 5};
static u32 RadialGradient_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 3;
default:
return 8;
}
}
static GF_Err RadialGradient_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = RadialGradient_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = RadialGradient_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = RadialGradient_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = RadialGradient_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err RadialGradient_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "center";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_RadialGradient *) node)->center;
return GF_OK;
case 1:
info->name = "focalPoint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_RadialGradient *) node)->focalPoint;
return GF_OK;
case 2:
info->name = "key";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_RadialGradient *) node)->key;
return GF_OK;
case 3:
info->name = "keyValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_RadialGradient *) node)->keyValue;
return GF_OK;
case 4:
info->name = "opacity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_RadialGradient *) node)->opacity;
return GF_OK;
case 5:
info->name = "radius";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_RadialGradient *) node)->radius;
return GF_OK;
case 6:
info->name = "spreadMethod";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_RadialGradient *) node)->spreadMethod;
return GF_OK;
case 7:
info->name = "transform";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_RadialGradient *)node)->transform;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 RadialGradient_get_field_index_by_name(char *name)
{
if (!strcmp("center", name)) return 0;
if (!strcmp("focalPoint", name)) return 1;
if (!strcmp("key", name)) return 2;
if (!strcmp("keyValue", name)) return 3;
if (!strcmp("opacity", name)) return 4;
if (!strcmp("radius", name)) return 5;
if (!strcmp("spreadMethod", name)) return 6;
if (!strcmp("transform", name)) return 7;
return -1;
}
static Bool RadialGradient_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 2;
*QType = 5;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 2;
*QType = 5;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 0;
*QType = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 3:
*AType = 0;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 4:
*AType = 0;
*QType = 7;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 5:
*AType = 7;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 0;
*QType = 13;
*QT13_bits = 2;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(2);
return 1;
default:
return 0;
}
}
GF_Node *RadialGradient_Create()
{
M_RadialGradient *p;
GF_SAFEALLOC(p, M_RadialGradient);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_RadialGradient);
p->center.x = FLT2FIX(0.5);
p->center.y = FLT2FIX(0.5);
p->focalPoint.x = FLT2FIX(0);
p->focalPoint.y = FLT2FIX(0);
p->opacity.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->opacity.count = 1;
p->opacity.vals[0] = FLT2FIX(1);
p->radius = FLT2FIX(0.5);
p->spreadMethod = 0;
return (GF_Node *)p;
}
static void SynthesizedTexture_Del(GF_Node *node)
{
M_SynthesizedTexture *p = (M_SynthesizedTexture *) node;
gf_sg_mfvec3f_del(p->translation);
gf_sg_mfrotation_del(p->rotation);
gf_sg_mfurl_del(p->url);
gf_node_free((GF_Node *) p);
}
static const u16 SynthesizedTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 SynthesizedTexture_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 SynthesizedTexture_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
static const u16 SynthesizedTexture_Dyn2All[] = { 0, 1, 5};
static u32 SynthesizedTexture_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 9;
case GF_SG_FIELD_CODING_DEF:
return 9;
case GF_SG_FIELD_CODING_OUT:
return 11;
case GF_SG_FIELD_CODING_DYN:
return 3;
default:
return 11;
}
}
static GF_Err SynthesizedTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SynthesizedTexture_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SynthesizedTexture_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SynthesizedTexture_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = SynthesizedTexture_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SynthesizedTexture_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "translation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_SynthesizedTexture *) node)->translation;
return GF_OK;
case 1:
info->name = "rotation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFROTATION;
info->far_ptr = & ((M_SynthesizedTexture *) node)->rotation;
return GF_OK;
case 2:
info->name = "pixelWidth";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SynthesizedTexture *) node)->pixelWidth;
return GF_OK;
case 3:
info->name = "pixelHeight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_SynthesizedTexture *) node)->pixelHeight;
return GF_OK;
case 4:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SynthesizedTexture *) node)->loop;
return GF_OK;
case 5:
info->name = "speed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SynthesizedTexture *) node)->speed;
return GF_OK;
case 6:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_SynthesizedTexture *) node)->startTime;
return GF_OK;
case 7:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_SynthesizedTexture *) node)->stopTime;
return GF_OK;
case 8:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_SynthesizedTexture *) node)->url;
return GF_OK;
case 9:
info->name = "duration_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_SynthesizedTexture *) node)->duration_changed;
return GF_OK;
case 10:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SynthesizedTexture *) node)->isActive;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SynthesizedTexture_get_field_index_by_name(char *name)
{
if (!strcmp("translation", name)) return 0;
if (!strcmp("rotation", name)) return 1;
if (!strcmp("pixelWidth", name)) return 2;
if (!strcmp("pixelHeight", name)) return 3;
if (!strcmp("loop", name)) return 4;
if (!strcmp("speed", name)) return 5;
if (!strcmp("startTime", name)) return 6;
if (!strcmp("stopTime", name)) return 7;
if (!strcmp("url", name)) return 8;
if (!strcmp("duration_changed", name)) return 9;
if (!strcmp("isActive", name)) return 10;
return -1;
}
static Bool SynthesizedTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 1:
*AType = 10;
*QType = 10;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 16;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 0;
*QType = 13;
*QT13_bits = 16;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *SynthesizedTexture_Create()
{
M_SynthesizedTexture *p;
GF_SAFEALLOC(p, M_SynthesizedTexture);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SynthesizedTexture);
p->pixelWidth = -1;
p->pixelHeight = -1;
p->speed = FLT2FIX(1.0);
p->startTime = 0;
p->stopTime = 0;
return (GF_Node *)p;
}
static void TransformMatrix2D_Del(GF_Node *node)
{
M_TransformMatrix2D *p = (M_TransformMatrix2D *) node;
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 TransformMatrix2D_Def2All[] = { 2, 3, 4, 5, 6, 7, 8};
static const u16 TransformMatrix2D_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 TransformMatrix2D_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
static const u16 TransformMatrix2D_Dyn2All[] = { 3, 4, 5, 6, 7, 8};
static u32 TransformMatrix2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 9;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 6;
default:
return 9;
}
}
static GF_Err TransformMatrix2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = TransformMatrix2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = TransformMatrix2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = TransformMatrix2D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = TransformMatrix2D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err TransformMatrix2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_TransformMatrix2D *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_TransformMatrix2D *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_TransformMatrix2D *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_TransformMatrix2D *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_TransformMatrix2D *)node)->children;
return GF_OK;
case 3:
info->name = "mxx";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_TransformMatrix2D *) node)->mxx;
return GF_OK;
case 4:
info->name = "mxy";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_TransformMatrix2D *) node)->mxy;
return GF_OK;
case 5:
info->name = "tx";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_TransformMatrix2D *) node)->tx;
return GF_OK;
case 6:
info->name = "myx";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_TransformMatrix2D *) node)->myx;
return GF_OK;
case 7:
info->name = "myy";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_TransformMatrix2D *) node)->myy;
return GF_OK;
case 8:
info->name = "ty";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_TransformMatrix2D *) node)->ty;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 TransformMatrix2D_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("mxx", name)) return 3;
if (!strcmp("mxy", name)) return 4;
if (!strcmp("tx", name)) return 5;
if (!strcmp("myx", name)) return 6;
if (!strcmp("myy", name)) return 7;
if (!strcmp("ty", name)) return 8;
return -1;
}
static Bool TransformMatrix2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 7;
*QType = 7;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *TransformMatrix2D_Create()
{
M_TransformMatrix2D *p;
GF_SAFEALLOC(p, M_TransformMatrix2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_TransformMatrix2D);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->mxx = FLT2FIX(1);
p->mxy = FLT2FIX(0);
p->tx = FLT2FIX(0);
p->myx = FLT2FIX(0);
p->myy = FLT2FIX(1);
p->ty = FLT2FIX(0);
return (GF_Node *)p;
}
static void Viewport_Del(GF_Node *node)
{
M_Viewport *p = (M_Viewport *) node;
gf_sg_mfint32_del(p->alignment);
gf_sg_sfstring_del(p->description);
gf_node_free((GF_Node *) p);
}
static const u16 Viewport_Def2All[] = { 1, 2, 3, 4, 5, 6};
static const u16 Viewport_In2All[] = { 0, 1, 2, 3, 4, 5};
static const u16 Viewport_Out2All[] = { 1, 2, 3, 4, 5, 7, 8};
static const u16 Viewport_Dyn2All[] = { 1, 2, 3};
static u32 Viewport_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 6;
case GF_SG_FIELD_CODING_DEF:
return 6;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 3;
default:
return 9;
}
}
static GF_Err Viewport_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Viewport_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Viewport_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Viewport_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Viewport_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Viewport_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "set_bind";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Viewport *)node)->on_set_bind;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Viewport *) node)->set_bind;
return GF_OK;
case 1:
info->name = "position";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Viewport *) node)->position;
return GF_OK;
case 2:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_Viewport *) node)->size;
return GF_OK;
case 3:
info->name = "orientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Viewport *) node)->orientation;
return GF_OK;
case 4:
info->name = "alignment";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_Viewport *) node)->alignment;
return GF_OK;
case 5:
info->name = "fit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Viewport *) node)->fit;
return GF_OK;
case 6:
info->name = "description";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_Viewport *) node)->description;
return GF_OK;
case 7:
info->name = "bindTime";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_Viewport *) node)->bindTime;
return GF_OK;
case 8:
info->name = "isBound";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Viewport *) node)->isBound;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Viewport_get_field_index_by_name(char *name)
{
if (!strcmp("set_bind", name)) return 0;
if (!strcmp("position", name)) return 1;
if (!strcmp("size", name)) return 2;
if (!strcmp("orientation", name)) return 3;
if (!strcmp("alignment", name)) return 4;
if (!strcmp("fit", name)) return 5;
if (!strcmp("description", name)) return 6;
if (!strcmp("bindTime", name)) return 7;
if (!strcmp("isBound", name)) return 8;
return -1;
}
static Bool Viewport_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 2:
*AType = 12;
*QType = 12;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 6;
*QType = 6;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6.2831853);
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(1);
return 1;
case 5:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(2);
return 1;
default:
return 0;
}
}
GF_Node *Viewport_Create()
{
M_Viewport *p;
GF_SAFEALLOC(p, M_Viewport);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Viewport);
p->position.x = FLT2FIX(0);
p->position.y = FLT2FIX(0);
p->size.x = FLT2FIX(-1);
p->size.y = FLT2FIX(-1);
p->orientation = FLT2FIX(0);
p->alignment.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
p->alignment.count = 1;
p->alignment.vals[0] = 0;
p->fit = 0;
return (GF_Node *)p;
}
static void XCurve2D_Del(GF_Node *node)
{
M_XCurve2D *p = (M_XCurve2D *) node;
gf_node_unregister((GF_Node *) p->point, (GF_Node *) p);
gf_sg_mfint32_del(p->type);
gf_node_free((GF_Node *) p);
}
static const u16 XCurve2D_Def2All[] = { 0, 1, 2};
static const u16 XCurve2D_In2All[] = { 0, 1, 2};
static const u16 XCurve2D_Out2All[] = { 0, 1, 2};
static const u16 XCurve2D_Dyn2All[] = { 1};
static u32 XCurve2D_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 3;
case GF_SG_FIELD_CODING_OUT:
return 3;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 3;
}
}
static GF_Err XCurve2D_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XCurve2D_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XCurve2D_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XCurve2D_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = XCurve2D_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XCurve2D_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "point";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFCoordinate2DNode;
info->far_ptr = & ((M_XCurve2D *)node)->point;
return GF_OK;
case 1:
info->name = "fineness";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XCurve2D *) node)->fineness;
return GF_OK;
case 2:
info->name = "type";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XCurve2D *) node)->type;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XCurve2D_get_field_index_by_name(char *name)
{
if (!strcmp("point", name)) return 0;
if (!strcmp("fineness", name)) return 1;
if (!strcmp("type", name)) return 2;
return -1;
}
static Bool XCurve2D_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(15);
return 1;
default:
return 0;
}
}
GF_Node *XCurve2D_Create()
{
M_XCurve2D *p;
GF_SAFEALLOC(p, M_XCurve2D);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XCurve2D);
p->fineness = FLT2FIX(0.5);
return (GF_Node *)p;
}
static void XFontStyle_Del(GF_Node *node)
{
M_XFontStyle *p = (M_XFontStyle *) node;
gf_sg_mfstring_del(p->fontName);
gf_sg_mfstring_del(p->justify);
gf_sg_sfstring_del(p->language);
gf_sg_sfstring_del(p->stretch);
gf_sg_sfstring_del(p->style);
gf_sg_mfstring_del(p->featureName);
gf_sg_mfint32_del(p->featureStartOffset);
gf_sg_mfint32_del(p->featureLength);
gf_sg_mfint32_del(p->featureValue);
gf_node_free((GF_Node *) p);
}
static const u16 XFontStyle_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
static const u16 XFontStyle_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
static const u16 XFontStyle_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};
static u32 XFontStyle_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 17;
case GF_SG_FIELD_CODING_DEF:
return 17;
case GF_SG_FIELD_CODING_OUT:
return 17;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 17;
}
}
static GF_Err XFontStyle_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XFontStyle_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XFontStyle_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XFontStyle_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XFontStyle_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "fontName";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_XFontStyle *) node)->fontName;
return GF_OK;
case 1:
info->name = "horizontal";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_XFontStyle *) node)->horizontal;
return GF_OK;
case 2:
info->name = "justify";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_XFontStyle *) node)->justify;
return GF_OK;
case 3:
info->name = "language";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_XFontStyle *) node)->language;
return GF_OK;
case 4:
info->name = "leftToRight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_XFontStyle *) node)->leftToRight;
return GF_OK;
case 5:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XFontStyle *) node)->size;
return GF_OK;
case 6:
info->name = "stretch";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_XFontStyle *) node)->stretch;
return GF_OK;
case 7:
info->name = "letterSpacing";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XFontStyle *) node)->letterSpacing;
return GF_OK;
case 8:
info->name = "wordSpacing";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XFontStyle *) node)->wordSpacing;
return GF_OK;
case 9:
info->name = "weight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_XFontStyle *) node)->weight;
return GF_OK;
case 10:
info->name = "fontKerning";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_XFontStyle *) node)->fontKerning;
return GF_OK;
case 11:
info->name = "style";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_XFontStyle *) node)->style;
return GF_OK;
case 12:
info->name = "topToBottom";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_XFontStyle *) node)->topToBottom;
return GF_OK;
case 13:
info->name = "featureName";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_XFontStyle *) node)->featureName;
return GF_OK;
case 14:
info->name = "featureStartOffset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XFontStyle *) node)->featureStartOffset;
return GF_OK;
case 15:
info->name = "featureLength";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XFontStyle *) node)->featureLength;
return GF_OK;
case 16:
info->name = "featureValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_XFontStyle *) node)->featureValue;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XFontStyle_get_field_index_by_name(char *name)
{
if (!strcmp("fontName", name)) return 0;
if (!strcmp("horizontal", name)) return 1;
if (!strcmp("justify", name)) return 2;
if (!strcmp("language", name)) return 3;
if (!strcmp("leftToRight", name)) return 4;
if (!strcmp("size", name)) return 5;
if (!strcmp("stretch", name)) return 6;
if (!strcmp("letterSpacing", name)) return 7;
if (!strcmp("wordSpacing", name)) return 8;
if (!strcmp("weight", name)) return 9;
if (!strcmp("fontKerning", name)) return 10;
if (!strcmp("style", name)) return 11;
if (!strcmp("topToBottom", name)) return 12;
if (!strcmp("featureName", name)) return 13;
if (!strcmp("featureStartOffset", name)) return 14;
if (!strcmp("featureLength", name)) return 15;
if (!strcmp("featureValue", name)) return 16;
return -1;
}
static Bool XFontStyle_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 5:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 11;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *XFontStyle_Create()
{
M_XFontStyle *p;
GF_SAFEALLOC(p, M_XFontStyle);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XFontStyle);
p->fontName.vals = (char**)gf_malloc(sizeof(SFString)*1);
p->fontName.count = 1;
p->fontName.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
strcpy(p->fontName.vals[0], "SERIF");
p->horizontal = 1;
p->justify.vals = (char**)gf_malloc(sizeof(SFString)*1);
p->justify.count = 1;
p->justify.vals[0] = (char*)gf_malloc(sizeof(char) * 6);
strcpy(p->justify.vals[0], "BEGIN");
p->leftToRight = 1;
p->size = FLT2FIX(1.0);
p->stretch.buffer = (char*)gf_malloc(sizeof(char) * 7);
strcpy(p->stretch.buffer, "NORMAL");
p->letterSpacing = FLT2FIX(0.0);
p->wordSpacing = FLT2FIX(0.0);
p->weight = 400;
p->fontKerning = 1;
p->style.buffer = (char*)gf_malloc(sizeof(char) * 6);
strcpy(p->style.buffer, "PLAIN");
p->topToBottom = 1;
return (GF_Node *)p;
}
static void XLineProperties_Del(GF_Node *node)
{
M_XLineProperties *p = (M_XLineProperties *) node;
gf_sg_mffloat_del(p->dashes);
gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->textureTransform, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 XLineProperties_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static const u16 XLineProperties_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static const u16 XLineProperties_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static const u16 XLineProperties_Dyn2All[] = { 0, 7, 8, 9, 10};
static u32 XLineProperties_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 13;
case GF_SG_FIELD_CODING_DEF:
return 13;
case GF_SG_FIELD_CODING_OUT:
return 13;
case GF_SG_FIELD_CODING_DYN:
return 5;
default:
return 13;
}
}
static GF_Err XLineProperties_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = XLineProperties_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = XLineProperties_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = XLineProperties_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = XLineProperties_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err XLineProperties_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "lineColor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_XLineProperties *) node)->lineColor;
return GF_OK;
case 1:
info->name = "lineStyle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_XLineProperties *) node)->lineStyle;
return GF_OK;
case 2:
info->name = "isCenterAligned";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_XLineProperties *) node)->isCenterAligned;
return GF_OK;
case 3:
info->name = "isScalable";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_XLineProperties *) node)->isScalable;
return GF_OK;
case 4:
info->name = "lineCap";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_XLineProperties *) node)->lineCap;
return GF_OK;
case 5:
info->name = "lineJoin";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_XLineProperties *) node)->lineJoin;
return GF_OK;
case 6:
info->name = "miterLimit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XLineProperties *) node)->miterLimit;
return GF_OK;
case 7:
info->name = "transparency";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XLineProperties *) node)->transparency;
return GF_OK;
case 8:
info->name = "width";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XLineProperties *) node)->width;
return GF_OK;
case 9:
info->name = "dashOffset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_XLineProperties *) node)->dashOffset;
return GF_OK;
case 10:
info->name = "dashes";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_XLineProperties *) node)->dashes;
return GF_OK;
case 11:
info->name = "texture";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_XLineProperties *)node)->texture;
return GF_OK;
case 12:
info->name = "textureTransform";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureTransformNode;
info->far_ptr = & ((M_XLineProperties *)node)->textureTransform;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 XLineProperties_get_field_index_by_name(char *name)
{
if (!strcmp("lineColor", name)) return 0;
if (!strcmp("lineStyle", name)) return 1;
if (!strcmp("isCenterAligned", name)) return 2;
if (!strcmp("isScalable", name)) return 3;
if (!strcmp("lineCap", name)) return 4;
if (!strcmp("lineJoin", name)) return 5;
if (!strcmp("miterLimit", name)) return 6;
if (!strcmp("transparency", name)) return 7;
if (!strcmp("width", name)) return 8;
if (!strcmp("dashOffset", name)) return 9;
if (!strcmp("dashes", name)) return 10;
if (!strcmp("texture", name)) return 11;
if (!strcmp("textureTransform", name)) return 12;
return -1;
}
static Bool XLineProperties_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 0:
*AType = 4;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(5);
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(2);
return 1;
case 5:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(2);
return 1;
case 6:
*AType = 0;
*QType = 12;
*b_min = FLT2FIX(1);
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 8;
*QType = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 8:
*AType = 7;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 7;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 10:
*AType = 7;
*QType = 12;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *XLineProperties_Create()
{
M_XLineProperties *p;
GF_SAFEALLOC(p, M_XLineProperties);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_XLineProperties);
p->lineColor.red = FLT2FIX(0);
p->lineColor.green = FLT2FIX(0);
p->lineColor.blue = FLT2FIX(0);
p->lineStyle = 0;
p->isCenterAligned = 1;
p->isScalable = 1;
p->lineCap = 0;
p->lineJoin = 0;
p->miterLimit = FLT2FIX(4);
p->transparency = FLT2FIX(0);
p->width = FLT2FIX(1);
p->dashOffset = FLT2FIX(0);
return (GF_Node *)p;
}
static void AdvancedAudioBuffer_Del(GF_Node *node)
{
M_AdvancedAudioBuffer *p = (M_AdvancedAudioBuffer *) node;
gf_sg_mfint32_del(p->phaseGroup);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 AdvancedAudioBuffer_Def2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15};
static const u16 AdvancedAudioBuffer_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13};
static const u16 AdvancedAudioBuffer_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 16, 17};
static const u16 AdvancedAudioBuffer_Dyn2All[] = { 4};
static u32 AdvancedAudioBuffer_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 14;
case GF_SG_FIELD_CODING_DEF:
return 14;
case GF_SG_FIELD_CODING_OUT:
return 14;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 18;
}
}
static GF_Err AdvancedAudioBuffer_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AdvancedAudioBuffer_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AdvancedAudioBuffer_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AdvancedAudioBuffer_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = AdvancedAudioBuffer_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AdvancedAudioBuffer_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AdvancedAudioBuffer *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AdvancedAudioBuffer *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AdvancedAudioBuffer *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AdvancedAudioBuffer *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AdvancedAudioBuffer *)node)->children;
return GF_OK;
case 3:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->loop;
return GF_OK;
case 4:
info->name = "pitch";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->pitch;
return GF_OK;
case 5:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->startTime;
return GF_OK;
case 6:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->stopTime;
return GF_OK;
case 7:
info->name = "startLoadTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->startLoadTime;
return GF_OK;
case 8:
info->name = "stopLoadTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->stopLoadTime;
return GF_OK;
case 9:
info->name = "loadMode";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->loadMode;
return GF_OK;
case 10:
info->name = "numAccumulatedBlocks";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->numAccumulatedBlocks;
return GF_OK;
case 11:
info->name = "deleteBlock";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->deleteBlock;
return GF_OK;
case 12:
info->name = "playBlock";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->playBlock;
return GF_OK;
case 13:
info->name = "length";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->length;
return GF_OK;
case 14:
info->name = "numChan";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->numChan;
return GF_OK;
case 15:
info->name = "phaseGroup";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->phaseGroup;
return GF_OK;
case 16:
info->name = "duration_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->duration_changed;
return GF_OK;
case 17:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_AdvancedAudioBuffer *) node)->isActive;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AdvancedAudioBuffer_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("loop", name)) return 3;
if (!strcmp("pitch", name)) return 4;
if (!strcmp("startTime", name)) return 5;
if (!strcmp("stopTime", name)) return 6;
if (!strcmp("startLoadTime", name)) return 7;
if (!strcmp("stopLoadTime", name)) return 8;
if (!strcmp("loadMode", name)) return 9;
if (!strcmp("numAccumulatedBlocks", name)) return 10;
if (!strcmp("deleteBlock", name)) return 11;
if (!strcmp("playBlock", name)) return 12;
if (!strcmp("length", name)) return 13;
if (!strcmp("numChan", name)) return 14;
if (!strcmp("phaseGroup", name)) return 15;
if (!strcmp("duration_changed", name)) return 16;
if (!strcmp("isActive", name)) return 17;
return -1;
}
static Bool AdvancedAudioBuffer_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 4:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 7:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 9:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(4);
return 1;
case 10:
*AType = 0;
*QType = 13;
*QT13_bits = 16;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 11:
*AType = 0;
*QType = 13;
*QT13_bits = 17;
*b_min = FIX_MIN;
*b_max = FLT2FIX( 0);
return 1;
case 12:
*AType = 0;
*QType = 13;
*QT13_bits = 17;
*b_min = FIX_MIN;
*b_max = FLT2FIX( 0);
return 1;
case 13:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 14:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
case 15:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
default:
return 0;
}
}
GF_Node *AdvancedAudioBuffer_Create()
{
M_AdvancedAudioBuffer *p;
GF_SAFEALLOC(p, M_AdvancedAudioBuffer);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AdvancedAudioBuffer);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->pitch = FLT2FIX(1.0);
p->startTime = 0;
p->stopTime = 0;
p->startLoadTime = 0;
p->stopLoadTime = 0;
p->loadMode = 0;
p->numAccumulatedBlocks = 0;
p->deleteBlock = 0;
p->playBlock = 0;
p->length = FLT2FIX(0.0);
p->numChan = 1;
return (GF_Node *)p;
}
static void AudioChannelConfig_Del(GF_Node *node)
{
M_AudioChannelConfig *p = (M_AudioChannelConfig *) node;
gf_sg_mfint32_del(p->channelCoordinateSystems);
gf_sg_mffloat_del(p->channelSoundLocation);
gf_sg_mfint32_del(p->channelDirectionalPattern);
gf_sg_mfvec3f_del(p->channelDirection);
gf_sg_mfint32_del(p->ambComponentIndex);
gf_sg_mffloat_del(p->ambBackwardMatrix);
gf_sg_mfint32_del(p->ambSoundfieldResolution);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
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};
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};
static const u16 AudioChannelConfig_Out2All[] = { 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
static u32 AudioChannelConfig_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 21;
case GF_SG_FIELD_CODING_DEF:
return 20;
case GF_SG_FIELD_CODING_OUT:
return 19;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 22;
}
}
static GF_Err AudioChannelConfig_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = AudioChannelConfig_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = AudioChannelConfig_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = AudioChannelConfig_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err AudioChannelConfig_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioChannelConfig *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioChannelConfig *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_AudioChannelConfig *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioChannelConfig *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_AudioChannelConfig *)node)->children;
return GF_OK;
case 3:
info->name = "generalChannelFormat";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->generalChannelFormat;
return GF_OK;
case 4:
info->name = "fixedPreset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->fixedPreset;
return GF_OK;
case 5:
info->name = "fixedPresetSubset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->fixedPresetSubset;
return GF_OK;
case 6:
info->name = "fixedPresetAddInf";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->fixedPresetAddInf;
return GF_OK;
case 7:
info->name = "channelCoordinateSystems";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->channelCoordinateSystems;
return GF_OK;
case 8:
info->name = "channelSoundLocation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_AudioChannelConfig *) node)->channelSoundLocation;
return GF_OK;
case 9:
info->name = "channelDirectionalPattern";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->channelDirectionalPattern;
return GF_OK;
case 10:
info->name = "channelDirection";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_AudioChannelConfig *) node)->channelDirection;
return GF_OK;
case 11:
info->name = "ambResolution2D";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->ambResolution2D;
return GF_OK;
case 12:
info->name = "ambResolution3D";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->ambResolution3D;
return GF_OK;
case 13:
info->name = "ambEncodingConvention";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->ambEncodingConvention;
return GF_OK;
case 14:
info->name = "ambNfcReferenceDistance";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AudioChannelConfig *) node)->ambNfcReferenceDistance;
return GF_OK;
case 15:
info->name = "ambSoundSpeed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_AudioChannelConfig *) node)->ambSoundSpeed;
return GF_OK;
case 16:
info->name = "ambArrangementRule";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->ambArrangementRule;
return GF_OK;
case 17:
info->name = "ambRecombinationPreset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->ambRecombinationPreset;
return GF_OK;
case 18:
info->name = "ambComponentIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->ambComponentIndex;
return GF_OK;
case 19:
info->name = "ambBackwardMatrix";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_AudioChannelConfig *) node)->ambBackwardMatrix;
return GF_OK;
case 20:
info->name = "ambSoundfieldResolution";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->ambSoundfieldResolution;
return GF_OK;
case 21:
info->name = "numChannel";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_AudioChannelConfig *) node)->numChannel;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 AudioChannelConfig_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("generalChannelFormat", name)) return 3;
if (!strcmp("fixedPreset", name)) return 4;
if (!strcmp("fixedPresetSubset", name)) return 5;
if (!strcmp("fixedPresetAddInf", name)) return 6;
if (!strcmp("channelCoordinateSystems", name)) return 7;
if (!strcmp("channelSoundLocation", name)) return 8;
if (!strcmp("channelDirectionalPattern", name)) return 9;
if (!strcmp("channelDirection", name)) return 10;
if (!strcmp("ambResolution2D", name)) return 11;
if (!strcmp("ambResolution3D", name)) return 12;
if (!strcmp("ambEncodingConvention", name)) return 13;
if (!strcmp("ambNfcReferenceDistance", name)) return 14;
if (!strcmp("ambSoundSpeed", name)) return 15;
if (!strcmp("ambArrangementRule", name)) return 16;
if (!strcmp("ambRecombinationPreset", name)) return 17;
if (!strcmp("ambComponentIndex", name)) return 18;
if (!strcmp("ambBackwardMatrix", name)) return 19;
if (!strcmp("ambSoundfieldResolution", name)) return 20;
if (!strcmp("numChannel", name)) return 21;
return -1;
}
static Bool AudioChannelConfig_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(4);
return 1;
case 4:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(15);
return 1;
case 6:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(2);
return 1;
case 7:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(6);
return 1;
case 9:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(2);
return 1;
case 11:
*AType = 0;
*QType = 13;
*QT13_bits = 7;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(127);
return 1;
case 12:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(15);
return 1;
case 13:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(5);
return 1;
case 16:
*AType = 0;
*QType = 13;
*QT13_bits = 3;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(7);
return 1;
case 17:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(15);
return 1;
case 18:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
case 20:
*AType = 0;
*QType = 13;
*QT13_bits = 7;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(127);
return 1;
case 21:
*AType = 0;
*QType = 13;
*QT13_bits = 8;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(255);
return 1;
default:
return 0;
}
}
GF_Node *AudioChannelConfig_Create()
{
M_AudioChannelConfig *p;
GF_SAFEALLOC(p, M_AudioChannelConfig);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_AudioChannelConfig);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->generalChannelFormat = 0;
p->fixedPreset = 0;
p->fixedPresetSubset = 0;
p->fixedPresetAddInf = 0;
p->ambResolution2D = 1;
p->ambResolution3D = 0;
p->ambEncodingConvention = 0;
p->ambNfcReferenceDistance = FLT2FIX(1.5);
p->ambSoundSpeed = FLT2FIX(340.0);
p->ambArrangementRule = 0;
p->ambRecombinationPreset = 0;
p->numChannel = 0;
return (GF_Node *)p;
}
static void DepthImageV2_Del(GF_Node *node)
{
M_DepthImageV2 *p = (M_DepthImageV2 *) node;
gf_node_unregister((GF_Node *) p->diTexture, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 DepthImageV2_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static u32 DepthImageV2_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err DepthImageV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = DepthImageV2_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err DepthImageV2_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "diTexture";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFDepthTextureNode;
info->far_ptr = & ((M_DepthImageV2 *)node)->diTexture;
return GF_OK;
case 1:
info->name = "farPlane";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DepthImageV2 *) node)->farPlane;
return GF_OK;
case 2:
info->name = "fieldOfView";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_DepthImageV2 *) node)->fieldOfView;
return GF_OK;
case 3:
info->name = "nearPlane";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_DepthImageV2 *) node)->nearPlane;
return GF_OK;
case 4:
info->name = "orientation";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_DepthImageV2 *) node)->orientation;
return GF_OK;
case 5:
info->name = "orthographic";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_DepthImageV2 *) node)->orthographic;
return GF_OK;
case 6:
info->name = "position";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_DepthImageV2 *) node)->position;
return GF_OK;
case 7:
info->name = "splatMinMax";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_DepthImageV2 *) node)->splatMinMax;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 DepthImageV2_get_field_index_by_name(char *name)
{
if (!strcmp("diTexture", name)) return 0;
if (!strcmp("farPlane", name)) return 1;
if (!strcmp("fieldOfView", name)) return 2;
if (!strcmp("nearPlane", name)) return 3;
if (!strcmp("orientation", name)) return 4;
if (!strcmp("orthographic", name)) return 5;
if (!strcmp("position", name)) return 6;
if (!strcmp("splatMinMax", name)) return 7;
return -1;
}
static Bool DepthImageV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *DepthImageV2_Create()
{
M_DepthImageV2 *p;
GF_SAFEALLOC(p, M_DepthImageV2);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_DepthImageV2);
p->farPlane = FLT2FIX(100);
p->fieldOfView.x = FLT2FIX(0.75);
p->fieldOfView.y = FLT2FIX(0.75);
p->nearPlane = FLT2FIX(10);
p->orientation.x = FLT2FIX(0);
p->orientation.y = FLT2FIX(0);
p->orientation.z = FLT2FIX(1);
p->orientation.q = FLT2FIX(0);
p->orthographic = 1;
p->position.x = FLT2FIX(0);
p->position.y = FLT2FIX(0);
p->position.z = FLT2FIX(10);
p->splatMinMax.x = FLT2FIX(0.115);
p->splatMinMax.y = FLT2FIX(0.975);
return (GF_Node *)p;
}
static void MorphShape_Del(GF_Node *node)
{
M_MorphShape *p = (M_MorphShape *) node;
gf_node_unregister((GF_Node *) p->baseShape, (GF_Node *) p);
gf_node_unregister_children((GF_Node *) p, p->targetShapes);
gf_sg_mffloat_del(p->weights);
gf_node_free((GF_Node *) p);
}
static const u16 MorphShape_Def2All[] = { 0, 1, 2, 3};
static const u16 MorphShape_In2All[] = { 0, 1, 2, 3};
static const u16 MorphShape_Out2All[] = { 0, 1, 2, 3};
static u32 MorphShape_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 4;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err MorphShape_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = MorphShape_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = MorphShape_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = MorphShape_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err MorphShape_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "baseShape";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_MorphShape *)node)->baseShape;
return GF_OK;
case 1:
info->name = "morphID";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_MorphShape *) node)->morphID;
return GF_OK;
case 2:
info->name = "targetShapes";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_MorphShape *)node)->targetShapes;
return GF_OK;
case 3:
info->name = "weights";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_MorphShape *) node)->weights;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 MorphShape_get_field_index_by_name(char *name)
{
if (!strcmp("baseShape", name)) return 0;
if (!strcmp("morphID", name)) return 1;
if (!strcmp("targetShapes", name)) return 2;
if (!strcmp("weights", name)) return 3;
return -1;
}
static Bool MorphShape_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 0;
*QType = 13;
*QT13_bits = 7;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX( 1023);
return 1;
default:
return 0;
}
}
GF_Node *MorphShape_Create()
{
M_MorphShape *p;
GF_SAFEALLOC(p, M_MorphShape);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_MorphShape);
p->morphID = 0;
return (GF_Node *)p;
}
static void MultiTexture_Del(GF_Node *node)
{
M_MultiTexture *p = (M_MultiTexture *) node;
gf_sg_mfint32_del(p->function);
gf_sg_mfint32_del(p->mode);
gf_sg_mfint32_del(p->source);
gf_node_unregister_children((GF_Node *) p, p->texture);
gf_sg_mfvec3f_del(p->cameraVector);
gf_node_free((GF_Node *) p);
}
static const u16 MultiTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 MultiTexture_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 MultiTexture_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static u32 MultiTexture_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err MultiTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = MultiTexture_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = MultiTexture_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = MultiTexture_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err MultiTexture_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "alpha";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_MultiTexture *) node)->alpha;
return GF_OK;
case 1:
info->name = "color";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFCOLOR;
info->far_ptr = & ((M_MultiTexture *) node)->color;
return GF_OK;
case 2:
info->name = "function";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MultiTexture *) node)->function;
return GF_OK;
case 3:
info->name = "mode";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MultiTexture *) node)->mode;
return GF_OK;
case 4:
info->name = "source";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MultiTexture *) node)->source;
return GF_OK;
case 5:
info->name = "texture";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_MultiTexture *)node)->texture;
return GF_OK;
case 6:
info->name = "cameraVector";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_MultiTexture *) node)->cameraVector;
return GF_OK;
case 7:
info->name = "transparent";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MultiTexture *) node)->transparent;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 MultiTexture_get_field_index_by_name(char *name)
{
if (!strcmp("alpha", name)) return 0;
if (!strcmp("color", name)) return 1;
if (!strcmp("function", name)) return 2;
if (!strcmp("mode", name)) return 3;
if (!strcmp("source", name)) return 4;
if (!strcmp("texture", name)) return 5;
if (!strcmp("cameraVector", name)) return 6;
if (!strcmp("transparent", name)) return 7;
return -1;
}
static Bool MultiTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *MultiTexture_Create()
{
M_MultiTexture *p;
GF_SAFEALLOC(p, M_MultiTexture);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_MultiTexture);
p->alpha = FLT2FIX(1);
p->color.red = FLT2FIX(1);
p->color.green = FLT2FIX(1);
p->color.blue = FLT2FIX(1);
return (GF_Node *)p;
}
static void PointTextureV2_Del(GF_Node *node)
{
M_PointTextureV2 *p = (M_PointTextureV2 *) node;
gf_sg_mfcolor_del(p->color);
gf_sg_mfint32_del(p->depth);
gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
gf_sg_mfvec3f_del(p->splatU);
gf_sg_mfvec3f_del(p->splatV);
gf_node_free((GF_Node *) p);
}
static const u16 PointTextureV2_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static u32 PointTextureV2_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err PointTextureV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = PointTextureV2_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err PointTextureV2_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "color";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFCOLOR;
info->far_ptr = & ((M_PointTextureV2 *) node)->color;
return GF_OK;
case 1:
info->name = "depth";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_PointTextureV2 *) node)->depth;
return GF_OK;
case 2:
info->name = "depthNbBits";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PointTextureV2 *) node)->depthNbBits;
return GF_OK;
case 3:
info->name = "height";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PointTextureV2 *) node)->height;
return GF_OK;
case 4:
info->name = "normal";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFNormalNode;
info->far_ptr = & ((M_PointTextureV2 *)node)->normal;
return GF_OK;
case 5:
info->name = "splatU";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_PointTextureV2 *) node)->splatU;
return GF_OK;
case 6:
info->name = "splatV";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFVEC3F;
info->far_ptr = & ((M_PointTextureV2 *) node)->splatV;
return GF_OK;
case 7:
info->name = "width";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_PointTextureV2 *) node)->width;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 PointTextureV2_get_field_index_by_name(char *name)
{
if (!strcmp("color", name)) return 0;
if (!strcmp("depth", name)) return 1;
if (!strcmp("depthNbBits", name)) return 2;
if (!strcmp("height", name)) return 3;
if (!strcmp("normal", name)) return 4;
if (!strcmp("splatU", name)) return 5;
if (!strcmp("splatV", name)) return 6;
if (!strcmp("width", name)) return 7;
return -1;
}
static Bool PointTextureV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 0;
*QType = 13;
*QT13_bits = 5;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(31);
return 1;
case 5:
*AType = 0;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 0;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *PointTextureV2_Create()
{
M_PointTextureV2 *p;
GF_SAFEALLOC(p, M_PointTextureV2);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_PointTextureV2);
p->depthNbBits = 7;
p->height = 256;
p->width = 256;
return (GF_Node *)p;
}
static void SBVCAnimationV2_Del(GF_Node *node)
{
M_SBVCAnimationV2 *p = (M_SBVCAnimationV2 *) node;
gf_sg_mfint32_del(p->activeUrlIndex);
gf_sg_mfurl_del(p->url);
gf_node_unregister_children((GF_Node *) p, p->virtualCharacters);
gf_node_free((GF_Node *) p);
}
static const u16 SBVCAnimationV2_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 SBVCAnimationV2_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 SBVCAnimationV2_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
static const u16 SBVCAnimationV2_Dyn2All[] = { 2, 5};
static u32 SBVCAnimationV2_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 10;
case GF_SG_FIELD_CODING_DYN:
return 2;
default:
return 10;
}
}
static GF_Err SBVCAnimationV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SBVCAnimationV2_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SBVCAnimationV2_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SBVCAnimationV2_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = SBVCAnimationV2_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SBVCAnimationV2_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "activeUrlIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_SBVCAnimationV2 *) node)->activeUrlIndex;
return GF_OK;
case 1:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SBVCAnimationV2 *) node)->loop;
return GF_OK;
case 2:
info->name = "speed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SBVCAnimationV2 *) node)->speed;
return GF_OK;
case 3:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_SBVCAnimationV2 *) node)->startTime;
return GF_OK;
case 4:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_SBVCAnimationV2 *) node)->stopTime;
return GF_OK;
case 5:
info->name = "transitionTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SBVCAnimationV2 *) node)->transitionTime;
return GF_OK;
case 6:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_SBVCAnimationV2 *) node)->url;
return GF_OK;
case 7:
info->name = "virtualCharacters";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SBVCAnimationV2 *)node)->virtualCharacters;
return GF_OK;
case 8:
info->name = "duration_changed";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_SBVCAnimationV2 *) node)->duration_changed;
return GF_OK;
case 9:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SBVCAnimationV2 *) node)->isActive;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SBVCAnimationV2_get_field_index_by_name(char *name)
{
if (!strcmp("activeUrlIndex", name)) return 0;
if (!strcmp("loop", name)) return 1;
if (!strcmp("speed", name)) return 2;
if (!strcmp("startTime", name)) return 3;
if (!strcmp("stopTime", name)) return 4;
if (!strcmp("transitionTime", name)) return 5;
if (!strcmp("url", name)) return 6;
if (!strcmp("virtualCharacters", name)) return 7;
if (!strcmp("duration_changed", name)) return 8;
if (!strcmp("isActive", name)) return 9;
return -1;
}
static Bool SBVCAnimationV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 2:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *SBVCAnimationV2_Create()
{
M_SBVCAnimationV2 *p;
GF_SAFEALLOC(p, M_SBVCAnimationV2);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SBVCAnimationV2);
p->speed = FLT2FIX(1.0);
p->startTime = 0;
p->stopTime = 0;
p->transitionTime = FLT2FIX(0);
return (GF_Node *)p;
}
static void SimpleTextureV2_Del(GF_Node *node)
{
M_SimpleTextureV2 *p = (M_SimpleTextureV2 *) node;
gf_node_unregister((GF_Node *) p->depth, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->normal, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->splatU, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->splatV, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->texture, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 SimpleTextureV2_Def2All[] = { 0, 1, 2, 3, 4};
static u32 SimpleTextureV2_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 5;
}
}
static GF_Err SimpleTextureV2_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = SimpleTextureV2_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SimpleTextureV2_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "depth";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_SimpleTextureV2 *)node)->depth;
return GF_OK;
case 1:
info->name = "normal";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_SimpleTextureV2 *)node)->normal;
return GF_OK;
case 2:
info->name = "splatU";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_SimpleTextureV2 *)node)->splatU;
return GF_OK;
case 3:
info->name = "splatV";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_SimpleTextureV2 *)node)->splatV;
return GF_OK;
case 4:
info->name = "texture";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFTextureNode;
info->far_ptr = & ((M_SimpleTextureV2 *)node)->texture;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SimpleTextureV2_get_field_index_by_name(char *name)
{
if (!strcmp("depth", name)) return 0;
if (!strcmp("normal", name)) return 1;
if (!strcmp("splatU", name)) return 2;
if (!strcmp("splatV", name)) return 3;
if (!strcmp("texture", name)) return 4;
return -1;
}
static Bool SimpleTextureV2_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *SimpleTextureV2_Create()
{
M_SimpleTextureV2 *p;
GF_SAFEALLOC(p, M_SimpleTextureV2);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SimpleTextureV2);
return (GF_Node *)p;
}
static void SurroundingSound_Del(GF_Node *node)
{
M_SurroundingSound *p = (M_SurroundingSound *) node;
gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 SurroundingSound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 SurroundingSound_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 SurroundingSound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 SurroundingSound_Dyn2All[] = { 1, 3, 5};
static u32 SurroundingSound_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 3;
default:
return 7;
}
}
static GF_Err SurroundingSound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SurroundingSound_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SurroundingSound_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SurroundingSound_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = SurroundingSound_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SurroundingSound_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "source";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_SurroundingSound *)node)->source;
return GF_OK;
case 1:
info->name = "intensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SurroundingSound *) node)->intensity;
return GF_OK;
case 2:
info->name = "distance";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SurroundingSound *) node)->distance;
return GF_OK;
case 3:
info->name = "location";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_SurroundingSound *) node)->location;
return GF_OK;
case 4:
info->name = "distortionFactor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_SurroundingSound *) node)->distortionFactor;
return GF_OK;
case 5:
info->name = "orientation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_SurroundingSound *) node)->orientation;
return GF_OK;
case 6:
info->name = "isTransformable";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_SurroundingSound *) node)->isTransformable;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SurroundingSound_get_field_index_by_name(char *name)
{
if (!strcmp("source", name)) return 0;
if (!strcmp("intensity", name)) return 1;
if (!strcmp("distance", name)) return 2;
if (!strcmp("location", name)) return 3;
if (!strcmp("distortionFactor", name)) return 4;
if (!strcmp("orientation", name)) return 5;
if (!strcmp("isTransformable", name)) return 6;
return -1;
}
static Bool SurroundingSound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 3:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 5:
*AType = 10;
*QType = 10;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *SurroundingSound_Create()
{
M_SurroundingSound *p;
GF_SAFEALLOC(p, M_SurroundingSound);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SurroundingSound);
p->intensity = FLT2FIX(1.0);
p->distance = FLT2FIX(0.0);
p->location.x = FLT2FIX(0.0);
p->location.y = FLT2FIX(0.0);
p->location.z = FLT2FIX(0.0);
p->distortionFactor = FLT2FIX(0.0);
p->orientation.x = FLT2FIX(0.0);
p->orientation.y = FLT2FIX(0.0);
p->orientation.z = FLT2FIX(1.0);
p->orientation.q = FLT2FIX(0.0);
p->isTransformable = 1;
return (GF_Node *)p;
}
static void Transform3DAudio_Del(GF_Node *node)
{
M_Transform3DAudio *p = (M_Transform3DAudio *) node;
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Transform3DAudio_Def2All[] = { 2, 3, 4, 5, 6, 7, 8};
static const u16 Transform3DAudio_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 Transform3DAudio_Out2All[] = { 2, 3, 4, 5, 6, 7, 8};
static const u16 Transform3DAudio_Dyn2All[] = { 3, 4, 5, 6, 7};
static u32 Transform3DAudio_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 9;
case GF_SG_FIELD_CODING_DEF:
return 7;
case GF_SG_FIELD_CODING_OUT:
return 7;
case GF_SG_FIELD_CODING_DYN:
return 5;
default:
return 9;
}
}
static GF_Err Transform3DAudio_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Transform3DAudio_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Transform3DAudio_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Transform3DAudio_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = Transform3DAudio_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Transform3DAudio_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Transform3DAudio *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Transform3DAudio *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Transform3DAudio *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Transform3DAudio *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Transform3DAudio *)node)->children;
return GF_OK;
case 3:
info->name = "thirdCenterCoordinate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Transform3DAudio *) node)->thirdCenterCoordinate;
return GF_OK;
case 4:
info->name = "rotationVector";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Transform3DAudio *) node)->rotationVector;
return GF_OK;
case 5:
info->name = "thirdScaleCoordinate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Transform3DAudio *) node)->thirdScaleCoordinate;
return GF_OK;
case 6:
info->name = "scaleOrientationVector";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_Transform3DAudio *) node)->scaleOrientationVector;
return GF_OK;
case 7:
info->name = "thirdTranslationCoordinate";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Transform3DAudio *) node)->thirdTranslationCoordinate;
return GF_OK;
case 8:
info->name = "coordinateTransform";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFROTATION;
info->far_ptr = & ((M_Transform3DAudio *) node)->coordinateTransform;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Transform3DAudio_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("thirdCenterCoordinate", name)) return 3;
if (!strcmp("rotationVector", name)) return 4;
if (!strcmp("thirdScaleCoordinate", name)) return 5;
if (!strcmp("scaleOrientationVector", name)) return 6;
if (!strcmp("thirdTranslationCoordinate", name)) return 7;
if (!strcmp("coordinateTransform", name)) return 8;
return -1;
}
static Bool Transform3DAudio_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 3:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 4:
*AType = 11;
*QType = 7;
*b_min = FLT2FIX(-3.14159265);
*b_max = FLT2FIX(3.14159265);
return 1;
case 5:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 11;
*QType = 7;
*b_min = FLT2FIX(-1);
*b_max = FLT2FIX(1);
return 1;
case 7:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 8:
*AType = 0;
*QType = 10;
*b_min = FLT2FIX(-3.14159265);
*b_max = FLT2FIX(3.14159265);
return 1;
default:
return 0;
}
}
GF_Node *Transform3DAudio_Create()
{
M_Transform3DAudio *p;
GF_SAFEALLOC(p, M_Transform3DAudio);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Transform3DAudio);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->thirdCenterCoordinate = FLT2FIX(0.0);
p->rotationVector.x = FLT2FIX(0.0);
p->rotationVector.y = FLT2FIX(0.0);
p->rotationVector.z = FLT2FIX(1.0);
p->thirdScaleCoordinate = FLT2FIX(0.0);
p->scaleOrientationVector.x = FLT2FIX(0.0);
p->scaleOrientationVector.y = FLT2FIX(0.0);
p->scaleOrientationVector.z = FLT2FIX(1.0);
p->thirdTranslationCoordinate = FLT2FIX(0.0);
p->coordinateTransform.x = FLT2FIX(1.0);
p->coordinateTransform.y = FLT2FIX(0.0);
p->coordinateTransform.z = FLT2FIX(0.0);
p->coordinateTransform.q = FLT2FIX(-1.5707963);
return (GF_Node *)p;
}
static void WideSound_Del(GF_Node *node)
{
M_WideSound *p = (M_WideSound *) node;
gf_node_unregister((GF_Node *) p->source, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->perceptualParameters, (GF_Node *) p);
gf_sg_mffloat_del(p->size);
gf_node_free((GF_Node *) p);
}
static const u16 WideSound_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14};
static const u16 WideSound_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
static const u16 WideSound_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
static const u16 WideSound_Dyn2All[] = { 1, 2, 8};
static u32 WideSound_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 12;
case GF_SG_FIELD_CODING_DEF:
return 15;
case GF_SG_FIELD_CODING_OUT:
return 12;
case GF_SG_FIELD_CODING_DYN:
return 3;
default:
return 15;
}
}
static GF_Err WideSound_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = WideSound_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = WideSound_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = WideSound_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = WideSound_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err WideSound_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "source";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFAudioNode;
info->far_ptr = & ((M_WideSound *)node)->source;
return GF_OK;
case 1:
info->name = "intensity";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_WideSound *) node)->intensity;
return GF_OK;
case 2:
info->name = "location";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_WideSound *) node)->location;
return GF_OK;
case 3:
info->name = "spatialize";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_WideSound *) node)->spatialize;
return GF_OK;
case 4:
info->name = "perceptualParameters";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFPerceptualParameterNode;
info->far_ptr = & ((M_WideSound *)node)->perceptualParameters;
return GF_OK;
case 5:
info->name = "roomEffect";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_WideSound *) node)->roomEffect;
return GF_OK;
case 6:
info->name = "shape";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_WideSound *) node)->shape;
return GF_OK;
case 7:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_WideSound *) node)->size;
return GF_OK;
case 8:
info->name = "direction";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_WideSound *) node)->direction;
return GF_OK;
case 9:
info->name = "density";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_WideSound *) node)->density;
return GF_OK;
case 10:
info->name = "diffuseSelect";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_WideSound *) node)->diffuseSelect;
return GF_OK;
case 11:
info->name = "decorrStrength";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_WideSound *) node)->decorrStrength;
return GF_OK;
case 12:
info->name = "speedOfSound";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_WideSound *) node)->speedOfSound;
return GF_OK;
case 13:
info->name = "distance";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_WideSound *) node)->distance;
return GF_OK;
case 14:
info->name = "useAirabs";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_WideSound *) node)->useAirabs;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 WideSound_get_field_index_by_name(char *name)
{
if (!strcmp("source", name)) return 0;
if (!strcmp("intensity", name)) return 1;
if (!strcmp("location", name)) return 2;
if (!strcmp("spatialize", name)) return 3;
if (!strcmp("perceptualParameters", name)) return 4;
if (!strcmp("roomEffect", name)) return 5;
if (!strcmp("shape", name)) return 6;
if (!strcmp("size", name)) return 7;
if (!strcmp("direction", name)) return 8;
if (!strcmp("density", name)) return 9;
if (!strcmp("diffuseSelect", name)) return 10;
if (!strcmp("decorrStrength", name)) return 11;
if (!strcmp("speedOfSound", name)) return 12;
if (!strcmp("distance", name)) return 13;
if (!strcmp("useAirabs", name)) return 14;
return -1;
}
static Bool WideSound_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 1:
*AType = 7;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(1);
return 1;
case 2:
*AType = 1;
*QType = 1;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 6:
*AType = 0;
*QType = 13;
*QT13_bits = 4;
*b_min = FLT2FIX(0);
*b_max = FLT2FIX(4);
return 1;
case 8:
*AType = 9;
*QType = 9;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
case 10:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 12:
*AType = 0;
*QType = 1;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
case 13:
*AType = 0;
*QType = 0;
*b_min = FLT2FIX(0);
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *WideSound_Create()
{
M_WideSound *p;
GF_SAFEALLOC(p, M_WideSound);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_WideSound);
p->intensity = FLT2FIX(1);
p->location.x = FLT2FIX(0.0);
p->location.y = FLT2FIX(0.0);
p->location.z = FLT2FIX(0.0);
p->spatialize = 1;
p->shape = 0;
p->size.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->size.count = 1;
p->size.vals[0] = FLT2FIX(0.0);
p->direction.x = FLT2FIX(0.0);
p->direction.y = FLT2FIX(1.0);
p->direction.z = FLT2FIX(0.0);
p->density = FLT2FIX(0.5);
p->diffuseSelect = 1;
p->decorrStrength = FLT2FIX(1.0);
p->speedOfSound = FLT2FIX(340.0);
p->distance = FLT2FIX(1000.0);
return (GF_Node *)p;
}
static void ScoreShape_Del(GF_Node *node)
{
M_ScoreShape *p = (M_ScoreShape *) node;
gf_node_unregister((GF_Node *) p->score, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->geometry, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 ScoreShape_Def2All[] = { 0, 1};
static const u16 ScoreShape_In2All[] = { 0, 1};
static const u16 ScoreShape_Out2All[] = { 0, 1};
static u32 ScoreShape_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err ScoreShape_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = ScoreShape_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = ScoreShape_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = ScoreShape_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err ScoreShape_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "score";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFMusicScoreNode;
info->far_ptr = & ((M_ScoreShape *)node)->score;
return GF_OK;
case 1:
info->name = "geometry";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_ScoreShape *)node)->geometry;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 ScoreShape_get_field_index_by_name(char *name)
{
if (!strcmp("score", name)) return 0;
if (!strcmp("geometry", name)) return 1;
return -1;
}
static Bool ScoreShape_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *ScoreShape_Create()
{
M_ScoreShape *p;
GF_SAFEALLOC(p, M_ScoreShape);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_ScoreShape);
return (GF_Node *)p;
}
static void MusicScore_Del(GF_Node *node)
{
M_MusicScore *p = (M_MusicScore *) node;
gf_sg_sfstring_del(p->gotoLabel);
gf_sg_mfstring_del(p->argumentsOnExecute);
gf_sg_sfstring_del(p->commandOnExecute);
gf_sg_mfstring_del(p->partsLyrics);
gf_sg_mfint32_del(p->partsShown);
gf_sg_mfurl_del(p->url);
gf_sg_mfurl_del(p->urlSA);
gf_sg_sfstring_del(p->viewType);
gf_sg_sfstring_del(p->activatedLink);
gf_sg_mfstring_del(p->availableCommands);
gf_sg_mfstring_del(p->availableLabels);
gf_sg_mfstring_del(p->availableLyricLanguages);
gf_sg_mfstring_del(p->availableViewTypes);
gf_sg_mfstring_del(p->partNames);
gf_node_free((GF_Node *) p);
}
static const u16 MusicScore_Def2All[] = { 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
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};
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};
static const u16 MusicScore_Dyn2All[] = { 14};
static u32 MusicScore_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 21;
case GF_SG_FIELD_CODING_DEF:
return 16;
case GF_SG_FIELD_CODING_OUT:
return 26;
case GF_SG_FIELD_CODING_DYN:
return 1;
default:
return 31;
}
}
static GF_Err MusicScore_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = MusicScore_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = MusicScore_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = MusicScore_Out2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DYN:
*allField = MusicScore_Dyn2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err MusicScore_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "executeCommand";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_MusicScore *)node)->on_executeCommand;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MusicScore *) node)->executeCommand;
return GF_OK;
case 1:
info->name = "gotoLabel";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_MusicScore *)node)->on_gotoLabel;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->gotoLabel;
return GF_OK;
case 2:
info->name = "gotoMeasure";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_MusicScore *)node)->on_gotoMeasure;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_MusicScore *) node)->gotoMeasure;
return GF_OK;
case 3:
info->name = "highlightTimePosition";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_MusicScore *)node)->on_highlightTimePosition;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MusicScore *) node)->highlightTimePosition;
return GF_OK;
case 4:
info->name = "mousePosition";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_MusicScore *)node)->on_mousePosition;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_MusicScore *) node)->mousePosition;
return GF_OK;
case 5:
info->name = "argumentsOnExecute";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->argumentsOnExecute;
return GF_OK;
case 6:
info->name = "commandOnExecute";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->commandOnExecute;
return GF_OK;
case 7:
info->name = "firstVisibleMeasure";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_MusicScore *) node)->firstVisibleMeasure;
return GF_OK;
case 8:
info->name = "hyperlinkEnable";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MusicScore *) node)->hyperlinkEnable;
return GF_OK;
case 9:
info->name = "loop";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MusicScore *) node)->loop;
return GF_OK;
case 10:
info->name = "partsLyrics";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->partsLyrics;
return GF_OK;
case 11:
info->name = "partsShown";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_MusicScore *) node)->partsShown;
return GF_OK;
case 12:
info->name = "scoreOffset";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MusicScore *) node)->scoreOffset;
return GF_OK;
case 13:
info->name = "size";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFVEC2F;
info->far_ptr = & ((M_MusicScore *) node)->size;
return GF_OK;
case 14:
info->name = "speed";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_MusicScore *) node)->speed;
return GF_OK;
case 15:
info->name = "startTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MusicScore *) node)->startTime;
return GF_OK;
case 16:
info->name = "stopTime";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFTIME;
info->far_ptr = & ((M_MusicScore *) node)->stopTime;
return GF_OK;
case 17:
info->name = "transpose";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_MusicScore *) node)->transpose;
return GF_OK;
case 18:
info->name = "url";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_MusicScore *) node)->url;
return GF_OK;
case 19:
info->name = "urlSA";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_MusicScore *) node)->urlSA;
return GF_OK;
case 20:
info->name = "viewType";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->viewType;
return GF_OK;
case 21:
info->name = "activatedLink";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->activatedLink;
return GF_OK;
case 22:
info->name = "availableCommands";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->availableCommands;
return GF_OK;
case 23:
info->name = "availableLabels";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->availableLabels;
return GF_OK;
case 24:
info->name = "availableLyricLanguages";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->availableLyricLanguages;
return GF_OK;
case 25:
info->name = "availableViewTypes";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->availableViewTypes;
return GF_OK;
case 26:
info->name = "isActive";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_MusicScore *) node)->isActive;
return GF_OK;
case 27:
info->name = "highlightPosition";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFVEC3F;
info->far_ptr = & ((M_MusicScore *) node)->highlightPosition;
return GF_OK;
case 28:
info->name = "lastVisibleMeasure";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_MusicScore *) node)->lastVisibleMeasure;
return GF_OK;
case 29:
info->name = "numMeasures";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_MusicScore *) node)->numMeasures;
return GF_OK;
case 30:
info->name = "partNames";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_MFSTRING;
info->far_ptr = & ((M_MusicScore *) node)->partNames;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 MusicScore_get_field_index_by_name(char *name)
{
if (!strcmp("executeCommand", name)) return 0;
if (!strcmp("gotoLabel", name)) return 1;
if (!strcmp("gotoMeasure", name)) return 2;
if (!strcmp("highlightTimePosition", name)) return 3;
if (!strcmp("mousePosition", name)) return 4;
if (!strcmp("argumentsOnExecute", name)) return 5;
if (!strcmp("commandOnExecute", name)) return 6;
if (!strcmp("firstVisibleMeasure", name)) return 7;
if (!strcmp("hyperlinkEnable", name)) return 8;
if (!strcmp("loop", name)) return 9;
if (!strcmp("partsLyrics", name)) return 10;
if (!strcmp("partsShown", name)) return 11;
if (!strcmp("scoreOffset", name)) return 12;
if (!strcmp("size", name)) return 13;
if (!strcmp("speed", name)) return 14;
if (!strcmp("startTime", name)) return 15;
if (!strcmp("stopTime", name)) return 16;
if (!strcmp("transpose", name)) return 17;
if (!strcmp("url", name)) return 18;
if (!strcmp("urlSA", name)) return 19;
if (!strcmp("viewType", name)) return 20;
if (!strcmp("activatedLink", name)) return 21;
if (!strcmp("availableCommands", name)) return 22;
if (!strcmp("availableLabels", name)) return 23;
if (!strcmp("availableLyricLanguages", name)) return 24;
if (!strcmp("availableViewTypes", name)) return 25;
if (!strcmp("isActive", name)) return 26;
if (!strcmp("highlightPosition", name)) return 27;
if (!strcmp("lastVisibleMeasure", name)) return 28;
if (!strcmp("numMeasures", name)) return 29;
if (!strcmp("partNames", name)) return 30;
return -1;
}
static Bool MusicScore_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
case 14:
*AType = 7;
*QType = 0;
*b_min = FIX_MIN;
*b_max = FIX_MAX;
return 1;
default:
return 0;
}
}
GF_Node *MusicScore_Create()
{
M_MusicScore *p;
GF_SAFEALLOC(p, M_MusicScore);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_MusicScore);
p->firstVisibleMeasure = 0;
p->hyperlinkEnable = 1;
p->scoreOffset = 0.0;
p->size.x = FLT2FIX(-1);
p->size.y = FLT2FIX(-1);
p->speed = FLT2FIX(1.0);
p->startTime = 0;
p->stopTime = 0;
p->transpose = FLT2FIX(0.0);
return (GF_Node *)p;
}
static void FootPrintSetNode_Del(GF_Node *node)
{
M_FootPrintSetNode *p = (M_FootPrintSetNode *) node;
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 FootPrintSetNode_Def2All[] = { 0};
static const u16 FootPrintSetNode_In2All[] = { 0};
static const u16 FootPrintSetNode_Out2All[] = { 0};
static u32 FootPrintSetNode_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 1;
case GF_SG_FIELD_CODING_DEF:
return 1;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 1;
}
}
static GF_Err FootPrintSetNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = FootPrintSetNode_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = FootPrintSetNode_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = FootPrintSetNode_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FootPrintSetNode_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_FootPrintSetNode *)node)->children;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FootPrintSetNode_get_field_index_by_name(char *name)
{
if (!strcmp("children", name)) return 0;
return -1;
}
static Bool FootPrintSetNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *FootPrintSetNode_Create()
{
M_FootPrintSetNode *p;
GF_SAFEALLOC(p, M_FootPrintSetNode);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FootPrintSetNode);
gf_sg_vrml_parent_setup((GF_Node *) p);
return (GF_Node *)p;
}
static void FootPrintNode_Del(GF_Node *node)
{
M_FootPrintNode *p = (M_FootPrintNode *) node;
gf_node_unregister((GF_Node *) p->footprint, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 FootPrintNode_Def2All[] = { 0, 1};
static const u16 FootPrintNode_In2All[] = { 0, 1};
static const u16 FootPrintNode_Out2All[] = { 0, 1};
static u32 FootPrintNode_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 2;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 2;
}
}
static GF_Err FootPrintNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = FootPrintNode_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = FootPrintNode_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = FootPrintNode_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FootPrintNode_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "index";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FootPrintNode *) node)->index;
return GF_OK;
case 1:
info->name = "footprint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_FootPrintNode *)node)->footprint;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FootPrintNode_get_field_index_by_name(char *name)
{
if (!strcmp("index", name)) return 0;
if (!strcmp("footprint", name)) return 1;
return -1;
}
static Bool FootPrintNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *FootPrintNode_Create()
{
M_FootPrintNode *p;
GF_SAFEALLOC(p, M_FootPrintNode);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FootPrintNode);
p->index = -1;
return (GF_Node *)p;
}
static void BuildingPartNode_Del(GF_Node *node)
{
M_BuildingPartNode *p = (M_BuildingPartNode *) node;
gf_node_unregister((GF_Node *) p->footprint, (GF_Node *) p);
gf_node_unregister_children((GF_Node *) p, p->alternativeGeometry);
gf_node_unregister_children((GF_Node *) p, p->roofs);
gf_node_unregister_children((GF_Node *) p, p->facades);
gf_node_free((GF_Node *) p);
}
static const u16 BuildingPartNode_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 BuildingPartNode_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static const u16 BuildingPartNode_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static u32 BuildingPartNode_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 8;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err BuildingPartNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = BuildingPartNode_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = BuildingPartNode_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = BuildingPartNode_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err BuildingPartNode_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "index";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BuildingPartNode *) node)->index;
return GF_OK;
case 1:
info->name = "footprint";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_BuildingPartNode *)node)->footprint;
return GF_OK;
case 2:
info->name = "buildingIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_BuildingPartNode *) node)->buildingIndex;
return GF_OK;
case 3:
info->name = "height";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_BuildingPartNode *) node)->height;
return GF_OK;
case 4:
info->name = "altitude";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_BuildingPartNode *) node)->altitude;
return GF_OK;
case 5:
info->name = "alternativeGeometry";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_BuildingPartNode *)node)->alternativeGeometry;
return GF_OK;
case 6:
info->name = "roofs";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_BuildingPartNode *)node)->roofs;
return GF_OK;
case 7:
info->name = "facades";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_BuildingPartNode *)node)->facades;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 BuildingPartNode_get_field_index_by_name(char *name)
{
if (!strcmp("index", name)) return 0;
if (!strcmp("footprint", name)) return 1;
if (!strcmp("buildingIndex", name)) return 2;
if (!strcmp("height", name)) return 3;
if (!strcmp("altitude", name)) return 4;
if (!strcmp("alternativeGeometry", name)) return 5;
if (!strcmp("roofs", name)) return 6;
if (!strcmp("facades", name)) return 7;
return -1;
}
static Bool BuildingPartNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *BuildingPartNode_Create()
{
M_BuildingPartNode *p;
GF_SAFEALLOC(p, M_BuildingPartNode);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_BuildingPartNode);
p->index = -1;
p->buildingIndex = -1;
p->height = FLT2FIX(0);
p->altitude = FLT2FIX(0);
return (GF_Node *)p;
}
static void RoofNode_Del(GF_Node *node)
{
M_RoofNode *p = (M_RoofNode *) node;
gf_sg_mffloat_del(p->SlopeAngle);
gf_sg_sfurl_del(p->RoofTextureURL);
gf_node_free((GF_Node *) p);
}
static const u16 RoofNode_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
static const u16 RoofNode_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
static const u16 RoofNode_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
static u32 RoofNode_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 12;
case GF_SG_FIELD_CODING_DEF:
return 12;
case GF_SG_FIELD_CODING_OUT:
return 12;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 12;
}
}
static GF_Err RoofNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = RoofNode_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = RoofNode_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = RoofNode_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err RoofNode_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "Type";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_RoofNode *) node)->Type;
return GF_OK;
case 1:
info->name = "Height";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_RoofNode *) node)->Height;
return GF_OK;
case 2:
info->name = "SlopeAngle";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_RoofNode *) node)->SlopeAngle;
return GF_OK;
case 3:
info->name = "EaveProjection";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_RoofNode *) node)->EaveProjection;
return GF_OK;
case 4:
info->name = "EdgeSupportIndex";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_RoofNode *) node)->EdgeSupportIndex;
return GF_OK;
case 5:
info->name = "RoofTextureURL";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFURL;
info->far_ptr = & ((M_RoofNode *) node)->RoofTextureURL;
return GF_OK;
case 6:
info->name = "IsGenericTexture";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_RoofNode *) node)->IsGenericTexture;
return GF_OK;
case 7:
info->name = "TextureXScale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_RoofNode *) node)->TextureXScale;
return GF_OK;
case 8:
info->name = "TextureYScale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_RoofNode *) node)->TextureYScale;
return GF_OK;
case 9:
info->name = "TextureXPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_RoofNode *) node)->TextureXPosition;
return GF_OK;
case 10:
info->name = "TextureYPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_RoofNode *) node)->TextureYPosition;
return GF_OK;
case 11:
info->name = "TextureRotation";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_RoofNode *) node)->TextureRotation;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 RoofNode_get_field_index_by_name(char *name)
{
if (!strcmp("Type", name)) return 0;
if (!strcmp("Height", name)) return 1;
if (!strcmp("SlopeAngle", name)) return 2;
if (!strcmp("EaveProjection", name)) return 3;
if (!strcmp("EdgeSupportIndex", name)) return 4;
if (!strcmp("RoofTextureURL", name)) return 5;
if (!strcmp("IsGenericTexture", name)) return 6;
if (!strcmp("TextureXScale", name)) return 7;
if (!strcmp("TextureYScale", name)) return 8;
if (!strcmp("TextureXPosition", name)) return 9;
if (!strcmp("TextureYPosition", name)) return 10;
if (!strcmp("TextureRotation", name)) return 11;
return -1;
}
static Bool RoofNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *RoofNode_Create()
{
M_RoofNode *p;
GF_SAFEALLOC(p, M_RoofNode);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_RoofNode);
p->Type = 0;
p->Height = FLT2FIX(0.0);
p->SlopeAngle.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->SlopeAngle.count = 1;
p->SlopeAngle.vals[0] = FLT2FIX(0.0);
p->EaveProjection = FLT2FIX(0.0);
p->EdgeSupportIndex = -1;
p->IsGenericTexture = 1;
p->TextureXScale = FLT2FIX(1.0);
p->TextureYScale = FLT2FIX(1.0);
p->TextureXPosition = FLT2FIX(0.0);
p->TextureYPosition = FLT2FIX(0.0);
p->TextureRotation = FLT2FIX(0.0);
return (GF_Node *)p;
}
static void FacadeNode_Del(GF_Node *node)
{
M_FacadeNode *p = (M_FacadeNode *) node;
gf_sg_sfurl_del(p->FacadePrimitive);
gf_sg_mfint32_del(p->NbFacadeCellsByStorey);
gf_sg_mffloat_del(p->StoreyHeight);
gf_node_unregister_children((GF_Node *) p, p->FacadeCellsArray);
gf_node_free((GF_Node *) p);
}
static const u16 FacadeNode_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static const u16 FacadeNode_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static const u16 FacadeNode_Out2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
static u32 FacadeNode_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 13;
case GF_SG_FIELD_CODING_DEF:
return 13;
case GF_SG_FIELD_CODING_OUT:
return 13;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 13;
}
}
static GF_Err FacadeNode_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = FacadeNode_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = FacadeNode_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = FacadeNode_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err FacadeNode_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "WidthRatio";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_FacadeNode *) node)->WidthRatio;
return GF_OK;
case 1:
info->name = "XScale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_FacadeNode *) node)->XScale;
return GF_OK;
case 2:
info->name = "YScale";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_FacadeNode *) node)->YScale;
return GF_OK;
case 3:
info->name = "XPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_FacadeNode *) node)->XPosition;
return GF_OK;
case 4:
info->name = "YPosition";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_FacadeNode *) node)->YPosition;
return GF_OK;
case 5:
info->name = "XRepeatInterval";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_FacadeNode *) node)->XRepeatInterval;
return GF_OK;
case 6:
info->name = "YRepeatInterval";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_FacadeNode *) node)->YRepeatInterval;
return GF_OK;
case 7:
info->name = "Repeat";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_FacadeNode *) node)->Repeat;
return GF_OK;
case 8:
info->name = "FacadePrimitive";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFURL;
info->far_ptr = & ((M_FacadeNode *) node)->FacadePrimitive;
return GF_OK;
case 9:
info->name = "NbStories";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_FacadeNode *) node)->NbStories;
return GF_OK;
case 10:
info->name = "NbFacadeCellsByStorey";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFINT32;
info->far_ptr = & ((M_FacadeNode *) node)->NbFacadeCellsByStorey;
return GF_OK;
case 11:
info->name = "StoreyHeight";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFFLOAT;
info->far_ptr = & ((M_FacadeNode *) node)->StoreyHeight;
return GF_OK;
case 12:
info->name = "FacadeCellsArray";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SFGeometryNode;
info->far_ptr = & ((M_FacadeNode *)node)->FacadeCellsArray;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 FacadeNode_get_field_index_by_name(char *name)
{
if (!strcmp("WidthRatio", name)) return 0;
if (!strcmp("XScale", name)) return 1;
if (!strcmp("YScale", name)) return 2;
if (!strcmp("XPosition", name)) return 3;
if (!strcmp("YPosition", name)) return 4;
if (!strcmp("XRepeatInterval", name)) return 5;
if (!strcmp("YRepeatInterval", name)) return 6;
if (!strcmp("Repeat", name)) return 7;
if (!strcmp("FacadePrimitive", name)) return 8;
if (!strcmp("NbStories", name)) return 9;
if (!strcmp("NbFacadeCellsByStorey", name)) return 10;
if (!strcmp("StoreyHeight", name)) return 11;
if (!strcmp("FacadeCellsArray", name)) return 12;
return -1;
}
static Bool FacadeNode_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *FacadeNode_Create()
{
M_FacadeNode *p;
GF_SAFEALLOC(p, M_FacadeNode);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_FacadeNode);
p->WidthRatio = FLT2FIX(1.0);
p->XScale = FLT2FIX(1.0);
p->YScale = FLT2FIX(1.0);
p->XPosition = FLT2FIX(0.0);
p->YPosition = FLT2FIX(0.0);
p->XRepeatInterval = FLT2FIX(0.0);
p->YRepeatInterval = FLT2FIX(0.0);
p->NbStories = 0;
p->NbFacadeCellsByStorey.vals = (SFInt32*)gf_malloc(sizeof(SFInt32)*1);
p->NbFacadeCellsByStorey.count = 1;
p->NbFacadeCellsByStorey.vals[0] = 0;
p->StoreyHeight.vals = (SFFloat*)gf_malloc(sizeof(SFFloat)*1);
p->StoreyHeight.count = 1;
p->StoreyHeight.vals[0] = FLT2FIX(1.0);
return (GF_Node *)p;
}
static void Shadow_Del(GF_Node *node)
{
M_Shadow *p = (M_Shadow *) node;
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 Shadow_Def2All[] = { 2, 3, 4, 5, 6};
static const u16 Shadow_In2All[] = { 0, 1, 2, 3, 4, 5, 6};
static const u16 Shadow_Out2All[] = { 2, 3, 4, 5, 6};
static u32 Shadow_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 7;
case GF_SG_FIELD_CODING_DEF:
return 5;
case GF_SG_FIELD_CODING_OUT:
return 5;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 7;
}
}
static GF_Err Shadow_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Shadow_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Shadow_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Shadow_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Shadow_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Shadow *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Shadow *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Shadow *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Shadow *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_Shadow *)node)->children;
return GF_OK;
case 3:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Shadow *) node)->enabled;
return GF_OK;
case 4:
info->name = "cast";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Shadow *) node)->cast;
return GF_OK;
case 5:
info->name = "receive";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Shadow *) node)->receive;
return GF_OK;
case 6:
info->name = "penumbra";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_Shadow *) node)->penumbra;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Shadow_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("enabled", name)) return 3;
if (!strcmp("cast", name)) return 4;
if (!strcmp("receive", name)) return 5;
if (!strcmp("penumbra", name)) return 6;
return -1;
}
static Bool Shadow_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Shadow_Create()
{
M_Shadow *p;
GF_SAFEALLOC(p, M_Shadow);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Shadow);
gf_sg_vrml_parent_setup((GF_Node *) p);
p->enabled = 1;
p->cast = 1;
p->receive = 1;
p->penumbra = FLT2FIX(0);
return (GF_Node *)p;
}
static void CacheTexture_Del(GF_Node *node)
{
M_CacheTexture *p = (M_CacheTexture *) node;
gf_sg_sfstring_del(p->decoderSpecificInfo);
gf_sg_sfstring_del(p->image);
gf_sg_sfstring_del(p->cacheURL);
gf_sg_mfurl_del(p->cacheOD);
if (p->data) gf_free(p->data);
gf_node_free((GF_Node *) p);
}
static const u16 CacheTexture_Def2All[] = { 0, 1, 2, 3, 4, 5, 6, 7};
static u32 CacheTexture_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 0;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 0;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 8;
}
}
static GF_Err CacheTexture_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_DEF:
*allField = CacheTexture_Def2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err CacheTexture_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "objectTypeIndication";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_CacheTexture *) node)->objectTypeIndication;
return GF_OK;
case 1:
info->name = "decoderSpecificInfo";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_CacheTexture *) node)->decoderSpecificInfo;
return GF_OK;
case 2:
info->name = "image";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_CacheTexture *) node)->image;
return GF_OK;
case 3:
info->name = "cacheURL";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_CacheTexture *) node)->cacheURL;
return GF_OK;
case 4:
info->name = "cacheOD";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFURL;
info->far_ptr = & ((M_CacheTexture *) node)->cacheOD;
return GF_OK;
case 5:
info->name = "expirationDate";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_CacheTexture *) node)->expirationDate;
return GF_OK;
case 6:
info->name = "repeatS";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_CacheTexture *) node)->repeatS;
return GF_OK;
case 7:
info->name = "repeatT";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_CacheTexture *) node)->repeatT;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 CacheTexture_get_field_index_by_name(char *name)
{
if (!strcmp("objectTypeIndication", name)) return 0;
if (!strcmp("decoderSpecificInfo", name)) return 1;
if (!strcmp("image", name)) return 2;
if (!strcmp("cacheURL", name)) return 3;
if (!strcmp("cacheOD", name)) return 4;
if (!strcmp("expirationDate", name)) return 5;
if (!strcmp("repeatS", name)) return 6;
if (!strcmp("repeatT", name)) return 7;
return -1;
}
static Bool CacheTexture_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *CacheTexture_Create()
{
M_CacheTexture *p;
GF_SAFEALLOC(p, M_CacheTexture);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_CacheTexture);
p->objectTypeIndication = 0;
p->expirationDate = 0;
p->repeatS = 1;
p->repeatT = 1;
return (GF_Node *)p;
}
static void EnvironmentTest_Del(GF_Node *node)
{
M_EnvironmentTest *p = (M_EnvironmentTest *) node;
gf_sg_sfstring_del(p->compareValue);
gf_sg_sfstring_del(p->parameterValue);
gf_node_free((GF_Node *) p);
}
static const u16 EnvironmentTest_Def2All[] = { 1, 2, 3, 4};
static const u16 EnvironmentTest_In2All[] = { 0, 1, 2, 3, 4};
static const u16 EnvironmentTest_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8};
static u32 EnvironmentTest_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 5;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 8;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 9;
}
}
static GF_Err EnvironmentTest_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = EnvironmentTest_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = EnvironmentTest_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = EnvironmentTest_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err EnvironmentTest_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "evaluate";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_EnvironmentTest *)node)->on_evaluate;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_EnvironmentTest *) node)->evaluate;
return GF_OK;
case 1:
info->name = "enabled";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_EnvironmentTest *) node)->enabled;
return GF_OK;
case 2:
info->name = "parameter";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_EnvironmentTest *) node)->parameter;
return GF_OK;
case 3:
info->name = "compareValue";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_EnvironmentTest *) node)->compareValue;
return GF_OK;
case 4:
info->name = "evaluateOnChange";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_EnvironmentTest *) node)->evaluateOnChange;
return GF_OK;
case 5:
info->name = "valueLarger";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_EnvironmentTest *) node)->valueLarger;
return GF_OK;
case 6:
info->name = "valueEqual";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_EnvironmentTest *) node)->valueEqual;
return GF_OK;
case 7:
info->name = "valueSmaller";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_EnvironmentTest *) node)->valueSmaller;
return GF_OK;
case 8:
info->name = "parameterValue";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_EnvironmentTest *) node)->parameterValue;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 EnvironmentTest_get_field_index_by_name(char *name)
{
if (!strcmp("evaluate", name)) return 0;
if (!strcmp("enabled", name)) return 1;
if (!strcmp("parameter", name)) return 2;
if (!strcmp("compareValue", name)) return 3;
if (!strcmp("evaluateOnChange", name)) return 4;
if (!strcmp("valueLarger", name)) return 5;
if (!strcmp("valueEqual", name)) return 6;
if (!strcmp("valueSmaller", name)) return 7;
if (!strcmp("parameterValue", name)) return 8;
return -1;
}
static Bool EnvironmentTest_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *EnvironmentTest_Create()
{
M_EnvironmentTest *p;
GF_SAFEALLOC(p, M_EnvironmentTest);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_EnvironmentTest);
p->enabled = 1;
p->parameter = 0;
p->evaluateOnChange = 1;
return (GF_Node *)p;
}
static void KeyNavigator_Del(GF_Node *node)
{
M_KeyNavigator *p = (M_KeyNavigator *) node;
gf_node_unregister((GF_Node *) p->sensor, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->left, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->right, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->up, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->down, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->select, (GF_Node *) p);
gf_node_unregister((GF_Node *) p->quit, (GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 KeyNavigator_Def2All[] = { 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 KeyNavigator_In2All[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8};
static const u16 KeyNavigator_Out2All[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
static u32 KeyNavigator_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 9;
case GF_SG_FIELD_CODING_DEF:
return 8;
case GF_SG_FIELD_CODING_OUT:
return 9;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 10;
}
}
static GF_Err KeyNavigator_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = KeyNavigator_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = KeyNavigator_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = KeyNavigator_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err KeyNavigator_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "setFocus";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_KeyNavigator *)node)->on_setFocus;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_KeyNavigator *) node)->setFocus;
return GF_OK;
case 1:
info->name = "sensor";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_KeyNavigator *)node)->sensor;
return GF_OK;
case 2:
info->name = "left";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_KeyNavigator *)node)->left;
return GF_OK;
case 3:
info->name = "right";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_KeyNavigator *)node)->right;
return GF_OK;
case 4:
info->name = "up";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_KeyNavigator *)node)->up;
return GF_OK;
case 5:
info->name = "down";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_KeyNavigator *)node)->down;
return GF_OK;
case 6:
info->name = "select";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_KeyNavigator *)node)->select;
return GF_OK;
case 7:
info->name = "quit";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFNODE;
info->NDTtype = NDT_SF2DNode;
info->far_ptr = & ((M_KeyNavigator *)node)->quit;
return GF_OK;
case 8:
info->name = "step";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFFLOAT;
info->far_ptr = & ((M_KeyNavigator *) node)->step;
return GF_OK;
case 9:
info->name = "focusSet";
info->eventType = GF_SG_EVENT_OUT;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_KeyNavigator *) node)->focusSet;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 KeyNavigator_get_field_index_by_name(char *name)
{
if (!strcmp("setFocus", name)) return 0;
if (!strcmp("sensor", name)) return 1;
if (!strcmp("left", name)) return 2;
if (!strcmp("right", name)) return 3;
if (!strcmp("up", name)) return 4;
if (!strcmp("down", name)) return 5;
if (!strcmp("select", name)) return 6;
if (!strcmp("quit", name)) return 7;
if (!strcmp("step", name)) return 8;
if (!strcmp("focusSet", name)) return 9;
return -1;
}
static Bool KeyNavigator_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *KeyNavigator_Create()
{
M_KeyNavigator *p;
GF_SAFEALLOC(p, M_KeyNavigator);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_KeyNavigator);
p->step = FLT2FIX(0);
return (GF_Node *)p;
}
static void SpacePartition_Del(GF_Node *node)
{
M_SpacePartition *p = (M_SpacePartition *) node;
gf_sg_sfurl_del(p->SPStream);
gf_sg_vrml_parent_destroy((GF_Node *) p);
gf_node_free((GF_Node *) p);
}
static const u16 SpacePartition_Def2All[] = { 2, 3};
static const u16 SpacePartition_In2All[] = { 0, 1, 2, 3};
static const u16 SpacePartition_Out2All[] = { 2, 3};
static u32 SpacePartition_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 4;
case GF_SG_FIELD_CODING_DEF:
return 2;
case GF_SG_FIELD_CODING_OUT:
return 2;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 4;
}
}
static GF_Err SpacePartition_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = SpacePartition_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = SpacePartition_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = SpacePartition_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err SpacePartition_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "addChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SpacePartition *)node)->on_addChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SpacePartition *)node)->addChildren;
return GF_OK;
case 1:
info->name = "removeChildren";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_SpacePartition *)node)->on_removeChildren;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SpacePartition *)node)->removeChildren;
return GF_OK;
case 2:
info->name = "children";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_MFNODE;
info->NDTtype = NDT_SF3DNode;
info->far_ptr = & ((M_SpacePartition *)node)->children;
return GF_OK;
case 3:
info->name = "SPStream";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFURL;
info->far_ptr = & ((M_SpacePartition *) node)->SPStream;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 SpacePartition_get_field_index_by_name(char *name)
{
if (!strcmp("addChildren", name)) return 0;
if (!strcmp("removeChildren", name)) return 1;
if (!strcmp("children", name)) return 2;
if (!strcmp("SPStream", name)) return 3;
return -1;
}
static Bool SpacePartition_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *SpacePartition_Create()
{
M_SpacePartition *p;
GF_SAFEALLOC(p, M_SpacePartition);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_SpacePartition);
gf_sg_vrml_parent_setup((GF_Node *) p);
return (GF_Node *)p;
}
static void Storage_Del(GF_Node *node)
{
M_Storage *p = (M_Storage *) node;
gf_sg_sfstring_del(p->name);
gf_sg_mfattrref_del(p->storageList);
gf_node_free((GF_Node *) p);
}
static const u16 Storage_Def2All[] = { 2, 3, 4, 5};
static const u16 Storage_In2All[] = { 0, 1, 2};
static const u16 Storage_Out2All[] = { 2};
static u32 Storage_get_field_count(GF_Node *node, u8 IndexMode)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
return 3;
case GF_SG_FIELD_CODING_DEF:
return 4;
case GF_SG_FIELD_CODING_OUT:
return 1;
case GF_SG_FIELD_CODING_DYN:
return 0;
default:
return 6;
}
}
static GF_Err Storage_get_field_index(GF_Node *n, u32 inField, u8 IndexMode, u32 *allField)
{
switch(IndexMode) {
case GF_SG_FIELD_CODING_IN:
*allField = Storage_In2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_DEF:
*allField = Storage_Def2All[inField];
return GF_OK;
case GF_SG_FIELD_CODING_OUT:
*allField = Storage_Out2All[inField];
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static GF_Err Storage_get_field(GF_Node *node, GF_FieldInfo *info)
{
switch (info->fieldIndex) {
case 0:
info->name = "forceSave";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Storage *)node)->on_forceSave;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Storage *) node)->forceSave;
return GF_OK;
case 1:
info->name = "forceRestore";
info->eventType = GF_SG_EVENT_IN;
info->on_event_in = ((M_Storage *)node)->on_forceRestore;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Storage *) node)->forceRestore;
return GF_OK;
case 2:
info->name = "auto";
info->eventType = GF_SG_EVENT_EXPOSED_FIELD;
info->fieldType = GF_SG_VRML_SFBOOL;
info->far_ptr = & ((M_Storage *) node)->_auto;
return GF_OK;
case 3:
info->name = "expireAfter";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFINT32;
info->far_ptr = & ((M_Storage *) node)->expireAfter;
return GF_OK;
case 4:
info->name = "name";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_SFSTRING;
info->far_ptr = & ((M_Storage *) node)->name;
return GF_OK;
case 5:
info->name = "storageList";
info->eventType = GF_SG_EVENT_FIELD;
info->fieldType = GF_SG_VRML_MFATTRREF;
info->far_ptr = & ((M_Storage *) node)->storageList;
return GF_OK;
default:
return GF_BAD_PARAM;
}
}
static s32 Storage_get_field_index_by_name(char *name)
{
if (!strcmp("forceSave", name)) return 0;
if (!strcmp("forceRestore", name)) return 1;
if (!strcmp("auto", name)) return 2;
if (!strcmp("expireAfter", name)) return 3;
if (!strcmp("name", name)) return 4;
if (!strcmp("storageList", name)) return 5;
return -1;
}
static Bool Storage_get_aq_info(GF_Node *n, u32 FieldIndex, u8 *QType, u8 *AType, Fixed *b_min, Fixed *b_max, u32 *QT13_bits)
{
switch (FieldIndex) {
default:
return 0;
}
}
GF_Node *Storage_Create()
{
M_Storage *p;
GF_SAFEALLOC(p, M_Storage);
if(!p) return NULL;
gf_node_setup((GF_Node *)p, TAG_MPEG4_Storage);
p->_auto = 1;
p->expireAfter = 0;
return (GF_Node *)p;
}
GF_Node *gf_sg_mpeg4_node_new(u32 NodeTag)
{
switch (NodeTag) {
case TAG_MPEG4_Anchor:
return Anchor_Create();
case TAG_MPEG4_AnimationStream:
return AnimationStream_Create();
case TAG_MPEG4_Appearance:
return Appearance_Create();
case TAG_MPEG4_AudioBuffer:
return AudioBuffer_Create();
case TAG_MPEG4_AudioClip:
return AudioClip_Create();
case TAG_MPEG4_AudioDelay:
return AudioDelay_Create();
case TAG_MPEG4_AudioFX:
return AudioFX_Create();
case TAG_MPEG4_AudioMix:
return AudioMix_Create();
case TAG_MPEG4_AudioSource:
return AudioSource_Create();
case TAG_MPEG4_AudioSwitch:
return AudioSwitch_Create();
case TAG_MPEG4_Background:
return Background_Create();
case TAG_MPEG4_Background2D:
return Background2D_Create();
case TAG_MPEG4_Billboard:
return Billboard_Create();
case TAG_MPEG4_Bitmap:
return Bitmap_Create();
case TAG_MPEG4_Box:
return Box_Create();
case TAG_MPEG4_Circle:
return Circle_Create();
case TAG_MPEG4_Collision:
return Collision_Create();
case TAG_MPEG4_Color:
return Color_Create();
case TAG_MPEG4_ColorInterpolator:
return ColorInterpolator_Create();
case TAG_MPEG4_CompositeTexture2D:
return CompositeTexture2D_Create();
case TAG_MPEG4_CompositeTexture3D:
return CompositeTexture3D_Create();
case TAG_MPEG4_Conditional:
return Conditional_Create();
case TAG_MPEG4_Cone:
return Cone_Create();
case TAG_MPEG4_Coordinate:
return Coordinate_Create();
case TAG_MPEG4_Coordinate2D:
return Coordinate2D_Create();
case TAG_MPEG4_CoordinateInterpolator:
return CoordinateInterpolator_Create();
case TAG_MPEG4_CoordinateInterpolator2D:
return CoordinateInterpolator2D_Create();
case TAG_MPEG4_Curve2D:
return Curve2D_Create();
case TAG_MPEG4_Cylinder:
return Cylinder_Create();
case TAG_MPEG4_CylinderSensor:
return CylinderSensor_Create();
case TAG_MPEG4_DirectionalLight:
return DirectionalLight_Create();
case TAG_MPEG4_DiscSensor:
return DiscSensor_Create();
case TAG_MPEG4_ElevationGrid:
return ElevationGrid_Create();
case TAG_MPEG4_Expression:
return Expression_Create();
case TAG_MPEG4_Extrusion:
return Extrusion_Create();
case TAG_MPEG4_Face:
return Face_Create();
case TAG_MPEG4_FaceDefMesh:
return FaceDefMesh_Create();
case TAG_MPEG4_FaceDefTables:
return FaceDefTables_Create();
case TAG_MPEG4_FaceDefTransform:
return FaceDefTransform_Create();
case TAG_MPEG4_FAP:
return FAP_Create();
case TAG_MPEG4_FDP:
return FDP_Create();
case TAG_MPEG4_FIT:
return FIT_Create();
case TAG_MPEG4_Fog:
return Fog_Create();
case TAG_MPEG4_FontStyle:
return FontStyle_Create();
case TAG_MPEG4_Form:
return Form_Create();
case TAG_MPEG4_Group:
return Group_Create();
case TAG_MPEG4_ImageTexture:
return ImageTexture_Create();
case TAG_MPEG4_IndexedFaceSet:
return IndexedFaceSet_Create();
case TAG_MPEG4_IndexedFaceSet2D:
return IndexedFaceSet2D_Create();
case TAG_MPEG4_IndexedLineSet:
return IndexedLineSet_Create();
case TAG_MPEG4_IndexedLineSet2D:
return IndexedLineSet2D_Create();
case TAG_MPEG4_Inline:
return Inline_Create();
case TAG_MPEG4_LOD:
return LOD_Create();
case TAG_MPEG4_Layer2D:
return Layer2D_Create();
case TAG_MPEG4_Layer3D:
return Layer3D_Create();
case TAG_MPEG4_Layout:
return Layout_Create();
case TAG_MPEG4_LineProperties:
return LineProperties_Create();
case TAG_MPEG4_ListeningPoint:
return ListeningPoint_Create();
case TAG_MPEG4_Material:
return Material_Create();
case TAG_MPEG4_Material2D:
return Material2D_Create();
case TAG_MPEG4_MovieTexture:
return MovieTexture_Create();
case TAG_MPEG4_NavigationInfo:
return NavigationInfo_Create();
case TAG_MPEG4_Normal:
return Normal_Create();
case TAG_MPEG4_NormalInterpolator:
return NormalInterpolator_Create();
case TAG_MPEG4_OrderedGroup:
return OrderedGroup_Create();
case TAG_MPEG4_OrientationInterpolator:
return OrientationInterpolator_Create();
case TAG_MPEG4_PixelTexture:
return PixelTexture_Create();
case TAG_MPEG4_PlaneSensor:
return PlaneSensor_Create();
case TAG_MPEG4_PlaneSensor2D:
return PlaneSensor2D_Create();
case TAG_MPEG4_PointLight:
return PointLight_Create();
case TAG_MPEG4_PointSet:
return PointSet_Create();
case TAG_MPEG4_PointSet2D:
return PointSet2D_Create();
case TAG_MPEG4_PositionInterpolator:
return PositionInterpolator_Create();
case TAG_MPEG4_PositionInterpolator2D:
return PositionInterpolator2D_Create();
case TAG_MPEG4_ProximitySensor2D:
return ProximitySensor2D_Create();
case TAG_MPEG4_ProximitySensor:
return ProximitySensor_Create();
case TAG_MPEG4_QuantizationParameter:
return QuantizationParameter_Create();
case TAG_MPEG4_Rectangle:
return Rectangle_Create();
case TAG_MPEG4_ScalarInterpolator:
return ScalarInterpolator_Create();
case TAG_MPEG4_Script:
return Script_Create();
case TAG_MPEG4_Shape:
return Shape_Create();
case TAG_MPEG4_Sound:
return Sound_Create();
case TAG_MPEG4_Sound2D:
return Sound2D_Create();
case TAG_MPEG4_Sphere:
return Sphere_Create();
case TAG_MPEG4_SphereSensor:
return SphereSensor_Create();
case TAG_MPEG4_SpotLight:
return SpotLight_Create();
case TAG_MPEG4_Switch:
return Switch_Create();
case TAG_MPEG4_TermCap:
return TermCap_Create();
case TAG_MPEG4_Text:
return Text_Create();
case TAG_MPEG4_TextureCoordinate:
return TextureCoordinate_Create();
case TAG_MPEG4_TextureTransform:
return TextureTransform_Create();
case TAG_MPEG4_TimeSensor:
return TimeSensor_Create();
case TAG_MPEG4_TouchSensor:
return TouchSensor_Create();
case TAG_MPEG4_Transform:
return Transform_Create();
case TAG_MPEG4_Transform2D:
return Transform2D_Create();
case TAG_MPEG4_Valuator:
return Valuator_Create();
case TAG_MPEG4_Viewpoint:
return Viewpoint_Create();
case TAG_MPEG4_VisibilitySensor:
return VisibilitySensor_Create();
case TAG_MPEG4_Viseme:
return Viseme_Create();
case TAG_MPEG4_WorldInfo:
return WorldInfo_Create();
case TAG_MPEG4_AcousticMaterial:
return AcousticMaterial_Create();
case TAG_MPEG4_AcousticScene:
return AcousticScene_Create();
case TAG_MPEG4_ApplicationWindow:
return ApplicationWindow_Create();
case TAG_MPEG4_BAP:
return BAP_Create();
case TAG_MPEG4_BDP:
return BDP_Create();
case TAG_MPEG4_Body:
return Body_Create();
case TAG_MPEG4_BodyDefTable:
return BodyDefTable_Create();
case TAG_MPEG4_BodySegmentConnectionHint:
return BodySegmentConnectionHint_Create();
case TAG_MPEG4_DirectiveSound:
return DirectiveSound_Create();
case TAG_MPEG4_Hierarchical3DMesh:
return Hierarchical3DMesh_Create();
case TAG_MPEG4_MaterialKey:
return MaterialKey_Create();
case TAG_MPEG4_PerceptualParameters:
return PerceptualParameters_Create();
case TAG_MPEG4_TemporalTransform:
return TemporalTransform_Create();
case TAG_MPEG4_TemporalGroup:
return TemporalGroup_Create();
case TAG_MPEG4_ServerCommand:
return ServerCommand_Create();
case TAG_MPEG4_InputSensor:
return InputSensor_Create();
case TAG_MPEG4_MatteTexture:
return MatteTexture_Create();
case TAG_MPEG4_MediaBuffer:
return MediaBuffer_Create();
case TAG_MPEG4_MediaControl:
return MediaControl_Create();
case TAG_MPEG4_MediaSensor:
return MediaSensor_Create();
case TAG_MPEG4_BitWrapper:
return BitWrapper_Create();
case TAG_MPEG4_CoordinateInterpolator4D:
return CoordinateInterpolator4D_Create();
case TAG_MPEG4_DepthImage:
return DepthImage_Create();
case TAG_MPEG4_FFD:
return FFD_Create();
case TAG_MPEG4_Implicit:
return Implicit_Create();
case TAG_MPEG4_XXLFM_Appearance:
return XXLFM_Appearance_Create();
case TAG_MPEG4_XXLFM_BlendList:
return XXLFM_BlendList_Create();
case TAG_MPEG4_XXLFM_FrameList:
return XXLFM_FrameList_Create();
case TAG_MPEG4_XXLFM_LightMap:
return XXLFM_LightMap_Create();
case TAG_MPEG4_XXLFM_SurfaceMapList:
return XXLFM_SurfaceMapList_Create();
case TAG_MPEG4_XXLFM_ViewMapList:
return XXLFM_ViewMapList_Create();
case TAG_MPEG4_MeshGrid:
return MeshGrid_Create();
case TAG_MPEG4_NonLinearDeformer:
return NonLinearDeformer_Create();
case TAG_MPEG4_NurbsCurve:
return NurbsCurve_Create();
case TAG_MPEG4_NurbsCurve2D:
return NurbsCurve2D_Create();
case TAG_MPEG4_NurbsSurface:
return NurbsSurface_Create();
case TAG_MPEG4_OctreeImage:
return OctreeImage_Create();
case TAG_MPEG4_XXParticles:
return XXParticles_Create();
case TAG_MPEG4_XXParticleInitBox:
return XXParticleInitBox_Create();
case TAG_MPEG4_XXPlanarObstacle:
return XXPlanarObstacle_Create();
case TAG_MPEG4_XXPointAttractor:
return XXPointAttractor_Create();
case TAG_MPEG4_PointTexture:
return PointTexture_Create();
case TAG_MPEG4_PositionAnimator:
return PositionAnimator_Create();
case TAG_MPEG4_PositionAnimator2D:
return PositionAnimator2D_Create();
case TAG_MPEG4_PositionInterpolator4D:
return PositionInterpolator4D_Create();
case TAG_MPEG4_ProceduralTexture:
return ProceduralTexture_Create();
case TAG_MPEG4_Quadric:
return Quadric_Create();
case TAG_MPEG4_SBBone:
return SBBone_Create();
case TAG_MPEG4_SBMuscle:
return SBMuscle_Create();
case TAG_MPEG4_SBSegment:
return SBSegment_Create();
case TAG_MPEG4_SBSite:
return SBSite_Create();
case TAG_MPEG4_SBSkinnedModel:
return SBSkinnedModel_Create();
case TAG_MPEG4_SBVCAnimation:
return SBVCAnimation_Create();
case TAG_MPEG4_ScalarAnimator:
return ScalarAnimator_Create();
case TAG_MPEG4_SimpleTexture:
return SimpleTexture_Create();
case TAG_MPEG4_SolidRep:
return SolidRep_Create();
case TAG_MPEG4_SubdivisionSurface:
return SubdivisionSurface_Create();
case TAG_MPEG4_SubdivSurfaceSector:
return SubdivSurfaceSector_Create();
case TAG_MPEG4_WaveletSubdivisionSurface:
return WaveletSubdivisionSurface_Create();
case TAG_MPEG4_Clipper2D:
return Clipper2D_Create();
case TAG_MPEG4_ColorTransform:
return ColorTransform_Create();
case TAG_MPEG4_Ellipse:
return Ellipse_Create();
case TAG_MPEG4_LinearGradient:
return LinearGradient_Create();
case TAG_MPEG4_PathLayout:
return PathLayout_Create();
case TAG_MPEG4_RadialGradient:
return RadialGradient_Create();
case TAG_MPEG4_SynthesizedTexture:
return SynthesizedTexture_Create();
case TAG_MPEG4_TransformMatrix2D:
return TransformMatrix2D_Create();
case TAG_MPEG4_Viewport:
return Viewport_Create();
case TAG_MPEG4_XCurve2D:
return XCurve2D_Create();
case TAG_MPEG4_XFontStyle:
return XFontStyle_Create();
case TAG_MPEG4_XLineProperties:
return XLineProperties_Create();
case TAG_MPEG4_AdvancedAudioBuffer:
return AdvancedAudioBuffer_Create();
case TAG_MPEG4_AudioChannelConfig:
return AudioChannelConfig_Create();
case TAG_MPEG4_DepthImageV2:
return DepthImageV2_Create();
case TAG_MPEG4_MorphShape:
return MorphShape_Create();
case TAG_MPEG4_MultiTexture:
return MultiTexture_Create();
case TAG_MPEG4_PointTextureV2:
return PointTextureV2_Create();
case TAG_MPEG4_SBVCAnimationV2:
return SBVCAnimationV2_Create();
case TAG_MPEG4_SimpleTextureV2:
return SimpleTextureV2_Create();
case TAG_MPEG4_SurroundingSound:
return SurroundingSound_Create();
case TAG_MPEG4_Transform3DAudio:
return Transform3DAudio_Create();
case TAG_MPEG4_WideSound:
return WideSound_Create();
case TAG_MPEG4_ScoreShape:
return ScoreShape_Create();
case TAG_MPEG4_MusicScore:
return MusicScore_Create();
case TAG_MPEG4_FootPrintSetNode:
return FootPrintSetNode_Create();
case TAG_MPEG4_FootPrintNode:
return FootPrintNode_Create();
case TAG_MPEG4_BuildingPartNode:
return BuildingPartNode_Create();
case TAG_MPEG4_RoofNode:
return RoofNode_Create();
case TAG_MPEG4_FacadeNode:
return FacadeNode_Create();
case TAG_MPEG4_Shadow:
return Shadow_Create();
case TAG_MPEG4_CacheTexture:
return CacheTexture_Create();
case TAG_MPEG4_EnvironmentTest:
return EnvironmentTest_Create();
case TAG_MPEG4_KeyNavigator:
return KeyNavigator_Create();
case TAG_MPEG4_SpacePartition:
return SpacePartition_Create();
case TAG_MPEG4_Storage:
return Storage_Create();
default:
return NULL;
}
}
const char *gf_sg_mpeg4_node_get_class_name(u32 NodeTag)
{
switch (NodeTag) {
case TAG_MPEG4_Anchor:
return "Anchor";
case TAG_MPEG4_AnimationStream:
return "AnimationStream";
case TAG_MPEG4_Appearance:
return "Appearance";
case TAG_MPEG4_AudioBuffer:
return "AudioBuffer";
case TAG_MPEG4_AudioClip:
return "AudioClip";
case TAG_MPEG4_AudioDelay:
return "AudioDelay";
case TAG_MPEG4_AudioFX:
return "AudioFX";
case TAG_MPEG4_AudioMix:
return "AudioMix";
case TAG_MPEG4_AudioSource:
return "AudioSource";
case TAG_MPEG4_AudioSwitch:
return "AudioSwitch";
case TAG_MPEG4_Background:
return "Background";
case TAG_MPEG4_Background2D:
return "Background2D";
case TAG_MPEG4_Billboard:
return "Billboard";
case TAG_MPEG4_Bitmap:
return "Bitmap";
case TAG_MPEG4_Box:
return "Box";
case TAG_MPEG4_Circle:
return "Circle";
case TAG_MPEG4_Collision:
return "Collision";
case TAG_MPEG4_Color:
return "Color";
case TAG_MPEG4_ColorInterpolator:
return "ColorInterpolator";
case TAG_MPEG4_CompositeTexture2D:
return "CompositeTexture2D";
case TAG_MPEG4_CompositeTexture3D:
return "CompositeTexture3D";
case TAG_MPEG4_Conditional:
return "Conditional";
case TAG_MPEG4_Cone:
return "Cone";
case TAG_MPEG4_Coordinate:
return "Coordinate";
case TAG_MPEG4_Coordinate2D:
return "Coordinate2D";
case TAG_MPEG4_CoordinateInterpolator:
return "CoordinateInterpolator";
case TAG_MPEG4_CoordinateInterpolator2D:
return "CoordinateInterpolator2D";
case TAG_MPEG4_Curve2D:
return "Curve2D";
case TAG_MPEG4_Cylinder:
return "Cylinder";
case TAG_MPEG4_CylinderSensor:
return "CylinderSensor";
case TAG_MPEG4_DirectionalLight:
return "DirectionalLight";
case TAG_MPEG4_DiscSensor:
return "DiscSensor";
case TAG_MPEG4_ElevationGrid:
return "ElevationGrid";
case TAG_MPEG4_Expression:
return "Expression";
case TAG_MPEG4_Extrusion:
return "Extrusion";
case TAG_MPEG4_Face:
return "Face";
case TAG_MPEG4_FaceDefMesh:
return "FaceDefMesh";
case TAG_MPEG4_FaceDefTables:
return "FaceDefTables";
case TAG_MPEG4_FaceDefTransform:
return "FaceDefTransform";
case TAG_MPEG4_FAP:
return "FAP";
case TAG_MPEG4_FDP:
return "FDP";
case TAG_MPEG4_FIT:
return "FIT";
case TAG_MPEG4_Fog:
return "Fog";
case TAG_MPEG4_FontStyle:
return "FontStyle";
case TAG_MPEG4_Form:
return "Form";
case TAG_MPEG4_Group:
return "Group";
case TAG_MPEG4_ImageTexture:
return "ImageTexture";
case TAG_MPEG4_IndexedFaceSet:
return "IndexedFaceSet";
case TAG_MPEG4_IndexedFaceSet2D:
return "IndexedFaceSet2D";
case TAG_MPEG4_IndexedLineSet:
return "IndexedLineSet";
case TAG_MPEG4_IndexedLineSet2D:
return "IndexedLineSet2D";
case TAG_MPEG4_Inline:
return "Inline";
case TAG_MPEG4_LOD:
return "LOD";
case TAG_MPEG4_Layer2D:
return "Layer2D";
case TAG_MPEG4_Layer3D:
return "Layer3D";
case TAG_MPEG4_Layout:
return "Layout";
case TAG_MPEG4_LineProperties:
return "LineProperties";
case TAG_MPEG4_ListeningPoint:
return "ListeningPoint";
case TAG_MPEG4_Material:
return "Material";
case TAG_MPEG4_Material2D:
return "Material2D";
case TAG_MPEG4_MovieTexture:
return "MovieTexture";
case TAG_MPEG4_NavigationInfo:
return "NavigationInfo";
case TAG_MPEG4_Normal:
return "Normal";
case TAG_MPEG4_NormalInterpolator:
return "NormalInterpolator";
case TAG_MPEG4_OrderedGroup:
return "OrderedGroup";
case TAG_MPEG4_OrientationInterpolator:
return "OrientationInterpolator";
case TAG_MPEG4_PixelTexture:
return "PixelTexture";
case TAG_MPEG4_PlaneSensor:
return "PlaneSensor";
case TAG_MPEG4_PlaneSensor2D:
return "PlaneSensor2D";
case TAG_MPEG4_PointLight:
return "PointLight";
case TAG_MPEG4_PointSet:
return "PointSet";
case TAG_MPEG4_PointSet2D:
return "PointSet2D";
case TAG_MPEG4_PositionInterpolator:
return "PositionInterpolator";
case TAG_MPEG4_PositionInterpolator2D:
return "PositionInterpolator2D";
case TAG_MPEG4_ProximitySensor2D:
return "ProximitySensor2D";
case TAG_MPEG4_ProximitySensor:
return "ProximitySensor";
case TAG_MPEG4_QuantizationParameter:
return "QuantizationParameter";
case TAG_MPEG4_Rectangle:
return "Rectangle";
case TAG_MPEG4_ScalarInterpolator:
return "ScalarInterpolator";
case TAG_MPEG4_Script:
return "Script";
case TAG_MPEG4_Shape:
return "Shape";
case TAG_MPEG4_Sound:
return "Sound";
case TAG_MPEG4_Sound2D:
return "Sound2D";
case TAG_MPEG4_Sphere:
return "Sphere";
case TAG_MPEG4_SphereSensor:
return "SphereSensor";
case TAG_MPEG4_SpotLight:
return "SpotLight";
case TAG_MPEG4_Switch:
return "Switch";
case TAG_MPEG4_TermCap:
return "TermCap";
case TAG_MPEG4_Text:
return "Text";
case TAG_MPEG4_TextureCoordinate:
return "TextureCoordinate";
case TAG_MPEG4_TextureTransform:
return "TextureTransform";
case TAG_MPEG4_TimeSensor:
return "TimeSensor";
case TAG_MPEG4_TouchSensor:
return "TouchSensor";
case TAG_MPEG4_Transform:
return "Transform";
case TAG_MPEG4_Transform2D:
return "Transform2D";
case TAG_MPEG4_Valuator:
return "Valuator";
case TAG_MPEG4_Viewpoint:
return "Viewpoint";
case TAG_MPEG4_VisibilitySensor:
return "VisibilitySensor";
case TAG_MPEG4_Viseme:
return "Viseme";
case TAG_MPEG4_WorldInfo:
return "WorldInfo";
case TAG_MPEG4_AcousticMaterial:
return "AcousticMaterial";
case TAG_MPEG4_AcousticScene:
return "AcousticScene";
case TAG_MPEG4_ApplicationWindow:
return "ApplicationWindow";
case TAG_MPEG4_BAP:
return "BAP";
case TAG_MPEG4_BDP:
return "BDP";
case TAG_MPEG4_Body:
return "Body";
case TAG_MPEG4_BodyDefTable:
return "BodyDefTable";
case TAG_MPEG4_BodySegmentConnectionHint:
return "BodySegmentConnectionHint";
case TAG_MPEG4_DirectiveSound:
return "DirectiveSound";
case TAG_MPEG4_Hierarchical3DMesh:
return "Hierarchical3DMesh";
case TAG_MPEG4_MaterialKey:
return "MaterialKey";
case TAG_MPEG4_PerceptualParameters:
return "PerceptualParameters";
case TAG_MPEG4_TemporalTransform:
return "TemporalTransform";
case TAG_MPEG4_TemporalGroup:
return "TemporalGroup";
case TAG_MPEG4_ServerCommand:
return "ServerCommand";
case TAG_MPEG4_InputSensor:
return "InputSensor";
case TAG_MPEG4_MatteTexture:
return "MatteTexture";
case TAG_MPEG4_MediaBuffer:
return "MediaBuffer";
case TAG_MPEG4_MediaControl:
return "MediaControl";
case TAG_MPEG4_MediaSensor:
return "MediaSensor";
case TAG_MPEG4_BitWrapper:
return "BitWrapper";
case TAG_MPEG4_CoordinateInterpolator4D:
return "CoordinateInterpolator4D";
case TAG_MPEG4_DepthImage:
return "DepthImage";
case TAG_MPEG4_FFD:
return "FFD";
case TAG_MPEG4_Implicit:
return "Implicit";
case TAG_MPEG4_XXLFM_Appearance:
return "XXLFM_Appearance";
case TAG_MPEG4_XXLFM_BlendList:
return "XXLFM_BlendList";
case TAG_MPEG4_XXLFM_FrameList:
return "XXLFM_FrameList";
case TAG_MPEG4_XXLFM_LightMap:
return "XXLFM_LightMap";
case TAG_MPEG4_XXLFM_SurfaceMapList:
return "XXLFM_SurfaceMapList";
case TAG_MPEG4_XXLFM_ViewMapList:
return "XXLFM_ViewMapList";
case TAG_MPEG4_MeshGrid:
return "MeshGrid";
case TAG_MPEG4_NonLinearDeformer:
return "NonLinearDeformer";
case TAG_MPEG4_NurbsCurve:
return "NurbsCurve";
case TAG_MPEG4_NurbsCurve2D:
return "NurbsCurve2D";
case TAG_MPEG4_NurbsSurface:
return "NurbsSurface";
case TAG_MPEG4_OctreeImage:
return "OctreeImage";
case TAG_MPEG4_XXParticles:
return "XXParticles";
case TAG_MPEG4_XXParticleInitBox:
return "XXParticleInitBox";
case TAG_MPEG4_XXPlanarObstacle:
return "XXPlanarObstacle";
case TAG_MPEG4_XXPointAttractor:
return "XXPointAttractor";
case TAG_MPEG4_PointTexture:
return "PointTexture";
case TAG_MPEG4_PositionAnimator:
return "PositionAnimator";
case TAG_MPEG4_PositionAnimator2D:
return "PositionAnimator2D";
case TAG_MPEG4_PositionInterpolator4D:
return "PositionInterpolator4D";
case TAG_MPEG4_ProceduralTexture:
return "ProceduralTexture";
case TAG_MPEG4_Quadric:
return "Quadric";
case TAG_MPEG4_SBBone:
return "SBBone";
case TAG_MPEG4_SBMuscle:
return "SBMuscle";
case TAG_MPEG4_SBSegment:
return "SBSegment";
case TAG_MPEG4_SBSite:
return "SBSite";
case TAG_MPEG4_SBSkinnedModel:
return "SBSkinnedModel";
case TAG_MPEG4_SBVCAnimation:
return "SBVCAnimation";
case TAG_MPEG4_ScalarAnimator:
return "ScalarAnimator";
case TAG_MPEG4_SimpleTexture:
return "SimpleTexture";
case TAG_MPEG4_SolidRep:
return "SolidRep";
case TAG_MPEG4_SubdivisionSurface:
return "SubdivisionSurface";
case TAG_MPEG4_SubdivSurfaceSector:
return "SubdivSurfaceSector";
case TAG_MPEG4_WaveletSubdivisionSurface:
return "WaveletSubdivisionSurface";
case TAG_MPEG4_Clipper2D:
return "Clipper2D";
case TAG_MPEG4_ColorTransform:
return "ColorTransform";
case TAG_MPEG4_Ellipse:
return "Ellipse";
case TAG_MPEG4_LinearGradient:
return "LinearGradient";
case TAG_MPEG4_PathLayout:
return "PathLayout";
case TAG_MPEG4_RadialGradient:
return "RadialGradient";
case TAG_MPEG4_SynthesizedTexture:
return "SynthesizedTexture";
case TAG_MPEG4_TransformMatrix2D:
return "TransformMatrix2D";
case TAG_MPEG4_Viewport:
return "Viewport";
case TAG_MPEG4_XCurve2D:
return "XCurve2D";
case TAG_MPEG4_XFontStyle:
return "XFontStyle";
case TAG_MPEG4_XLineProperties:
return "XLineProperties";
case TAG_MPEG4_AdvancedAudioBuffer:
return "AdvancedAudioBuffer";
case TAG_MPEG4_AudioChannelConfig:
return "AudioChannelConfig";
case TAG_MPEG4_DepthImageV2:
return "DepthImageV2";
case TAG_MPEG4_MorphShape:
return "MorphShape";
case TAG_MPEG4_MultiTexture:
return "MultiTexture";
case TAG_MPEG4_PointTextureV2:
return "PointTextureV2";
case TAG_MPEG4_SBVCAnimationV2:
return "SBVCAnimationV2";
case TAG_MPEG4_SimpleTextureV2:
return "SimpleTextureV2";
case TAG_MPEG4_SurroundingSound:
return "SurroundingSound";
case TAG_MPEG4_Transform3DAudio:
return "Transform3DAudio";
case TAG_MPEG4_WideSound:
return "WideSound";
case TAG_MPEG4_ScoreShape:
return "ScoreShape";
case TAG_MPEG4_MusicScore:
return "MusicScore";
case TAG_MPEG4_FootPrintSetNode:
return "FootPrintSetNode";
case TAG_MPEG4_FootPrintNode:
return "FootPrintNode";
case TAG_MPEG4_BuildingPartNode:
return "BuildingPartNode";
case TAG_MPEG4_RoofNode:
return "RoofNode";
case TAG_MPEG4_FacadeNode:
return "FacadeNode";
case TAG_MPEG4_Shadow:
return "Shadow";
case TAG_MPEG4_CacheTexture:
return "CacheTexture";
case TAG_MPEG4_EnvironmentTest:
return "EnvironmentTest";
case TAG_MPEG4_KeyNavigator:
return "KeyNavigator";
case TAG_MPEG4_SpacePartition:
return "SpacePartition";
case TAG_MPEG4_Storage:
return "Storage";
default:
return "Unknown Node";
}
}
void gf_sg_mpeg4_node_del(GF_Node *node)
{
switch (node->sgprivate->tag) {
case TAG_MPEG4_Anchor:
Anchor_Del(node);
return;
case TAG_MPEG4_AnimationStream:
AnimationStream_Del(node);
return;
case TAG_MPEG4_Appearance:
Appearance_Del(node);
return;
case TAG_MPEG4_AudioBuffer:
AudioBuffer_Del(node);
return;
case TAG_MPEG4_AudioClip:
AudioClip_Del(node);
return;
case TAG_MPEG4_AudioDelay:
AudioDelay_Del(node);
return;
case TAG_MPEG4_AudioFX:
AudioFX_Del(node);
return;
case TAG_MPEG4_AudioMix:
AudioMix_Del(node);
return;
case TAG_MPEG4_AudioSource:
AudioSource_Del(node);
return;
case TAG_MPEG4_AudioSwitch:
AudioSwitch_Del(node);
return;
case TAG_MPEG4_Background:
Background_Del(node);
return;
case TAG_MPEG4_Background2D:
Background2D_Del(node);
return;
case TAG_MPEG4_Billboard:
Billboard_Del(node);
return;
case TAG_MPEG4_Bitmap:
Bitmap_Del(node);
return;
case TAG_MPEG4_Box:
Box_Del(node);
return;
case TAG_MPEG4_Circle:
Circle_Del(node);
return;
case TAG_MPEG4_Collision:
Collision_Del(node);
return;
case TAG_MPEG4_Color:
Color_Del(node);
return;
case TAG_MPEG4_ColorInterpolator:
ColorInterpolator_Del(node);
return;
case TAG_MPEG4_CompositeTexture2D:
CompositeTexture2D_Del(node);
return;
case TAG_MPEG4_CompositeTexture3D:
CompositeTexture3D_Del(node);
return;
case TAG_MPEG4_Conditional:
Conditional_Del(node);
return;
case TAG_MPEG4_Cone:
Cone_Del(node);
return;
case TAG_MPEG4_Coordinate:
Coordinate_Del(node);
return;
case TAG_MPEG4_Coordinate2D:
Coordinate2D_Del(node);
return;
case TAG_MPEG4_CoordinateInterpolator:
CoordinateInterpolator_Del(node);
return;
case TAG_MPEG4_CoordinateInterpolator2D:
CoordinateInterpolator2D_Del(node);
return;
case TAG_MPEG4_Curve2D:
Curve2D_Del(node);
return;
case TAG_MPEG4_Cylinder:
Cylinder_Del(node);
return;
case TAG_MPEG4_CylinderSensor:
CylinderSensor_Del(node);
return;
case TAG_MPEG4_DirectionalLight:
DirectionalLight_Del(node);
return;
case TAG_MPEG4_DiscSensor:
DiscSensor_Del(node);
return;
case TAG_MPEG4_ElevationGrid:
ElevationGrid_Del(node);
return;
case TAG_MPEG4_Expression:
Expression_Del(node);
return;
case TAG_MPEG4_Extrusion:
Extrusion_Del(node);
return;
case TAG_MPEG4_Face:
Face_Del(node);
return;
case TAG_MPEG4_FaceDefMesh:
FaceDefMesh_Del(node);
return;
case TAG_MPEG4_FaceDefTables:
FaceDefTables_Del(node);
return;
case TAG_MPEG4_FaceDefTransform:
FaceDefTransform_Del(node);
return;
case TAG_MPEG4_FAP:
FAP_Del(node);
return;
case TAG_MPEG4_FDP:
FDP_Del(node);
return;
case TAG_MPEG4_FIT:
FIT_Del(node);
return;
case TAG_MPEG4_Fog:
Fog_Del(node);
return;
case TAG_MPEG4_FontStyle:
FontStyle_Del(node);
return;
case TAG_MPEG4_Form:
Form_Del(node);
return;
case TAG_MPEG4_Group:
Group_Del(node);
return;
case TAG_MPEG4_ImageTexture:
ImageTexture_Del(node);
return;
case TAG_MPEG4_IndexedFaceSet:
IndexedFaceSet_Del(node);
return;
case TAG_MPEG4_IndexedFaceSet2D:
IndexedFaceSet2D_Del(node);
return;
case TAG_MPEG4_IndexedLineSet:
IndexedLineSet_Del(node);
return;
case TAG_MPEG4_IndexedLineSet2D:
IndexedLineSet2D_Del(node);
return;
case TAG_MPEG4_Inline:
Inline_Del(node);
return;
case TAG_MPEG4_LOD:
LOD_Del(node);
return;
case TAG_MPEG4_Layer2D:
Layer2D_Del(node);
return;
case TAG_MPEG4_Layer3D:
Layer3D_Del(node);
return;
case TAG_MPEG4_Layout:
Layout_Del(node);
return;
case TAG_MPEG4_LineProperties:
LineProperties_Del(node);
return;
case TAG_MPEG4_ListeningPoint:
ListeningPoint_Del(node);
return;
case TAG_MPEG4_Material:
Material_Del(node);
return;
case TAG_MPEG4_Material2D:
Material2D_Del(node);
return;
case TAG_MPEG4_MovieTexture:
MovieTexture_Del(node);
return;
case TAG_MPEG4_NavigationInfo:
NavigationInfo_Del(node);
return;
case TAG_MPEG4_Normal:
Normal_Del(node);
return;
case TAG_MPEG4_NormalInterpolator:
NormalInterpolator_Del(node);
return;
case TAG_MPEG4_OrderedGroup:
OrderedGroup_Del(node);
return;
case TAG_MPEG4_OrientationInterpolator:
OrientationInterpolator_Del(node);
return;
case TAG_MPEG4_PixelTexture:
PixelTexture_Del(node);
return;
case TAG_MPEG4_PlaneSensor:
PlaneSensor_Del(node);
return;
case TAG_MPEG4_PlaneSensor2D:
PlaneSensor2D_Del(node);
return;
case TAG_MPEG4_PointLight:
PointLight_Del(node);
return;
case TAG_MPEG4_PointSet:
PointSet_Del(node);
return;
case TAG_MPEG4_PointSet2D:
PointSet2D_Del(node);
return;
case TAG_MPEG4_PositionInterpolator:
PositionInterpolator_Del(node);
return;
case TAG_MPEG4_PositionInterpolator2D:
PositionInterpolator2D_Del(node);
return;
case TAG_MPEG4_ProximitySensor2D:
ProximitySensor2D_Del(node);
return;
case TAG_MPEG4_ProximitySensor:
ProximitySensor_Del(node);
return;
case TAG_MPEG4_QuantizationParameter:
QuantizationParameter_Del(node);
return;
case TAG_MPEG4_Rectangle:
Rectangle_Del(node);
return;
case TAG_MPEG4_ScalarInterpolator:
ScalarInterpolator_Del(node);
return;
case TAG_MPEG4_Script:
Script_Del(node);
return;
case TAG_MPEG4_Shape:
Shape_Del(node);
return;
case TAG_MPEG4_Sound:
Sound_Del(node);
return;
case TAG_MPEG4_Sound2D:
Sound2D_Del(node);
return;
case TAG_MPEG4_Sphere:
Sphere_Del(node);
return;
case TAG_MPEG4_SphereSensor:
SphereSensor_Del(node);
return;
case TAG_MPEG4_SpotLight:
SpotLight_Del(node);
return;
case TAG_MPEG4_Switch:
Switch_Del(node);
return;
case TAG_MPEG4_TermCap:
TermCap_Del(node);
return;
case TAG_MPEG4_Text:
Text_Del(node);
return;
case TAG_MPEG4_TextureCoordinate:
TextureCoordinate_Del(node);
return;
case TAG_MPEG4_TextureTransform:
TextureTransform_Del(node);
return;
case TAG_MPEG4_TimeSensor:
TimeSensor_Del(node);
return;
case TAG_MPEG4_TouchSensor:
TouchSensor_Del(node);
return;
case TAG_MPEG4_Transform:
Transform_Del(node);
return;
case TAG_MPEG4_Transform2D:
Transform2D_Del(node);
return;
case TAG_MPEG4_Valuator:
Valuator_Del(node);
return;
case TAG_MPEG4_Viewpoint:
Viewpoint_Del(node);
return;
case TAG_MPEG4_VisibilitySensor:
VisibilitySensor_Del(node);
return;
case TAG_MPEG4_Viseme:
Viseme_Del(node);
return;
case TAG_MPEG4_WorldInfo:
WorldInfo_Del(node);
return;
case TAG_MPEG4_AcousticMaterial:
AcousticMaterial_Del(node);
return;
case TAG_MPEG4_AcousticScene:
AcousticScene_Del(node);
return;
case TAG_MPEG4_ApplicationWindow:
ApplicationWindow_Del(node);
return;
case TAG_MPEG4_BAP:
BAP_Del(node);
return;
case TAG_MPEG4_BDP:
BDP_Del(node);
return;
case TAG_MPEG4_Body:
Body_Del(node);
return;
case TAG_MPEG4_BodyDefTable:
BodyDefTable_Del(node);
return;
case TAG_MPEG4_BodySegmentConnectionHint:
BodySegmentConnectionHint_Del(node);
return;
case TAG_MPEG4_DirectiveSound:
DirectiveSound_Del(node);
return;
case TAG_MPEG4_Hierarchical3DMesh:
Hierarchical3DMesh_Del(node);
return;
case TAG_MPEG4_MaterialKey:
MaterialKey_Del(node);
return;
case TAG_MPEG4_PerceptualParameters:
PerceptualParameters_Del(node);
return;
case TAG_MPEG4_TemporalTransform:
TemporalTransform_Del(node);
return;
case TAG_MPEG4_TemporalGroup:
TemporalGroup_Del(node);
return;
case TAG_MPEG4_ServerCommand:
ServerCommand_Del(node);
return;
case TAG_MPEG4_InputSensor:
InputSensor_Del(node);
return;
case TAG_MPEG4_MatteTexture:
MatteTexture_Del(node);
return;
case TAG_MPEG4_MediaBuffer:
MediaBuffer_Del(node);
return;
case TAG_MPEG4_MediaControl:
MediaControl_Del(node);
return;
case TAG_MPEG4_MediaSensor:
MediaSensor_Del(node);
return;
case TAG_MPEG4_BitWrapper:
BitWrapper_Del(node);
return;
case TAG_MPEG4_CoordinateInterpolator4D:
CoordinateInterpolator4D_Del(node);
return;
case TAG_MPEG4_DepthImage:
DepthImage_Del(node);
return;
case TAG_MPEG4_FFD:
FFD_Del(node);
return;
case TAG_MPEG4_Implicit:
Implicit_Del(node);
return;
case TAG_MPEG4_XXLFM_Appearance:
XXLFM_Appearance_Del(node);
return;
case TAG_MPEG4_XXLFM_BlendList:
XXLFM_BlendList_Del(node);
return;
case TAG_MPEG4_XXLFM_FrameList:
XXLFM_FrameList_Del(node);
return;
case TAG_MPEG4_XXLFM_LightMap:
XXLFM_LightMap_Del(node);
return;
case TAG_MPEG4_XXLFM_SurfaceMapList:
XXLFM_SurfaceMapList_Del(node);
return;
case TAG_MPEG4_XXLFM_ViewMapList:
XXLFM_ViewMapList_Del(node);
return;
case TAG_MPEG4_MeshGrid:
MeshGrid_Del(node);
return;
case TAG_MPEG4_NonLinearDeformer:
NonLinearDeformer_Del(node);
return;
case TAG_MPEG4_NurbsCurve:
NurbsCurve_Del(node);
return;
case TAG_MPEG4_NurbsCurve2D:
NurbsCurve2D_Del(node);
return;
case TAG_MPEG4_NurbsSurface:
NurbsSurface_Del(node);
return;
case TAG_MPEG4_OctreeImage:
OctreeImage_Del(node);
return;
case TAG_MPEG4_XXParticles:
XXParticles_Del(node);
return;
case TAG_MPEG4_XXParticleInitBox:
XXParticleInitBox_Del(node);
return;
case TAG_MPEG4_XXPlanarObstacle:
XXPlanarObstacle_Del(node);
return;
case TAG_MPEG4_XXPointAttractor:
XXPointAttractor_Del(node);
return;
case TAG_MPEG4_PointTexture:
PointTexture_Del(node);
return;
case TAG_MPEG4_PositionAnimator:
PositionAnimator_Del(node);
return;
case TAG_MPEG4_PositionAnimator2D:
PositionAnimator2D_Del(node);
return;
case TAG_MPEG4_PositionInterpolator4D:
PositionInterpolator4D_Del(node);
return;
case TAG_MPEG4_ProceduralTexture:
ProceduralTexture_Del(node);
return;
case TAG_MPEG4_Quadric:
Quadric_Del(node);
return;
case TAG_MPEG4_SBBone:
SBBone_Del(node);
return;
case TAG_MPEG4_SBMuscle:
SBMuscle_Del(node);
return;
case TAG_MPEG4_SBSegment:
SBSegment_Del(node);
return;
case TAG_MPEG4_SBSite:
SBSite_Del(node);
return;
case TAG_MPEG4_SBSkinnedModel:
SBSkinnedModel_Del(node);
return;
case TAG_MPEG4_SBVCAnimation:
SBVCAnimation_Del(node);
return;
case TAG_MPEG4_ScalarAnimator:
ScalarAnimator_Del(node);
return;
case TAG_MPEG4_SimpleTexture:
SimpleTexture_Del(node);
return;
case TAG_MPEG4_SolidRep:
SolidRep_Del(node);
return;
case TAG_MPEG4_SubdivisionSurface:
SubdivisionSurface_Del(node);
return;
case TAG_MPEG4_SubdivSurfaceSector:
SubdivSurfaceSector_Del(node);
return;
case TAG_MPEG4_WaveletSubdivisionSurface:
WaveletSubdivisionSurface_Del(node);
return;
case TAG_MPEG4_Clipper2D:
Clipper2D_Del(node);
return;
case TAG_MPEG4_ColorTransform:
ColorTransform_Del(node);
return;
case TAG_MPEG4_Ellipse:
Ellipse_Del(node);
return;
case TAG_MPEG4_LinearGradient:
LinearGradient_Del(node);
return;
case TAG_MPEG4_PathLayout:
PathLayout_Del(node);
return;
case TAG_MPEG4_RadialGradient:
RadialGradient_Del(node);
return;
case TAG_MPEG4_SynthesizedTexture:
SynthesizedTexture_Del(node);
return;
case TAG_MPEG4_TransformMatrix2D:
TransformMatrix2D_Del(node);
return;
case TAG_MPEG4_Viewport:
Viewport_Del(node);
return;
case TAG_MPEG4_XCurve2D:
XCurve2D_Del(node);
return;
case TAG_MPEG4_XFontStyle:
XFontStyle_Del(node);
return;
case TAG_MPEG4_XLineProperties:
XLineProperties_Del(node);
return;
case TAG_MPEG4_AdvancedAudioBuffer:
AdvancedAudioBuffer_Del(node);
return;
case TAG_MPEG4_AudioChannelConfig:
AudioChannelConfig_Del(node);
return;
case TAG_MPEG4_DepthImageV2:
DepthImageV2_Del(node);
return;
case TAG_MPEG4_MorphShape:
MorphShape_Del(node);
return;
case TAG_MPEG4_MultiTexture:
MultiTexture_Del(node);
return;
case TAG_MPEG4_PointTextureV2:
PointTextureV2_Del(node);
return;
case TAG_MPEG4_SBVCAnimationV2:
SBVCAnimationV2_Del(node);
return;
case TAG_MPEG4_SimpleTextureV2:
SimpleTextureV2_Del(node);
return;
case TAG_MPEG4_SurroundingSound:
SurroundingSound_Del(node);
return;
case TAG_MPEG4_Transform3DAudio:
Transform3DAudio_Del(node);
return;
case TAG_MPEG4_WideSound:
WideSound_Del(node);
return;
case TAG_MPEG4_ScoreShape:
ScoreShape_Del(node);
return;
case TAG_MPEG4_MusicScore:
MusicScore_Del(node);
return;
case TAG_MPEG4_FootPrintSetNode:
FootPrintSetNode_Del(node);
return;
case TAG_MPEG4_FootPrintNode:
FootPrintNode_Del(node);
return;
case TAG_MPEG4_BuildingPartNode:
BuildingPartNode_Del(node);
return;
case TAG_MPEG4_RoofNode:
RoofNode_Del(node);
return;
case TAG_MPEG4_FacadeNode:
FacadeNode_Del(node);
return;
case TAG_MPEG4_Shadow:
Shadow_Del(node);
return;
case TAG_MPEG4_CacheTexture:
CacheTexture_Del(node);
return;
case TAG_MPEG4_EnvironmentTest:
EnvironmentTest_Del(node);
return;
case TAG_MPEG4_KeyNavigator:
KeyNavigator_Del(node);
return;
case TAG_MPEG4_SpacePartition:
SpacePartition_Del(node);
return;
case TAG_MPEG4_Storage:
Storage_Del(node);
return;
default:
return;
}
}
u32 gf_sg_mpeg4_node_get_field_count(GF_Node *node, u8 code_mode)
{
switch (node->sgprivate->tag) {
case TAG_MPEG4_Anchor:
return Anchor_get_field_count(node, code_mode);
case TAG_MPEG4_AnimationStream:
return AnimationStream_get_field_count(node, code_mode);
case TAG_MPEG4_Appearance:
return Appearance_get_field_count(node, code_mode);
case TAG_MPEG4_AudioBuffer:
return AudioBuffer_get_field_count(node, code_mode);
case TAG_MPEG4_AudioClip:
return AudioClip_get_field_count(node, code_mode);
case TAG_MPEG4_AudioDelay:
return AudioDelay_get_field_count(node, code_mode);
case TAG_MPEG4_AudioFX:
return AudioFX_get_field_count(node, code_mode);
case TAG_MPEG4_AudioMix:
return AudioMix_get_field_count(node, code_mode);
case TAG_MPEG4_AudioSource:
return AudioSource_get_field_count(node, code_mode);
case TAG_MPEG4_AudioSwitch:
return AudioSwitch_get_field_count(node, code_mode);
case TAG_MPEG4_Background:
return Background_get_field_count(node, code_mode);
case TAG_MPEG4_Background2D:
return Background2D_get_field_count(node, code_mode);
case TAG_MPEG4_Billboard:
return Billboard_get_field_count(node, code_mode);
case TAG_MPEG4_Bitmap:
return Bitmap_get_field_count(node, code_mode);
case TAG_MPEG4_Box:
return Box_get_field_count(node, code_mode);
case TAG_MPEG4_Circle:
return Circle_get_field_count(node, code_mode);
case TAG_MPEG4_Collision:
return Collision_get_field_count(node, code_mode);
case TAG_MPEG4_Color:
return Color_get_field_count(node, code_mode);
case TAG_MPEG4_ColorInterpolator:
return ColorInterpolator_get_field_count(node, code_mode);
case TAG_MPEG4_CompositeTexture2D:
return CompositeTexture2D_get_field_count(node, code_mode);
case TAG_MPEG4_CompositeTexture3D:
return CompositeTexture3D_get_field_count(node, code_mode);
case TAG_MPEG4_Conditional:
return Conditional_get_field_count(node, code_mode);
case TAG_MPEG4_Cone:
return Cone_get_field_count(node, code_mode);
case TAG_MPEG4_Coordinate:
return Coordinate_get_field_count(node, code_mode);
case TAG_MPEG4_Coordinate2D:
return Coordinate2D_get_field_count(node, code_mode);
case TAG_MPEG4_CoordinateInterpolator:
return CoordinateInterpolator_get_field_count(node, code_mode);
case TAG_MPEG4_CoordinateInterpolator2D:
return CoordinateInterpolator2D_get_field_count(node, code_mode);
case TAG_MPEG4_Curve2D:
return Curve2D_get_field_count(node, code_mode);
case TAG_MPEG4_Cylinder:
return Cylinder_get_field_count(node, code_mode);
case TAG_MPEG4_CylinderSensor:
return CylinderSensor_get_field_count(node, code_mode);
case TAG_MPEG4_DirectionalLight:
return DirectionalLight_get_field_count(node, code_mode);
case TAG_MPEG4_DiscSensor:
return DiscSensor_get_field_count(node, code_mode);
case TAG_MPEG4_ElevationGrid:
return ElevationGrid_get_field_count(node, code_mode);
case TAG_MPEG4_Expression:
return Expression_get_field_count(node, code_mode);
case TAG_MPEG4_Extrusion:
return Extrusion_get_field_count(node, code_mode);
case TAG_MPEG4_Face:
return Face_get_field_count(node, code_mode);
case TAG_MPEG4_FaceDefMesh:
return FaceDefMesh_get_field_count(node, code_mode);
case TAG_MPEG4_FaceDefTables:
return FaceDefTables_get_field_count(node, code_mode);
case TAG_MPEG4_FaceDefTransform:
return FaceDefTransform_get_field_count(node, code_mode);
case TAG_MPEG4_FAP:
return FAP_get_field_count(node, code_mode);
case TAG_MPEG4_FDP:
return FDP_get_field_count(node, code_mode);
case TAG_MPEG4_FIT:
return FIT_get_field_count(node, code_mode);
case TAG_MPEG4_Fog:
return Fog_get_field_count(node, code_mode);
case TAG_MPEG4_FontStyle:
return FontStyle_get_field_count(node, code_mode);
case TAG_MPEG4_Form:
return Form_get_field_count(node, code_mode);
case TAG_MPEG4_Group:
return Group_get_field_count(node, code_mode);
case TAG_MPEG4_ImageTexture:
return ImageTexture_get_field_count(node, code_mode);
case TAG_MPEG4_IndexedFaceSet:
return IndexedFaceSet_get_field_count(node, code_mode);
case TAG_MPEG4_IndexedFaceSet2D:
return IndexedFaceSet2D_get_field_count(node, code_mode);
case TAG_MPEG4_IndexedLineSet:
return IndexedLineSet_get_field_count(node, code_mode);
case TAG_MPEG4_IndexedLineSet2D:
return IndexedLineSet2D_get_field_count(node, code_mode);
case TAG_MPEG4_Inline:
return Inline_get_field_count(node, code_mode);
case TAG_MPEG4_LOD:
return LOD_get_field_count(node, code_mode);
case TAG_MPEG4_Layer2D:
return Layer2D_get_field_count(node, code_mode);
case TAG_MPEG4_Layer3D:
return Layer3D_get_field_count(node, code_mode);
case TAG_MPEG4_Layout:
return Layout_get_field_count(node, code_mode);
case TAG_MPEG4_LineProperties:
return LineProperties_get_field_count(node, code_mode);
case TAG_MPEG4_ListeningPoint:
return ListeningPoint_get_field_count(node, code_mode);
case TAG_MPEG4_Material:
return Material_get_field_count(node, code_mode);
case TAG_MPEG4_Material2D:
return Material2D_get_field_count(node, code_mode);
case TAG_MPEG4_MovieTexture:
return MovieTexture_get_field_count(node, code_mode);
case TAG_MPEG4_NavigationInfo:
return NavigationInfo_get_field_count(node, code_mode);
case TAG_MPEG4_Normal:
return Normal_get_field_count(node, code_mode);
case TAG_MPEG4_NormalInterpolator:
return NormalInterpolator_get_field_count(node, code_mode);
case TAG_MPEG4_OrderedGroup:
return OrderedGroup_get_field_count(node, code_mode);
case TAG_MPEG4_OrientationInterpolator:
return OrientationInterpolator_get_field_count(node, code_mode);
case TAG_MPEG4_PixelTexture:
return PixelTexture_get_field_count(node, code_mode);
case TAG_MPEG4_PlaneSensor:
return PlaneSensor_get_field_count(node, code_mode);
case TAG_MPEG4_PlaneSensor2D:
return PlaneSensor2D_get_field_count(node, code_mode);
case TAG_MPEG4_PointLight:
return PointLight_get_field_count(node, code_mode);
case TAG_MPEG4_PointSet:
return PointSet_get_field_count(node, code_mode);
case TAG_MPEG4_PointSet2D:
return PointSet2D_get_field_count(node, code_mode);
case TAG_MPEG4_PositionInterpolator:
return PositionInterpolator_get_field_count(node, code_mode);
case TAG_MPEG4_PositionInterpolator2D:
return PositionInterpolator2D_get_field_count(node, code_mode);
case TAG_MPEG4_ProximitySensor2D:
return ProximitySensor2D_get_field_count(node, code_mode);
case TAG_MPEG4_ProximitySensor:
return ProximitySensor_get_field_count(node, code_mode);
case TAG_MPEG4_QuantizationParameter:
return QuantizationParameter_get_field_count(node, code_mode);
case TAG_MPEG4_Rectangle:
return Rectangle_get_field_count(node, code_mode);
case TAG_MPEG4_ScalarInterpolator:
return ScalarInterpolator_get_field_count(node, code_mode);
case TAG_MPEG4_Script:
return Script_get_field_count(node, code_mode);
case TAG_MPEG4_Shape:
return Shape_get_field_count(node, code_mode);
case TAG_MPEG4_Sound:
return Sound_get_field_count(node, code_mode);
case TAG_MPEG4_Sound2D:
return Sound2D_get_field_count(node, code_mode);
case TAG_MPEG4_Sphere:
return Sphere_get_field_count(node, code_mode);
case TAG_MPEG4_SphereSensor:
return SphereSensor_get_field_count(node, code_mode);
case TAG_MPEG4_SpotLight:
return SpotLight_get_field_count(node, code_mode);
case TAG_MPEG4_Switch:
return Switch_get_field_count(node, code_mode);
case TAG_MPEG4_TermCap:
return TermCap_get_field_count(node, code_mode);
case TAG_MPEG4_Text:
return Text_get_field_count(node, code_mode);
case TAG_MPEG4_TextureCoordinate:
return TextureCoordinate_get_field_count(node, code_mode);
case TAG_MPEG4_TextureTransform:
return TextureTransform_get_field_count(node, code_mode);
case TAG_MPEG4_TimeSensor:
return TimeSensor_get_field_count(node, code_mode);
case TAG_MPEG4_TouchSensor:
return TouchSensor_get_field_count(node, code_mode);
case TAG_MPEG4_Transform:
return Transform_get_field_count(node, code_mode);
case TAG_MPEG4_Transform2D:
return Transform2D_get_field_count(node, code_mode);
case TAG_MPEG4_Valuator:
return Valuator_get_field_count(node, code_mode);
case TAG_MPEG4_Viewpoint:
return Viewpoint_get_field_count(node, code_mode);
case TAG_MPEG4_VisibilitySensor:
return VisibilitySensor_get_field_count(node, code_mode);
case TAG_MPEG4_Viseme:
return Viseme_get_field_count(node, code_mode);
case TAG_MPEG4_WorldInfo:
return WorldInfo_get_field_count(node, code_mode);
case TAG_MPEG4_AcousticMaterial:
return AcousticMaterial_get_field_count(node, code_mode);
case TAG_MPEG4_AcousticScene:
return AcousticScene_get_field_count(node, code_mode);
case TAG_MPEG4_ApplicationWindow:
return ApplicationWindow_get_field_count(node, code_mode);
case TAG_MPEG4_BAP:
return BAP_get_field_count(node, code_mode);
case TAG_MPEG4_BDP:
return BDP_get_field_count(node, code_mode);
case TAG_MPEG4_Body:
return Body_get_field_count(node, code_mode);
case TAG_MPEG4_BodyDefTable:
return BodyDefTable_get_field_count(node, code_mode);
case TAG_MPEG4_BodySegmentConnectionHint:
return BodySegmentConnectionHint_get_field_count(node, code_mode);
case TAG_MPEG4_DirectiveSound:
return DirectiveSound_get_field_count(node, code_mode);
case TAG_MPEG4_Hierarchical3DMesh:
return Hierarchical3DMesh_get_field_count(node, code_mode);
case TAG_MPEG4_MaterialKey:
return MaterialKey_get_field_count(node, code_mode);
case TAG_MPEG4_PerceptualParameters:
return PerceptualParameters_get_field_count(node, code_mode);
case TAG_MPEG4_TemporalTransform:
return TemporalTransform_get_field_count(node, code_mode);
case TAG_MPEG4_TemporalGroup:
return TemporalGroup_get_field_count(node, code_mode);
case TAG_MPEG4_ServerCommand:
return ServerCommand_get_field_count(node, code_mode);
case TAG_MPEG4_InputSensor:
return InputSensor_get_field_count(node, code_mode);
case TAG_MPEG4_MatteTexture:
return MatteTexture_get_field_count(node, code_mode);
case TAG_MPEG4_MediaBuffer:
return MediaBuffer_get_field_count(node, code_mode);
case TAG_MPEG4_MediaControl:
return MediaControl_get_field_count(node, code_mode);
case TAG_MPEG4_MediaSensor:
return MediaSensor_get_field_count(node, code_mode);
case TAG_MPEG4_BitWrapper:
return BitWrapper_get_field_count(node, code_mode);
case TAG_MPEG4_CoordinateInterpolator4D:
return CoordinateInterpolator4D_get_field_count(node, code_mode);
case TAG_MPEG4_DepthImage:
return DepthImage_get_field_count(node, code_mode);
case TAG_MPEG4_FFD:
return FFD_get_field_count(node, code_mode);
case TAG_MPEG4_Implicit:
return Implicit_get_field_count(node, code_mode);
case TAG_MPEG4_XXLFM_Appearance:
return XXLFM_Appearance_get_field_count(node, code_mode);
case TAG_MPEG4_XXLFM_BlendList:
return XXLFM_BlendList_get_field_count(node, code_mode);
case TAG_MPEG4_XXLFM_FrameList:
return XXLFM_FrameList_get_field_count(node, code_mode);
case TAG_MPEG4_XXLFM_LightMap:
return XXLFM_LightMap_get_field_count(node, code_mode);
case TAG_MPEG4_XXLFM_SurfaceMapList:
return XXLFM_SurfaceMapList_get_field_count(node, code_mode);
case TAG_MPEG4_XXLFM_ViewMapList:
return XXLFM_ViewMapList_get_field_count(node, code_mode);
case TAG_MPEG4_MeshGrid:
return MeshGrid_get_field_count(node, code_mode);
case TAG_MPEG4_NonLinearDeformer:
return NonLinearDeformer_get_field_count(node, code_mode);
case TAG_MPEG4_NurbsCurve:
return NurbsCurve_get_field_count(node, code_mode);
case TAG_MPEG4_NurbsCurve2D:
return NurbsCurve2D_get_field_count(node, code_mode);
case TAG_MPEG4_NurbsSurface:
return NurbsSurface_get_field_count(node, code_mode);
case TAG_MPEG4_OctreeImage:
return OctreeImage_get_field_count(node, code_mode);
case TAG_MPEG4_XXParticles:
return XXParticles_get_field_count(node, code_mode);
case TAG_MPEG4_XXParticleInitBox:
return XXParticleInitBox_get_field_count(node, code_mode);
case TAG_MPEG4_XXPlanarObstacle:
return XXPlanarObstacle_get_field_count(node, code_mode);
case TAG_MPEG4_XXPointAttractor:
return XXPointAttractor_get_field_count(node, code_mode);
case TAG_MPEG4_PointTexture:
return PointTexture_get_field_count(node, code_mode);
case TAG_MPEG4_PositionAnimator:
return PositionAnimator_get_field_count(node, code_mode);
case TAG_MPEG4_PositionAnimator2D:
return PositionAnimator2D_get_field_count(node, code_mode);
case TAG_MPEG4_PositionInterpolator4D:
return PositionInterpolator4D_get_field_count(node, code_mode);
case TAG_MPEG4_ProceduralTexture:
return ProceduralTexture_get_field_count(node, code_mode);
case TAG_MPEG4_Quadric:
return Quadric_get_field_count(node, code_mode);
case TAG_MPEG4_SBBone:
return SBBone_get_field_count(node, code_mode);
case TAG_MPEG4_SBMuscle:
return SBMuscle_get_field_count(node, code_mode);
case TAG_MPEG4_SBSegment:
return SBSegment_get_field_count(node, code_mode);
case TAG_MPEG4_SBSite:
return SBSite_get_field_count(node, code_mode);
case TAG_MPEG4_SBSkinnedModel:
return SBSkinnedModel_get_field_count(node, code_mode);
case TAG_MPEG4_SBVCAnimation:
return SBVCAnimation_get_field_count(node, code_mode);
case TAG_MPEG4_ScalarAnimator:
return ScalarAnimator_get_field_count(node, code_mode);
case TAG_MPEG4_SimpleTexture:
return SimpleTexture_get_field_count(node, code_mode);
case TAG_MPEG4_SolidRep:
return SolidRep_get_field_count(node, code_mode);
case TAG_MPEG4_SubdivisionSurface:
return SubdivisionSurface_get_field_count(node, code_mode);
case TAG_MPEG4_SubdivSurfaceSector:
return SubdivSurfaceSector_get_field_count(node, code_mode);
case TAG_MPEG4_WaveletSubdivisionSurface:
return WaveletSubdivisionSurface_get_field_count(node, code_mode);
case TAG_MPEG4_Clipper2D:
return Clipper2D_get_field_count(node, code_mode);
case TAG_MPEG4_ColorTransform:
return ColorTransform_get_field_count(node, code_mode);
case TAG_MPEG4_Ellipse:
return Ellipse_get_field_count(node, code_mode);
case TAG_MPEG4_LinearGradient:
return LinearGradient_get_field_count(node, code_mode);
case TAG_MPEG4_PathLayout:
return PathLayout_get_field_count(node, code_mode);
case TAG_MPEG4_RadialGradient:
return RadialGradient_get_field_count(node, code_mode);
case TAG_MPEG4_SynthesizedTexture:
return SynthesizedTexture_get_field_count(node, code_mode);
case TAG_MPEG4_TransformMatrix2D:
return TransformMatrix2D_get_field_count(node, code_mode);
case TAG_MPEG4_Viewport:
return Viewport_get_field_count(node, code_mode);
case TAG_MPEG4_XCurve2D:
return XCurve2D_get_field_count(node, code_mode);
case TAG_MPEG4_XFontStyle:
return XFontStyle_get_field_count(node, code_mode);
case TAG_MPEG4_XLineProperties:
return XLineProperties_get_field_count(node, code_mode);
case TAG_MPEG4_AdvancedAudioBuffer:
return AdvancedAudioBuffer_get_field_count(node, code_mode);
case TAG_MPEG4_AudioChannelConfig:
return AudioChannelConfig_get_field_count(node, code_mode);
case TAG_MPEG4_DepthImageV2:
return DepthImageV2_get_field_count(node, code_mode);
case TAG_MPEG4_MorphShape:
return MorphShape_get_field_count(node, code_mode);
case TAG_MPEG4_MultiTexture:
return MultiTexture_get_field_count(node, code_mode);
case TAG_MPEG4_PointTextureV2:
return PointTextureV2_get_field_count(node, code_mode);
case TAG_MPEG4_SBVCAnimationV2:
return SBVCAnimationV2_get_field_count(node, code_mode);
case TAG_MPEG4_SimpleTextureV2:
return SimpleTextureV2_get_field_count(node, code_mode);
case TAG_MPEG4_SurroundingSound:
return SurroundingSound_get_field_count(node, code_mode);
case TAG_MPEG4_Transform3DAudio:
return Transform3DAudio_get_field_count(node, code_mode);
case TAG_MPEG4_WideSound:
return WideSound_get_field_count(node, code_mode);
case TAG_MPEG4_ScoreShape:
return ScoreShape_get_field_count(node, code_mode);
case TAG_MPEG4_MusicScore:
return MusicScore_get_field_count(node, code_mode);
case TAG_MPEG4_FootPrintSetNode:
return FootPrintSetNode_get_field_count(node, code_mode);
case TAG_MPEG4_FootPrintNode:
return FootPrintNode_get_field_count(node, code_mode);
case TAG_MPEG4_BuildingPartNode:
return BuildingPartNode_get_field_count(node, code_mode);
case TAG_MPEG4_RoofNode:
return RoofNode_get_field_count(node, code_mode);
case TAG_MPEG4_FacadeNode:
return FacadeNode_get_field_count(node, code_mode);
case TAG_MPEG4_Shadow:
return Shadow_get_field_count(node, code_mode);
case TAG_MPEG4_CacheTexture:
return CacheTexture_get_field_count(node, code_mode);
case TAG_MPEG4_EnvironmentTest:
return EnvironmentTest_get_field_count(node, code_mode);
case TAG_MPEG4_KeyNavigator:
return KeyNavigator_get_field_count(node, code_mode);
case TAG_MPEG4_SpacePartition:
return SpacePartition_get_field_count(node, code_mode);
case TAG_MPEG4_Storage:
return Storage_get_field_count(node, code_mode);
default:
return 0;
}
}
GF_Err gf_sg_mpeg4_node_get_field(GF_Node *node, GF_FieldInfo *field)
{
switch (node->sgprivate->tag) {
case TAG_MPEG4_Anchor:
return Anchor_get_field(node, field);
case TAG_MPEG4_AnimationStream:
return AnimationStream_get_field(node, field);
case TAG_MPEG4_Appearance:
return Appearance_get_field(node, field);
case TAG_MPEG4_AudioBuffer:
return AudioBuffer_get_field(node, field);
case TAG_MPEG4_AudioClip:
return AudioClip_get_field(node, field);
case TAG_MPEG4_AudioDelay:
return AudioDelay_get_field(node, field);
case TAG_MPEG4_AudioFX:
return AudioFX_get_field(node, field);
case TAG_MPEG4_AudioMix:
return AudioMix_get_field(node, field);
case TAG_MPEG4_AudioSource:
return AudioSource_get_field(node, field);
case TAG_MPEG4_AudioSwitch:
return AudioSwitch_get_field(node, field);
case TAG_MPEG4_Background:
return Background_get_field(node, field);
case TAG_MPEG4_Background2D:
return Background2D_get_field(node, field);
case TAG_MPEG4_Billboard:
return Billboard_get_field(node, field);
case TAG_MPEG4_Bitmap:
return Bitmap_get_field(node, field);
case TAG_MPEG4_Box:
return Box_get_field(node, field);
case TAG_MPEG4_Circle:
return Circle_get_field(node, field);
case TAG_MPEG4_Collision:
return Collision_get_field(node, field);
case TAG_MPEG4_Color:
return Color_get_field(node, field);
case TAG_MPEG4_ColorInterpolator:
return ColorInterpolator_get_field(node, field);
case TAG_MPEG4_CompositeTexture2D:
return CompositeTexture2D_get_field(node, field);
case TAG_MPEG4_CompositeTexture3D:
return CompositeTexture3D_get_field(node, field);
case TAG_MPEG4_Conditional:
return Conditional_get_field(node, field);
case TAG_MPEG4_Cone:
return Cone_get_field(node, field);
case TAG_MPEG4_Coordinate:
return Coordinate_get_field(node, field);
case TAG_MPEG4_Coordinate2D:
return Coordinate2D_get_field(node, field);
case TAG_MPEG4_CoordinateInterpolator:
return CoordinateInterpolator_get_field(node, field);
case TAG_MPEG4_CoordinateInterpolator2D:
return CoordinateInterpolator2D_get_field(node, field);
case TAG_MPEG4_Curve2D:
return Curve2D_get_field(node, field);
case TAG_MPEG4_Cylinder:
return Cylinder_get_field(node, field);
case TAG_MPEG4_CylinderSensor:
return CylinderSensor_get_field(node, field);
case TAG_MPEG4_DirectionalLight:
return DirectionalLight_get_field(node, field);
case TAG_MPEG4_DiscSensor:
return DiscSensor_get_field(node, field);
case TAG_MPEG4_ElevationGrid:
return ElevationGrid_get_field(node, field);
case TAG_MPEG4_Expression:
return Expression_get_field(node, field);
case TAG_MPEG4_Extrusion:
return Extrusion_get_field(node, field);
case TAG_MPEG4_Face:
return Face_get_field(node, field);
case TAG_MPEG4_FaceDefMesh:
return FaceDefMesh_get_field(node, field);
case TAG_MPEG4_FaceDefTables:
return FaceDefTables_get_field(node, field);
case TAG_MPEG4_FaceDefTransform:
return FaceDefTransform_get_field(node, field);
case TAG_MPEG4_FAP:
return FAP_get_field(node, field);
case TAG_MPEG4_FDP:
return FDP_get_field(node, field);
case TAG_MPEG4_FIT:
return FIT_get_field(node, field);
case TAG_MPEG4_Fog:
return Fog_get_field(node, field);
case TAG_MPEG4_FontStyle:
return FontStyle_get_field(node, field);
case TAG_MPEG4_Form:
return Form_get_field(node, field);
case TAG_MPEG4_Group:
return Group_get_field(node, field);
case TAG_MPEG4_ImageTexture:
return ImageTexture_get_field(node, field);
case TAG_MPEG4_IndexedFaceSet:
return IndexedFaceSet_get_field(node, field);
case TAG_MPEG4_IndexedFaceSet2D:
return IndexedFaceSet2D_get_field(node, field);
case TAG_MPEG4_IndexedLineSet:
return IndexedLineSet_get_field(node, field);
case TAG_MPEG4_IndexedLineSet2D:
return IndexedLineSet2D_get_field(node, field);
case TAG_MPEG4_Inline:
return Inline_get_field(node, field);
case TAG_MPEG4_LOD:
return LOD_get_field(node, field);
case TAG_MPEG4_Layer2D:
return Layer2D_get_field(node, field);
case TAG_MPEG4_Layer3D:
return Layer3D_get_field(node, field);
case TAG_MPEG4_Layout:
return Layout_get_field(node, field);
case TAG_MPEG4_LineProperties:
return LineProperties_get_field(node, field);
case TAG_MPEG4_ListeningPoint:
return ListeningPoint_get_field(node, field);
case TAG_MPEG4_Material:
return Material_get_field(node, field);
case TAG_MPEG4_Material2D:
return Material2D_get_field(node, field);
case TAG_MPEG4_MovieTexture:
return MovieTexture_get_field(node, field);
case TAG_MPEG4_NavigationInfo:
return NavigationInfo_get_field(node, field);
case TAG_MPEG4_Normal:
return Normal_get_field(node, field);
case TAG_MPEG4_NormalInterpolator:
return NormalInterpolator_get_field(node, field);
case TAG_MPEG4_OrderedGroup:
return OrderedGroup_get_field(node, field);
case TAG_MPEG4_OrientationInterpolator:
return OrientationInterpolator_get_field(node, field);
case TAG_MPEG4_PixelTexture:
return PixelTexture_get_field(node, field);
case TAG_MPEG4_PlaneSensor:
return PlaneSensor_get_field(node, field);
case TAG_MPEG4_PlaneSensor2D:
return PlaneSensor2D_get_field(node, field);
case TAG_MPEG4_PointLight:
return PointLight_get_field(node, field);
case TAG_MPEG4_PointSet:
return PointSet_get_field(node, field);
case TAG_MPEG4_PointSet2D:
return PointSet2D_get_field(node, field);
case TAG_MPEG4_PositionInterpolator:
return PositionInterpolator_get_field(node, field);
case TAG_MPEG4_PositionInterpolator2D:
return PositionInterpolator2D_get_field(node, field);
case TAG_MPEG4_ProximitySensor2D:
return ProximitySensor2D_get_field(node, field);
case TAG_MPEG4_ProximitySensor:
return ProximitySensor_get_field(node, field);
case TAG_MPEG4_QuantizationParameter:
return QuantizationParameter_get_field(node, field);
case TAG_MPEG4_Rectangle:
return Rectangle_get_field(node, field);
case TAG_MPEG4_ScalarInterpolator:
return ScalarInterpolator_get_field(node, field);
case TAG_MPEG4_Script:
return Script_get_field(node, field);
case TAG_MPEG4_Shape:
return Shape_get_field(node, field);
case TAG_MPEG4_Sound:
return Sound_get_field(node, field);
case TAG_MPEG4_Sound2D:
return Sound2D_get_field(node, field);
case TAG_MPEG4_Sphere:
return Sphere_get_field(node, field);
case TAG_MPEG4_SphereSensor:
return SphereSensor_get_field(node, field);
case TAG_MPEG4_SpotLight:
return SpotLight_get_field(node, field);
case TAG_MPEG4_Switch:
return Switch_get_field(node, field);
case TAG_MPEG4_TermCap:
return TermCap_get_field(node, field);
case TAG_MPEG4_Text:
return Text_get_field(node, field);
case TAG_MPEG4_TextureCoordinate:
return TextureCoordinate_get_field(node, field);
case TAG_MPEG4_TextureTransform:
return TextureTransform_get_field(node, field);
case TAG_MPEG4_TimeSensor:
return TimeSensor_get_field(node, field);
case TAG_MPEG4_TouchSensor:
return TouchSensor_get_field(node, field);
case TAG_MPEG4_Transform:
return Transform_get_field(node, field);
case TAG_MPEG4_Transform2D:
return Transform2D_get_field(node, field);
case TAG_MPEG4_Valuator:
return Valuator_get_field(node, field);
case TAG_MPEG4_Viewpoint:
return Viewpoint_get_field(node, field);
case TAG_MPEG4_VisibilitySensor:
return VisibilitySensor_get_field(node, field);
case TAG_MPEG4_Viseme:
return Viseme_get_field(node, field);
case TAG_MPEG4_WorldInfo:
return WorldInfo_get_field(node, field);
case TAG_MPEG4_AcousticMaterial:
return AcousticMaterial_get_field(node, field);
case TAG_MPEG4_AcousticScene:
return AcousticScene_get_field(node, field);
case TAG_MPEG4_ApplicationWindow:
return ApplicationWindow_get_field(node, field);
case TAG_MPEG4_BAP:
return BAP_get_field(node, field);
case TAG_MPEG4_BDP:
return BDP_get_field(node, field);
case TAG_MPEG4_Body:
return Body_get_field(node, field);
case TAG_MPEG4_BodyDefTable:
return BodyDefTable_get_field(node, field);
case TAG_MPEG4_BodySegmentConnectionHint:
return BodySegmentConnectionHint_get_field(node, field);
case TAG_MPEG4_DirectiveSound:
return DirectiveSound_get_field(node, field);
case TAG_MPEG4_Hierarchical3DMesh:
return Hierarchical3DMesh_get_field(node, field);
case TAG_MPEG4_MaterialKey:
return MaterialKey_get_field(node, field);
case TAG_MPEG4_PerceptualParameters:
return PerceptualParameters_get_field(node, field);
case TAG_MPEG4_TemporalTransform:
return TemporalTransform_get_field(node, field);
case TAG_MPEG4_TemporalGroup:
return TemporalGroup_get_field(node, field);
case TAG_MPEG4_ServerCommand:
return ServerCommand_get_field(node, field);
case TAG_MPEG4_InputSensor:
return InputSensor_get_field(node, field);
case TAG_MPEG4_MatteTexture:
return MatteTexture_get_field(node, field);
case TAG_MPEG4_MediaBuffer:
return MediaBuffer_get_field(node, field);
case TAG_MPEG4_MediaControl:
return MediaControl_get_field(node, field);
case TAG_MPEG4_MediaSensor:
return MediaSensor_get_field(node, field);
case TAG_MPEG4_BitWrapper:
return BitWrapper_get_field(node, field);
case TAG_MPEG4_CoordinateInterpolator4D:
return CoordinateInterpolator4D_get_field(node, field);
case TAG_MPEG4_DepthImage:
return DepthImage_get_field(node, field);
case TAG_MPEG4_FFD:
return FFD_get_field(node, field);
case TAG_MPEG4_Implicit:
return Implicit_get_field(node, field);
case TAG_MPEG4_XXLFM_Appearance:
return XXLFM_Appearance_get_field(node, field);
case TAG_MPEG4_XXLFM_BlendList:
return XXLFM_BlendList_get_field(node, field);
case TAG_MPEG4_XXLFM_FrameList:
return XXLFM_FrameList_get_field(node, field);
case TAG_MPEG4_XXLFM_LightMap:
return XXLFM_LightMap_get_field(node, field);
case TAG_MPEG4_XXLFM_SurfaceMapList:
return XXLFM_SurfaceMapList_get_field(node, field);
case TAG_MPEG4_XXLFM_ViewMapList:
return XXLFM_ViewMapList_get_field(node, field);
case TAG_MPEG4_MeshGrid:
return MeshGrid_get_field(node, field);
case TAG_MPEG4_NonLinearDeformer:
return NonLinearDeformer_get_field(node, field);
case TAG_MPEG4_NurbsCurve:
return NurbsCurve_get_field(node, field);
case TAG_MPEG4_NurbsCurve2D:
return NurbsCurve2D_get_field(node, field);
case TAG_MPEG4_NurbsSurface:
return NurbsSurface_get_field(node, field);
case TAG_MPEG4_OctreeImage:
return OctreeImage_get_field(node, field);
case TAG_MPEG4_XXParticles:
return XXParticles_get_field(node, field);
case TAG_MPEG4_XXParticleInitBox:
return XXParticleInitBox_get_field(node, field);
case TAG_MPEG4_XXPlanarObstacle:
return XXPlanarObstacle_get_field(node, field);
case TAG_MPEG4_XXPointAttractor:
return XXPointAttractor_get_field(node, field);
case TAG_MPEG4_PointTexture:
return PointTexture_get_field(node, field);
case TAG_MPEG4_PositionAnimator:
return PositionAnimator_get_field(node, field);
case TAG_MPEG4_PositionAnimator2D:
return PositionAnimator2D_get_field(node, field);
case TAG_MPEG4_PositionInterpolator4D:
return PositionInterpolator4D_get_field(node, field);
case TAG_MPEG4_ProceduralTexture:
return ProceduralTexture_get_field(node, field);
case TAG_MPEG4_Quadric:
return Quadric_get_field(node, field);
case TAG_MPEG4_SBBone:
return SBBone_get_field(node, field);
case TAG_MPEG4_SBMuscle:
return SBMuscle_get_field(node, field);
case TAG_MPEG4_SBSegment:
return SBSegment_get_field(node, field);
case TAG_MPEG4_SBSite:
return SBSite_get_field(node, field);
case TAG_MPEG4_SBSkinnedModel:
return SBSkinnedModel_get_field(node, field);
case TAG_MPEG4_SBVCAnimation:
return SBVCAnimation_get_field(node, field);
case TAG_MPEG4_ScalarAnimator:
return ScalarAnimator_get_field(node, field);
case TAG_MPEG4_SimpleTexture:
return SimpleTexture_get_field(node, field);
case TAG_MPEG4_SolidRep:
return SolidRep_get_field(node, field);
case TAG_MPEG4_SubdivisionSurface:
return SubdivisionSurface_get_field(node, field);
case TAG_MPEG4_SubdivSurfaceSector:
return SubdivSurfaceSector_get_field(node, field);
case TAG_MPEG4_WaveletSubdivisionSurface:
return WaveletSubdivisionSurface_get_field(node, field);
case TAG_MPEG4_Clipper2D:
return Clipper2D_get_field(node, field);
case TAG_MPEG4_ColorTransform:
return ColorTransform_get_field(node, field);
case TAG_MPEG4_Ellipse:
return Ellipse_get_field(node, field);
case TAG_MPEG4_LinearGradient:
return LinearGradient_get_field(node, field);
case TAG_MPEG4_PathLayout:
return PathLayout_get_field(node, field);
case TAG_MPEG4_RadialGradient:
return RadialGradient_get_field(node, field);
case TAG_MPEG4_SynthesizedTexture:
return SynthesizedTexture_get_field(node, field);
case TAG_MPEG4_TransformMatrix2D:
return TransformMatrix2D_get_field(node, field);
case TAG_MPEG4_Viewport:
return Viewport_get_field(node, field);
case TAG_MPEG4_XCurve2D:
return XCurve2D_get_field(node, field);
case TAG_MPEG4_XFontStyle:
return XFontStyle_get_field(node, field);
case TAG_MPEG4_XLineProperties:
return XLineProperties_get_field(node, field);
case TAG_MPEG4_AdvancedAudioBuffer:
return AdvancedAudioBuffer_get_field(node, field);
case TAG_MPEG4_AudioChannelConfig:
return AudioChannelConfig_get_field(node, field);
case TAG_MPEG4_DepthImageV2:
return DepthImageV2_get_field(node, field);
case TAG_MPEG4_MorphShape:
return MorphShape_get_field(node, field);
case TAG_MPEG4_MultiTexture:
return MultiTexture_get_field(node, field);
case TAG_MPEG4_PointTextureV2:
return PointTextureV2_get_field(node, field);
case TAG_MPEG4_SBVCAnimationV2:
return SBVCAnimationV2_get_field(node, field);
case TAG_MPEG4_SimpleTextureV2:
return SimpleTextureV2_get_field(node, field);
case TAG_MPEG4_SurroundingSound:
return SurroundingSound_get_field(node, field);
case TAG_MPEG4_Transform3DAudio:
return Transform3DAudio_get_field(node, field);
case TAG_MPEG4_WideSound:
return WideSound_get_field(node, field);
case TAG_MPEG4_ScoreShape:
return ScoreShape_get_field(node, field);
case TAG_MPEG4_MusicScore:
return MusicScore_get_field(node, field);
case TAG_MPEG4_FootPrintSetNode:
return FootPrintSetNode_get_field(node, field);
case TAG_MPEG4_FootPrintNode:
return FootPrintNode_get_field(node, field);
case TAG_MPEG4_BuildingPartNode:
return BuildingPartNode_get_field(node, field);
case TAG_MPEG4_RoofNode:
return RoofNode_get_field(node, field);
case TAG_MPEG4_FacadeNode:
return FacadeNode_get_field(node, field);
case TAG_MPEG4_Shadow:
return Shadow_get_field(node, field);
case TAG_MPEG4_CacheTexture:
return CacheTexture_get_field(node, field);
case TAG_MPEG4_EnvironmentTest:
return EnvironmentTest_get_field(node, field);
case TAG_MPEG4_KeyNavigator:
return KeyNavigator_get_field(node, field);
case TAG_MPEG4_SpacePartition:
return SpacePartition_get_field(node, field);
case TAG_MPEG4_Storage:
return Storage_get_field(node, field);
default:
return GF_BAD_PARAM;
}
}
GF_Err gf_sg_mpeg4_node_get_field_index(GF_Node *node, u32 inField, u8 code_mode, u32 *fieldIndex)
{
switch (node->sgprivate->tag) {
case TAG_MPEG4_Anchor:
return Anchor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AnimationStream:
return AnimationStream_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Appearance:
return Appearance_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AudioBuffer:
return AudioBuffer_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AudioClip:
return AudioClip_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AudioDelay:
return AudioDelay_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AudioFX:
return AudioFX_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AudioMix:
return AudioMix_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AudioSource:
return AudioSource_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AudioSwitch:
return AudioSwitch_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Background:
return Background_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Background2D:
return Background2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Billboard:
return Billboard_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Bitmap:
return Bitmap_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Box:
return Box_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Circle:
return Circle_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Collision:
return Collision_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Color:
return Color_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ColorInterpolator:
return ColorInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_CompositeTexture2D:
return CompositeTexture2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_CompositeTexture3D:
return CompositeTexture3D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Conditional:
return Conditional_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Cone:
return Cone_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Coordinate:
return Coordinate_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Coordinate2D:
return Coordinate2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_CoordinateInterpolator:
return CoordinateInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_CoordinateInterpolator2D:
return CoordinateInterpolator2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Curve2D:
return Curve2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Cylinder:
return Cylinder_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_CylinderSensor:
return CylinderSensor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_DirectionalLight:
return DirectionalLight_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_DiscSensor:
return DiscSensor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ElevationGrid:
return ElevationGrid_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Expression:
return Expression_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Extrusion:
return Extrusion_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Face:
return Face_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FaceDefMesh:
return FaceDefMesh_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FaceDefTables:
return FaceDefTables_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FaceDefTransform:
return FaceDefTransform_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FAP:
return FAP_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FDP:
return FDP_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FIT:
return FIT_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Fog:
return Fog_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FontStyle:
return FontStyle_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Form:
return Form_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Group:
return Group_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ImageTexture:
return ImageTexture_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_IndexedFaceSet:
return IndexedFaceSet_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_IndexedFaceSet2D:
return IndexedFaceSet2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_IndexedLineSet:
return IndexedLineSet_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_IndexedLineSet2D:
return IndexedLineSet2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Inline:
return Inline_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_LOD:
return LOD_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Layer2D:
return Layer2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Layer3D:
return Layer3D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Layout:
return Layout_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_LineProperties:
return LineProperties_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ListeningPoint:
return ListeningPoint_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Material:
return Material_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Material2D:
return Material2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_MovieTexture:
return MovieTexture_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_NavigationInfo:
return NavigationInfo_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Normal:
return Normal_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_NormalInterpolator:
return NormalInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_OrderedGroup:
return OrderedGroup_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_OrientationInterpolator:
return OrientationInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PixelTexture:
return PixelTexture_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PlaneSensor:
return PlaneSensor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PlaneSensor2D:
return PlaneSensor2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PointLight:
return PointLight_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PointSet:
return PointSet_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PointSet2D:
return PointSet2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PositionInterpolator:
return PositionInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PositionInterpolator2D:
return PositionInterpolator2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ProximitySensor2D:
return ProximitySensor2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ProximitySensor:
return ProximitySensor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_QuantizationParameter:
return QuantizationParameter_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Rectangle:
return Rectangle_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ScalarInterpolator:
return ScalarInterpolator_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Script:
return Script_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Shape:
return Shape_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Sound:
return Sound_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Sound2D:
return Sound2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Sphere:
return Sphere_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SphereSensor:
return SphereSensor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SpotLight:
return SpotLight_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Switch:
return Switch_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_TermCap:
return TermCap_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Text:
return Text_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_TextureCoordinate:
return TextureCoordinate_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_TextureTransform:
return TextureTransform_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_TimeSensor:
return TimeSensor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_TouchSensor:
return TouchSensor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Transform:
return Transform_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Transform2D:
return Transform2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Valuator:
return Valuator_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Viewpoint:
return Viewpoint_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_VisibilitySensor:
return VisibilitySensor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Viseme:
return Viseme_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_WorldInfo:
return WorldInfo_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AcousticMaterial:
return AcousticMaterial_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AcousticScene:
return AcousticScene_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ApplicationWindow:
return ApplicationWindow_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_BAP:
return BAP_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_BDP:
return BDP_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Body:
return Body_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_BodyDefTable:
return BodyDefTable_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_BodySegmentConnectionHint:
return BodySegmentConnectionHint_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_DirectiveSound:
return DirectiveSound_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Hierarchical3DMesh:
return Hierarchical3DMesh_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_MaterialKey:
return MaterialKey_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PerceptualParameters:
return PerceptualParameters_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_TemporalTransform:
return TemporalTransform_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_TemporalGroup:
return TemporalGroup_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ServerCommand:
return ServerCommand_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_InputSensor:
return InputSensor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_MatteTexture:
return MatteTexture_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_MediaBuffer:
return MediaBuffer_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_MediaControl:
return MediaControl_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_MediaSensor:
return MediaSensor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_BitWrapper:
return BitWrapper_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_CoordinateInterpolator4D:
return CoordinateInterpolator4D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_DepthImage:
return DepthImage_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FFD:
return FFD_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Implicit:
return Implicit_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XXLFM_Appearance:
return XXLFM_Appearance_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XXLFM_BlendList:
return XXLFM_BlendList_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XXLFM_FrameList:
return XXLFM_FrameList_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XXLFM_LightMap:
return XXLFM_LightMap_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XXLFM_SurfaceMapList:
return XXLFM_SurfaceMapList_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XXLFM_ViewMapList:
return XXLFM_ViewMapList_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_MeshGrid:
return MeshGrid_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_NonLinearDeformer:
return NonLinearDeformer_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_NurbsCurve:
return NurbsCurve_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_NurbsCurve2D:
return NurbsCurve2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_NurbsSurface:
return NurbsSurface_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_OctreeImage:
return OctreeImage_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XXParticles:
return XXParticles_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XXParticleInitBox:
return XXParticleInitBox_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XXPlanarObstacle:
return XXPlanarObstacle_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XXPointAttractor:
return XXPointAttractor_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PointTexture:
return PointTexture_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PositionAnimator:
return PositionAnimator_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PositionAnimator2D:
return PositionAnimator2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PositionInterpolator4D:
return PositionInterpolator4D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ProceduralTexture:
return ProceduralTexture_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Quadric:
return Quadric_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SBBone:
return SBBone_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SBMuscle:
return SBMuscle_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SBSegment:
return SBSegment_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SBSite:
return SBSite_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SBSkinnedModel:
return SBSkinnedModel_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SBVCAnimation:
return SBVCAnimation_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ScalarAnimator:
return ScalarAnimator_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SimpleTexture:
return SimpleTexture_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SolidRep:
return SolidRep_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SubdivisionSurface:
return SubdivisionSurface_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SubdivSurfaceSector:
return SubdivSurfaceSector_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_WaveletSubdivisionSurface:
return WaveletSubdivisionSurface_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Clipper2D:
return Clipper2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ColorTransform:
return ColorTransform_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Ellipse:
return Ellipse_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_LinearGradient:
return LinearGradient_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PathLayout:
return PathLayout_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_RadialGradient:
return RadialGradient_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SynthesizedTexture:
return SynthesizedTexture_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_TransformMatrix2D:
return TransformMatrix2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Viewport:
return Viewport_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XCurve2D:
return XCurve2D_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XFontStyle:
return XFontStyle_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_XLineProperties:
return XLineProperties_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AdvancedAudioBuffer:
return AdvancedAudioBuffer_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_AudioChannelConfig:
return AudioChannelConfig_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_DepthImageV2:
return DepthImageV2_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_MorphShape:
return MorphShape_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_MultiTexture:
return MultiTexture_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_PointTextureV2:
return PointTextureV2_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SBVCAnimationV2:
return SBVCAnimationV2_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SimpleTextureV2:
return SimpleTextureV2_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SurroundingSound:
return SurroundingSound_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Transform3DAudio:
return Transform3DAudio_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_WideSound:
return WideSound_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_ScoreShape:
return ScoreShape_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_MusicScore:
return MusicScore_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FootPrintSetNode:
return FootPrintSetNode_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FootPrintNode:
return FootPrintNode_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_BuildingPartNode:
return BuildingPartNode_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_RoofNode:
return RoofNode_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_FacadeNode:
return FacadeNode_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Shadow:
return Shadow_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_CacheTexture:
return CacheTexture_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_EnvironmentTest:
return EnvironmentTest_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_KeyNavigator:
return KeyNavigator_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_SpacePartition:
return SpacePartition_get_field_index(node, inField, code_mode, fieldIndex);
case TAG_MPEG4_Storage:
return Storage_get_field_index(node, inField, code_mode, fieldIndex);
default:
return GF_BAD_PARAM;
}
}
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)
{
switch (node->sgprivate->tag) {
case TAG_MPEG4_Anchor:
return Anchor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AnimationStream:
return AnimationStream_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Appearance:
return Appearance_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AudioBuffer:
return AudioBuffer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AudioClip:
return AudioClip_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AudioDelay:
return AudioDelay_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AudioFX:
return AudioFX_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AudioMix:
return AudioMix_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AudioSource:
return AudioSource_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AudioSwitch:
return AudioSwitch_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Background:
return Background_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Background2D:
return Background2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Billboard:
return Billboard_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Bitmap:
return Bitmap_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Box:
return Box_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Circle:
return Circle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Collision:
return Collision_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Color:
return Color_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ColorInterpolator:
return ColorInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_CompositeTexture2D:
return CompositeTexture2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_CompositeTexture3D:
return CompositeTexture3D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Conditional:
return Conditional_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Cone:
return Cone_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Coordinate:
return Coordinate_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Coordinate2D:
return Coordinate2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_CoordinateInterpolator:
return CoordinateInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_CoordinateInterpolator2D:
return CoordinateInterpolator2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Curve2D:
return Curve2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Cylinder:
return Cylinder_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_CylinderSensor:
return CylinderSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_DirectionalLight:
return DirectionalLight_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_DiscSensor:
return DiscSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ElevationGrid:
return ElevationGrid_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Expression:
return Expression_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Extrusion:
return Extrusion_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Face:
return Face_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FaceDefMesh:
return FaceDefMesh_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FaceDefTables:
return FaceDefTables_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FaceDefTransform:
return FaceDefTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FAP:
return FAP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FDP:
return FDP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FIT:
return FIT_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Fog:
return Fog_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FontStyle:
return FontStyle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Form:
return Form_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Group:
return Group_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ImageTexture:
return ImageTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_IndexedFaceSet:
return IndexedFaceSet_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_IndexedFaceSet2D:
return IndexedFaceSet2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_IndexedLineSet:
return IndexedLineSet_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_IndexedLineSet2D:
return IndexedLineSet2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Inline:
return Inline_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_LOD:
return LOD_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Layer2D:
return Layer2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Layer3D:
return Layer3D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Layout:
return Layout_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_LineProperties:
return LineProperties_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ListeningPoint:
return ListeningPoint_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Material:
return Material_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Material2D:
return Material2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_MovieTexture:
return MovieTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_NavigationInfo:
return NavigationInfo_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Normal:
return Normal_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_NormalInterpolator:
return NormalInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_OrderedGroup:
return OrderedGroup_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_OrientationInterpolator:
return OrientationInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PixelTexture:
return PixelTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PlaneSensor:
return PlaneSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PlaneSensor2D:
return PlaneSensor2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PointLight:
return PointLight_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PointSet:
return PointSet_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PointSet2D:
return PointSet2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PositionInterpolator:
return PositionInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PositionInterpolator2D:
return PositionInterpolator2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ProximitySensor2D:
return ProximitySensor2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ProximitySensor:
return ProximitySensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_QuantizationParameter:
return QuantizationParameter_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Rectangle:
return Rectangle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ScalarInterpolator:
return ScalarInterpolator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Script:
return Script_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Shape:
return Shape_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Sound:
return Sound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Sound2D:
return Sound2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Sphere:
return Sphere_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SphereSensor:
return SphereSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SpotLight:
return SpotLight_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Switch:
return Switch_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_TermCap:
return TermCap_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Text:
return Text_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_TextureCoordinate:
return TextureCoordinate_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_TextureTransform:
return TextureTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_TimeSensor:
return TimeSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_TouchSensor:
return TouchSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Transform:
return Transform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Transform2D:
return Transform2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Valuator:
return Valuator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Viewpoint:
return Viewpoint_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_VisibilitySensor:
return VisibilitySensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Viseme:
return Viseme_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_WorldInfo:
return WorldInfo_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AcousticMaterial:
return AcousticMaterial_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AcousticScene:
return AcousticScene_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ApplicationWindow:
return ApplicationWindow_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_BAP:
return BAP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_BDP:
return BDP_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Body:
return Body_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_BodyDefTable:
return BodyDefTable_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_BodySegmentConnectionHint:
return BodySegmentConnectionHint_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_DirectiveSound:
return DirectiveSound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Hierarchical3DMesh:
return Hierarchical3DMesh_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_MaterialKey:
return MaterialKey_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PerceptualParameters:
return PerceptualParameters_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_TemporalTransform:
return TemporalTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_TemporalGroup:
return TemporalGroup_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ServerCommand:
return ServerCommand_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_InputSensor:
return InputSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_MatteTexture:
return MatteTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_MediaBuffer:
return MediaBuffer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_MediaControl:
return MediaControl_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_MediaSensor:
return MediaSensor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_BitWrapper:
return BitWrapper_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_CoordinateInterpolator4D:
return CoordinateInterpolator4D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_DepthImage:
return DepthImage_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FFD:
return FFD_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Implicit:
return Implicit_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XXLFM_Appearance:
return XXLFM_Appearance_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XXLFM_BlendList:
return XXLFM_BlendList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XXLFM_FrameList:
return XXLFM_FrameList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XXLFM_LightMap:
return XXLFM_LightMap_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XXLFM_SurfaceMapList:
return XXLFM_SurfaceMapList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XXLFM_ViewMapList:
return XXLFM_ViewMapList_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_MeshGrid:
return MeshGrid_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_NonLinearDeformer:
return NonLinearDeformer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_NurbsCurve:
return NurbsCurve_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_NurbsCurve2D:
return NurbsCurve2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_NurbsSurface:
return NurbsSurface_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_OctreeImage:
return OctreeImage_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XXParticles:
return XXParticles_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XXParticleInitBox:
return XXParticleInitBox_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XXPlanarObstacle:
return XXPlanarObstacle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XXPointAttractor:
return XXPointAttractor_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PointTexture:
return PointTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PositionAnimator:
return PositionAnimator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PositionAnimator2D:
return PositionAnimator2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PositionInterpolator4D:
return PositionInterpolator4D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ProceduralTexture:
return ProceduralTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Quadric:
return Quadric_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SBBone:
return SBBone_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SBMuscle:
return SBMuscle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SBSegment:
return SBSegment_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SBSite:
return SBSite_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SBSkinnedModel:
return SBSkinnedModel_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SBVCAnimation:
return SBVCAnimation_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ScalarAnimator:
return ScalarAnimator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SimpleTexture:
return SimpleTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SolidRep:
return SolidRep_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SubdivisionSurface:
return SubdivisionSurface_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SubdivSurfaceSector:
return SubdivSurfaceSector_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_WaveletSubdivisionSurface:
return WaveletSubdivisionSurface_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Clipper2D:
return Clipper2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ColorTransform:
return ColorTransform_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Ellipse:
return Ellipse_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_LinearGradient:
return LinearGradient_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PathLayout:
return PathLayout_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_RadialGradient:
return RadialGradient_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SynthesizedTexture:
return SynthesizedTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_TransformMatrix2D:
return TransformMatrix2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Viewport:
return Viewport_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XCurve2D:
return XCurve2D_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XFontStyle:
return XFontStyle_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_XLineProperties:
return XLineProperties_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AdvancedAudioBuffer:
return AdvancedAudioBuffer_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_AudioChannelConfig:
return AudioChannelConfig_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_DepthImageV2:
return DepthImageV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_MorphShape:
return MorphShape_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_MultiTexture:
return MultiTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_PointTextureV2:
return PointTextureV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SBVCAnimationV2:
return SBVCAnimationV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SimpleTextureV2:
return SimpleTextureV2_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SurroundingSound:
return SurroundingSound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Transform3DAudio:
return Transform3DAudio_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_WideSound:
return WideSound_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_ScoreShape:
return ScoreShape_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_MusicScore:
return MusicScore_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FootPrintSetNode:
return FootPrintSetNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FootPrintNode:
return FootPrintNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_BuildingPartNode:
return BuildingPartNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_RoofNode:
return RoofNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_FacadeNode:
return FacadeNode_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Shadow:
return Shadow_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_CacheTexture:
return CacheTexture_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_EnvironmentTest:
return EnvironmentTest_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_KeyNavigator:
return KeyNavigator_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_SpacePartition:
return SpacePartition_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
case TAG_MPEG4_Storage:
return Storage_get_aq_info(node, FieldIndex, QType, AType, b_min, b_max, QT13_bits);
default:
return 0;
}
}
u32 gf_sg_mpeg4_node_get_child_ndt(GF_Node *node)
{
switch (node->sgprivate->tag) {
case TAG_MPEG4_Anchor:
return NDT_SF3DNode;
case TAG_MPEG4_AudioBuffer:
return NDT_SFAudioNode;
case TAG_MPEG4_AudioDelay:
return NDT_SFAudioNode;
case TAG_MPEG4_AudioFX:
return NDT_SFAudioNode;
case TAG_MPEG4_AudioMix:
return NDT_SFAudioNode;
case TAG_MPEG4_AudioSource:
return NDT_SFAudioNode;
case TAG_MPEG4_AudioSwitch:
return NDT_SFAudioNode;
case TAG_MPEG4_Billboard:
return NDT_SF3DNode;
case TAG_MPEG4_Collision:
return NDT_SF3DNode;
case TAG_MPEG4_CompositeTexture2D:
return NDT_SF2DNode;
case TAG_MPEG4_CompositeTexture3D:
return NDT_SF3DNode;
case TAG_MPEG4_Face:
return NDT_SF3DNode;
case TAG_MPEG4_FaceDefTables:
return NDT_SFFaceDefMeshNode;
case TAG_MPEG4_FDP:
return NDT_SFFaceDefTablesNode;
case TAG_MPEG4_Form:
return NDT_SF2DNode;
case TAG_MPEG4_Group:
return NDT_SF3DNode;
case TAG_MPEG4_LOD:
return NDT_SF3DNode;
case TAG_MPEG4_Layer2D:
return NDT_SF2DNode;
case TAG_MPEG4_Layer3D:
return NDT_SF3DNode;
case TAG_MPEG4_Layout:
return NDT_SF2DNode;
case TAG_MPEG4_OrderedGroup:
return NDT_SF3DNode;
case TAG_MPEG4_Switch:
return NDT_SF3DNode;
case TAG_MPEG4_Transform:
return NDT_SF3DNode;
case TAG_MPEG4_Transform2D:
return NDT_SF2DNode;
case TAG_MPEG4_BDP:
return NDT_SFBodyDefTableNode;
case TAG_MPEG4_Body:
return NDT_SF3DNode;
case TAG_MPEG4_TemporalTransform:
return NDT_SF3DNode;
case TAG_MPEG4_TemporalGroup:
return NDT_SFTemporalNode;
case TAG_MPEG4_FFD:
return NDT_SF3DNode;
case TAG_MPEG4_XXLFM_Appearance:
return NDT_SFLightMapNode;
case TAG_MPEG4_OctreeImage:
return NDT_SFDepthImageNode;
case TAG_MPEG4_XXParticles:
return NDT_SFInfluenceNode;
case TAG_MPEG4_SBBone:
return NDT_SF3DNode;
case TAG_MPEG4_SBSegment:
return NDT_SF3DNode;
case TAG_MPEG4_SBSite:
return NDT_SF3DNode;
case TAG_MPEG4_SBSkinnedModel:
return NDT_SFSBBoneNode;
case TAG_MPEG4_SBVCAnimation:
return NDT_SF3DNode;
case TAG_MPEG4_SubdivisionSurface:
return NDT_SFSubdivSurfaceSectorNode;
case TAG_MPEG4_Clipper2D:
return NDT_SF2DNode;
case TAG_MPEG4_ColorTransform:
return NDT_SF3DNode;
case TAG_MPEG4_PathLayout:
return NDT_SF2DNode;
case TAG_MPEG4_TransformMatrix2D:
return NDT_SF2DNode;
case TAG_MPEG4_AdvancedAudioBuffer:
return NDT_SFAudioNode;
case TAG_MPEG4_AudioChannelConfig:
return NDT_SFAudioNode;
case TAG_MPEG4_MorphShape:
return NDT_SF3DNode;
case TAG_MPEG4_MultiTexture:
return NDT_SFTextureNode;
case TAG_MPEG4_SBVCAnimationV2:
return NDT_SF3DNode;
case TAG_MPEG4_Transform3DAudio:
return NDT_SF3DNode;
case TAG_MPEG4_FootPrintSetNode:
return NDT_SFGeometryNode;
case TAG_MPEG4_BuildingPartNode:
return NDT_SFGeometryNode;
case TAG_MPEG4_FacadeNode:
return NDT_SFGeometryNode;
case TAG_MPEG4_Shadow:
return NDT_SF3DNode;
case TAG_MPEG4_SpacePartition:
return NDT_SF3DNode;
default:
return 0;
}
}
GF_EXPORT
u32 gf_node_mpeg4_type_by_class_name(const char *node_name)
{
if(!node_name) return 0;
if (!strcmp(node_name, "Anchor")) return TAG_MPEG4_Anchor;
if (!strcmp(node_name, "AnimationStream")) return TAG_MPEG4_AnimationStream;
if (!strcmp(node_name, "Appearance")) return TAG_MPEG4_Appearance;
if (!strcmp(node_name, "AudioBuffer")) return TAG_MPEG4_AudioBuffer;
if (!strcmp(node_name, "AudioClip")) return TAG_MPEG4_AudioClip;
if (!strcmp(node_name, "AudioDelay")) return TAG_MPEG4_AudioDelay;
if (!strcmp(node_name, "AudioFX")) return TAG_MPEG4_AudioFX;
if (!strcmp(node_name, "AudioMix")) return TAG_MPEG4_AudioMix;
if (!strcmp(node_name, "AudioSource")) return TAG_MPEG4_AudioSource;
if (!strcmp(node_name, "AudioSwitch")) return TAG_MPEG4_AudioSwitch;
if (!strcmp(node_name, "Background")) return TAG_MPEG4_Background;
if (!strcmp(node_name, "Background2D")) return TAG_MPEG4_Background2D;
if (!strcmp(node_name, "Billboard")) return TAG_MPEG4_Billboard;
if (!strcmp(node_name, "Bitmap")) return TAG_MPEG4_Bitmap;
if (!strcmp(node_name, "Box")) return TAG_MPEG4_Box;
if (!strcmp(node_name, "Circle")) return TAG_MPEG4_Circle;
if (!strcmp(node_name, "Collision")) return TAG_MPEG4_Collision;
if (!strcmp(node_name, "Color")) return TAG_MPEG4_Color;
if (!strcmp(node_name, "ColorInterpolator")) return TAG_MPEG4_ColorInterpolator;
if (!strcmp(node_name, "CompositeTexture2D")) return TAG_MPEG4_CompositeTexture2D;
if (!strcmp(node_name, "CompositeTexture3D")) return TAG_MPEG4_CompositeTexture3D;
if (!strcmp(node_name, "Conditional")) return TAG_MPEG4_Conditional;
if (!strcmp(node_name, "Cone")) return TAG_MPEG4_Cone;
if (!strcmp(node_name, "Coordinate")) return TAG_MPEG4_Coordinate;
if (!strcmp(node_name, "Coordinate2D")) return TAG_MPEG4_Coordinate2D;
if (!strcmp(node_name, "CoordinateInterpolator")) return TAG_MPEG4_CoordinateInterpolator;
if (!strcmp(node_name, "CoordinateInterpolator2D")) return TAG_MPEG4_CoordinateInterpolator2D;
if (!strcmp(node_name, "Curve2D")) return TAG_MPEG4_Curve2D;
if (!strcmp(node_name, "Cylinder")) return TAG_MPEG4_Cylinder;
if (!strcmp(node_name, "CylinderSensor")) return TAG_MPEG4_CylinderSensor;
if (!strcmp(node_name, "DirectionalLight")) return TAG_MPEG4_DirectionalLight;
if (!strcmp(node_name, "DiscSensor")) return TAG_MPEG4_DiscSensor;
if (!strcmp(node_name, "ElevationGrid")) return TAG_MPEG4_ElevationGrid;
if (!strcmp(node_name, "Expression")) return TAG_MPEG4_Expression;
if (!strcmp(node_name, "Extrusion")) return TAG_MPEG4_Extrusion;
if (!strcmp(node_name, "Face")) return TAG_MPEG4_Face;
if (!strcmp(node_name, "FaceDefMesh")) return TAG_MPEG4_FaceDefMesh;
if (!strcmp(node_name, "FaceDefTables")) return TAG_MPEG4_FaceDefTables;
if (!strcmp(node_name, "FaceDefTransform")) return TAG_MPEG4_FaceDefTransform;
if (!strcmp(node_name, "FAP")) return TAG_MPEG4_FAP;
if (!strcmp(node_name, "FDP")) return TAG_MPEG4_FDP;
if (!strcmp(node_name, "FIT")) return TAG_MPEG4_FIT;
if (!strcmp(node_name, "Fog")) return TAG_MPEG4_Fog;
if (!strcmp(node_name, "FontStyle")) return TAG_MPEG4_FontStyle;
if (!strcmp(node_name, "Form")) return TAG_MPEG4_Form;
if (!strcmp(node_name, "Group")) return TAG_MPEG4_Group;
if (!strcmp(node_name, "ImageTexture")) return TAG_MPEG4_ImageTexture;
if (!strcmp(node_name, "IndexedFaceSet")) return TAG_MPEG4_IndexedFaceSet;
if (!strcmp(node_name, "IndexedFaceSet2D")) return TAG_MPEG4_IndexedFaceSet2D;
if (!strcmp(node_name, "IndexedLineSet")) return TAG_MPEG4_IndexedLineSet;
if (!strcmp(node_name, "IndexedLineSet2D")) return TAG_MPEG4_IndexedLineSet2D;
if (!strcmp(node_name, "Inline")) return TAG_MPEG4_Inline;
if (!strcmp(node_name, "LOD")) return TAG_MPEG4_LOD;
if (!strcmp(node_name, "Layer2D")) return TAG_MPEG4_Layer2D;
if (!strcmp(node_name, "Layer3D")) return TAG_MPEG4_Layer3D;
if (!strcmp(node_name, "Layout")) return TAG_MPEG4_Layout;
if (!strcmp(node_name, "LineProperties")) return TAG_MPEG4_LineProperties;
if (!strcmp(node_name, "ListeningPoint")) return TAG_MPEG4_ListeningPoint;
if (!strcmp(node_name, "Material")) return TAG_MPEG4_Material;
if (!strcmp(node_name, "Material2D")) return TAG_MPEG4_Material2D;
if (!strcmp(node_name, "MovieTexture")) return TAG_MPEG4_MovieTexture;
if (!strcmp(node_name, "NavigationInfo")) return TAG_MPEG4_NavigationInfo;
if (!strcmp(node_name, "Normal")) return TAG_MPEG4_Normal;
if (!strcmp(node_name, "NormalInterpolator")) return TAG_MPEG4_NormalInterpolator;
if (!strcmp(node_name, "OrderedGroup")) return TAG_MPEG4_OrderedGroup;
if (!strcmp(node_name, "OrientationInterpolator")) return TAG_MPEG4_OrientationInterpolator;
if (!strcmp(node_name, "PixelTexture")) return TAG_MPEG4_PixelTexture;
if (!strcmp(node_name, "PlaneSensor")) return TAG_MPEG4_PlaneSensor;
if (!strcmp(node_name, "PlaneSensor2D")) return TAG_MPEG4_PlaneSensor2D;
if (!strcmp(node_name, "PointLight")) return TAG_MPEG4_PointLight;
if (!strcmp(node_name, "PointSet")) return TAG_MPEG4_PointSet;
if (!strcmp(node_name, "PointSet2D")) return TAG_MPEG4_PointSet2D;
if (!strcmp(node_name, "PositionInterpolator")) return TAG_MPEG4_PositionInterpolator;
if (!strcmp(node_name, "PositionInterpolator2D")) return TAG_MPEG4_PositionInterpolator2D;
if (!strcmp(node_name, "ProximitySensor2D")) return TAG_MPEG4_ProximitySensor2D;
if (!strcmp(node_name, "ProximitySensor")) return TAG_MPEG4_ProximitySensor;
if (!strcmp(node_name, "QuantizationParameter")) return TAG_MPEG4_QuantizationParameter;
if (!strcmp(node_name, "Rectangle")) return TAG_MPEG4_Rectangle;
if (!strcmp(node_name, "ScalarInterpolator")) return TAG_MPEG4_ScalarInterpolator;
if (!strcmp(node_name, "Script")) return TAG_MPEG4_Script;
if (!strcmp(node_name, "Shape")) return TAG_MPEG4_Shape;
if (!strcmp(node_name, "Sound")) return TAG_MPEG4_Sound;
if (!strcmp(node_name, "Sound2D")) return TAG_MPEG4_Sound2D;
if (!strcmp(node_name, "Sphere")) return TAG_MPEG4_Sphere;
if (!strcmp(node_name, "SphereSensor")) return TAG_MPEG4_SphereSensor;
if (!strcmp(node_name, "SpotLight")) return TAG_MPEG4_SpotLight;
if (!strcmp(node_name, "Switch")) return TAG_MPEG4_Switch;
if (!strcmp(node_name, "TermCap")) return TAG_MPEG4_TermCap;
if (!strcmp(node_name, "Text")) return TAG_MPEG4_Text;
if (!strcmp(node_name, "TextureCoordinate")) return TAG_MPEG4_TextureCoordinate;
if (!strcmp(node_name, "TextureTransform")) return TAG_MPEG4_TextureTransform;
if (!strcmp(node_name, "TimeSensor")) return TAG_MPEG4_TimeSensor;
if (!strcmp(node_name, "TouchSensor")) return TAG_MPEG4_TouchSensor;
if (!strcmp(node_name, "Transform")) return TAG_MPEG4_Transform;
if (!strcmp(node_name, "Transform2D")) return TAG_MPEG4_Transform2D;
if (!strcmp(node_name, "Valuator")) return TAG_MPEG4_Valuator;
if (!strcmp(node_name, "Viewpoint")) return TAG_MPEG4_Viewpoint;
if (!strcmp(node_name, "VisibilitySensor")) return TAG_MPEG4_VisibilitySensor;
if (!strcmp(node_name, "Viseme")) return TAG_MPEG4_Viseme;
if (!strcmp(node_name, "WorldInfo")) return TAG_MPEG4_WorldInfo;
if (!strcmp(node_name, "AcousticMaterial")) return TAG_MPEG4_AcousticMaterial;
if (!strcmp(node_name, "AcousticScene")) return TAG_MPEG4_AcousticScene;
if (!strcmp(node_name, "ApplicationWindow")) return TAG_MPEG4_ApplicationWindow;
if (!strcmp(node_name, "BAP")) return TAG_MPEG4_BAP;
if (!strcmp(node_name, "BDP")) return TAG_MPEG4_BDP;
if (!strcmp(node_name, "Body")) return TAG_MPEG4_Body;
if (!strcmp(node_name, "BodyDefTable")) return TAG_MPEG4_BodyDefTable;
if (!strcmp(node_name, "BodySegmentConnectionHint")) return TAG_MPEG4_BodySegmentConnectionHint;
if (!strcmp(node_name, "DirectiveSound")) return TAG_MPEG4_DirectiveSound;
if (!strcmp(node_name, "Hierarchical3DMesh")) return TAG_MPEG4_Hierarchical3DMesh;
if (!strcmp(node_name, "MaterialKey")) return TAG_MPEG4_MaterialKey;
if (!strcmp(node_name, "PerceptualParameters")) return TAG_MPEG4_PerceptualParameters;
if (!strcmp(node_name, "TemporalTransform")) return TAG_MPEG4_TemporalTransform;
if (!strcmp(node_name, "TemporalGroup")) return TAG_MPEG4_TemporalGroup;
if (!strcmp(node_name, "ServerCommand")) return TAG_MPEG4_ServerCommand;
if (!strcmp(node_name, "InputSensor")) return TAG_MPEG4_InputSensor;
if (!strcmp(node_name, "MatteTexture")) return TAG_MPEG4_MatteTexture;
if (!strcmp(node_name, "MediaBuffer")) return TAG_MPEG4_MediaBuffer;
if (!strcmp(node_name, "MediaControl")) return TAG_MPEG4_MediaControl;
if (!strcmp(node_name, "MediaSensor")) return TAG_MPEG4_MediaSensor;
if (!strcmp(node_name, "BitWrapper")) return TAG_MPEG4_BitWrapper;
if (!strcmp(node_name, "CoordinateInterpolator4D")) return TAG_MPEG4_CoordinateInterpolator4D;
if (!strcmp(node_name, "DepthImage")) return TAG_MPEG4_DepthImage;
if (!strcmp(node_name, "FFD")) return TAG_MPEG4_FFD;
if (!strcmp(node_name, "Implicit")) return TAG_MPEG4_Implicit;
if (!strcmp(node_name, "XXLFM_Appearance")) return TAG_MPEG4_XXLFM_Appearance;
if (!strcmp(node_name, "XXLFM_BlendList")) return TAG_MPEG4_XXLFM_BlendList;
if (!strcmp(node_name, "XXLFM_FrameList")) return TAG_MPEG4_XXLFM_FrameList;
if (!strcmp(node_name, "XXLFM_LightMap")) return TAG_MPEG4_XXLFM_LightMap;
if (!strcmp(node_name, "XXLFM_SurfaceMapList")) return TAG_MPEG4_XXLFM_SurfaceMapList;
if (!strcmp(node_name, "XXLFM_ViewMapList")) return TAG_MPEG4_XXLFM_ViewMapList;
if (!strcmp(node_name, "MeshGrid")) return TAG_MPEG4_MeshGrid;
if (!strcmp(node_name, "NonLinearDeformer")) return TAG_MPEG4_NonLinearDeformer;
if (!strcmp(node_name, "NurbsCurve")) return TAG_MPEG4_NurbsCurve;
if (!strcmp(node_name, "NurbsCurve2D")) return TAG_MPEG4_NurbsCurve2D;
if (!strcmp(node_name, "NurbsSurface")) return TAG_MPEG4_NurbsSurface;
if (!strcmp(node_name, "OctreeImage")) return TAG_MPEG4_OctreeImage;
if (!strcmp(node_name, "XXParticles")) return TAG_MPEG4_XXParticles;
if (!strcmp(node_name, "XXParticleInitBox")) return TAG_MPEG4_XXParticleInitBox;
if (!strcmp(node_name, "XXPlanarObstacle")) return TAG_MPEG4_XXPlanarObstacle;
if (!strcmp(node_name, "XXPointAttractor")) return TAG_MPEG4_XXPointAttractor;
if (!strcmp(node_name, "PointTexture")) return TAG_MPEG4_PointTexture;
if (!strcmp(node_name, "PositionAnimator")) return TAG_MPEG4_PositionAnimator;
if (!strcmp(node_name, "PositionAnimator2D")) return TAG_MPEG4_PositionAnimator2D;
if (!strcmp(node_name, "PositionInterpolator4D")) return TAG_MPEG4_PositionInterpolator4D;
if (!strcmp(node_name, "ProceduralTexture")) return TAG_MPEG4_ProceduralTexture;
if (!strcmp(node_name, "Quadric")) return TAG_MPEG4_Quadric;
if (!strcmp(node_name, "SBBone")) return TAG_MPEG4_SBBone;
if (!strcmp(node_name, "SBMuscle")) return TAG_MPEG4_SBMuscle;
if (!strcmp(node_name, "SBSegment")) return TAG_MPEG4_SBSegment;
if (!strcmp(node_name, "SBSite")) return TAG_MPEG4_SBSite;
if (!strcmp(node_name, "SBSkinnedModel")) return TAG_MPEG4_SBSkinnedModel;
if (!strcmp(node_name, "SBVCAnimation")) return TAG_MPEG4_SBVCAnimation;
if (!strcmp(node_name, "ScalarAnimator")) return TAG_MPEG4_ScalarAnimator;
if (!strcmp(node_name, "SimpleTexture")) return TAG_MPEG4_SimpleTexture;
if (!strcmp(node_name, "SolidRep")) return TAG_MPEG4_SolidRep;
if (!strcmp(node_name, "SubdivisionSurface")) return TAG_MPEG4_SubdivisionSurface;
if (!strcmp(node_name, "SubdivSurfaceSector")) return TAG_MPEG4_SubdivSurfaceSector;
if (!strcmp(node_name, "WaveletSubdivisionSurface")) return TAG_MPEG4_WaveletSubdivisionSurface;
if (!strcmp(node_name, "Clipper2D")) return TAG_MPEG4_Clipper2D;
if (!strcmp(node_name, "ColorTransform")) return TAG_MPEG4_ColorTransform;
if (!strcmp(node_name, "Ellipse")) return TAG_MPEG4_Ellipse;
if (!strcmp(node_name, "LinearGradient")) return TAG_MPEG4_LinearGradient;
if (!strcmp(node_name, "PathLayout")) return TAG_MPEG4_PathLayout;
if (!strcmp(node_name, "RadialGradient")) return TAG_MPEG4_RadialGradient;
if (!strcmp(node_name, "SynthesizedTexture")) return TAG_MPEG4_SynthesizedTexture;
if (!strcmp(node_name, "TransformMatrix2D")) return TAG_MPEG4_TransformMatrix2D;
if (!strcmp(node_name, "Viewport")) return TAG_MPEG4_Viewport;
if (!strcmp(node_name, "XCurve2D")) return TAG_MPEG4_XCurve2D;
if (!strcmp(node_name, "XFontStyle")) return TAG_MPEG4_XFontStyle;
if (!strcmp(node_name, "XLineProperties")) return TAG_MPEG4_XLineProperties;
if (!strcmp(node_name, "AdvancedAudioBuffer")) return TAG_MPEG4_AdvancedAudioBuffer;
if (!strcmp(node_name, "AudioChannelConfig")) return TAG_MPEG4_AudioChannelConfig;
if (!strcmp(node_name, "DepthImageV2")) return TAG_MPEG4_DepthImageV2;
if (!strcmp(node_name, "MorphShape")) return TAG_MPEG4_MorphShape;
if (!strcmp(node_name, "MultiTexture")) return TAG_MPEG4_MultiTexture;
if (!strcmp(node_name, "PointTextureV2")) return TAG_MPEG4_PointTextureV2;
if (!strcmp(node_name, "SBVCAnimationV2")) return TAG_MPEG4_SBVCAnimationV2;
if (!strcmp(node_name, "SimpleTextureV2")) return TAG_MPEG4_SimpleTextureV2;
if (!strcmp(node_name, "SurroundingSound")) return TAG_MPEG4_SurroundingSound;
if (!strcmp(node_name, "Transform3DAudio")) return TAG_MPEG4_Transform3DAudio;
if (!strcmp(node_name, "WideSound")) return TAG_MPEG4_WideSound;
if (!strcmp(node_name, "ScoreShape")) return TAG_MPEG4_ScoreShape;
if (!strcmp(node_name, "MusicScore")) return TAG_MPEG4_MusicScore;
if (!strcmp(node_name, "FootPrintSetNode")) return TAG_MPEG4_FootPrintSetNode;
if (!strcmp(node_name, "FootPrintNode")) return TAG_MPEG4_FootPrintNode;
if (!strcmp(node_name, "BuildingPartNode")) return TAG_MPEG4_BuildingPartNode;
if (!strcmp(node_name, "RoofNode")) return TAG_MPEG4_RoofNode;
if (!strcmp(node_name, "FacadeNode")) return TAG_MPEG4_FacadeNode;
if (!strcmp(node_name, "Shadow")) return TAG_MPEG4_Shadow;
if (!strcmp(node_name, "CacheTexture")) return TAG_MPEG4_CacheTexture;
if (!strcmp(node_name, "EnvironmentTest")) return TAG_MPEG4_EnvironmentTest;
if (!strcmp(node_name, "KeyNavigator")) return TAG_MPEG4_KeyNavigator;
if (!strcmp(node_name, "SpacePartition")) return TAG_MPEG4_SpacePartition;
if (!strcmp(node_name, "Storage")) return TAG_MPEG4_Storage;
return 0;
}
s32 gf_sg_mpeg4_node_get_field_index_by_name(GF_Node *node, char *name)
{
switch (node->sgprivate->tag) {
case TAG_MPEG4_Anchor:
return Anchor_get_field_index_by_name(name);
case TAG_MPEG4_AnimationStream:
return AnimationStream_get_field_index_by_name(name);
case TAG_MPEG4_Appearance:
return Appearance_get_field_index_by_name(name);
case TAG_MPEG4_AudioBuffer:
return AudioBuffer_get_field_index_by_name(name);
case TAG_MPEG4_AudioClip:
return AudioClip_get_field_index_by_name(name);
case TAG_MPEG4_AudioDelay:
return AudioDelay_get_field_index_by_name(name);
case TAG_MPEG4_AudioFX:
return AudioFX_get_field_index_by_name(name);
case TAG_MPEG4_AudioMix:
return AudioMix_get_field_index_by_name(name);
case TAG_MPEG4_AudioSource:
return AudioSource_get_field_index_by_name(name);
case TAG_MPEG4_AudioSwitch:
return AudioSwitch_get_field_index_by_name(name);
case TAG_MPEG4_Background:
return Background_get_field_index_by_name(name);
case TAG_MPEG4_Background2D:
return Background2D_get_field_index_by_name(name);
case TAG_MPEG4_Billboard:
return Billboard_get_field_index_by_name(name);
case TAG_MPEG4_Bitmap:
return Bitmap_get_field_index_by_name(name);
case TAG_MPEG4_Box:
return Box_get_field_index_by_name(name);
case TAG_MPEG4_Circle:
return Circle_get_field_index_by_name(name);
case TAG_MPEG4_Collision:
return Collision_get_field_index_by_name(name);
case TAG_MPEG4_Color:
return Color_get_field_index_by_name(name);
case TAG_MPEG4_ColorInterpolator:
return ColorInterpolator_get_field_index_by_name(name);
case TAG_MPEG4_CompositeTexture2D:
return CompositeTexture2D_get_field_index_by_name(name);
case TAG_MPEG4_CompositeTexture3D:
return CompositeTexture3D_get_field_index_by_name(name);
case TAG_MPEG4_Conditional:
return Conditional_get_field_index_by_name(name);
case TAG_MPEG4_Cone:
return Cone_get_field_index_by_name(name);
case TAG_MPEG4_Coordinate:
return Coordinate_get_field_index_by_name(name);
case TAG_MPEG4_Coordinate2D:
return Coordinate2D_get_field_index_by_name(name);
case TAG_MPEG4_CoordinateInterpolator:
return CoordinateInterpolator_get_field_index_by_name(name);
case TAG_MPEG4_CoordinateInterpolator2D:
return CoordinateInterpolator2D_get_field_index_by_name(name);
case TAG_MPEG4_Curve2D:
return Curve2D_get_field_index_by_name(name);
case TAG_MPEG4_Cylinder:
return Cylinder_get_field_index_by_name(name);
case TAG_MPEG4_CylinderSensor:
return CylinderSensor_get_field_index_by_name(name);
case TAG_MPEG4_DirectionalLight:
return DirectionalLight_get_field_index_by_name(name);
case TAG_MPEG4_DiscSensor:
return DiscSensor_get_field_index_by_name(name);
case TAG_MPEG4_ElevationGrid:
return ElevationGrid_get_field_index_by_name(name);
case TAG_MPEG4_Expression:
return Expression_get_field_index_by_name(name);
case TAG_MPEG4_Extrusion:
return Extrusion_get_field_index_by_name(name);
case TAG_MPEG4_Face:
return Face_get_field_index_by_name(name);
case TAG_MPEG4_FaceDefMesh:
return FaceDefMesh_get_field_index_by_name(name);
case TAG_MPEG4_FaceDefTables:
return FaceDefTables_get_field_index_by_name(name);
case TAG_MPEG4_FaceDefTransform:
return FaceDefTransform_get_field_index_by_name(name);
case TAG_MPEG4_FAP:
return FAP_get_field_index_by_name(name);
case TAG_MPEG4_FDP:
return FDP_get_field_index_by_name(name);
case TAG_MPEG4_FIT:
return FIT_get_field_index_by_name(name);
case TAG_MPEG4_Fog:
return Fog_get_field_index_by_name(name);
case TAG_MPEG4_FontStyle:
return FontStyle_get_field_index_by_name(name);
case TAG_MPEG4_Form:
return Form_get_field_index_by_name(name);
case TAG_MPEG4_Group:
return Group_get_field_index_by_name(name);
case TAG_MPEG4_ImageTexture:
return ImageTexture_get_field_index_by_name(name);
case TAG_MPEG4_IndexedFaceSet:
return IndexedFaceSet_get_field_index_by_name(name);
case TAG_MPEG4_IndexedFaceSet2D:
return IndexedFaceSet2D_get_field_index_by_name(name);
case TAG_MPEG4_IndexedLineSet:
return IndexedLineSet_get_field_index_by_name(name);
case TAG_MPEG4_IndexedLineSet2D:
return IndexedLineSet2D_get_field_index_by_name(name);
case TAG_MPEG4_Inline:
return Inline_get_field_index_by_name(name);
case TAG_MPEG4_LOD:
return LOD_get_field_index_by_name(name);
case TAG_MPEG4_Layer2D:
return Layer2D_get_field_index_by_name(name);
case TAG_MPEG4_Layer3D:
return Layer3D_get_field_index_by_name(name);
case TAG_MPEG4_Layout:
return Layout_get_field_index_by_name(name);
case TAG_MPEG4_LineProperties:
return LineProperties_get_field_index_by_name(name);
case TAG_MPEG4_ListeningPoint:
return ListeningPoint_get_field_index_by_name(name);
case TAG_MPEG4_Material:
return Material_get_field_index_by_name(name);
case TAG_MPEG4_Material2D:
return Material2D_get_field_index_by_name(name);
case TAG_MPEG4_MovieTexture:
return MovieTexture_get_field_index_by_name(name);
case TAG_MPEG4_NavigationInfo:
return NavigationInfo_get_field_index_by_name(name);
case TAG_MPEG4_Normal:
return Normal_get_field_index_by_name(name);
case TAG_MPEG4_NormalInterpolator:
return NormalInterpolator_get_field_index_by_name(name);
case TAG_MPEG4_OrderedGroup:
return OrderedGroup_get_field_index_by_name(name);
case TAG_MPEG4_OrientationInterpolator:
return OrientationInterpolator_get_field_index_by_name(name);
case TAG_MPEG4_PixelTexture:
return PixelTexture_get_field_index_by_name(name);
case TAG_MPEG4_PlaneSensor:
return PlaneSensor_get_field_index_by_name(name);
case TAG_MPEG4_PlaneSensor2D:
return PlaneSensor2D_get_field_index_by_name(name);
case TAG_MPEG4_PointLight:
return PointLight_get_field_index_by_name(name);
case TAG_MPEG4_PointSet:
return PointSet_get_field_index_by_name(name);
case TAG_MPEG4_PointSet2D:
return PointSet2D_get_field_index_by_name(name);
case TAG_MPEG4_PositionInterpolator:
return PositionInterpolator_get_field_index_by_name(name);
case TAG_MPEG4_PositionInterpolator2D:
return PositionInterpolator2D_get_field_index_by_name(name);
case TAG_MPEG4_ProximitySensor2D:
return ProximitySensor2D_get_field_index_by_name(name);
case TAG_MPEG4_ProximitySensor:
return ProximitySensor_get_field_index_by_name(name);
case TAG_MPEG4_QuantizationParameter:
return QuantizationParameter_get_field_index_by_name(name);
case TAG_MPEG4_Rectangle:
return Rectangle_get_field_index_by_name(name);
case TAG_MPEG4_ScalarInterpolator:
return ScalarInterpolator_get_field_index_by_name(name);
case TAG_MPEG4_Script:
return Script_get_field_index_by_name(name);
case TAG_MPEG4_Shape:
return Shape_get_field_index_by_name(name);
case TAG_MPEG4_Sound:
return Sound_get_field_index_by_name(name);
case TAG_MPEG4_Sound2D:
return Sound2D_get_field_index_by_name(name);
case TAG_MPEG4_Sphere:
return Sphere_get_field_index_by_name(name);
case TAG_MPEG4_SphereSensor:
return SphereSensor_get_field_index_by_name(name);
case TAG_MPEG4_SpotLight:
return SpotLight_get_field_index_by_name(name);
case TAG_MPEG4_Switch:
return Switch_get_field_index_by_name(name);
case TAG_MPEG4_TermCap:
return TermCap_get_field_index_by_name(name);
case TAG_MPEG4_Text:
return Text_get_field_index_by_name(name);
case TAG_MPEG4_TextureCoordinate:
return TextureCoordinate_get_field_index_by_name(name);
case TAG_MPEG4_TextureTransform:
return TextureTransform_get_field_index_by_name(name);
case TAG_MPEG4_TimeSensor:
return TimeSensor_get_field_index_by_name(name);
case TAG_MPEG4_TouchSensor:
return TouchSensor_get_field_index_by_name(name);
case TAG_MPEG4_Transform:
return Transform_get_field_index_by_name(name);
case TAG_MPEG4_Transform2D:
return Transform2D_get_field_index_by_name(name);
case TAG_MPEG4_Valuator:
return Valuator_get_field_index_by_name(name);
case TAG_MPEG4_Viewpoint:
return Viewpoint_get_field_index_by_name(name);
case TAG_MPEG4_VisibilitySensor:
return VisibilitySensor_get_field_index_by_name(name);
case TAG_MPEG4_Viseme:
return Viseme_get_field_index_by_name(name);
case TAG_MPEG4_WorldInfo:
return WorldInfo_get_field_index_by_name(name);
case TAG_MPEG4_AcousticMaterial:
return AcousticMaterial_get_field_index_by_name(name);
case TAG_MPEG4_AcousticScene:
return AcousticScene_get_field_index_by_name(name);
case TAG_MPEG4_ApplicationWindow:
return ApplicationWindow_get_field_index_by_name(name);
case TAG_MPEG4_BAP:
return BAP_get_field_index_by_name(name);
case TAG_MPEG4_BDP:
return BDP_get_field_index_by_name(name);
case TAG_MPEG4_Body:
return Body_get_field_index_by_name(name);
case TAG_MPEG4_BodyDefTable:
return BodyDefTable_get_field_index_by_name(name);
case TAG_MPEG4_BodySegmentConnectionHint:
return BodySegmentConnectionHint_get_field_index_by_name(name);
case TAG_MPEG4_DirectiveSound:
return DirectiveSound_get_field_index_by_name(name);
case TAG_MPEG4_Hierarchical3DMesh:
return Hierarchical3DMesh_get_field_index_by_name(name);
case TAG_MPEG4_MaterialKey:
return MaterialKey_get_field_index_by_name(name);
case TAG_MPEG4_PerceptualParameters:
return PerceptualParameters_get_field_index_by_name(name);
case TAG_MPEG4_TemporalTransform:
return TemporalTransform_get_field_index_by_name(name);
case TAG_MPEG4_TemporalGroup:
return TemporalGroup_get_field_index_by_name(name);
case TAG_MPEG4_ServerCommand:
return ServerCommand_get_field_index_by_name(name);
case TAG_MPEG4_InputSensor:
return InputSensor_get_field_index_by_name(name);
case TAG_MPEG4_MatteTexture:
return MatteTexture_get_field_index_by_name(name);
case TAG_MPEG4_MediaBuffer:
return MediaBuffer_get_field_index_by_name(name);
case TAG_MPEG4_MediaControl:
return MediaControl_get_field_index_by_name(name);
case TAG_MPEG4_MediaSensor:
return MediaSensor_get_field_index_by_name(name);
case TAG_MPEG4_BitWrapper:
return BitWrapper_get_field_index_by_name(name);
case TAG_MPEG4_CoordinateInterpolator4D:
return CoordinateInterpolator4D_get_field_index_by_name(name);
case TAG_MPEG4_DepthImage:
return DepthImage_get_field_index_by_name(name);
case TAG_MPEG4_FFD:
return FFD_get_field_index_by_name(name);
case TAG_MPEG4_Implicit:
return Implicit_get_field_index_by_name(name);
case TAG_MPEG4_XXLFM_Appearance:
return XXLFM_Appearance_get_field_index_by_name(name);
case TAG_MPEG4_XXLFM_BlendList:
return XXLFM_BlendList_get_field_index_by_name(name);
case TAG_MPEG4_XXLFM_FrameList:
return XXLFM_FrameList_get_field_index_by_name(name);
case TAG_MPEG4_XXLFM_LightMap:
return XXLFM_LightMap_get_field_index_by_name(name);
case TAG_MPEG4_XXLFM_SurfaceMapList:
return XXLFM_SurfaceMapList_get_field_index_by_name(name);
case TAG_MPEG4_XXLFM_ViewMapList:
return XXLFM_ViewMapList_get_field_index_by_name(name);
case TAG_MPEG4_MeshGrid:
return MeshGrid_get_field_index_by_name(name);
case TAG_MPEG4_NonLinearDeformer:
return NonLinearDeformer_get_field_index_by_name(name);
case TAG_MPEG4_NurbsCurve:
return NurbsCurve_get_field_index_by_name(name);
case TAG_MPEG4_NurbsCurve2D:
return NurbsCurve2D_get_field_index_by_name(name);
case TAG_MPEG4_NurbsSurface:
return NurbsSurface_get_field_index_by_name(name);
case TAG_MPEG4_OctreeImage:
return OctreeImage_get_field_index_by_name(name);
case TAG_MPEG4_XXParticles:
return XXParticles_get_field_index_by_name(name);
case TAG_MPEG4_XXParticleInitBox:
return XXParticleInitBox_get_field_index_by_name(name);
case TAG_MPEG4_XXPlanarObstacle:
return XXPlanarObstacle_get_field_index_by_name(name);
case TAG_MPEG4_XXPointAttractor:
return XXPointAttractor_get_field_index_by_name(name);
case TAG_MPEG4_PointTexture:
return PointTexture_get_field_index_by_name(name);
case TAG_MPEG4_PositionAnimator:
return PositionAnimator_get_field_index_by_name(name);
case TAG_MPEG4_PositionAnimator2D:
return PositionAnimator2D_get_field_index_by_name(name);
case TAG_MPEG4_PositionInterpolator4D:
return PositionInterpolator4D_get_field_index_by_name(name);
case TAG_MPEG4_ProceduralTexture:
return ProceduralTexture_get_field_index_by_name(name);
case TAG_MPEG4_Quadric:
return Quadric_get_field_index_by_name(name);
case TAG_MPEG4_SBBone:
return SBBone_get_field_index_by_name(name);
case TAG_MPEG4_SBMuscle:
return SBMuscle_get_field_index_by_name(name);
case TAG_MPEG4_SBSegment:
return SBSegment_get_field_index_by_name(name);
case TAG_MPEG4_SBSite:
return SBSite_get_field_index_by_name(name);
case TAG_MPEG4_SBSkinnedModel:
return SBSkinnedModel_get_field_index_by_name(name);
case TAG_MPEG4_SBVCAnimation:
return SBVCAnimation_get_field_index_by_name(name);
case TAG_MPEG4_ScalarAnimator:
return ScalarAnimator_get_field_index_by_name(name);
case TAG_MPEG4_SimpleTexture:
return SimpleTexture_get_field_index_by_name(name);
case TAG_MPEG4_SolidRep:
return SolidRep_get_field_index_by_name(name);
case TAG_MPEG4_SubdivisionSurface:
return SubdivisionSurface_get_field_index_by_name(name);
case TAG_MPEG4_SubdivSurfaceSector:
return SubdivSurfaceSector_get_field_index_by_name(name);
case TAG_MPEG4_WaveletSubdivisionSurface:
return WaveletSubdivisionSurface_get_field_index_by_name(name);
case TAG_MPEG4_Clipper2D:
return Clipper2D_get_field_index_by_name(name);
case TAG_MPEG4_ColorTransform:
return ColorTransform_get_field_index_by_name(name);
case TAG_MPEG4_Ellipse:
return Ellipse_get_field_index_by_name(name);
case TAG_MPEG4_LinearGradient:
return LinearGradient_get_field_index_by_name(name);
case TAG_MPEG4_PathLayout:
return PathLayout_get_field_index_by_name(name);
case TAG_MPEG4_RadialGradient:
return RadialGradient_get_field_index_by_name(name);
case TAG_MPEG4_SynthesizedTexture:
return SynthesizedTexture_get_field_index_by_name(name);
case TAG_MPEG4_TransformMatrix2D:
return TransformMatrix2D_get_field_index_by_name(name);
case TAG_MPEG4_Viewport:
return Viewport_get_field_index_by_name(name);
case TAG_MPEG4_XCurve2D:
return XCurve2D_get_field_index_by_name(name);
case TAG_MPEG4_XFontStyle:
return XFontStyle_get_field_index_by_name(name);
case TAG_MPEG4_XLineProperties:
return XLineProperties_get_field_index_by_name(name);
case TAG_MPEG4_AdvancedAudioBuffer:
return AdvancedAudioBuffer_get_field_index_by_name(name);
case TAG_MPEG4_AudioChannelConfig:
return AudioChannelConfig_get_field_index_by_name(name);
case TAG_MPEG4_DepthImageV2:
return DepthImageV2_get_field_index_by_name(name);
case TAG_MPEG4_MorphShape:
return MorphShape_get_field_index_by_name(name);
case TAG_MPEG4_MultiTexture:
return MultiTexture_get_field_index_by_name(name);
case TAG_MPEG4_PointTextureV2:
return PointTextureV2_get_field_index_by_name(name);
case TAG_MPEG4_SBVCAnimationV2:
return SBVCAnimationV2_get_field_index_by_name(name);
case TAG_MPEG4_SimpleTextureV2:
return SimpleTextureV2_get_field_index_by_name(name);
case TAG_MPEG4_SurroundingSound:
return SurroundingSound_get_field_index_by_name(name);
case TAG_MPEG4_Transform3DAudio:
return Transform3DAudio_get_field_index_by_name(name);
case TAG_MPEG4_WideSound:
return WideSound_get_field_index_by_name(name);
case TAG_MPEG4_ScoreShape:
return ScoreShape_get_field_index_by_name(name);
case TAG_MPEG4_MusicScore:
return MusicScore_get_field_index_by_name(name);
case TAG_MPEG4_FootPrintSetNode:
return FootPrintSetNode_get_field_index_by_name(name);
case TAG_MPEG4_FootPrintNode:
return FootPrintNode_get_field_index_by_name(name);
case TAG_MPEG4_BuildingPartNode:
return BuildingPartNode_get_field_index_by_name(name);
case TAG_MPEG4_RoofNode:
return RoofNode_get_field_index_by_name(name);
case TAG_MPEG4_FacadeNode:
return FacadeNode_get_field_index_by_name(name);
case TAG_MPEG4_Shadow:
return Shadow_get_field_index_by_name(name);
case TAG_MPEG4_CacheTexture:
return CacheTexture_get_field_index_by_name(name);
case TAG_MPEG4_EnvironmentTest:
return EnvironmentTest_get_field_index_by_name(name);
case TAG_MPEG4_KeyNavigator:
return KeyNavigator_get_field_index_by_name(name);
case TAG_MPEG4_SpacePartition:
return SpacePartition_get_field_index_by_name(name);
case TAG_MPEG4_Storage:
return Storage_get_field_index_by_name(name);
default:
return -1;
}
}
#endif