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 }