(root)/
libredwg-0.13/
test/
unit-testing/
pointcloud.c
       1  // TODO coverage
       2  #define DWG_TYPE DWG_TYPE_POINTCLOUD
       3  #include "common.c"
       4  
       5  void
       6  api_process (dwg_object *obj)
       7  {
       8    int error, isnew;
       9    BITCODE_BL i;
      10    BITCODE_BS class_version;
      11    BITCODE_3BD origin;
      12    BITCODE_T saved_filename;
      13    BITCODE_BL num_source_files;
      14    BITCODE_T *source_files;
      15    BITCODE_3BD extents_min;
      16    BITCODE_3BD extents_max;
      17    BITCODE_RLL numpoints;
      18    BITCODE_T ucs_name;
      19    BITCODE_3BD ucs_origin;
      20    BITCODE_3BD ucs_x_dir;
      21    BITCODE_3BD ucs_y_dir;
      22    BITCODE_3BD ucs_z_dir;
      23    // r2013+:
      24    BITCODE_H pointclouddef;
      25    BITCODE_H reactor;
      26    BITCODE_B show_intensity;
      27    BITCODE_BS intensity_scheme;
      28    Dwg_POINTCLOUD_IntensityStyle intensity_style;
      29    BITCODE_B show_clipping;
      30    BITCODE_BL num_clippings;
      31    Dwg_POINTCLOUD_Clippings *clippings;
      32    BITCODE_2RD *vertices;
      33  
      34    Dwg_Version_Type dwg_version = obj->parent->header.version;
      35    // #ifdef DEBUG_CLASSES
      36    dwg_ent_pointcloud *_obj = dwg_object_to_POINTCLOUD (obj);
      37  
      38    CHK_ENTITY_TYPE (_obj, POINTCLOUD, class_version, BS);
      39    CHK_ENTITY_MAX (_obj, POINTCLOUD, class_version, BS, 3);
      40    CHK_ENTITY_3RD (_obj, POINTCLOUD, origin);
      41    CHK_ENTITY_UTF8TEXT (_obj, POINTCLOUD, saved_filename);
      42    CHK_ENTITY_TYPE (_obj, POINTCLOUD, num_source_files, BL);
      43    if (!dwg_dynapi_entity_value (_obj, "POINTCLOUD", "source_files",
      44                                  &source_files, NULL))
      45      fail ("POINTCLOUD.source_files");
      46    else
      47      for (i = 0; i < num_source_files; i++)
      48        {
      49          ok ("POINTCLOUD.source_files[%u]: %s", i, source_files[i]);
      50        }
      51    // if !num_source_files
      52    CHK_ENTITY_3RD (_obj, POINTCLOUD, extents_min);
      53    CHK_ENTITY_3RD (_obj, POINTCLOUD, extents_max);
      54    CHK_ENTITY_TYPE (_obj, POINTCLOUD, numpoints, RLL);
      55    CHK_ENTITY_UTF8TEXT (_obj, POINTCLOUD, ucs_name);
      56    CHK_ENTITY_3RD (_obj, POINTCLOUD, ucs_origin);
      57    CHK_ENTITY_3RD (_obj, POINTCLOUD, ucs_x_dir);
      58    CHK_ENTITY_3RD (_obj, POINTCLOUD, ucs_y_dir);
      59    CHK_ENTITY_3RD (_obj, POINTCLOUD, ucs_z_dir);
      60    SINCE (R_2013)
      61    {
      62      CHK_ENTITY_H (_obj, POINTCLOUD, pointclouddef);
      63      CHK_ENTITY_H (_obj, POINTCLOUD, reactor);
      64      CHK_ENTITY_TYPE (_obj, POINTCLOUD, show_intensity, B);
      65      CHK_ENTITY_TYPE (_obj, POINTCLOUD, intensity_scheme, BS);
      66      CHK_SUBCLASS_TYPE (intensity_style, POINTCLOUD_IntensityStyle,
      67                         min_intensity, BD);
      68      CHK_SUBCLASS_TYPE (intensity_style, POINTCLOUD_IntensityStyle,
      69                         max_intensity, BD);
      70      CHK_SUBCLASS_TYPE (intensity_style, POINTCLOUD_IntensityStyle,
      71                         intensity_low_treshold, BD);
      72      CHK_SUBCLASS_TYPE (intensity_style, POINTCLOUD_IntensityStyle,
      73                         intensity_high_treshold, BD);
      74      CHK_ENTITY_TYPE (_obj, POINTCLOUD, show_clipping, B);
      75      CHK_ENTITY_TYPE (_obj, POINTCLOUD, num_clippings, BL);
      76      if (!dwg_dynapi_entity_value (_obj, "POINTCLOUD", "clippings", &clippings,
      77                                    NULL))
      78        fail ("POINTCLOUD.clippings");
      79      else
      80        for (i = 0; i < num_clippings; i++)
      81          {
      82            CHK_SUBCLASS_TYPE (clippings[i], POINTCLOUD_Clippings, is_inverted,
      83                               B);
      84            CHK_SUBCLASS_TYPE (clippings[i], POINTCLOUD_Clippings, type, BS);
      85            CHK_SUBCLASS_TYPE (clippings[i], POINTCLOUD_Clippings, num_vertices,
      86                               BL);
      87            CHK_SUBCLASS_2DPOINTS (clippings[i], POINTCLOUD_Clippings, vertices,
      88                                   clippings[i].num_vertices);
      89            CHK_SUBCLASS_TYPE (clippings[i], POINTCLOUD_Clippings, z_min, BD);
      90            CHK_SUBCLASS_TYPE (clippings[i], POINTCLOUD_Clippings, z_max, BD);
      91          }
      92    }
      93    // #endif
      94  }