1 #define DWG_TYPE DWG_TYPE_SPATIAL_FILTER
2 #include "common.c"
3
4 void
5 api_process (dwg_object *obj)
6 {
7 int error;
8 BITCODE_BS i, num_clip_verts;
9 BITCODE_2RD *clip_verts;
10 BITCODE_BE extrusion;
11 BITCODE_3BD origin;
12 BITCODE_BS display_boundary_on;
13 BITCODE_BS front_clip_on;
14 BITCODE_BD front_clip_z;
15 BITCODE_BS back_clip_on;
16 BITCODE_BD back_clip_z;
17 BITCODE_BD *inverse_transform;
18 BITCODE_BD *transform;
19
20 dwg_obj_spatial_filter *_obj = dwg_object_to_SPATIAL_FILTER (obj);
21
22 CHK_ENTITY_TYPE (_obj, SPATIAL_FILTER, num_clip_verts, BS);
23 if (!dwg_dynapi_entity_value (_obj, "SPATIAL_FILTER", "clip_verts",
24 &clip_verts, NULL))
25 fail ("SPATIAL_FILTER.clip_verts");
26 for (i = 0; i < num_clip_verts; i++)
27 {
28 ok ("SPATIAL_FILTER.clip_verts[%d]: (%f, %f)", i, clip_verts[i].x,
29 clip_verts[i].y);
30 }
31 CHK_ENTITY_3RD (_obj, SPATIAL_FILTER, extrusion);
32 CHK_ENTITY_3RD (_obj, SPATIAL_FILTER, origin);
33 CHK_ENTITY_TYPE (_obj, SPATIAL_FILTER, display_boundary_on, BS);
34 CHK_ENTITY_TYPE (_obj, SPATIAL_FILTER, front_clip_on, BS);
35 if (front_clip_on)
36 {
37 CHK_ENTITY_TYPE (_obj, SPATIAL_FILTER, front_clip_z, BD);
38 }
39 CHK_ENTITY_TYPE (_obj, SPATIAL_FILTER, back_clip_on, BS);
40 if (back_clip_on)
41 {
42 CHK_ENTITY_TYPE (_obj, SPATIAL_FILTER, back_clip_z, BD);
43 }
44 if (!dwg_dynapi_entity_value (_obj, "SPATIAL_FILTER", "inverse_transform",
45 &inverse_transform, NULL))
46 fail ("SPATIAL_FILTER.inverse_transform");
47 else
48 for (i = 0; i < 12; i += 4)
49 {
50 ok ("SPATIAL_FILTER.inverse_transform[%d]: (%f, %f, %f, %f)", i,
51 inverse_transform[i], inverse_transform[i + 1],
52 inverse_transform[i + 2], inverse_transform[i + 3]);
53 }
54 if (!dwg_dynapi_entity_value (_obj, "SPATIAL_FILTER", "transform",
55 &transform, NULL))
56 fail ("SPATIAL_FILTER.transform");
57 else
58 for (i = 0; i < 12; i += 4)
59 {
60 ok ("SPATIAL_FILTER.transform[%d]: (%f, %f, %f, %f)", i, transform[i],
61 transform[i + 1], transform[i + 2], transform[i + 3]);
62 }
63 }