(root)/
libredwg-0.13/
test/
unit-testing/
mtext.c
       1  #define DWG_TYPE DWG_TYPE_MTEXT
       2  #include "common.c"
       3  
       4  void
       5  api_process (dwg_object *obj)
       6  {
       7    int error, isnew;
       8    double rect_height, rect_width, text_height, extents_height, extents_width,
       9        linespace_factor;
      10    BITCODE_BS attachment, flow_dir, linespace_style, class_version;
      11    BITCODE_B unknown_b0, is_not_annotative, default_flag;
      12    BITCODE_BL bg_fill_flag, bg_fill_scale, bg_fill_trans;
      13    BITCODE_CMC bg_fill_color;
      14    char *text;
      15    dwg_point_3d ins_pt, extrusion, x_axis_dir;
      16    BITCODE_H appid, style;
      17    BITCODE_BL ignore_attachment;
      18    BITCODE_BL numfragments;
      19    BITCODE_BD column_width;
      20    BITCODE_BD gutter;
      21    BITCODE_B auto_height;
      22    BITCODE_B flow_reversed;
      23    BITCODE_BS column_type;
      24    BITCODE_BL i, num_column_heights;
      25    BITCODE_BD *column_heights;
      26  
      27    Dwg_Version_Type dwg_version = obj->parent->header.version;
      28    dwg_ent_mtext *mtext = dwg_object_to_MTEXT (obj);
      29  
      30    CHK_ENTITY_UTF8TEXT_W_OLD (mtext, MTEXT, text);
      31    CHK_ENTITY_3RD (mtext, MTEXT, ins_pt);
      32    CHK_ENTITY_3RD_W_OLD (mtext, MTEXT, extrusion);
      33    CHK_ENTITY_3RD_W_OLD (mtext, MTEXT, x_axis_dir);
      34    CHK_ENTITY_TYPE_W_OLD (mtext, MTEXT, rect_width, BD);
      35    CHK_ENTITY_TYPE_W_OLD (mtext, MTEXT, rect_height, BD);
      36    CHK_ENTITY_TYPE_W_OLD (mtext, MTEXT, text_height, BD);
      37    CHK_ENTITY_TYPE_W_OLD (mtext, MTEXT, attachment, BS);
      38    CHK_ENTITY_MAX (mtext, MTEXT, attachment, BS, 9);
      39    CHK_ENTITY_TYPE (mtext, MTEXT, flow_dir, BS); // was drawing_dir in dwg_api
      40    CHK_ENTITY_MAX (mtext, MTEXT, flow_dir, BS, 5);
      41    CHK_ENTITY_TYPE_W_OLD (mtext, MTEXT, extents_height, BD);
      42    CHK_ENTITY_TYPE_W_OLD (mtext, MTEXT, extents_width, BD);
      43    CHK_ENTITY_H (mtext, MTEXT, style);
      44    SINCE (R_2000)
      45    {
      46      CHK_ENTITY_TYPE_W_OLD (mtext, MTEXT, linespace_style, BS);
      47      CHK_ENTITY_TYPE_W_OLD (mtext, MTEXT, linespace_factor, BD);
      48      CHK_ENTITY_TYPE (mtext, MTEXT, unknown_b0, B);
      49    }
      50    SINCE (R_2004)
      51    {
      52      CHK_ENTITY_TYPE (mtext, MTEXT, bg_fill_flag, BL);
      53      CHK_ENTITY_MAX (mtext, MTEXT, bg_fill_flag, BL, 31);
      54      CHK_ENTITY_TYPE (mtext, MTEXT, bg_fill_scale, BL);
      55      CHK_ENTITY_CMC (mtext, MTEXT, bg_fill_color);
      56      CHK_ENTITY_TYPE (mtext, MTEXT, bg_fill_trans, BL);
      57    }
      58    SINCE (R_2018)
      59    {
      60      CHK_ENTITY_TYPE (mtext, MTEXT, is_not_annotative, B);
      61      CHK_ENTITY_TYPE (mtext, MTEXT, class_version, BS);
      62      CHK_ENTITY_MAX (mtext, MTEXT, class_version, BS, 10);
      63      CHK_ENTITY_TYPE (mtext, MTEXT, default_flag, B);
      64      CHK_ENTITY_H (mtext, MTEXT, appid);
      65      CHK_ENTITY_TYPE (mtext, MTEXT, column_type, BS);
      66      CHK_ENTITY_MAX (mtext, MTEXT, column_type, BS, 2);
      67      CHK_ENTITY_TYPE (mtext, MTEXT, ignore_attachment, BL);
      68      if ((BITCODE_BL)attachment != ignore_attachment)
      69        fprintf (stderr,
      70                 "attachment " FORMAT_BS " != ignore_attachment " FORMAT_BL "\n",
      71                 attachment, ignore_attachment);
      72      CHK_ENTITY_TYPE (mtext, MTEXT, numfragments,
      73                       BL); // only for column_type == 1
      74      CHK_ENTITY_TYPE (mtext, MTEXT, num_column_heights, BL);
      75      if (column_type == 1)
      76        {
      77          if (num_column_heights)
      78            fail ("num_column_heights with column_type == 1");
      79        }
      80      else
      81        {
      82          if (numfragments)
      83            fail ("numfragments with column_type != 1");
      84        }
      85      CHK_ENTITY_TYPE (mtext, MTEXT, column_width, BD);
      86      CHK_ENTITY_TYPE (mtext, MTEXT, gutter, BD);
      87      CHK_ENTITY_TYPE (mtext, MTEXT, auto_height, B);
      88      CHK_ENTITY_TYPE (mtext, MTEXT, flow_reversed, B);
      89      CHK_ENTITY_VECTOR_TYPE (mtext, MTEXT, column_heights, num_column_heights,
      90                              BD);
      91    }
      92  }