(root)/
libredwg-0.13/
test/
unit-testing/
dimassoc.c
       1  // TODO unstable
       2  #define DWG_TYPE DWG_TYPE_DIMASSOC
       3  #include "common.c"
       4  
       5  void
       6  api_process (dwg_object *obj)
       7  {
       8    int error, isnew;
       9    BITCODE_H dimensionobj;
      10    BITCODE_BL associativity;
      11    BITCODE_B trans_space_flag;
      12    BITCODE_RC rotated_type;
      13    Dwg_DIMASSOC_Ref *ref;
      14    // BITCODE_BS j;
      15    BITCODE_BL num_intsectobj, num_xrefs;
      16    BITCODE_H *intsectobj, *xrefs;
      17    // BITCODE_BL intsect_gsmarker;
      18    // BITCODE_H intsectxrefobj;
      19  
      20    Dwg_Version_Type dwg_version = obj->parent->header.version;
      21    dwg_obj_dimassoc *dimassoc = dwg_object_to_DIMASSOC (obj);
      22  
      23    if (obj->fixedtype == DWG_TYPE_UNKNOWN_OBJ)
      24      return;
      25  
      26    CHK_ENTITY_TYPE (dimassoc, DIMASSOC, associativity, BLx);
      27    CHK_ENTITY_MAX (dimassoc, DIMASSOC, associativity, BL, 15);
      28    CHK_ENTITY_TYPE (dimassoc, DIMASSOC, trans_space_flag, B);
      29    CHK_ENTITY_TYPE (dimassoc, DIMASSOC, rotated_type, RCd);
      30    CHK_ENTITY_H (dimassoc, DIMASSOC, dimensionobj);
      31    if (!dwg_dynapi_entity_value (dimassoc, "DIMASSOC", "ref", &ref, NULL))
      32      fail ("DIMASSOC.ref");
      33    for (int i = 0; i < 4; i++)
      34      {
      35        // 0 1 2 3 => 1 2 4 8. skip unset bits
      36        if (!(associativity & (1 << i)))
      37          continue;
      38        CHK_SUBCLASS_UTF8TEXT (ref[i], DIMASSOC_Ref,
      39                               classname); // "AcDbOsnapPointRef"
      40        CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, osnap_type, RC);
      41        CHK_SUBCLASS_MAX (ref[i], DIMASSOC_Ref, osnap_type, RC, 13);
      42        CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, osnap_dist, BD);
      43        CHK_SUBCLASS_3RD (ref[i], DIMASSOC_Ref, osnap_pt);
      44        CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, main_subent_type, BL);
      45        CHK_SUBCLASS_MAX (ref[i], DIMASSOC_Ref, main_subent_type, BL, 2);
      46        CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, main_gsmarker, BL);
      47        CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, num_intsectobj, BL);
      48        CHK_SUBCLASS_MAX (ref[i], DIMASSOC_Ref, num_intsectobj, BL, 100);
      49        num_intsectobj = ref[i].num_intsectobj;
      50        CHK_SUBCLASS_HV (ref[i], DIMASSOC_Ref, intsectobj, num_intsectobj);
      51        CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, num_xrefs, BL);
      52        CHK_SUBCLASS_MAX (ref[i], DIMASSOC_Ref, num_xrefs, BL, 100);
      53        num_xrefs = ref[i].num_xrefs;
      54        CHK_SUBCLASS_HV (ref[i], DIMASSOC_Ref, xrefs, num_xrefs);
      55        CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, has_lastpt_ref, B);
      56        CHK_SUBCLASS_3RD (ref[i], DIMASSOC_Ref, lastpt_ref);
      57      }
      58  }