(root)/
libredwg-0.13/
test/
unit-testing/
light.c
       1  // stable
       2  #define DWG_TYPE DWG_TYPE_LIGHT
       3  #include "common.c"
       4  
       5  void
       6  api_process (dwg_object *obj)
       7  {
       8    int error, isnew;
       9    BITCODE_BL class_version;
      10    BITCODE_T name;
      11    BITCODE_BL type;
      12    BITCODE_B status;
      13    BITCODE_CMC light_color;
      14    BITCODE_B plot_glyph;
      15    BITCODE_BD intensity;
      16    BITCODE_3BD position;
      17    BITCODE_3BD target;
      18    BITCODE_BL attenuation_type;
      19    BITCODE_B use_attenuation_limits;
      20    BITCODE_BD attenuation_start_limit;
      21    BITCODE_BD attenuation_end_limit;
      22    BITCODE_BD hotspot_angle;
      23    BITCODE_BD falloff_angle;
      24    BITCODE_B cast_shadows;
      25    BITCODE_BL shadow_type;
      26    BITCODE_BS shadow_map_size;
      27    BITCODE_RC shadow_map_softness;
      28  
      29    BITCODE_B is_photometric;
      30    BITCODE_B has_photometric_data;
      31    BITCODE_B has_webfile;
      32    BITCODE_T webfile;
      33    BITCODE_BS physical_intensity_method;
      34    BITCODE_BD physical_intensity;
      35    BITCODE_BD illuminance_dist;
      36    BITCODE_BS lamp_color_type;
      37    BITCODE_BD lamp_color_temp;
      38    BITCODE_BS lamp_color_preset;
      39    BITCODE_BL lamp_color_rgb;
      40    BITCODE_3BD web_rotation;
      41    BITCODE_BS extlight_shape;
      42    BITCODE_BD extlight_length;
      43    BITCODE_BD extlight_width;
      44    BITCODE_BD extlight_radius;
      45    BITCODE_BS webfile_type;
      46    BITCODE_BS web_symetry;
      47    BITCODE_BS has_target_grip;
      48    BITCODE_BD web_flux;
      49    BITCODE_BD web_angle1;
      50    BITCODE_BD web_angle2;
      51    BITCODE_BD web_angle3;
      52    BITCODE_BD web_angle4;
      53    BITCODE_BD web_angle5;
      54    BITCODE_BS glyph_display_type;
      55  
      56    dwg_ent_light *light = dwg_object_to_LIGHT (obj);
      57  
      58    CHK_ENTITY_TYPE (light, LIGHT, class_version, BL);
      59    CHK_ENTITY_UTF8TEXT (light, LIGHT, name);
      60    CHK_ENTITY_TYPE (light, LIGHT, type, BL);
      61    CHK_ENTITY_MAX (light, LIGHT, type, BL, 3);
      62    CHK_ENTITY_TYPE (light, LIGHT, status, B);
      63    CHK_ENTITY_CMC (light, LIGHT, light_color);
      64    CHK_ENTITY_TYPE (light, LIGHT, plot_glyph, B);
      65    CHK_ENTITY_TYPE (light, LIGHT, intensity, BD); // max 100.0?
      66    CHK_ENTITY_3RD (light, LIGHT, position);
      67    CHK_ENTITY_3RD (light, LIGHT, target);
      68    CHK_ENTITY_TYPE (light, LIGHT, attenuation_type, BL);
      69    CHK_ENTITY_MAX (light, LIGHT, attenuation_type, BL, 2);
      70    CHK_ENTITY_TYPE (light, LIGHT, use_attenuation_limits, B);
      71    CHK_ENTITY_TYPE (light, LIGHT, attenuation_start_limit, BD);
      72    CHK_ENTITY_TYPE (light, LIGHT, attenuation_end_limit, BD);
      73    CHK_ENTITY_TYPE (light, LIGHT, hotspot_angle, BD);
      74    CHK_ENTITY_MAX (light, LIGHT, hotspot_angle, BD, MAX_ANGLE);
      75    CHK_ENTITY_TYPE (light, LIGHT, falloff_angle, BD);
      76    CHK_ENTITY_MAX (light, LIGHT, falloff_angle, BD, MAX_ANGLE);
      77    CHK_ENTITY_TYPE (light, LIGHT, cast_shadows, B);
      78    CHK_ENTITY_TYPE (light, LIGHT, shadow_type, BL);
      79    CHK_ENTITY_MAX (light, LIGHT, shadow_type, BL, 1);
      80    CHK_ENTITY_TYPE (light, LIGHT, shadow_map_size, BS);
      81    CHK_ENTITY_MAX (light, LIGHT, shadow_map_size, BS, 4096);
      82    CHK_ENTITY_TYPE (light, LIGHT, shadow_map_softness, RC);
      83    CHK_ENTITY_MAX (light, LIGHT, shadow_map_softness, RC, 10);
      84  
      85    CHK_ENTITY_TYPE (light, LIGHT, is_photometric, B);
      86    CHK_ENTITY_TYPE (light, LIGHT, has_photometric_data, B);
      87    if (is_photometric && has_photometric_data)
      88      {
      89        CHK_ENTITY_TYPE (light, LIGHT, has_webfile, B);
      90        CHK_ENTITY_UTF8TEXT (light, LIGHT, webfile);
      91        CHK_ENTITY_TYPE (light, LIGHT, physical_intensity_method, BS);
      92        CHK_ENTITY_TYPE (light, LIGHT, physical_intensity, BD);
      93        CHK_ENTITY_TYPE (light, LIGHT, illuminance_dist, BD);
      94        CHK_ENTITY_TYPE (light, LIGHT, lamp_color_type, BS);
      95        CHK_ENTITY_MAX (light, LIGHT, lamp_color_type, BS, 1);
      96        CHK_ENTITY_TYPE (light, LIGHT, lamp_color_temp, BD);
      97        CHK_ENTITY_TYPE (light, LIGHT, lamp_color_preset, BS);
      98        // CHK_ENTITY_TYPE (light, LIGHT, lamp_color_rgb, BL);
      99        CHK_ENTITY_3RD (light, LIGHT, web_rotation);
     100        CHK_ENTITY_TYPE (light, LIGHT, extlight_shape, BS);
     101        CHK_ENTITY_MAX (light, LIGHT, extlight_shape, BS, 4);
     102        CHK_ENTITY_TYPE (light, LIGHT, extlight_length, BD);
     103        CHK_ENTITY_TYPE (light, LIGHT, extlight_width, BD);
     104        CHK_ENTITY_TYPE (light, LIGHT, extlight_radius, BD);
     105        CHK_ENTITY_TYPE (light, LIGHT, webfile_type, BS);
     106        CHK_ENTITY_TYPE (light, LIGHT, web_symetry, BS);
     107        CHK_ENTITY_TYPE (light, LIGHT, has_target_grip, BS);
     108        CHK_ENTITY_MAX (light, LIGHT, has_target_grip, BS, 1);
     109        CHK_ENTITY_TYPE (light, LIGHT, web_flux, BD);
     110        CHK_ENTITY_TYPE (light, LIGHT, web_angle1, BD);
     111        CHK_ENTITY_TYPE (light, LIGHT, web_angle2, BD);
     112        CHK_ENTITY_TYPE (light, LIGHT, web_angle3, BD);
     113        CHK_ENTITY_TYPE (light, LIGHT, web_angle4, BD);
     114        CHK_ENTITY_TYPE (light, LIGHT, web_angle5, BD);
     115        CHK_ENTITY_MAX (light, LIGHT, web_angle1, BD, MAX_ANGLE);
     116        CHK_ENTITY_MAX (light, LIGHT, web_angle2, BD, MAX_ANGLE);
     117        CHK_ENTITY_MAX (light, LIGHT, web_angle3, BD, MAX_ANGLE);
     118        CHK_ENTITY_MAX (light, LIGHT, web_angle4, BD, MAX_ANGLE);
     119        CHK_ENTITY_MAX (light, LIGHT, web_angle5, BD, MAX_ANGLE);
     120        CHK_ENTITY_TYPE (light, LIGHT, glyph_display_type, BS);
     121        CHK_ENTITY_MAX (light, LIGHT, glyph_display_type, BS, 2);
     122      }
     123  }