LCOV - code coverage report
Current view: top level - compositor - compositor_node_init.c (source / functions) Hit Total Coverage
Test: coverage.info Lines: 396 411 96.4 %
Date: 2021-04-29 23:48:07 Functions: 3 3 100.0 %

          Line data    Source code
       1             : /*
       2             :  *                      GPAC - Multimedia Framework C SDK
       3             :  *
       4             :  *                      Authors: Jean Le Feuvre
       5             :  *                      Copyright (c) Telecom ParisTech 2000-2012
       6             :  *                                      All rights reserved
       7             :  *
       8             :  *  This file is part of GPAC / Scene Compositor sub-project
       9             :  *
      10             :  *  GPAC is free software; you can redistribute it and/or modify
      11             :  *  it under the terms of the GNU Lesser General Public License as published by
      12             :  *  the Free Software Foundation; either version 2, or (at your option)
      13             :  *  any later version.
      14             :  *
      15             :  *  GPAC is distributed in the hope that it will be useful,
      16             :  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
      17             :  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      18             :  *  GNU Lesser General Public License for more details.
      19             :  *
      20             :  *  You should have received a copy of the GNU Lesser General Public
      21             :  *  License along with this library; see the file COPYING.  If not, write to
      22             :  *  the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
      23             :  *
      24             :  */
      25             : 
      26             : #include "nodes_stacks.h"
      27             : 
      28             : #include <gpac/nodes_mpeg4.h>
      29             : #include <gpac/nodes_x3d.h>
      30             : 
      31             : 
      32             : 
      33           6 : void compositor_init_afx_node(GF_Compositor *compositor, GF_Node *node, MFURL *url)
      34             : {
      35           6 :         GF_MediaObject *mo = gf_mo_register(node, url, GF_FALSE, GF_FALSE);
      36           6 :         if (!mo) {
      37           6 :                 GF_LOG(GF_LOG_WARNING, GF_LOG_COMPOSE, ("[Compositor] AFX Decoder not found for node %s - node may not be completely/correctly rendered\n", gf_node_get_class_name(node)));
      38             :         }
      39             : #ifndef GPAC_DISABLE_VRML
      40           6 :         if (gf_node_get_tag(node)==TAG_MPEG4_BitWrapper) {
      41           6 :                 compositor_init_bitwrapper(compositor, node);
      42             :         }
      43             : #endif
      44           6 : }
      45             : 
      46       31188 : void gf_sc_on_node_init(GF_Compositor *compositor, GF_Node *node)
      47             : {
      48       31188 :         switch (gf_node_get_tag(node)) {
      49             : #ifndef GPAC_DISABLE_VRML
      50         217 :         case TAG_MPEG4_AnimationStream:
      51         217 :                 compositor_init_animationstream(compositor, node);
      52         217 :                 break;
      53           5 :         case TAG_MPEG4_AudioBuffer:
      54           5 :                 compositor_init_audiobuffer(compositor, node);
      55           5 :                 break;
      56          16 :         case TAG_MPEG4_AudioSource:
      57          16 :                 compositor_init_audiosource(compositor, node);
      58          16 :                 break;
      59         218 :         case TAG_MPEG4_AudioClip:
      60             : #ifndef GPAC_DISABLE_X3D
      61             :         case TAG_X3D_AudioClip:
      62             : #endif
      63         218 :                 compositor_init_audioclip(compositor, node);
      64         218 :                 break;
      65         536 :         case TAG_MPEG4_TimeSensor:
      66             : #ifndef GPAC_DISABLE_X3D
      67             :         case TAG_X3D_TimeSensor:
      68             : #endif
      69         536 :                 compositor_init_timesensor(compositor, node);
      70         536 :                 break;
      71         107 :         case TAG_MPEG4_ImageTexture:
      72             : #ifndef GPAC_DISABLE_X3D
      73             :         case TAG_X3D_ImageTexture:
      74             : #endif
      75             :         case TAG_MPEG4_CacheTexture:
      76         107 :                 compositor_init_imagetexture(compositor, node);
      77         107 :                 break;
      78             : 
      79          10 :         case TAG_MPEG4_PixelTexture:
      80             : #ifndef GPAC_DISABLE_X3D
      81             :         case TAG_X3D_PixelTexture:
      82             : #endif
      83          10 :                 compositor_init_pixeltexture(compositor, node);
      84          10 :                 break;
      85         251 :         case TAG_MPEG4_MovieTexture:
      86             : #ifndef GPAC_DISABLE_X3D
      87             :         case TAG_X3D_MovieTexture:
      88             : #endif
      89         251 :                 compositor_init_movietexture(compositor, node);
      90         251 :                 break;
      91             : 
      92         622 :         case TAG_MPEG4_Background2D:
      93         622 :                 compositor_init_background2d(compositor, node);
      94         622 :                 break;
      95         272 :         case TAG_MPEG4_Bitmap:
      96         272 :                 compositor_init_bitmap(compositor, node);
      97         272 :                 break;
      98         430 :         case TAG_MPEG4_ColorTransform:
      99         430 :                 compositor_init_colortransform(compositor, node);
     100         430 :                 break;
     101         904 :         case TAG_MPEG4_Circle:
     102         904 :                 compositor_init_circle(compositor, node);
     103         904 :                 break;
     104         567 :         case TAG_MPEG4_Curve2D:
     105         567 :                 compositor_init_curve2d(compositor, node);
     106         567 :                 break;
     107          12 :         case TAG_MPEG4_XCurve2D:
     108          12 :                 compositor_init_curve2d(compositor, node);
     109          12 :                 break;
     110           4 :         case TAG_MPEG4_Ellipse:
     111           4 :                 compositor_init_ellipse(compositor, node);
     112           4 :                 break;
     113         672 :         case TAG_MPEG4_OrderedGroup:
     114         672 :                 compositor_init_orderedgroup(compositor, node);
     115         672 :                 break;
     116          18 :         case TAG_MPEG4_PointSet2D:
     117          18 :                 compositor_init_pointset2d(compositor, node);
     118          18 :                 break;
     119        4753 :         case TAG_MPEG4_Transform2D:
     120        4753 :                 compositor_init_transform2d(compositor, node);
     121        4753 :                 break;
     122         869 :         case TAG_MPEG4_TransformMatrix2D:
     123         869 :                 compositor_init_transformmatrix2d(compositor, node);
     124         869 :                 break;
     125         540 :         case TAG_MPEG4_LineProperties:
     126         540 :                 compositor_init_lineprops(compositor, node);
     127         540 :                 break;
     128         443 :         case TAG_MPEG4_XLineProperties:
     129         443 :                 compositor_init_lineprops(compositor, node);
     130         443 :                 break;
     131          51 :         case TAG_MPEG4_Viewport:
     132          51 :                 compositor_init_viewport(compositor, node);
     133          51 :                 break;
     134             : 
     135          49 :         case TAG_MPEG4_IndexedLineSet2D:
     136          49 :                 compositor_init_indexed_line_set2d(compositor, node);
     137          49 :                 break;
     138          93 :         case TAG_MPEG4_IndexedFaceSet2D:
     139          93 :                 compositor_init_indexed_face_set2d(compositor, node);
     140          93 :                 break;
     141             : 
     142         228 :         case TAG_MPEG4_Sound2D:
     143         228 :                 compositor_init_sound2d(compositor, node);
     144         228 :                 break;
     145             : 
     146          74 :         case TAG_MPEG4_LinearGradient:
     147          74 :                 compositor_init_linear_gradient(compositor, node);
     148          74 :                 break;
     149         434 :         case TAG_MPEG4_RadialGradient:
     150         434 :                 compositor_init_radial_gradient(compositor, node);
     151         434 :                 break;
     152             : 
     153          30 :         case TAG_MPEG4_CompositeTexture2D:
     154          30 :                 compositor_init_compositetexture2d(compositor, node);
     155          30 :                 break;
     156           0 :         case TAG_MPEG4_MatteTexture:
     157           0 :                 compositor_init_mattetexture(compositor, node);
     158           0 :                 break;
     159             : 
     160          48 :         case TAG_MPEG4_Form:
     161          48 :                 compositor_init_form(compositor, node);
     162          48 :                 break;
     163         384 :         case TAG_MPEG4_Layer2D:
     164         384 :                 compositor_init_layer2d(compositor, node);
     165         384 :                 break;
     166         170 :         case TAG_MPEG4_Layout:
     167         170 :                 compositor_init_layout(compositor, node);
     168         170 :                 break;
     169           8 :         case TAG_MPEG4_PathLayout:
     170           8 :                 compositor_init_path_layout(compositor, node);
     171           8 :                 break;
     172             : 
     173             : 
     174             :         /*sensors*/
     175           6 :         case TAG_MPEG4_Anchor:
     176             : #ifndef GPAC_DISABLE_X3D
     177             :         case TAG_X3D_Anchor:
     178             : #endif
     179           6 :                 compositor_init_anchor(compositor, node);
     180           6 :                 break;
     181           9 :         case TAG_MPEG4_DiscSensor:
     182           9 :                 compositor_init_disc_sensor(compositor, node);
     183           9 :                 break;
     184          39 :         case TAG_MPEG4_PlaneSensor2D:
     185          39 :                 compositor_init_plane_sensor2d(compositor, node);
     186          39 :                 break;
     187           8 :         case TAG_MPEG4_ProximitySensor2D:
     188           8 :                 compositor_init_proximity_sensor2d(compositor, node);
     189           8 :                 break;
     190        1382 :         case TAG_MPEG4_TouchSensor:
     191             : #ifndef GPAC_DISABLE_X3D
     192             :         case TAG_X3D_TouchSensor:
     193             : #endif
     194        1382 :                 compositor_init_touch_sensor(compositor, node);
     195        1382 :                 break;
     196             : 
     197         135 :         case TAG_MPEG4_Group:
     198             : #ifndef GPAC_DISABLE_X3D
     199             :         case TAG_X3D_Group:
     200             : #endif
     201         135 :                 compositor_init_group(compositor, node);
     202         135 :                 break;
     203         391 :         case TAG_MPEG4_Rectangle:
     204             : #ifndef GPAC_DISABLE_X3D
     205             :         case TAG_X3D_Rectangle2D:
     206             : #endif
     207         391 :                 compositor_init_rectangle(compositor, node);
     208         391 :                 break;
     209        4657 :         case TAG_MPEG4_Shape:
     210             : #ifndef GPAC_DISABLE_X3D
     211             :         case TAG_X3D_Shape:
     212             : #endif
     213        4657 :                 compositor_init_shape(compositor, node);
     214        4657 :                 break;
     215         431 :         case TAG_MPEG4_Switch:
     216             : #ifndef GPAC_DISABLE_X3D
     217             :         case TAG_X3D_Switch:
     218             : #endif
     219         431 :                 compositor_init_switch(compositor, node);
     220         431 :                 break;
     221             : 
     222        1005 :         case TAG_MPEG4_Text:
     223             : #ifndef GPAC_DISABLE_X3D
     224             :         case TAG_X3D_Text:
     225             : #endif
     226        1005 :                 compositor_init_text(compositor, node);
     227        1005 :                 break;
     228             : 
     229             : #ifndef GPAC_DISABLE_3D
     230          11 :         case TAG_MPEG4_Background:
     231             : #ifndef GPAC_DISABLE_X3D
     232             :         case TAG_X3D_Background:
     233             : #endif
     234          11 :                 compositor_init_background(compositor, node);
     235          11 :                 break;
     236           7 :         case TAG_MPEG4_CylinderSensor:
     237             : #ifndef GPAC_DISABLE_X3D
     238             :         case TAG_X3D_CylinderSensor:
     239             : #endif
     240           7 :                 compositor_init_cylinder_sensor(compositor, node);
     241           7 :                 break;
     242           7 :         case TAG_MPEG4_PlaneSensor:
     243             : #ifndef GPAC_DISABLE_X3D
     244             :         case TAG_X3D_PlaneSensor:
     245             : #endif
     246           7 :                 compositor_init_plane_sensor(compositor, node);
     247           7 :                 break;
     248           1 :         case TAG_MPEG4_ProximitySensor:
     249             : #ifndef GPAC_DISABLE_X3D
     250             :         case TAG_X3D_ProximitySensor:
     251             : #endif
     252           1 :                 compositor_init_proximity_sensor(compositor, node);
     253           1 :                 break;
     254           7 :         case TAG_MPEG4_SphereSensor:
     255             : #ifndef GPAC_DISABLE_X3D
     256             :         case TAG_X3D_SphereSensor:
     257             : #endif
     258           7 :                 compositor_init_sphere_sensor(compositor, node);
     259           7 :                 break;
     260           7 :         case TAG_MPEG4_VisibilitySensor:
     261             : #ifndef GPAC_DISABLE_X3D
     262             :         case TAG_X3D_VisibilitySensor:
     263             : #endif
     264           7 :                 compositor_init_visibility_sensor(compositor, node);
     265           7 :                 break;
     266          55 :         case TAG_MPEG4_Box:
     267             : #ifndef GPAC_DISABLE_X3D
     268             :         case TAG_X3D_Box:
     269             : #endif
     270          55 :                 compositor_init_box(compositor, node);
     271          55 :                 break;
     272          12 :         case TAG_MPEG4_Cone:
     273             : #ifndef GPAC_DISABLE_X3D
     274             :         case TAG_X3D_Cone:
     275             : #endif
     276          12 :                 compositor_init_cone(compositor, node);
     277          12 :                 break;
     278          21 :         case TAG_MPEG4_Cylinder:
     279             : #ifndef GPAC_DISABLE_X3D
     280             :         case TAG_X3D_Cylinder:
     281             : #endif
     282          21 :                 compositor_init_cylinder(compositor, node);
     283          21 :                 break;
     284           7 :         case TAG_MPEG4_ElevationGrid:
     285             : #ifndef GPAC_DISABLE_X3D
     286             :         case TAG_X3D_ElevationGrid:
     287             : #endif
     288           7 :                 compositor_init_elevation_grid(compositor, node);
     289           7 :                 break;
     290           7 :         case TAG_MPEG4_Extrusion:
     291             : #ifndef GPAC_DISABLE_X3D
     292             :         case TAG_X3D_Extrusion:
     293             : #endif
     294           7 :                 compositor_init_extrusion(compositor, node);
     295           7 :                 break;
     296          33 :         case TAG_MPEG4_IndexedFaceSet:
     297             : #ifndef GPAC_DISABLE_X3D
     298             :         case TAG_X3D_IndexedFaceSet:
     299             : #endif
     300          33 :                 compositor_init_ifs(compositor, node);
     301          33 :                 break;
     302           8 :         case TAG_MPEG4_IndexedLineSet:
     303             : #ifndef GPAC_DISABLE_X3D
     304             :         case TAG_X3D_IndexedLineSet:
     305             : #endif
     306           8 :                 compositor_init_ils(compositor, node);
     307           8 :                 break;
     308           7 :         case TAG_MPEG4_PointSet:
     309             : #ifndef GPAC_DISABLE_X3D
     310             :         case TAG_X3D_PointSet:
     311             : #endif
     312           7 :                 compositor_init_point_set(compositor, node);
     313           7 :                 break;
     314          19 :         case TAG_MPEG4_Sphere:
     315             : #ifndef GPAC_DISABLE_X3D
     316             :         case TAG_X3D_Sphere:
     317             : #endif
     318          19 :                 compositor_init_sphere(compositor, node);
     319          19 :                 break;
     320           3 :         case TAG_MPEG4_Billboard:
     321             : #ifndef GPAC_DISABLE_X3D
     322             :         case TAG_X3D_Billboard:
     323             : #endif
     324           3 :                 compositor_init_billboard(compositor, node);
     325           3 :                 break;
     326           8 :         case TAG_MPEG4_Collision:
     327             : #ifndef GPAC_DISABLE_X3D
     328             :         case TAG_X3D_Collision:
     329             : #endif
     330           8 :                 compositor_init_collision(compositor, node);
     331           8 :                 break;
     332           1 :         case TAG_MPEG4_LOD:
     333             : #ifndef GPAC_DISABLE_X3D
     334             :         case TAG_X3D_LOD:
     335             : #endif
     336           1 :                 compositor_init_lod(compositor, node);
     337           1 :                 break;
     338         184 :         case TAG_MPEG4_Transform:
     339             : #ifndef GPAC_DISABLE_X3D
     340             :         case TAG_X3D_Transform:
     341             : #endif
     342         184 :                 compositor_init_transform(compositor, node);
     343         184 :                 break;
     344           2 :         case TAG_MPEG4_Sound:
     345             : #ifndef GPAC_DISABLE_X3D
     346             :         case TAG_X3D_Sound:
     347             : #endif
     348           2 :                 compositor_init_sound(compositor, node);
     349           2 :                 break;
     350          61 :         case TAG_MPEG4_Viewpoint:
     351             : #ifndef GPAC_DISABLE_X3D
     352             :         case TAG_X3D_Viewpoint:
     353             : #endif
     354          61 :                 compositor_init_viewpoint(compositor, node);
     355          61 :                 break;
     356          28 :         case TAG_MPEG4_NavigationInfo:
     357             : #ifndef GPAC_DISABLE_X3D
     358             :         case TAG_X3D_NavigationInfo:
     359             : #endif
     360          28 :                 compositor_init_navigation_info(compositor, node);
     361          28 :                 break;
     362           4 :         case TAG_MPEG4_Fog:
     363             : #ifndef GPAC_DISABLE_X3D
     364             :         case TAG_X3D_Fog:
     365             : #endif
     366           4 :                 compositor_init_fog(compositor, node);
     367           4 :                 break;
     368           8 :         case TAG_MPEG4_DirectionalLight:
     369             : #ifndef GPAC_DISABLE_X3D
     370             :         case TAG_X3D_DirectionalLight:
     371             : #endif
     372           8 :                 compositor_init_directional_light(compositor, node);
     373           8 :                 break;
     374           1 :         case TAG_MPEG4_PointLight:
     375             : #ifndef GPAC_DISABLE_X3D
     376             :         case TAG_X3D_PointLight:
     377             : #endif
     378           1 :                 compositor_init_point_light(compositor, node);
     379           1 :                 break;
     380           1 :         case TAG_MPEG4_SpotLight:
     381             : #ifndef GPAC_DISABLE_X3D
     382             :         case TAG_X3D_SpotLight:
     383             : #endif
     384           1 :                 compositor_init_spot_light(compositor, node);
     385           1 :                 break;
     386             : 
     387           7 :         case TAG_MPEG4_NonLinearDeformer:
     388           7 :                 compositor_init_non_linear_deformer(compositor, node);
     389           7 :                 break;
     390             : 
     391          15 :         case TAG_MPEG4_Layer3D:
     392          15 :                 compositor_init_layer3d(compositor, node);
     393          15 :                 break;
     394           2 :         case TAG_MPEG4_CompositeTexture3D:
     395           2 :                 compositor_init_compositetexture3d(compositor, node);
     396           2 :                 break;
     397             : 
     398           9 :         case TAG_MPEG4_EnvironmentTest:
     399           9 :                 compositor_init_envtest(compositor, node);
     400           9 :                 break;
     401             : #endif
     402             : 
     403             : 
     404             :                 /*X3D nodes*/
     405             : #ifndef GPAC_DISABLE_X3D
     406           1 :         case TAG_X3D_StaticGroup:
     407           1 :                 compositor_init_static_group(compositor, node);
     408           1 :                 break;
     409           1 :         case TAG_X3D_Disk2D:
     410           1 :                 compositor_init_disk2d(compositor, node);
     411           1 :                 break;
     412           2 :         case TAG_X3D_Arc2D:
     413             :         case TAG_X3D_ArcClose2D:
     414           2 :                 compositor_init_arc2d(compositor, node);
     415           2 :                 break;
     416           1 :         case TAG_X3D_Polyline2D:
     417           1 :                 compositor_init_polyline2d(compositor, node);
     418           1 :                 break;
     419           1 :         case TAG_X3D_TriangleSet2D:
     420           1 :                 compositor_init_triangle_set2d(compositor, node);
     421           1 :                 break;
     422             : 
     423             : #ifndef GPAC_DISABLE_3D
     424           1 :         case TAG_X3D_Polypoint2D:
     425           1 :                 compositor_init_polypoint2d(compositor, node);
     426           1 :                 break;
     427           1 :         case TAG_X3D_LineSet:
     428           1 :                 compositor_init_lineset(compositor, node);
     429           1 :                 break;
     430           1 :         case TAG_X3D_TriangleSet:
     431           1 :                 compositor_init_triangle_set(compositor, node);
     432           1 :                 break;
     433           1 :         case TAG_X3D_TriangleStripSet:
     434           1 :                 compositor_init_triangle_strip_set(compositor, node);
     435           1 :                 break;
     436           1 :         case TAG_X3D_TriangleFanSet:
     437           1 :                 compositor_init_triangle_fan_set(compositor, node);
     438           1 :                 break;
     439           1 :         case TAG_X3D_IndexedTriangleFanSet:
     440           1 :                 compositor_init_indexed_triangle_fan_set(compositor, node);
     441           1 :                 break;
     442           1 :         case TAG_X3D_IndexedTriangleStripSet:
     443           1 :                 compositor_init_indexed_triangle_strip_set(compositor, node);
     444           1 :                 break;
     445           1 :         case TAG_X3D_IndexedTriangleSet:
     446           1 :                 compositor_init_indexed_triangle_set(compositor, node);
     447           1 :                 break;
     448             : #endif
     449             : 
     450             : #endif /*GPAC_DISABLE_X3D*/
     451             : 
     452         359 :         case TAG_ProtoNode:
     453         359 :                 gf_sc_init_hardcoded_proto(compositor, node);
     454         359 :                 break;
     455             : 
     456           0 :         case TAG_MPEG4_SBVCAnimation:
     457           0 :                 compositor_init_afx_node(compositor, node, & ((M_SBVCAnimation *)node)->url);
     458           0 :                 break;
     459           6 :         case TAG_MPEG4_BitWrapper:
     460           6 :                 compositor_init_afx_node(compositor, node, & ((M_BitWrapper *)node)->url);
     461           6 :                 break;
     462             : 
     463             : #endif /*GPAC_DISABLE_VRML*/
     464             : 
     465             : #ifndef GPAC_DISABLE_SVG
     466             :         /* SVG Part */
     467          51 :         case TAG_SVG_svg:
     468          51 :                 compositor_init_svg_svg(compositor, node);
     469          51 :                 break;
     470         866 :         case TAG_SVG_g:
     471         866 :                 compositor_init_svg_g(compositor, node);
     472         866 :                 break;
     473          20 :         case TAG_SVG_switch:
     474          20 :                 compositor_init_svg_switch(compositor, node);
     475          20 :                 break;
     476          75 :         case TAG_SVG_rect:
     477          75 :                 compositor_init_svg_rect(compositor, node);
     478          75 :                 break;
     479         774 :         case TAG_SVG_path:
     480         774 :                 compositor_init_svg_path(compositor, node);
     481         774 :                 break;
     482          23 :         case TAG_SVG_circle:
     483          23 :                 compositor_init_svg_circle(compositor, node);
     484          23 :                 break;
     485          26 :         case TAG_SVG_ellipse:
     486          26 :                 compositor_init_svg_ellipse(compositor, node);
     487          26 :                 break;
     488          19 :         case TAG_SVG_line:
     489          19 :                 compositor_init_svg_line(compositor, node);
     490          19 :                 break;
     491          12 :         case TAG_SVG_polyline:
     492          12 :                 compositor_init_svg_polyline(compositor, node);
     493          12 :                 break;
     494          31 :         case TAG_SVG_polygon:
     495          31 :                 compositor_init_svg_polygon(compositor, node);
     496          31 :                 break;
     497           5 :         case TAG_SVG_a:
     498           5 :                 compositor_init_svg_a(compositor, node);
     499           5 :                 break;
     500             : 
     501           3 :         case TAG_SVG_linearGradient:
     502           3 :                 compositor_init_svg_linearGradient(compositor, node);
     503           3 :                 break;
     504           1 :         case TAG_SVG_radialGradient:
     505           1 :                 compositor_init_svg_radialGradient(compositor, node);
     506           1 :                 break;
     507           3 :         case TAG_SVG_solidColor:
     508           3 :                 compositor_init_svg_solidColor(compositor, node);
     509           3 :                 break;
     510           7 :         case TAG_SVG_stop:
     511           7 :                 compositor_init_svg_stop(compositor, node);
     512           7 :                 break;
     513             : 
     514         202 :         case TAG_SVG_text:
     515         202 :                 compositor_init_svg_text(compositor, node);
     516         202 :                 break;
     517          56 :         case TAG_SVG_tspan:
     518          56 :                 compositor_init_svg_tspan(compositor, node);
     519          56 :                 break;
     520          17 :         case TAG_SVG_textArea:
     521          17 :                 compositor_init_svg_textarea(compositor, node);
     522          17 :                 break;
     523          17 :         case TAG_SVG_tbreak:
     524          17 :                 compositor_init_svg_tbreak(compositor, node);
     525          17 :                 break;
     526             : 
     527          16 :         case TAG_SVG_image:
     528          16 :                 compositor_init_svg_image(compositor, node);
     529          16 :                 break;
     530           2 :         case TAG_SVG_video:
     531           2 :                 compositor_init_svg_video(compositor, node);
     532           2 :                 break;
     533           2 :         case TAG_SVG_audio:
     534           2 :                 compositor_init_svg_audio(compositor, node, GF_FALSE);
     535           2 :                 break;
     536             : 
     537             :         /*SVG font support - note that we initialize the font when parsing the font-face element, not the font element*/
     538           2 :         case TAG_SVG_font_face:
     539           2 :                 compositor_init_svg_font(compositor, node);
     540           2 :                 break;
     541           8 :         case TAG_SVG_missing_glyph:
     542             :         case TAG_SVG_glyph:
     543           8 :                 compositor_init_svg_glyph(compositor, node);
     544           8 :                 break;
     545           1 :         case TAG_SVG_font_face_uri:
     546           1 :                 compositor_init_svg_font_face_uri(compositor, node);
     547           1 :                 break;
     548             : 
     549          23 :         case TAG_SVG_use:
     550          23 :                 compositor_init_svg_use(compositor, node);
     551          23 :                 break;
     552           7 :         case TAG_SVG_animation:
     553           7 :                 compositor_init_svg_animation(compositor, node);
     554           7 :                 break;
     555           1 :         case TAG_SVG_foreignObject:
     556           1 :                 compositor_init_svg_foreign_object(compositor, node);
     557           1 :                 break;
     558             : 
     559             :         case TAG_SVG_filter:
     560             : #ifdef GPAC_ENABLE_SVG_FILTERS
     561             :                 compositor_init_svg_filter(compositor, node);
     562             : #endif
     563             :                 break;
     564             : 
     565           0 :         case TAG_LSR_updates:
     566           0 :                 compositor_init_svg_updates(compositor, node);
     567           0 :                 break;
     568             : #endif
     569             : 
     570        6897 :         default:
     571        6897 :                 GF_LOG(GF_LOG_DEBUG, GF_LOG_COMPOSE, ("[Compositor] node %s will not be rendered\n", gf_node_get_class_name(node)));
     572             :                 break;
     573             :         }
     574       31188 : }
     575             : 
     576             : GF_EXPORT
     577       78114 : void gf_sc_invalidate(GF_Compositor *compositor, GF_Node *byObj)
     578             : {
     579             : 
     580       78114 :         if (!byObj) {
     581       18658 :                 gf_sc_next_frame_state(compositor, GF_SC_DRAW_FRAME);
     582       18658 :                 return;
     583             :         }
     584       59456 :         switch (gf_node_get_tag(byObj)) {
     585             : #ifndef GPAC_DISABLE_VRML
     586           8 :         case TAG_MPEG4_AnimationStream:
     587           8 :                 compositor_animationstream_modified(byObj);
     588           8 :                 break;
     589           1 :         case TAG_MPEG4_AudioBuffer:
     590           1 :                 compositor_audiobuffer_modified(byObj);
     591           1 :                 break;
     592           6 :         case TAG_MPEG4_AudioSource:
     593           6 :                 compositor_audiosource_modified(byObj);
     594           6 :                 break;
     595           4 :         case TAG_MPEG4_AudioClip:
     596             : #ifndef GPAC_DISABLE_X3D
     597             :         case TAG_X3D_AudioClip:
     598             : #endif
     599           4 :                 compositor_audioclip_modified(byObj);
     600           4 :                 break;
     601         325 :         case TAG_MPEG4_TimeSensor:
     602             : #ifndef GPAC_DISABLE_X3D
     603             :         case TAG_X3D_TimeSensor:
     604             : #endif
     605         325 :                 compositor_timesensor_modified(byObj);
     606         325 :                 break;
     607          14 :         case TAG_MPEG4_ImageTexture:
     608             : #ifndef GPAC_DISABLE_X3D
     609             :         case TAG_X3D_ImageTexture:
     610             : #endif
     611             :         case TAG_MPEG4_CacheTexture:
     612          14 :                 compositor_imagetexture_modified(byObj);
     613          14 :                 break;
     614             : 
     615         206 :         case TAG_MPEG4_MovieTexture:
     616             : #ifndef GPAC_DISABLE_X3D
     617             :         case TAG_X3D_MovieTexture:
     618             : #endif
     619         206 :                 compositor_movietexture_modified(byObj);
     620         206 :                 break;
     621             : 
     622         319 :         case TAG_MPEG4_Background2D:
     623         319 :                 compositor_background2d_modified(byObj);
     624         319 :                 break;
     625             : #ifndef GPAC_DISABLE_3D
     626           5 :         case TAG_MPEG4_Background:
     627             : #ifndef GPAC_DISABLE_X3D
     628             :         case TAG_X3D_Background:
     629             : #endif
     630           5 :                 compositor_background_modified(byObj);
     631           5 :                 break;
     632             : #endif
     633           8 :         case TAG_MPEG4_Layout:
     634           8 :                 compositor_layout_modified(compositor, byObj);
     635           8 :                 break;
     636           0 :         case TAG_MPEG4_EnvironmentTest:
     637           0 :                 compositor_envtest_modified(byObj);
     638           0 :                 break;
     639             : 
     640             : #endif /*GPAC_DISABLE_VRML*/
     641             : 
     642             : #ifndef GPAC_DISABLE_SVG
     643           0 :         case TAG_SVG_video:
     644           0 :                 compositor_svg_video_modified(compositor, byObj);
     645           0 :                 break;
     646             : #endif /*GPAC_DISABLE_SVG*/
     647             : 
     648       58560 :         default:
     649             :                 /*for all nodes, invalidate parent graph - note we do that for sensors as well to force recomputing
     650             :                 sensor list cached at grouping node level*/
     651       58560 :                 gf_node_dirty_set(byObj, 0, GF_TRUE);
     652       58560 :                 gf_sc_next_frame_state(compositor, GF_SC_DRAW_FRAME);
     653       58560 :                 break;
     654             :         }
     655             : }

Generated by: LCOV version 1.13