home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2001 December / pcwk12201b.iso / Reklamy / CAD-Projekt / MegaCAD-4_5 / CC / MEGATYP.H_ / MEGATYP.H
Text File  |  1996-09-18  |  14KB  |  411 lines

  1. /**********************************************************************/
  2. /* MegaCAD entity types.                                              */
  3. /**********************************************************************/
  4.  
  5. /**********************************************************************/
  6. /* This is the version number of the MegaCAD interface!               */
  7. /* Structure members that are new to version 1 are commented '// !..' */
  8. /**********************************************************************/
  9.  
  10. #define MI_VERSION 3
  11.  
  12. /**********************************************************************/
  13.  
  14. #define E_TXTLIN   1
  15. #define E_POINT    2
  16. #define E_LINE     3
  17. #define E_CIRCLE   4
  18. #define E_C_ARC    5
  19. #define E_H_DIM    6
  20. #define E_V_DIM    7
  21. #define E_P_DIM    8
  22. #define E_A_DIM    9
  23. #define E_D_DIM   10
  24. #define E_R_DIM   11
  25. #define E_T_DIM   12
  26. #define E_SPLINE  13
  27.  
  28. #define E_TXTBLK  15
  29. #define E_MACRO   16
  30.  
  31. #define E_XHATCH  18
  32. #define E_ELLIPS  19
  33. #define E_E_ARC   20
  34.  
  35. #define E_POLYLN  22
  36. #define E_BITMAP  23
  37. #define E_MIDLIN  24
  38.  
  39. /**********************************************************************/
  40.  
  41. #define POLYLN_MAX  1300
  42. #define POLYGON_MAX 1900
  43.  
  44. // text font 'System' values
  45. #define GT_TRUETYPE      0
  46. #define GT_VECTOR        1
  47.  
  48. // text font 'PitchAndFamily' values
  49. #define GT_FFDONTCARE    0x00
  50. #define GT_ROMAN         0x10
  51. #define GT_SWISS         0x20
  52. #define GT_MODERN        0x30
  53. #define GT_SCRIPT        0x40
  54. #define GT_DECORATIVE    0x50
  55.  
  56. #define GT_FIXED         0x01
  57. #define GT_VARIABLE      0x02
  58.  
  59. // text font 'CharSet' values
  60. #define GT_ANSI          0
  61. #define GT_SYMBOL        2
  62. #define GT_ASIAN         3
  63. #define GT_OEM           255
  64.  
  65. // text font 'Attribs' bits
  66. #define GT_ITALIC        (1<<0)
  67. #define GT_STRIKEOUT     (1<<1)
  68. #define GT_UNDERLINE     (1<<2)
  69. #define GT_BOLD          (1<<3)
  70. #define GT_ISDOWN        (1<<4)
  71.  
  72. /**********************************************************************/
  73.  
  74. #if !defined (MEGATECH_C)
  75.     #pragma pack (2)       // set packing to 2 Byte boundaries
  76. #endif
  77.  
  78. /**********************************************************************/
  79. /* Data-types common to all entity-types.                             */
  80. /**********************************************************************/
  81.  
  82. typedef struct _attribs
  83. {
  84.     uchar  stl;           // linestyle (1 -  14)
  85.     uchar  pen;           // pen       (0 -  15) user sees (1 - 16) !!!
  86.     uchar  col;           // colour    (1 -  15)
  87.     uchar  wid;           // linewidth (1 -   8)
  88.     uchar  lay;           // layer     (0 - 255)
  89.     uchar  grp;           // group     (0 - 255)
  90.     ushort iID;           // ! id of entity info
  91. } t_attribs;
  92.  
  93. /**********************************************************************/
  94. /* Subtypes of MegaCAD-entities.                                      */
  95. /**********************************************************************/
  96.  
  97. typedef struct _txtval
  98. {
  99.     double w1;           // Text-Angle
  100.     double w2;           // Direction
  101.     double dx;           // char-width
  102.     double dy;           // char-height
  103.     double sx;           // space between two chars
  104.     double ld;           // line distance, relative to char-height
  105. } t_txtval;
  106.  
  107. typedef struct _txtfnt
  108. {
  109.     uchar name[32];       // facename with TRUETYPE, filename with vector
  110.     uchar CharSet;        // values see above
  111.     uchar PitchAndFamily; // values see above
  112.     uchar System;         // values see above
  113.     uchar Attribs;        // values see above
  114. } t_txtfnt;
  115.  
  116. typedef struct _polypt
  117. {
  118.     double mpd;           // signed distance of vertex
  119.     double px;            // x-coordinate of point
  120.     double py;            // y-coordinate of point
  121. } t_polypt;
  122.  
  123. /**********************************************************************/
  124. /* The types of the MegaCAD-entities.                                 */
  125. /**********************************************************************/
  126.  
  127. typedef struct _text
  128. {
  129.     t_txtval val;        // text attributes (see above)
  130.     t_txtfnt fnt;        // text font (see above)
  131.     double   tx;         // x-coordinate of text start point
  132.     double   ty;         // y-coordinate of text start point
  133.     double   dx1;        // baseline vector x-value
  134.     double   dy1;        // baseline vector y-value
  135.     double   dx2;        // leftside vector x-value
  136.     double   dy2;        // leftside vector y-value
  137.     ushort   numl;       // number of lines
  138.     char     _far *str;  // char - string
  139. } t_text;     // programmer has to set tx, ty, numl (if E_TXTBLK) and str
  140.               // other members are obtained by GetTxtVal
  141.  
  142. typedef struct _point
  143. {
  144.     double x;            // x-coordinate of point
  145.     double y;            // y-coordinate of point
  146. } t_point;
  147.  
  148. typedef struct _line
  149. {
  150.     double x1;           // x-coordinate of start point
  151.     double y1;           // y-coordinate of start point
  152.     double x2;           // x-coordinate of end point
  153.     double y2;           // y-coordinate of end point
  154. } t_line;
  155.  
  156. typedef struct _circle
  157. {
  158.     double xm;           // x-coordinate of mid point
  159.     double ym;           // y-coordinate of mid point
  160.     double rd;           // radius
  161. } t_circle;
  162.  
  163. typedef struct _c_arc
  164. {
  165.     double xm;           // x-coordinate of mid point
  166.     double ym;           // y-coordinate of mid point
  167.     double rd;           // radius
  168.     double a1;           // start angle
  169.     double a2;           // end   angle
  170. } t_c_arc;
  171.  
  172. typedef struct _ellipse
  173. {
  174.     double xm;           // x-coordinate of mid point
  175.     double ym;           // y-coordinate of mid point
  176.     double ra;           // 1st half axis
  177.     double rb;           // 2nd half axis
  178.     double an;           // rotation angle
  179. } t_ellipse;
  180.  
  181. typedef struct _e_arc
  182. {
  183.     double xm;           // x-coordinate of mid point
  184.     double ym;           // y-coordinate of mid point
  185.     double ra;           // 1st half axis
  186.     double rb;           // 2nd half axis
  187.     double an;           // rotation angle
  188.     double a1;           // start angle (relative to rotation angle)
  189.     double a2;           // end   angle (relative to rotation angle)
  190. } t_e_arc;
  191.  
  192. typedef struct _polyln
  193. {
  194.     ushort   num;        // number of polyline points
  195.     uchar    atype;      // ! arrow type (1 - 6) (0 => no arrow)
  196.     uchar    afill;      // ! arrow filled ?
  197.     double   a_hig;      // ! arrow height
  198.     double   a_wid;      // ! arrow width
  199.     double   a_qud;      // ! arrow quad
  200.     double   a_rad;      // ! arrow radius
  201.     t_polypt _far *ppt;  // array of polyline points
  202. } t_polyln;
  203.  
  204. typedef struct _pattern
  205. {
  206.     double   rec[4];     // surrounding rectangle
  207.     double   vec[2];     // alignment vector
  208.     double   fac;        // factor
  209.     double   phi;        // rotation angle
  210.     char     nam[8];     // cross-hatch name ('xhatch.ini')
  211.     ushort   num;        // number of polyline points
  212.     t_polypt _far *ppt;  // array of polyline points
  213. } t_pattern;
  214.  
  215. typedef struct _polygon
  216. {
  217.     ushort  num;         // number of points
  218.     t_point _far *pnt;   // array of points
  219. } t_polygon;
  220.  
  221. typedef struct _dimension
  222. {
  223.     t_txtval val;        // text attributes (see above)
  224.     t_txtfnt fnt;        // text font (see above)
  225.     double   tx;         // x-coordinate of text start point
  226.     double   ty;         // y-coordinate of text start point
  227.     double   dx1;        // baseline vector x-value
  228.     double   dy1;        // baseline vector y-value
  229.     double   dx2;        // leftside vector x-value
  230.     double   dy2;        // leftside vector y-value
  231.     double   x1;         //
  232.     double   y1;         // 1st point
  233.     double   x2;         //
  234.     double   y2;         // 2nd point
  235.     double   x3;         //
  236.     double   y3;         // 3rd point
  237.     double   x4;         //
  238.     double   y4;         // 4th point
  239.     double   a_hig;      // arrow height
  240.     double   a_wid;      // arrow width
  241.     double   a_qud;      // arrow quad
  242.     double   a_rad;      // arrow radius
  243.     double   a_len;      // arrow length
  244.     double   value;      // measured value
  245.     uchar    tcol;       // colour of dim. text
  246.     uchar    twid;       // linewidth of dim. text
  247.     uchar    tpen;       // pen number of dim. text
  248.     uchar    vpos;       // vertical pos.   ( left, mid, right, free )
  249.     uchar    hpos;       // horizontal pos. ( under, above, mid )
  250.     uchar    plft;       // arrow type (1 - 7) of 1st arrow
  251.     uchar    prgt;       // arrow type (1 - 7) of 2nd arrow
  252.     uchar    xyon;       // coordinate dim. type no. (0-2)
  253.     uchar    reli;       // which arrows/dim.lines are to be drawn
  254.     uchar    nins;       // whether inner line of outward dim. is forbidden
  255.     uchar    str2;       // two tolerance text strings ?
  256.     uchar    para;       // is text parallel to dim. line ?
  257.     uchar    edit;       // has text been edited ?
  258.     uchar    insd;       // arrows inside ?
  259.     uchar    mbox;       // E_T_DIM with box ?
  260.     uchar    arch;       // architecture dimension ?
  261.     uchar    fill;       // ! fill arrow type 2 ?
  262.     uchar    ncut;       // ! don't cut off trailing zeroes
  263.     uchar    comm;       // ! 0-15 comma, 16-23 fractional, 24-31 foot/inch
  264.     uchar    dummy;
  265.     char     _far *str;  // char - string
  266. } t_dimension;
  267.  
  268. typedef struct _macro
  269. {
  270.     char    _far *name;  // filename of macro file
  271.     ushort  numl;        // number of lines of macro info
  272.     char    _far *info;  // 'numl' lines of info
  273. } t_macro;
  274.  
  275. typedef struct _midlin
  276. {
  277.     double mpt[2],       // ! center point
  278.            cLen,         // ! length of cross line
  279.            sLen,         // ! length of short line
  280.            lLen,         // ! length of long line
  281.            rad,          // ! radius
  282.            phi;          // ! rotation angle
  283. } t_midlin;
  284.  
  285. typedef struct _bitmap
  286. {
  287.     double rec[4];       // ! rectangle
  288.     uchar  fname[126];   // ! filename of bitmap file
  289.     ushort flags;        // ! currently not used
  290. } t_bitmap;
  291.  
  292. typedef union _en_data
  293. {
  294.     t_text      txt;
  295.     t_point     pnt;
  296.     t_line      lin;
  297.     t_circle    cir;
  298.     t_c_arc     arc;
  299.     t_ellipse   elp;
  300.     t_e_arc     ela;
  301.     t_polyln    pol;
  302.     t_polygon   spl;
  303.     t_dimension dim;
  304.     t_macro     mac;
  305.     t_midlin    mid;
  306.     t_bitmap    bmp;
  307. } t_en_data;
  308.  
  309. typedef struct _entity
  310. {
  311.     ushort    type;
  312.     ulong     id;
  313.     t_attribs attr;
  314.     t_en_data data;
  315. } t_entity;
  316.  
  317. /**********************************************************************/
  318. /* Dialog field descriptor and field types.                           */
  319. /**********************************************************************/
  320.  
  321. #define DLG_SHT  0     //  = short integer value
  322. #define DLG_LNG  1     //  = long integer value
  323. #define DLG_PHI  2     //  = double value containing an angle
  324. #define DLG_LEN  3     //  = double value in user units
  325. #define DLG_FAC  4     //  = double value containing a factor
  326. #define DLG_STR  5     //  = char string
  327. #define DLG_GRP  6     //  = short integer with group number
  328. #define DLG_LAY  7     //  = short integer with layer number
  329. #define DLG_PEN  8     //  = short integer with pen number
  330. #define DLG_WID  9     //  = short integer with width number
  331. #define DLG_STL 10     //  = short integer with linestyle number
  332. #define DLG_COL 11     //  = short integer with colour number
  333. #define DLG_BUT 12     //  = button instead of input field
  334. #define DLG_DEF 13     //  = button as default button
  335.  
  336. #define NO_ATTRIB 32232
  337.  
  338. typedef struct _dlgdta
  339. {
  340.     char     text[26];    // text to the left of input field (or button)
  341.     uchar    type;        // field type
  342.     uchar    slen;        // size of char buffer with DLG_STR
  343.     void     _far *val;   // address of input value (NULL if button)
  344. } t_dlgdta;
  345.  
  346. /**********************************************************************/
  347. /* Several data types.                                                */
  348. /**********************************************************************/
  349.  
  350. typedef struct _entinfo
  351. {
  352.     ushort id;            // id
  353.     ushort numl;          // number of lines of text
  354.     uchar  info[15*1024]; // text
  355. } t_entinfo;
  356.  
  357. typedef struct _laygrp
  358. {
  359.     uchar names[256][64];
  360. } t_laygrp;    // the strlen of each must not be grater than 62!!
  361.  
  362. typedef struct _grid
  363. {
  364.     double a1, a2,        // angles (Cartesian: 0.0, PI/2)
  365.            dx, dy;        // steps  (in mm)
  366. } t_grid;                 // for a polar grid only 'dx' is used
  367.  
  368. typedef struct _gridsets
  369. {
  370.     t_grid  DrawGrid;     // draw grid
  371.     t_grid  SnapGrid;     // snap grid
  372.     t_point PtGrid;       // reference point for grid
  373.     t_point PtKeybd;      // reference point for keyboard input
  374.     double  UnitFactor;   // 1.0 for mm, 10.0 for cm, ...
  375.     ushort  iUnit;        // 0=inch,1=mm,2=foot,3=cm,4=yard,5=m,6=factor
  376.     uchar   fCartesian;   // cartesian vs. polar
  377.     uchar   fDraw;        // grid visible?
  378.     uchar   fDrawVals;    // values of 'DrawGrid' active?
  379.     uchar   fSnapVals;    // values of 'SnapGrid' active?
  380. } t_gridsets;
  381.  
  382. typedef struct _mkmacro
  383. {
  384.     t_attribs _far *attr; // entity attributes (may be NULL)
  385.     void      _far *data; // entity data
  386.     ushort    type;       // entity type
  387. } t_mkmacro;
  388.  
  389. #define FM_EXCLUSIVE  1
  390. #define FM_TAKE_FAC   2
  391. #define FM_TAKE_PHI   4
  392. #define FM_TAKE_DPT   8
  393. #define FM_ONLY1     16
  394.  
  395. typedef struct _placemac
  396. {
  397.     double  fac;          // scaling factor
  398.     double  phi;          // rotation angle
  399.     double  dpx;
  400.     double  dpy;          // destination point
  401.     ushort  flags;        // flags (see '#defines's above)
  402. } t_placemac;
  403.  
  404. /**********************************************************************/
  405.  
  406. #if !defined (MEGATECH_C)
  407.     #pragma pack ()       // back to default
  408. #endif
  409.  
  410. /**********************************************************************/
  411.